[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\n\n[*.md]\ntrim_trailing_whitespace = false\n\n[*.yml]\nindent_size = 2\n"
  },
  {
    "path": ".gitattributes",
    "content": "* text=auto\n*.css linguist-vendored\n*.scss linguist-vendored\n*.js linguist-vendored\nCHANGELOG.md export-ignore\n"
  },
  {
    "path": ".gitignore",
    "content": "/node_modules\n/public/hot\n/public/storage\n/storage/*.key\n/vendor\n.env\n.phpunit.result.cache\nHomestead.json\nHomestead.yaml\nnpm-debug.log\nyarn-error.log\n"
  },
  {
    "path": ".idea/ems.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"WEB_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\">\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/app\" isTestSource=\"false\" packagePrefix=\"App\\\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/tests\" isTestSource=\"true\" packagePrefix=\"Tests\\\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/beyondcode/laravel-dump-server\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/brian2694/laravel-toastr\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/composer\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/dnoegel/php-xdg-base-dir\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/doctrine/inflector\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/doctrine/instantiator\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/doctrine/lexer\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/dragonmantank/cron-expression\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/egulias/email-validator\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/erusev/parsedown\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/fideloper/proxy\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/filp/whoops\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/fzaninotto/faker\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/hamcrest/hamcrest-php\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/jakub-onderka/php-console-color\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/jakub-onderka/php-console-highlighter\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/laravel/framework\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/laravel/tinker\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/league/flysystem\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/maddhatter/laravel-fullcalendar\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/mockery/mockery\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/monolog/monolog\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/myclabs/deep-copy\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/nesbot/carbon\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/nikic/php-parser\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/nunomaduro/collision\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/opis/closure\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/paragonie/random_compat\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phar-io/manifest\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phar-io/version\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpoption/phpoption\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpspec/prophecy\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpunit/php-code-coverage\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpunit/php-file-iterator\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpunit/php-text-template\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpunit/php-timer\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpunit/php-token-stream\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/phpunit/phpunit\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/psr/container\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/psr/log\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/psr/simple-cache\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/psy/psysh\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/ramsey/uuid\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/comparator\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/diff\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/environment\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/exporter\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/global-state\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/object-enumerator\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/object-reflector\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/recursion-context\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/resource-operations\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/sebastian/version\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/console\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/contracts\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/css-selector\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/debug\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/event-dispatcher\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/finder\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/http-foundation\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/http-kernel\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/polyfill-ctype\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/polyfill-php72\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/process\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/routing\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/translation\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/symfony/var-dumper\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/theseer/tokenizer\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/tijsverkoyen/css-to-inline-styles\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/vlucas/phpdotenv\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/vendor/webmozart/assert\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n  </component>\n</module>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"JavaScriptSettings\">\n    <option name=\"languageLevel\" value=\"ES6\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/.idea/ems.iml\" filepath=\"$PROJECT_DIR$/.idea/ems.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": ".idea/php.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"PhpIncludePathManager\">\n    <include_path>\n      <path value=\"$PROJECT_DIR$/vendor/opis/closure\" />\n      <path value=\"$PROJECT_DIR$/vendor/composer\" />\n      <path value=\"$PROJECT_DIR$/vendor/phar-io/version\" />\n      <path value=\"$PROJECT_DIR$/vendor/phar-io/manifest\" />\n      <path value=\"$PROJECT_DIR$/vendor/dnoegel/php-xdg-base-dir\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpspec/prophecy\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/phpunit\" />\n      <path value=\"$PROJECT_DIR$/vendor/beyondcode/laravel-dump-server\" />\n      <path value=\"$PROJECT_DIR$/vendor/mockery/mockery\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-token-stream\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-code-coverage\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-timer\" />\n      <path value=\"$PROJECT_DIR$/vendor/webmozart/assert\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-text-template\" />\n      <path value=\"$PROJECT_DIR$/vendor/fzaninotto/faker\" />\n      <path value=\"$PROJECT_DIR$/vendor/dragonmantank/cron-expression\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-file-iterator\" />\n      <path value=\"$PROJECT_DIR$/vendor/fideloper/proxy\" />\n      <path value=\"$PROJECT_DIR$/vendor/league/flysystem\" />\n      <path value=\"$PROJECT_DIR$/vendor/myclabs/deep-copy\" />\n      <path value=\"$PROJECT_DIR$/vendor/nikic/php-parser\" />\n      <path value=\"$PROJECT_DIR$/vendor/paragonie/random_compat\" />\n      <path value=\"$PROJECT_DIR$/vendor/laravel/framework\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpdocumentor/type-resolver\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpdocumentor/reflection-common\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock\" />\n      <path value=\"$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles\" />\n      <path value=\"$PROJECT_DIR$/vendor/nunomaduro/collision\" />\n      <path value=\"$PROJECT_DIR$/vendor/ramsey/uuid\" />\n      <path value=\"$PROJECT_DIR$/vendor/theseer/tokenizer\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpoption/phpoption\" />\n      <path value=\"$PROJECT_DIR$/vendor/laravel/tinker\" />\n      <path value=\"$PROJECT_DIR$/vendor/doctrine/instantiator\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/console\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/http-kernel\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/http-foundation\" />\n      <path value=\"$PROJECT_DIR$/vendor/egulias/email-validator\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/diff\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/event-dispatcher\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/version\" />\n      <path value=\"$PROJECT_DIR$/vendor/psr/simple-cache\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/debug\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/polyfill-mbstring\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/resource-operations\" />\n      <path value=\"$PROJECT_DIR$/vendor/psr/log\" />\n      <path value=\"$PROJECT_DIR$/vendor/psy/psysh\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/var-dumper\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/contracts\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/translation\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/object-enumerator\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/finder\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/polyfill-php72\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/object-reflector\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/process\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/exporter\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/routing\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/recursion-context\" />\n      <path value=\"$PROJECT_DIR$/vendor/psr/container\" />\n      <path value=\"$PROJECT_DIR$/vendor/filp/whoops\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/polyfill-ctype\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/comparator\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/css-selector\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/environment\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/global-state\" />\n      <path value=\"$PROJECT_DIR$/vendor/doctrine/lexer\" />\n      <path value=\"$PROJECT_DIR$/vendor/doctrine/inflector\" />\n      <path value=\"$PROJECT_DIR$/vendor/hamcrest/hamcrest-php\" />\n      <path value=\"$PROJECT_DIR$/vendor/nesbot/carbon\" />\n      <path value=\"$PROJECT_DIR$/vendor/swiftmailer/swiftmailer\" />\n      <path value=\"$PROJECT_DIR$/vendor/jakub-onderka/php-console-color\" />\n      <path value=\"$PROJECT_DIR$/vendor/jakub-onderka/php-console-highlighter\" />\n      <path value=\"$PROJECT_DIR$/vendor/vlucas/phpdotenv\" />\n      <path value=\"$PROJECT_DIR$/vendor/monolog/monolog\" />\n      <path value=\"$PROJECT_DIR$/vendor/erusev/parsedown\" />\n      <path value=\"$PROJECT_DIR$/vendor/maddhatter/laravel-fullcalendar\" />\n      <path value=\"$PROJECT_DIR$/vendor/brian2694/laravel-toastr\" />\n    </include_path>\n  </component>\n  <component name=\"PhpProjectSharedConfiguration\" php_language_level=\"7.1\" />\n  <component name=\"PhpUnit\">\n    <phpunit_settings>\n      <PhpUnitSettings load_method=\"CUSTOM_LOADER\" custom_loader_path=\"$PROJECT_DIR$/vendor/autoload.php\" />\n    </phpunit_settings>\n  </component>\n</project>"
  },
  {
    "path": ".idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"$PROJECT_DIR$\" vcs=\"Git\" />\n  </component>\n</project>"
  },
  {
    "path": ".idea/workspace.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"true\" id=\"822e2bf2-54d3-48aa-9620-dbb230c561bf\" name=\"Default Changelist\" comment=\"\">\n      <change beforePath=\"$PROJECT_DIR$/.idea/workspace.xml\" beforeDir=\"false\" afterPath=\"$PROJECT_DIR$/.idea/workspace.xml\" afterDir=\"false\" />\n    </list>\n    <option name=\"EXCLUDED_CONVERTED_TO_IGNORED\" value=\"true\" />\n    <option name=\"SHOW_DIALOG\" value=\"false\" />\n    <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n    <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n    <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n  </component>\n  <component name=\"ComposerSettings\" doNotAsk=\"true\" synchronizationState=\"SYNCHRONIZE\">\n    <pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>\n  </component>\n  <component name=\"FUSProjectUsageTrigger\">\n    <session id=\"991782165\">\n      <usages-collector id=\"statistics.lifecycle.project\">\n        <counts>\n          <entry key=\"project.closed\" value=\"60\" />\n          <entry key=\"project.open.time.0\" value=\"2\" />\n          <entry key=\"project.open.time.1\" value=\"12\" />\n          <entry key=\"project.open.time.10\" value=\"1\" />\n          <entry key=\"project.open.time.102\" value=\"1\" />\n          <entry key=\"project.open.time.104\" value=\"1\" />\n          <entry key=\"project.open.time.105\" value=\"1\" />\n          <entry key=\"project.open.time.106\" value=\"1\" />\n          <entry key=\"project.open.time.107\" value=\"1\" />\n          <entry key=\"project.open.time.112\" value=\"1\" />\n          <entry key=\"project.open.time.2\" value=\"8\" />\n          <entry key=\"project.open.time.27\" value=\"1\" />\n          <entry key=\"project.open.time.3\" value=\"2\" />\n          <entry key=\"project.open.time.38\" value=\"1\" />\n          <entry key=\"project.open.time.4\" value=\"2\" />\n          <entry key=\"project.open.time.41\" value=\"1\" />\n          <entry key=\"project.open.time.42\" value=\"1\" />\n          <entry key=\"project.open.time.44\" value=\"1\" />\n          <entry key=\"project.open.time.45\" value=\"1\" />\n          <entry key=\"project.open.time.47\" value=\"1\" />\n          <entry key=\"project.open.time.48\" value=\"4\" />\n          <entry key=\"project.open.time.49\" value=\"1\" />\n          <entry key=\"project.open.time.5\" value=\"1\" />\n          <entry key=\"project.open.time.50\" value=\"1\" />\n          <entry key=\"project.open.time.53\" value=\"1\" />\n          <entry key=\"project.open.time.54\" value=\"1\" />\n          <entry key=\"project.open.time.55\" value=\"2\" />\n          <entry key=\"project.open.time.56\" value=\"1\" />\n          <entry key=\"project.open.time.59\" value=\"1\" />\n          <entry key=\"project.open.time.6\" value=\"1\" />\n          <entry key=\"project.open.time.63\" value=\"1\" />\n          <entry key=\"project.open.time.65\" value=\"1\" />\n          <entry key=\"project.open.time.66\" value=\"3\" />\n          <entry key=\"project.open.time.68\" value=\"1\" />\n          <entry key=\"project.open.time.7\" value=\"1\" />\n          <entry key=\"project.open.time.71\" value=\"1\" />\n          <entry key=\"project.open.time.75\" value=\"1\" />\n          <entry key=\"project.open.time.8\" value=\"1\" />\n          <entry key=\"project.open.time.80\" value=\"1\" />\n          <entry key=\"project.open.time.81\" value=\"1\" />\n          <entry key=\"project.open.time.82\" value=\"1\" />\n          <entry key=\"project.open.time.87\" value=\"1\" />\n          <entry key=\"project.open.time.88\" value=\"1\" />\n          <entry key=\"project.open.time.9\" value=\"2\" />\n          <entry key=\"project.opened\" value=\"71\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.extensions.open\">\n        <counts>\n          <entry key=\"css\" value=\"1\" />\n          <entry key=\"gitignore\" value=\"1\" />\n          <entry key=\"htm\" value=\"1\" />\n          <entry key=\"html\" value=\"37\" />\n          <entry key=\"js\" value=\"2\" />\n          <entry key=\"log\" value=\"5\" />\n          <entry key=\"php\" value=\"1095\" />\n          <entry key=\"php___jb_tmp___\" value=\"2\" />\n          <entry key=\"txt\" value=\"1\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.types.open\">\n        <counts>\n          <entry key=\"Blade\" value=\"551\" />\n          <entry key=\"CSS\" value=\"1\" />\n          <entry key=\"HTML\" value=\"38\" />\n          <entry key=\"JavaScript\" value=\"2\" />\n          <entry key=\"Log\" value=\"5\" />\n          <entry key=\"PHP\" value=\"544\" />\n          <entry key=\"PLAIN_TEXT\" value=\"4\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.extensions.edit\">\n        <counts>\n          <entry key=\"html\" value=\"906\" />\n          <entry key=\"log\" value=\"7\" />\n          <entry key=\"php\" value=\"36038\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.file.types.edit\">\n        <counts>\n          <entry key=\"Blade\" value=\"18393\" />\n          <entry key=\"HTML\" value=\"906\" />\n          <entry key=\"Log\" value=\"7\" />\n          <entry key=\"PHP\" value=\"17645\" />\n        </counts>\n      </usages-collector>\n      <usages-collector id=\"statistics.php.new.class\">\n        <counts>\n          <entry key=\"PHP Class.type\" value=\"1\" />\n        </counts>\n      </usages-collector>\n    </session>\n  </component>\n  <component name=\"FileEditorManager\">\n    <leaf SIDE_TABS_SIZE_LIMIT_KEY=\"300\">\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/resources/views/admin/user/index.blade.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"1887\">\n              <caret line=\"111\" column=\"49\" selection-start-line=\"111\" selection-start-column=\"49\" selection-end-line=\"111\" selection-end-column=\"49\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/resources/views/admin/leave/edit.blade.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\" />\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/resources/views/admin/leave/index.blade.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\" />\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/LeaveController.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"867\">\n              <caret line=\"57\" selection-start-line=\"57\" selection-end-line=\"57\" />\n              <folding>\n                <element signature=\"e#40#53#0#PHP\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/Http/Requests/LeaveRequest.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\" />\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/routes/web.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"1683\">\n              <caret line=\"108\" selection-start-line=\"108\" selection-end-line=\"108\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/Auth/LoginController.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"425\">\n              <caret line=\"28\" column=\"38\" selection-start-line=\"28\" selection-start-column=\"29\" selection-end-line=\"28\" selection-end-column=\"38\" />\n            </state>\n          </provider>\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"true\">\n        <entry file=\"file://$PROJECT_DIR$/resources/views/admin/auth/login.blade.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\" />\n        </entry>\n      </file>\n      <file pinned=\"false\" current-in-tab=\"false\">\n        <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/UserController.php\">\n          <provider selected=\"true\" editor-type-id=\"text-editor\">\n            <state relative-caret-position=\"2958\">\n              <caret line=\"178\" column=\"31\" selection-start-line=\"178\" selection-start-column=\"31\" selection-end-line=\"178\" selection-end-column=\"31\" />\n              <folding>\n                <element signature=\"e#39#75#0#PHP\" expanded=\"true\" />\n              </folding>\n            </state>\n          </provider>\n        </entry>\n      </file>\n    </leaf>\n  </component>\n  <component name=\"FindInProjectRecents\">\n    <findStrings>\n      <find>logout</find>\n      <find>admin.dashboard</find>\n      <find>admin</find>\n      <find>admin.user</find>\n      <find>sidebar-item</find>\n      <find>container-fluid</find>\n      <find>admin.layout.master</find>\n      <find>scroll-sidebar</find>\n      <find>Personal Info</find>\n      <find>Form Elements</find>\n      <find>Previous</find>\n      <find>Create New</find>\n      <find>My Profile</find>\n      <find>Charts</find>\n      <find>logo-text</find>\n      <find>Employee List</find>\n      <find>managesalary.detail</find>\n      <find>delete-form</find>\n      <find>deletePost</find>\n      <find>approve</find>\n      <find>Approve</find>\n      <find>id=&quot;tax&quot;</find>\n      <find>card-title</find>\n      <find>April 2019</find>\n      <find>fc-view-container</find>\n      <find>calendar</find>\n      <find>calendar-events</find>\n      <find>jquery</find>\n      <find>admin-panel/assets/libs/jquery/dist/jquery.min.js</find>\n      <find>admin-panel/dist/js/jquery-ui.min.js</find>\n    </findStrings>\n  </component>\n  <component name=\"Git.Settings\">\n    <option name=\"RECENT_GIT_ROOT_PATH\" value=\"$PROJECT_DIR$\" />\n  </component>\n  <component name=\"IdeDocumentHistory\">\n    <option name=\"CHANGED_PATHS\">\n      <list>\n        <option value=\"$PROJECT_DIR$/resources/views/admin/managesalary/salarylist.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/profile/changepw.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/salary/create.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/salary/edit.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/salary/index.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/shift/create.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/shift/edit.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/shift/index.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/totalleave/index.blade.php\" />\n        <option value=\"$PROJECT_DIR$/database/migrations/2014_10_12_000000_create_users_table.php\" />\n        <option value=\"$PROJECT_DIR$/database/migrations/2019_03_17_061433_create_leaves_table.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/leave/index.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/leave/create.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/includes/navigation.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/layout/master.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/managesalary/makepayment.blade.php\" />\n        <option value=\"$PROJECT_DIR$/app/Leave.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/user/index.blade.php\" />\n        <option value=\"$PROJECT_DIR$/app/Salary.php\" />\n        <option value=\"$PROJECT_DIR$/app/Managesalary.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/managesalary/detail.blade.php\" />\n        <option value=\"$USER_HOME$/Downloads/admin template/New folder/html/ltr/pages-calendar.html\" />\n        <option value=\"$PROJECT_DIR$/app/User.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/DashboardController.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/calendar/test.blade.php\" />\n        <option value=\"$PROJECT_DIR$/database/migrations/2019_04_21_111757_create_events_table.php\" />\n        <option value=\"$PROJECT_DIR$/storage/logs/laravel-2019-04-23.log\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/Calendar.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/EventController.php\" />\n        <option value=\"$PROJECT_DIR$/database/migrations/2019_04_26_023012_create_calendars_table.php\" />\n        <option value=\"$PROJECT_DIR$/app/Calendar.php\" />\n        <option value=\"$PROJECT_DIR$/routes/web.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/calendar/addevent.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/dashboard/index.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/profile/index.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/includes/sidebar.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/calendar/event.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/includes/head.blade.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/includes/scripts.blade.php\" />\n        <option value=\"$PROJECT_DIR$/config/toastr.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/CalendarController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/DepartmentController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/CityController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/DesignationController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/EmployeeController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/LeaveController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/ManagesalaryController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/SalaryController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/ShiftController.php\" />\n        <option value=\"$PROJECT_DIR$/app/Http/Controllers/UserController.php\" />\n        <option value=\"$PROJECT_DIR$/resources/views/admin/user/edit.blade.php\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"JsBuildToolGruntFileManager\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\" />\n  <component name=\"JsBuildToolPackageJson\" detection-done=\"true\" sorting=\"DEFINITION_ORDER\">\n    <package-json value=\"$PROJECT_DIR$/package.json\" />\n  </component>\n  <component name=\"JsGulpfileManager\">\n    <detection-done>true</detection-done>\n    <sorting>DEFINITION_ORDER</sorting>\n  </component>\n  <component name=\"NodePackageJsonFileManager\">\n    <packageJsonPaths>\n      <path value=\"$PROJECT_DIR$/package.json\" />\n      <path value=\"$PROJECT_DIR$/public/admin-panel/assets/libs/flot/package.json\" />\n      <path value=\"$PROJECT_DIR$/public/admin-panel/assets/libs/jquery-asColor/package.json\" />\n      <path value=\"$PROJECT_DIR$/public/admin-panel/assets/libs/jquery-asGradient/package.json\" />\n    </packageJsonPaths>\n  </component>\n  <component name=\"PhpWorkspaceProjectConfiguration\">\n    <include_path>\n      <path value=\"$PROJECT_DIR$/vendor/opis/closure\" />\n      <path value=\"$PROJECT_DIR$/vendor/composer\" />\n      <path value=\"$PROJECT_DIR$/vendor/phar-io/version\" />\n      <path value=\"$PROJECT_DIR$/vendor/phar-io/manifest\" />\n      <path value=\"$PROJECT_DIR$/vendor/dnoegel/php-xdg-base-dir\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpspec/prophecy\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/phpunit\" />\n      <path value=\"$PROJECT_DIR$/vendor/beyondcode/laravel-dump-server\" />\n      <path value=\"$PROJECT_DIR$/vendor/mockery/mockery\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-token-stream\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-code-coverage\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-timer\" />\n      <path value=\"$PROJECT_DIR$/vendor/webmozart/assert\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-text-template\" />\n      <path value=\"$PROJECT_DIR$/vendor/fzaninotto/faker\" />\n      <path value=\"$PROJECT_DIR$/vendor/dragonmantank/cron-expression\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpunit/php-file-iterator\" />\n      <path value=\"$PROJECT_DIR$/vendor/fideloper/proxy\" />\n      <path value=\"$PROJECT_DIR$/vendor/league/flysystem\" />\n      <path value=\"$PROJECT_DIR$/vendor/myclabs/deep-copy\" />\n      <path value=\"$PROJECT_DIR$/vendor/nikic/php-parser\" />\n      <path value=\"$PROJECT_DIR$/vendor/paragonie/random_compat\" />\n      <path value=\"$PROJECT_DIR$/vendor/laravel/framework\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpdocumentor/type-resolver\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpdocumentor/reflection-common\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock\" />\n      <path value=\"$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles\" />\n      <path value=\"$PROJECT_DIR$/vendor/nunomaduro/collision\" />\n      <path value=\"$PROJECT_DIR$/vendor/ramsey/uuid\" />\n      <path value=\"$PROJECT_DIR$/vendor/theseer/tokenizer\" />\n      <path value=\"$PROJECT_DIR$/vendor/phpoption/phpoption\" />\n      <path value=\"$PROJECT_DIR$/vendor/laravel/tinker\" />\n      <path value=\"$PROJECT_DIR$/vendor/doctrine/instantiator\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/console\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/http-kernel\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/http-foundation\" />\n      <path value=\"$PROJECT_DIR$/vendor/egulias/email-validator\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/diff\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/event-dispatcher\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/version\" />\n      <path value=\"$PROJECT_DIR$/vendor/psr/simple-cache\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/debug\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/polyfill-mbstring\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/resource-operations\" />\n      <path value=\"$PROJECT_DIR$/vendor/psr/log\" />\n      <path value=\"$PROJECT_DIR$/vendor/psy/psysh\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/var-dumper\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/contracts\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/translation\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/object-enumerator\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/finder\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/polyfill-php72\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/object-reflector\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/process\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/exporter\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/routing\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/recursion-context\" />\n      <path value=\"$PROJECT_DIR$/vendor/psr/container\" />\n      <path value=\"$PROJECT_DIR$/vendor/filp/whoops\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/polyfill-ctype\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/comparator\" />\n      <path value=\"$PROJECT_DIR$/vendor/symfony/css-selector\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/environment\" />\n      <path value=\"$PROJECT_DIR$/vendor/sebastian/global-state\" />\n      <path value=\"$PROJECT_DIR$/vendor/doctrine/lexer\" />\n      <path value=\"$PROJECT_DIR$/vendor/doctrine/inflector\" />\n      <path value=\"$PROJECT_DIR$/vendor/hamcrest/hamcrest-php\" />\n      <path value=\"$PROJECT_DIR$/vendor/nesbot/carbon\" />\n      <path value=\"$PROJECT_DIR$/vendor/swiftmailer/swiftmailer\" />\n      <path value=\"$PROJECT_DIR$/vendor/jakub-onderka/php-console-color\" />\n      <path value=\"$PROJECT_DIR$/vendor/jakub-onderka/php-console-highlighter\" />\n      <path value=\"$PROJECT_DIR$/vendor/vlucas/phpdotenv\" />\n      <path value=\"$PROJECT_DIR$/vendor/monolog/monolog\" />\n      <path value=\"$PROJECT_DIR$/vendor/erusev/parsedown\" />\n      <path value=\"$PROJECT_DIR$/vendor/maddhatter/laravel-fullcalendar\" />\n      <path value=\"$PROJECT_DIR$/vendor/brian2694/laravel-toastr\" />\n    </include_path>\n  </component>\n  <component name=\"ProjectFrameBounds\" extendedState=\"6\">\n    <option name=\"x\" value=\"10\" />\n    <option name=\"y\" value=\"20\" />\n    <option name=\"width\" value=\"1346\" />\n    <option name=\"height\" value=\"728\" />\n  </component>\n  <component name=\"ProjectLevelVcsManager\" settingsEditedManually=\"true\">\n    <ConfirmationsSetting value=\"1\" id=\"Add\" />\n  </component>\n  <component name=\"ProjectView\">\n    <navigator proportions=\"\" version=\"1\">\n      <foldersAlwaysOnTop value=\"true\" />\n    </navigator>\n    <panes>\n      <pane id=\"ProjectPane\">\n        <subPane>\n          <expand>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"app\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"app\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"Http\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"app\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"Http\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"Controllers\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"app\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"Http\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"Controllers\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"Auth\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"config\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"resources\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"resources\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"views\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"resources\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"views\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"admin\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"resources\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"views\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"admin\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"auth\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"resources\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"views\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"admin\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"includes\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"resources\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"views\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"admin\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"leave\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"resources\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"views\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"admin\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"user\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n            <path>\n              <item name=\"ems\" type=\"b2602c69:ProjectViewProjectNode\" />\n              <item name=\"ems\" type=\"462c0819:PsiDirectoryNode\" />\n              <item name=\"routes\" type=\"462c0819:PsiDirectoryNode\" />\n            </path>\n          </expand>\n          <select />\n        </subPane>\n      </pane>\n      <pane id=\"Scope\" />\n    </panes>\n  </component>\n  <component name=\"PropertiesComponent\">\n    <property name=\"SearchEverywhereHistoryKey\" value=\"leaverequest.php&#9;FILE&#9;file://C:/xampp/htdocs/laravel/ems/app/Http/Requests/LeaveRequest.php\" />\n    <property name=\"WebServerToolWindowFactoryState\" value=\"false\" />\n    <property name=\"last_opened_file_path\" value=\"$PROJECT_DIR$/../notification\" />\n    <property name=\"nodejs_interpreter_path.stuck_in_default_project\" value=\"undefined stuck path\" />\n    <property name=\"nodejs_npm_path_reset_for_default_project\" value=\"true\" />\n    <property name=\"nodejs_package_manager_path\" value=\"yarn\" />\n  </component>\n  <component name=\"RecentsManager\">\n    <key name=\"CopyFile.RECENT_KEYS\">\n      <recent name=\"C:\\xampp\\htdocs\\web\" />\n      <recent name=\"C:\\xampp\\htdocs\\laravel\\ems\\resources\\views\\admin\\designation\" />\n    </key>\n    <key name=\"MoveFile.RECENT_KEYS\">\n      <recent name=\"C:\\xampp\\htdocs\\laravel\\ems\\resources\\views\\admin\" />\n    </key>\n  </component>\n  <component name=\"RunDashboard\">\n    <option name=\"ruleStates\">\n      <list>\n        <RuleState>\n          <option name=\"name\" value=\"ConfigurationTypeDashboardGroupingRule\" />\n        </RuleState>\n        <RuleState>\n          <option name=\"name\" value=\"StatusDashboardGroupingRule\" />\n        </RuleState>\n      </list>\n    </option>\n  </component>\n  <component name=\"SvnConfiguration\">\n    <configuration />\n  </component>\n  <component name=\"TaskManager\">\n    <task active=\"true\" id=\"Default\" summary=\"Default task\">\n      <changelist id=\"822e2bf2-54d3-48aa-9620-dbb230c561bf\" name=\"Default Changelist\" comment=\"\" />\n      <created>1551954130068</created>\n      <option name=\"number\" value=\"Default\" />\n      <option name=\"presentableId\" value=\"Default\" />\n      <updated>1551954130068</updated>\n      <workItem from=\"1551954132360\" duration=\"353000\" />\n      <workItem from=\"1552029747422\" duration=\"1790000\" />\n      <workItem from=\"1552192856834\" duration=\"46907000\" />\n      <workItem from=\"1552319554736\" duration=\"2586000\" />\n      <workItem from=\"1552354417771\" duration=\"1105000\" />\n      <workItem from=\"1552399612706\" duration=\"9760000\" />\n      <workItem from=\"1552440962270\" duration=\"24669000\" />\n      <workItem from=\"1552485295514\" duration=\"3718000\" />\n      <workItem from=\"1552527439407\" duration=\"10977000\" />\n      <workItem from=\"1552613657883\" duration=\"4363000\" />\n      <workItem from=\"1552620654544\" duration=\"7665000\" />\n      <workItem from=\"1552708825092\" duration=\"5149000\" />\n      <workItem from=\"1552787464276\" duration=\"13170000\" />\n      <workItem from=\"1552883300753\" duration=\"15653000\" />\n      <workItem from=\"1552915173995\" duration=\"26697000\" />\n      <workItem from=\"1553045658545\" duration=\"24486000\" />\n      <workItem from=\"1553176583812\" duration=\"1854000\" />\n      <workItem from=\"1553219992748\" duration=\"1605000\" />\n      <workItem from=\"1553275405637\" duration=\"687000\" />\n      <workItem from=\"1553313719578\" duration=\"46000\" />\n      <workItem from=\"1553343274030\" duration=\"680000\" />\n      <workItem from=\"1553355779988\" duration=\"271000\" />\n      <workItem from=\"1553360010925\" duration=\"1369000\" />\n      <workItem from=\"1553393322326\" duration=\"47000\" />\n      <workItem from=\"1553394529402\" duration=\"249000\" />\n      <workItem from=\"1553401778257\" duration=\"9975000\" />\n      <workItem from=\"1553652333806\" duration=\"4456000\" />\n      <workItem from=\"1553747609472\" duration=\"33204000\" />\n      <workItem from=\"1554087555244\" duration=\"12343000\" />\n      <workItem from=\"1554122901978\" duration=\"639000\" />\n      <workItem from=\"1554174726144\" duration=\"21529000\" />\n      <workItem from=\"1554266045755\" duration=\"5066000\" />\n      <workItem from=\"1554345846556\" duration=\"651000\" />\n      <workItem from=\"1554352730794\" duration=\"19875000\" />\n      <workItem from=\"1554428982822\" duration=\"2142000\" />\n      <workItem from=\"1554432540907\" duration=\"625000\" />\n      <workItem from=\"1554439296978\" duration=\"6748000\" />\n      <workItem from=\"1554460363083\" duration=\"1454000\" />\n      <workItem from=\"1554478433236\" duration=\"616000\" />\n      <workItem from=\"1554612300858\" duration=\"5436000\" />\n      <workItem from=\"1554870250523\" duration=\"36133000\" />\n      <workItem from=\"1555042182864\" duration=\"1706000\" />\n      <workItem from=\"1555245924176\" duration=\"94000\" />\n      <workItem from=\"1555246553713\" duration=\"718000\" />\n      <workItem from=\"1555304714077\" duration=\"7323000\" />\n      <workItem from=\"1555313081318\" duration=\"11623000\" />\n      <workItem from=\"1555345996937\" duration=\"13000\" />\n      <workItem from=\"1555390145851\" duration=\"10384000\" />\n      <workItem from=\"1555404002223\" duration=\"1136000\" />\n      <workItem from=\"1555405784238\" duration=\"1929000\" />\n      <workItem from=\"1555600978254\" duration=\"7592000\" />\n      <workItem from=\"1555648893270\" duration=\"606000\" />\n      <workItem from=\"1555651456660\" duration=\"17322000\" />\n      <workItem from=\"1555696903096\" duration=\"5000\" />\n      <workItem from=\"1555822456820\" duration=\"11626000\" />\n      <workItem from=\"1555910339018\" duration=\"16309000\" />\n      <workItem from=\"1555995271993\" duration=\"1170000\" />\n      <workItem from=\"1555997076428\" duration=\"12648000\" />\n      <workItem from=\"1556081612268\" duration=\"1236000\" />\n      <workItem from=\"1556085273262\" duration=\"5474000\" />\n      <workItem from=\"1556117852259\" duration=\"596000\" />\n      <workItem from=\"1556245697609\" duration=\"996000\" />\n      <workItem from=\"1556254236516\" duration=\"3673000\" />\n      <workItem from=\"1556462449031\" duration=\"23000\" />\n      <workItem from=\"1556512884081\" duration=\"8508000\" />\n      <workItem from=\"1556530377325\" duration=\"823000\" />\n      <workItem from=\"1556551343387\" duration=\"33000\" />\n      <workItem from=\"1556601111986\" duration=\"2458000\" />\n      <workItem from=\"1556621447959\" duration=\"1340000\" />\n      <workItem from=\"1556636760069\" duration=\"235000\" />\n      <workItem from=\"1556772462183\" duration=\"662000\" />\n    </task>\n    <servers />\n  </component>\n  <component name=\"TimeTrackingManager\">\n    <option name=\"totallyTimeSpent\" value=\"606973000\" />\n  </component>\n  <component name=\"ToolWindowManager\">\n    <frame x=\"-8\" y=\"-8\" width=\"1382\" height=\"784\" extended-state=\"7\" />\n    <layout>\n      <window_info active=\"true\" content_ui=\"combo\" id=\"Project\" order=\"0\" visible=\"true\" weight=\"0.21028744\" />\n      <window_info id=\"Structure\" order=\"1\" side_tool=\"true\" weight=\"0.25\" />\n      <window_info id=\"npm\" order=\"2\" side_tool=\"true\" />\n      <window_info id=\"Favorites\" order=\"3\" side_tool=\"true\" />\n      <window_info anchor=\"bottom\" id=\"Message\" order=\"0\" />\n      <window_info anchor=\"bottom\" id=\"Find\" order=\"1\" weight=\"0.32872504\" />\n      <window_info anchor=\"bottom\" id=\"Run\" order=\"2\" />\n      <window_info anchor=\"bottom\" id=\"Debug\" order=\"3\" weight=\"0.4\" />\n      <window_info anchor=\"bottom\" id=\"Cvs\" order=\"4\" weight=\"0.25\" />\n      <window_info anchor=\"bottom\" id=\"Inspection\" order=\"5\" weight=\"0.4\" />\n      <window_info anchor=\"bottom\" id=\"TODO\" order=\"6\" />\n      <window_info anchor=\"bottom\" id=\"Docker\" order=\"7\" show_stripe_button=\"false\" />\n      <window_info anchor=\"bottom\" id=\"Version Control\" order=\"8\" weight=\"0.32872504\" />\n      <window_info anchor=\"bottom\" id=\"Database Changes\" order=\"9\" show_stripe_button=\"false\" />\n      <window_info anchor=\"bottom\" id=\"Event Log\" order=\"10\" side_tool=\"true\" weight=\"0.32872504\" />\n      <window_info anchor=\"bottom\" id=\"Terminal\" order=\"11\" weight=\"0.9139785\" />\n      <window_info anchor=\"right\" id=\"Commander\" internal_type=\"SLIDING\" order=\"0\" type=\"SLIDING\" weight=\"0.4\" />\n      <window_info anchor=\"right\" id=\"Ant Build\" order=\"1\" weight=\"0.25\" />\n      <window_info anchor=\"right\" content_ui=\"combo\" id=\"Hierarchy\" order=\"2\" weight=\"0.25\" />\n      <window_info anchor=\"right\" id=\"Database\" order=\"3\" />\n    </layout>\n    <layout-to-restore>\n      <window_info active=\"true\" content_ui=\"combo\" id=\"Project\" order=\"0\" visible=\"true\" weight=\"0.21028744\" />\n      <window_info id=\"Structure\" order=\"1\" side_tool=\"true\" weight=\"0.25\" />\n      <window_info id=\"npm\" order=\"2\" side_tool=\"true\" />\n      <window_info id=\"Favorites\" order=\"3\" side_tool=\"true\" />\n      <window_info anchor=\"bottom\" id=\"Message\" order=\"0\" />\n      <window_info anchor=\"bottom\" id=\"Find\" order=\"1\" weight=\"0.32872504\" />\n      <window_info anchor=\"bottom\" id=\"Run\" order=\"2\" />\n      <window_info anchor=\"bottom\" id=\"Debug\" order=\"3\" weight=\"0.4\" />\n      <window_info anchor=\"bottom\" id=\"Cvs\" order=\"4\" weight=\"0.25\" />\n      <window_info anchor=\"bottom\" id=\"Inspection\" order=\"5\" weight=\"0.4\" />\n      <window_info anchor=\"bottom\" id=\"TODO\" order=\"6\" />\n      <window_info anchor=\"bottom\" id=\"Docker\" order=\"7\" show_stripe_button=\"false\" />\n      <window_info anchor=\"bottom\" id=\"Version Control\" order=\"8\" weight=\"0.32872504\" />\n      <window_info anchor=\"bottom\" id=\"Database Changes\" order=\"9\" show_stripe_button=\"false\" />\n      <window_info anchor=\"bottom\" id=\"Event Log\" order=\"10\" side_tool=\"true\" weight=\"0.32872504\" />\n      <window_info anchor=\"bottom\" id=\"Terminal\" order=\"11\" weight=\"0.49155146\" />\n      <window_info anchor=\"right\" id=\"Commander\" internal_type=\"SLIDING\" order=\"0\" type=\"SLIDING\" weight=\"0.4\" />\n      <window_info anchor=\"right\" id=\"Ant Build\" order=\"1\" weight=\"0.25\" />\n      <window_info anchor=\"right\" content_ui=\"combo\" id=\"Hierarchy\" order=\"2\" weight=\"0.25\" />\n      <window_info anchor=\"right\" id=\"Database\" order=\"3\" />\n    </layout-to-restore>\n  </component>\n  <component name=\"TypeScriptGeneratedFilesManager\">\n    <option name=\"version\" value=\"1\" />\n    <option name=\"exactExcludedFiles\">\n      <list>\n        <option value=\"$PROJECT_DIR$/../angular-app/node_modules/karma/config.tpl.js\" />\n      </list>\n    </option>\n  </component>\n  <component name=\"VcsContentAnnotationSettings\">\n    <option name=\"myLimit\" value=\"2678400000\" />\n  </component>\n  <component name=\"XDebuggerManager\">\n    <breakpoint-manager>\n      <breakpoints>\n        <line-breakpoint enabled=\"true\" type=\"php\">\n          <url>file://$PROJECT_DIR$/database/migrations/2019_03_24_051434_create_managesalaries_table.php</url>\n          <line>2</line>\n          <option name=\"timeStamp\" value=\"1\" />\n        </line-breakpoint>\n      </breakpoints>\n    </breakpoint-manager>\n  </component>\n  <component name=\"editorHistoryManager\">\n    <entry file=\"file://$USER_HOME$/Downloads/admin template/New folder/html/ltr/pages-calendar.html\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"243\">\n          <caret line=\"440\" column=\"34\" lean-forward=\"true\" selection-end-line=\"455\" selection-end-column=\"7\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/department/create.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"459\">\n          <caret line=\"54\" column=\"35\" selection-start-line=\"54\" selection-start-column=\"35\" selection-end-line=\"54\" selection-end-column=\"35\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Event.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/lang/en/auth.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/storage/logs/laravel-2019-04-23.log\">\n      <provider selected=\"true\" editor-type-id=\"LogFileEditorProvider\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Calendar.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"153\">\n          <caret line=\"9\" column=\"68\" selection-start-line=\"9\" selection-start-column=\"68\" selection-end-line=\"9\" selection-end-column=\"68\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/database/migrations/2019_04_21_111757_create_events_table.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"447\">\n          <caret line=\"31\" column=\"39\" selection-start-line=\"31\" selection-start-column=\"39\" selection-end-line=\"31\" selection-end-column=\"39\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/database/migrations/2019_04_26_023012_create_calendars_table.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"158\">\n          <caret line=\"15\" column=\"33\" selection-start-line=\"15\" selection-start-column=\"24\" selection-end-line=\"15\" selection-end-column=\"33\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/event/event.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"128\">\n          <caret line=\"24\" column=\"29\" selection-start-line=\"24\" selection-start-column=\"29\" selection-end-line=\"24\" selection-end-column=\"29\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/layout/master.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"187\">\n          <caret line=\"11\" column=\"18\" lean-forward=\"true\" selection-start-line=\"11\" selection-start-column=\"18\" selection-end-line=\"11\" selection-end-column=\"18\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/department/index.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"170\">\n          <caret line=\"10\" column=\"40\" lean-forward=\"true\" selection-end-line=\"119\" selection-end-column=\"11\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/calendar/addevent.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"544\">\n          <caret line=\"32\" column=\"46\" lean-forward=\"true\" selection-start-line=\"30\" selection-start-column=\"40\" selection-end-line=\"32\" selection-end-column=\"46\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/includes/navigation.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"1598\">\n          <caret line=\"94\" column=\"9\" selection-start-line=\"94\" selection-start-column=\"9\" selection-end-line=\"94\" selection-end-column=\"9\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/dashboard/index.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"399\">\n          <caret line=\"113\" selection-start-line=\"113\" selection-end-line=\"115\" selection-end-column=\"87\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/user/create.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/profile/index.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"357\">\n          <caret line=\"123\" column=\"60\" selection-start-line=\"123\" selection-start-column=\"60\" selection-end-line=\"123\" selection-end-column=\"60\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/includes/sidebar.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"300\">\n          <caret line=\"54\" selection-start-line=\"54\" selection-end-line=\"54\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/calendar/event.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"467\">\n          <caret line=\"54\" column=\"1\" selection-start-line=\"54\" selection-start-column=\"1\" selection-end-line=\"54\" selection-end-column=\"1\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$USER_HOME$/Downloads/admin template/New folder/html/ltr/pages-elements.html\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-8364\" />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/config/services.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/config/app.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"22\">\n          <caret line=\"203\" column=\"53\" selection-start-line=\"203\" selection-start-column=\"53\" selection-end-line=\"203\" selection-end-column=\"53\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/config/toastr.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"136\">\n          <caret line=\"8\" column=\"43\" selection-start-line=\"8\" selection-start-column=\"38\" selection-end-line=\"8\" selection-end-column=\"43\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/includes/scripts.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"498\">\n          <caret line=\"51\" column=\"25\" selection-start-line=\"51\" selection-start-column=\"25\" selection-end-line=\"51\" selection-end-column=\"25\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/AdminController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-964\" />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/Calendar.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/CalendarController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"447\">\n          <caret line=\"52\" column=\"35\" selection-start-line=\"52\" selection-start-column=\"35\" selection-end-line=\"52\" selection-end-column=\"35\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/Controller.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/CityController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"2057\">\n          <caret line=\"123\" column=\"59\" selection-start-line=\"123\" selection-start-column=\"52\" selection-end-line=\"123\" selection-end-column=\"59\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/DashboardController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-692\">\n          <caret line=\"16\" column=\"36\" lean-forward=\"true\" selection-start-line=\"16\" selection-start-column=\"36\" selection-end-line=\"16\" selection-end-column=\"36\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/DepartmentController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"453\">\n          <caret line=\"120\" column=\"68\" lean-forward=\"true\" selection-start-line=\"120\" selection-start-column=\"7\" selection-end-line=\"120\" selection-end-column=\"68\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/EventController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"357\">\n          <caret line=\"22\" column=\"11\" lean-forward=\"true\" selection-start-line=\"22\" selection-start-column=\"11\" selection-end-line=\"22\" selection-end-column=\"11\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/EmployeeController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"430\">\n          <caret line=\"192\" column=\"31\" selection-start-line=\"192\" selection-start-column=\"31\" selection-end-line=\"192\" selection-end-column=\"31\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/DownloadController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/DesignationController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"447\">\n          <caret line=\"123\" column=\"34\" selection-start-line=\"123\" selection-start-column=\"34\" selection-end-line=\"123\" selection-end-column=\"34\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/includes/head.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"464\">\n          <caret line=\"36\" column=\"93\" selection-start-line=\"36\" selection-start-column=\"93\" selection-end-line=\"36\" selection-end-column=\"93\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/HomeController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/ManagesalaryController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"297\">\n          <caret line=\"95\" column=\"28\" lean-forward=\"true\" selection-start-line=\"95\" selection-start-column=\"28\" selection-end-line=\"95\" selection-end-column=\"28\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/ProfileController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-1338\" />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/SalaryController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"430\">\n          <caret line=\"128\" column=\"64\" lean-forward=\"true\" selection-start-line=\"128\" selection-start-column=\"64\" selection-end-line=\"128\" selection-end-column=\"64\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/TotalleaveController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-930\" />\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/ShiftController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"-493\">\n          <caret line=\"7\" column=\"36\" selection-start-line=\"7\" selection-start-column=\"36\" selection-end-line=\"7\" selection-end-column=\"36\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/user/edit.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"340\">\n          <caret line=\"71\" column=\"105\" selection-start-line=\"71\" selection-start-column=\"105\" selection-end-line=\"71\" selection-end-column=\"105\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/user/index.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"1887\">\n          <caret line=\"111\" column=\"49\" selection-start-line=\"111\" selection-start-column=\"49\" selection-end-line=\"111\" selection-end-column=\"49\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/leave/edit.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/leave/index.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/LeaveController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"867\">\n          <caret line=\"57\" selection-start-line=\"57\" selection-end-line=\"57\" />\n          <folding>\n            <element signature=\"e#40#53#0#PHP\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Requests/LeaveRequest.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/routes/web.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"1683\">\n          <caret line=\"108\" selection-start-line=\"108\" selection-end-line=\"108\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/Auth/LoginController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"425\">\n          <caret line=\"28\" column=\"38\" selection-start-line=\"28\" selection-start-column=\"29\" selection-end-line=\"28\" selection-end-column=\"38\" />\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/app/Http/Controllers/UserController.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\">\n        <state relative-caret-position=\"2958\">\n          <caret line=\"178\" column=\"31\" selection-start-line=\"178\" selection-start-column=\"31\" selection-end-line=\"178\" selection-end-column=\"31\" />\n          <folding>\n            <element signature=\"e#39#75#0#PHP\" expanded=\"true\" />\n          </folding>\n        </state>\n      </provider>\n    </entry>\n    <entry file=\"file://$PROJECT_DIR$/resources/views/admin/auth/login.blade.php\">\n      <provider selected=\"true\" editor-type-id=\"text-editor\" />\n    </entry>\n  </component>\n</project>"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019 Ganesh Khadka\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "# ems\nThis project is based on laravel framework.\nAdmin has all privilege where as employee has certain restriction to access.By default You can register as an employee:\nhttp://127.0.0.1:8000/register\n\n## You can engage in this project to make this more advanced and you can add new features.You contribution will be highly appreciated !!\n\n## Screenshots\n# Login page\n![login page](https://user-images.githubusercontent.com/15700384/56889193-7b21e100-6a95-11e9-8e5a-144050628106.png)\n\n# User management\n![user management screenshot](https://user-images.githubusercontent.com/15700384/56889471-1e72f600-6a96-11e9-9591-89faf0f20715.png)\n\n# Salary management\n![salary management](https://user-images.githubusercontent.com/15700384/56889637-a1944c00-6a96-11e9-9fef-efec4e27dc40.png)\n\n# Leave management\n![leave management](https://user-images.githubusercontent.com/15700384/56889755-ffc12f00-6a96-11e9-9886-571bbfa7b3e8.png)\n\n# Event management\n![event management](https://user-images.githubusercontent.com/15700384/56889858-634b5c80-6a97-11e9-9bd5-322a547f58cc.png)\n\n\n## Installation\nThis project is for employee management.Employee can register himself and employee can assign a salary for employee...\n\n## Clone the repo\ngit clone https://github.com/GaneshKhadka/Employee-management-system-in-laravel.git\n\n## Composer install\ncd Employee-management-system-in-laravel\ncomposer install\n\n# Database\nAjust the database information, then:\n\nphp artisan migrate\n\n# Seed the database:\n\nphp artisan db:seed\n\n# Login credentials\nAdmin Account: ['email' => 'ganeshkhadka46@gmail.com', 'password' => 'admin123'] <br>\nEmployee Account: ['email' => 'employee1@gmail.com', 'password' => 'employee123'] \n\n\n"
  },
  {
    "path": "app/Admin.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Admin extends Model\n{\n    protected $fillable = [\n        'username', 'image', 'first_name','last_name', 'email', 'status',\n    ];\n\n}\n"
  },
  {
    "path": "app/Advancepayment.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Advancepayment extends Model\n{\n    public function employees()\n    {\n        return $this->belongsTo('App\\User', 'employee_id');\n    }\n}\n"
  },
  {
    "path": "app/Calendar.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Calendar extends Model\n{\n    protected $table = 'calendars';\n    protected $fillable = ['title','color','start_date','end_date'];\n}\n"
  },
  {
    "path": "app/City.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass City extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/Console/Kernel.php",
    "content": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\n\nclass Kernel extends ConsoleKernel\n{\n    /**\n     * The Artisan commands provided by your application.\n     *\n     * @var array\n     */\n    protected $commands = [\n        //\n    ];\n\n    /**\n     * Define the application's command schedule.\n     *\n     * @param  \\Illuminate\\Console\\Scheduling\\Schedule  $schedule\n     * @return void\n     */\n    protected function schedule(Schedule $schedule)\n    {\n        // $schedule->command('inspire')\n        //          ->hourly();\n    }\n\n    /**\n     * Register the commands for the application.\n     *\n     * @return void\n     */\n    protected function commands()\n    {\n        $this->load(__DIR__.'/Commands');\n\n        require base_path('routes/console.php');\n    }\n}\n"
  },
  {
    "path": "app/Department.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Department extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/Designation.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Designation extends Model\n{\n    public function userss()\n    {\n        return $this->belongsTo('App\\User', 'employee_id');\n    }\n}\n"
  },
  {
    "path": "app/Download.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Download extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/Employee.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Employee extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/Event.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Event extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/Exceptions/Handler.php",
    "content": "<?php\n\nnamespace App\\Exceptions;\n\nuse Exception;\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\n\nclass Handler extends ExceptionHandler\n{\n    /**\n     * A list of the exception types that are not reported.\n     *\n     * @var array\n     */\n    protected $dontReport = [\n        //\n    ];\n\n    /**\n     * A list of the inputs that are never flashed for validation exceptions.\n     *\n     * @var array\n     */\n    protected $dontFlash = [\n        'password',\n        'password_confirmation',\n    ];\n\n    /**\n     * Report or log an exception.\n     *\n     * @param  \\Exception  $exception\n     * @return void\n     */\n    public function report(Exception $exception)\n    {\n        parent::report($exception);\n    }\n\n    /**\n     * Render an exception into an HTTP response.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Exception  $exception\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function render($request, Exception $exception)\n    {\n        return parent::render($request, $exception);\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/AdminController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Admin;\nuse App\\User;\nuse Illuminate\\Http\\Request;\n\nclass AdminController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n//        $users = User::all();\n//        return view('admin.user.index',compact('users'));\n    }\n\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n//        return view('admin.user.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        //\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Admin  $admin\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Admin $admin)\n    {\n\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Admin  $admin\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit(Admin $admin)\n    {\n        //\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Admin  $admin\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, Admin $admin)\n    {\n        //\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Admin  $admin\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy(Admin $admin)\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/ForgotPasswordController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\SendsPasswordResetEmails;\n\nclass ForgotPasswordController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Password Reset Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller is responsible for handling password reset emails and\n    | includes a trait which assists in sending these notifications from\n    | your application to your users. Feel free to explore this trait.\n    |\n    */\n\n    use SendsPasswordResetEmails;\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('guest');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/LoginController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\nuse Illuminate\\Http\\Request;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\AuthenticatesUsers;\n\nclass LoginController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Login Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller handles authenticating users for the application and\n    | redirecting them to your home screen. The controller uses a trait\n    | to conveniently provide its functionality to your applications.\n    |\n    */\n\n    use AuthenticatesUsers;\n\n    /**\n     * Where to redirect users after login.\n     *\n     * @var string\n     */\n    protected $redirectTo = 'dashboard';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('guest')->except('logout');\n    }\n\n    public function showLoginForm()\n    {\n        return view('admin.auth.login');\n    }\n\n    /**\n     * Log the user out of the application.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function logout(Request $request)\n    {\n        $this->guard()->logout();\n\n        $request->session()->invalidate();\n\n        return $this->loggedOut($request) ?: redirect()->route('login');\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/RegisterController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\User;\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Support\\Facades\\Validator;\nuse Illuminate\\Foundation\\Auth\\RegistersUsers;\n\nclass RegisterController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Register Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller handles the registration of new users as well as their\n    | validation and creation. By default this controller uses a trait to\n    | provide this functionality without requiring any additional code.\n    |\n    */\n\n    use RegistersUsers;\n\n    /**\n     * Where to redirect users after registration.\n     *\n     * @var string\n     */\n    protected $redirectTo = 'dashboard';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('guest');\n    }\n\n    /**\n     * Get a validator for an incoming registration request.\n     *\n     * @param  array  $data\n     * @return \\Illuminate\\Contracts\\Validation\\Validator\n     */\n    protected function validator(array $data)\n    {\n        return Validator::make($data, [\n            'username' => ['required', 'string', 'max:255'],\n            'first_name' => ['required'],\n            'last_name' => ['required'],\n            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],\n            'password' => ['required'],\n            'phone' => ['required'],\n            'address' => ['required'],\n            'gender' => ['required'],\n            'dob' => ['required'],\n            'join_date' => ['required'],\n            'job_type' => ['required'],\n            'city' => ['required'],\n            'age' => ['required'],\n        ]);\n    }\n\n    /**\n     * Create a new user instance after a valid registration.\n     *\n     * @param  array  $data\n     * @return \\App\\User\n     */\n    protected function create(array $data)\n    {\n//        dd($data);\n        return User::create([\n            'username' => $data['username'],\n            'first_name' => $data['first_name'],\n            'last_name' => $data['last_name'],\n            'role' => 'employee',\n            'email' => $data['email'],\n            'password' => Hash::make($data['password']),\n            'status' => '2',\n            'phone' => $data['phone'],\n            'address' => $data['address'],\n            'gender' => $data['gender'],\n            'dob' => $data['dob'],\n            'join_date' => $data['join_date'],\n            'job_type' => $data['job_type'],\n            'city' => $data['city'],\n            'age' => $data['age'],\n        ]);\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/ResetPasswordController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\ResetsPasswords;\n\nclass ResetPasswordController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Password Reset Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller is responsible for handling password reset requests\n    | and uses a simple trait to include this behavior. You're free to\n    | explore this trait and override any methods you wish to tweak.\n    |\n    */\n\n    use ResetsPasswords;\n\n    /**\n     * Where to redirect users after resetting their password.\n     *\n     * @var string\n     */\n    protected $redirectTo = '/home';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('guest');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Auth/VerificationController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\VerifiesEmails;\n\nclass VerificationController extends Controller\n{\n    /*\n    |--------------------------------------------------------------------------\n    | Email Verification Controller\n    |--------------------------------------------------------------------------\n    |\n    | This controller is responsible for handling email verification for any\n    | user that recently registered with the application. Emails may also\n    | be re-sent if the user didn't receive the original email message.\n    |\n    */\n\n    use VerifiesEmails;\n\n    /**\n     * Where to redirect users after verification.\n     *\n     * @var string\n     */\n    protected $redirectTo = '/home';\n\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('auth');\n        $this->middleware('signed')->only('verify');\n        $this->middleware('throttle:6,1')->only('verify', 'resend');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Calendar.php",
    "content": "<?php\n/**\n * Created by PhpStorm.\n * User: Ganesh Khadka\n * Date: 4/23/2019\n * Time: 3:41 PM\n */\n\nnamespace App\\Http\\Controllers;\n\n\nclass Calendar\n{\n\n}"
  },
  {
    "path": "app/Http/Controllers/CalendarController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Calendar;\nuse Brian2694\\Toastr\\Facades\\Toastr;\n\nclass CalendarController extends Controller\n{\n    public function index()\n    {\n        $events = Calendar::all();\n        $event = [];\n\n        foreach ($events as $row){\n//            $enddate = $row->end_date.\"24:00:00\";\n            $event[] = \\Calendar::event(\n                $row->title,\n                false,\n                new \\DateTime($row->start_date),\n                new \\DateTime($row->end_date),\n                $row->id,\n                [\n                    'color'=>$row->color,\n                ]\n            );\n        }\n        $calendar =  \\Calendar::addEvents($event);\n//        return view('eventpage',compact('events','calendar'));\n        return view('admin.calendar.event',compact('events','calendar'));\n    }\n\n    public function add()\n    {\n        return view('admin.calendar.addevent');\n    }\n\n    public function store(Request $request)\n    {\n        $request->validate([\n            'title' => 'required',\n            'start_date' => 'required',\n            'end_date' => 'required'\n        ]);\n        $events = new Calendar();\n        $events -> title = $request -> title;\n        $events -> color = $request -> color;\n        $events -> start_date = $request -> start_date;\n        $events -> end_date = $request -> end_date;\n        $events -> save();\n        Toastr::success('Event successfully added!','Success');\n        return redirect('calendar');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/CityController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\City;\nuse Illuminate\\Http\\Request;\nuse Gate;\n\nclass CityController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $cities = City::paginate(15);\n        return view('admin.city.index',compact('cities'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        return view('admin.city.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'city_name' => 'required',\n            'zip_code' => 'required'\n        ]);\n        $city = new City();\n        $city -> city_name = $request -> city_name;\n        $city -> zip_code = $request -> zip_code;\n        $city -> save();\n        Toastr::success('City successfully added!','Success');\n        return redirect()->back();\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\City  $city\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(City $city)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\City  $city\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $city = City::find($id);\n        return view('admin.city.edit',compact('city'));\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\City  $city\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n           'city_name' => 'required',\n           'zip_code' => 'required'\n        ]);\n        $city = City::find($id);\n        $city -> city_name = $request -> city_name;\n        $city -> zip_code = $request -> zip_code;\n        $city -> save();\n        Toastr::success('City successfully updated!','Success');\n        return redirect()->route('city');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\City  $city\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function delete($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $city = City::find($id);\n        $city -> delete();\n        Toastr::error('City successfully deleted!','Deleted');\n        return redirect()->route('city');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/Controller.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Bus\\DispatchesJobs;\nuse Illuminate\\Routing\\Controller as BaseController;\nuse Illuminate\\Foundation\\Validation\\ValidatesRequests;\nuse Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests;\n\nclass Controller extends BaseController\n{\n    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;\n}\n"
  },
  {
    "path": "app/Http/Controllers/DashboardController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\User;\n\nclass DashboardController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        $users = User::paginate(10);\n        return view('admin.dashboard.index',compact('users'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        //\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        //\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show($id)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        //\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        //\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy($id)\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/DepartmentController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Department;\nuse Brian2694\\Toastr\\Facades\\Toastr;\nuse Illuminate\\Http\\Request;\nuse Gate;\n\nclass DepartmentController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $departments = Department::paginate(15);\n        return view('admin.department.index',compact('departments'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        return view('admin.department.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n           'department_name' => 'required',\n        ]);\n        $department = new Department();\n        $department -> department_name = $request -> department_name;\n        $department -> save();\n        Toastr::success('Department successfully added!','Success');\n        return redirect()->route('department');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Department  $department\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Department $department)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Department  $department\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $department = Department::find($id);\n        return view('admin.department.edit',compact('department'));\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Department  $department\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n          $request -> validate([\n             'department_name' => 'required',\n          ]);\n          $department = Department::find($id);\n          $department -> department_name = $request -> department_name;\n          $department -> save();\n          Toastr::success('Department successfully updated!','Success');\n          return redirect()->route('department');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Department  $department\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function delete($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $department = Department::find($id);\n        $department -> delete();\n        Toastr::error('Department successfully deleted!','Deleted');\n        return redirect()->route('department');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/DesignationController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Designation;\nuse App\\User;\nuse Illuminate\\Http\\Request;\nuse Gate;\nuse Brian2694\\Toastr\\Facades\\Toastr;\n\nclass DesignationController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $designations = Designation::paginate(15);\n        return view('admin.designation.index',compact('designations'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $users = User::all();\n        return view('admin.designation.create',compact('users'));\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'designation' => 'required',\n        ]);\n        $designation = new Designation();\n        $designation -> employee_id = $request -> employee_name;\n        $designation -> designation_type = $request -> designation;\n        $designation -> save();\n        Toastr::success('Designation successfully added!','Success');\n        return redirect()->route('designation');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Designation  $designation\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Designation $designation)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Designation  $designation\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $designation = Designation::find($id);\n        return view('admin.designation.edit',compact('designation'));\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Designation  $designation\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'designation' => 'required',\n        ]);\n        $designation = Designation::find($id);\n        $designation -> designation_type = $request -> designation;\n        $designation -> save();\n        Toastr::success('Designation successfully updated!','Updated');\n        return redirect()->route('designation');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Designation  $designation\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function delete($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $designation = Designation::find($id);\n        $designation -> delete();\n        Toastr::error('Designation successfully deleted!','Deleted');\n        return redirect()->route('designation');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/DownloadController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Download;\nuse Illuminate\\Http\\Request;\n\nclass DownloadController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        return view('admin.download.index');\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        //\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        //\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Download  $download\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Download $download)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Download  $download\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit(Download $download)\n    {\n        //\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Download  $download\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, Download $download)\n    {\n        //\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Download  $download\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy(Download $download)\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/EmployeeController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\City;\nuse App\\Employee;\nuse App\\Salary;\nuse Gate;\nuse Brian2694\\Toastr\\Facades\\Toastr;\nuse Illuminate\\Http\\Request;\n\nclass EmployeeController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $employees = Employee::paginate(5);\n        return view('admin.employee.index',compact('employees'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $empcities = City::all();\n        $salamounts = Salary::all();\n        return view('admin.employee.create',compact('empcities','salamounts'));\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'fname' => 'required',\n            'lname' => 'required',\n            'image' => 'required',\n            'email' => 'required',\n            'phone' => 'required',\n            'address' => 'required',\n            'gender' => 'required',\n            'dob' => 'required',\n            'jdate' => 'required',\n            'jtype' => 'required',\n            'salary' => 'required',\n            'age' => 'required',\n        ]);\n\n        $employee = new Employee();\n        $employee -> first_name = $request -> fname;\n        $employee -> last_name = $request -> lname;\n       // $employee -> image = $request -> image;\n        if($request->hasfile('image')){\n            $file = $request->file('image');\n            $extension = $file->getClientOriginalExtension();\n            $filename = time().'.'.$extension;\n            $file -> move('uploads/gallery/', $filename);\n            $employee->image = $filename;\n        }else{\n//            return $request;\n            $employee->image = '';\n        }\n        $employee -> email = $request -> email;\n        $employee -> phone = $request -> phone;\n        $employee -> address = $request -> address;\n        $employee -> gender = $request -> gender;\n        $employee -> dob = $request -> dob;\n        $employee -> join_date = $request -> jdate;\n        $employee -> job_type = $request -> jtype;\n        $employee -> city = $request -> city;\n        $employee -> salary = $request -> salary;\n        $employee -> age = $request -> age;\n        $employee -> save();\n        Toastr::success('Employee successfully added!','Success');\n        return redirect()->route('employee');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Employee  $employee\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Employee $employee)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Employee  $employee\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $employee = Employee::find($id);\n        return view('admin.employee.edit',compact('employee'));\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Employee  $employee\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'fname' => 'required',\n            'lname' => 'required',\n            'image' => 'required',\n            'email' => 'required',\n            'phone' => 'required',\n            'address' => 'required',\n            'gender' => 'required',\n            'dob' => 'required',\n            'jdate' => 'required',\n            'jtype' => 'required',\n            'city' => 'required',\n            'salary' => 'required',\n            'age' => 'required',\n        ]);\n        $employee = Employee::find($id);\n        $employee -> first_name = $request -> fname;\n        $employee -> last_name = $request -> lname;\n        if($request->hasfile('image')){\n            $file = $request->file('image');\n            $extension = $file->getClientOriginalExtension();\n            $filename = time().'.'.$extension;\n            $file -> move('uploads/gallery/', $filename);\n            $employee->image = $filename;\n        }else{\n//            return $request;\n            $employee->image = '';\n        }\n        $employee -> email = $request -> email;\n        $employee -> phone = $request -> phone;\n        $employee -> address = $request -> address;\n        $employee -> gender = $request -> gender;\n        $employee -> dob = $request -> dob;\n        $employee -> join_date = $request -> jdate;\n        $employee -> job_type = $request -> jtype;\n        $employee -> city = $request -> city;\n        $employee-> salary = $request -> salary;\n        $employee -> age = $request -> age;\n        $employee -> save();\n        Toastr::success('Department successfully updated!','Updated');\n        return redirect()->route('employee');\n\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Employee  $employee\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function delete($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $employee = Employee::find($id);\n        $employee -> delete();\n        Toastr::error('Employee successfully deleted!','Deleted');\n        return redirect()->route('employee');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/EventController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Event;\nuse Illuminate\\Http\\Request;\n\nclass EventController extends Controller\n{\n    public function event()\n    {\n        $events=$this->getEventbyMonth(date('m'));\n//        dd($events);\n        return view('admin.calendar.event',compact('events'));\n    }\n\n    public function store(Request $request)\n    {\n//        dd($request->all);\n        $request -> validate([\n            'date' => 'required',\n            'event' => 'required',\n        ]);\n        $event = new Event();\n        $event -> date = $request -> date;\n        $event -> event = $request -> event;\n        $event -> description = $request -> description;\n        $event ->save();\n        return redirect()->route('event');\n    }\n\n    private function getEventbyMonth($month)\n    {\n        return Event::whereMonth('date',$month)->get();\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/HomeController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\n\nclass HomeController extends Controller\n{\n    /**\n     * Create a new controller instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        $this->middleware('auth');\n    }\n\n    /**\n     * Show the application dashboard.\n     *\n     * @return \\Illuminate\\Contracts\\Support\\Renderable\n     */\n    public function index()\n    {\n        return view('dashboard');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/LeaveController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\User;\nuse App\\Leave;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\DB;\nuse App\\Http\\Requests\\LeaveRequest;\nuse Brian2694\\Toastr\\Facades\\Toastr;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass LeaveController extends Controller\n{\n    public function __construct()\n    {\n        $this->middleware('auth');\n    }\n\n    public function index()\n    {\n        $user = Auth::user();\n        if(Auth::user()->role=='admin') {\n            $leaves = Leave::paginate(5);\n        }else{\n            $leaves =  Auth::user()->leave()->paginate(5);\n        }\n//        $user = Auth::user();\n        return view('admin.leave.index',compact('leaves','user'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        return view('admin.leave.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(LeaveRequest $request)\n    {\n        Leave::create([\n            'employee_id'   => Auth::id(),\n            'leave_type'    => $request->leave_type,\n            'date_from'     => $request->date_from,\n            'date_to'       => $request->date_to,\n            'days'          => $request->days,\n            'reason'        => $request->reason,\n        ]);\n\n        Toastr::success('Leave successfully requested to HR!','Success');\n\n        return redirect()->route('leave');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Leave  $leave\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function search(Request $request)\n    {\n//        dd($request->all());\n           // $leave = $request -> get('search');\n            $leaves =Leave::where('leave_type', 'LIKE',\"%{$request->search}%\")->paginate();\n            return view('admin.leave.index',compact('leaves'));\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Leave  $leave\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit(Leave $leave)\n    {\n        //\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Leave  $leave\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, Leave $leave)\n    {\n        //\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Leave  $leave\n     * @return \\Illuminate\\Http\\Response\n     */\n\n    public function approve(Request $request,$id)\n    {\n\n      //  dd($request->all());\n        $leave = Leave::find($id);\n//        dd($leave);\n       if($leave){\n           $leave->is_approved = $request -> approve;\n           $leave->save();\n           return redirect()->back();\n       }\n    }\n\n    public function paid(Request $request,$id)\n    {\n        $leave = Leave::find($id);\n        if($leave){\n            $leave->leave_type_offer = $request -> paid;\n            $leave->save();\n            return redirect()->back();\n        }\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/ManagesalaryController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Brian2694\\Toastr\\Facades\\Toastr;\nuse App\\Advancepayment;\nuse App\\Designation;\nuse App\\Managesalary;\nuse App\\Salary;\nuse App\\User;\nuse App\\Leave;\nuse function foo\\func;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Auth;\nuse DB;\nclass ManagesalaryController extends Controller\n{\n\n    public function __construct()\n    {\n        $this->middleware('auth');\n    }\n\n    public function index()\n    {\n        $users = User::all();\n        return view('admin.managesalary.index',compact('users'));\n    }\n\n    public function detail(Request $request,$id)\n    {\n\n//        if($request->startdate){\n//            $advance=Advancepayment::where('date',$request->startdate)->get();\n//        }else{\n//            $advance = Advancepayment::all();\n//        }\n\n        $from = $request->input('startdate');\n        $to = $request->input('enddate');\n        if ( empty($to) && empty($from) ) {\n            $advance = Advancepayment::where('employee_id','=',$id)->get() ;\n        } elseif ( empty($to) && ! empty($from) ) {\n            $advance = Advancepayment::where('date', $from)->where('employee_id','=',$id);\n        } else {\n            $advance = Advancepayment::whereBetween('date', [$from, $to])->where('employee_id','=',$id)->get();\n        }\n//        dd($advance);\n        $designation = Designation::find($id);\n        if(!$designation){\n            return redirect(route('designation.create'));\n        }\n\n//advance payment calculation\n        $advancePayment=Advancepayment::where('employee_id',$id)->select(DB::raw(\"SUM(amount) as total\"))->first();\n        $des = $designation -> designation_type;\n        $user=User::find($id);\n        $amt = $user->salary;\n        $employee_name = $designation -> userss->username;\n\n//To count the leaves of the employee\n//where('employee_id',$id) -> employee_id is from leaves db and $id is from detail(Request $request,$id)\n        $total_leaves=Leave::where('employee_id',$id)->where('is_approved',1)->count();\n        return view('admin.managesalary.detail',compact('amt','des','employee_name','user','advance','advancePayment','total_leaves'));\n    }\n\n    public function salarylist()\n    {\n        $users = Managesalary::all();\n        return view('admin.managesalary.salarylist',compact('users'));\n    }\n\n    public function store(Request $request)\n    {\n        $users = new Managesalary();\n        $users -> employee_name = $request -> employee_name;\n        $users -> designation_type = $request -> employee_designation;\n        $users -> working_days = $request -> working_days;\n        $users -> tax = $request -> tax_deduction;\n        $users -> gross_salary = $request -> gross_salary;\n        $users -> save();\n        return redirect()->route('managesalary.salarylist');\n    }\n\n    public function makepayment()\n    {\n        return view('admin.managesalary.makepayment');\n    }\n\n    public function makeAdvance(Request $request)\n    {\n        $salaries = new Advancepayment();\n        $salaries -> employee_id = $request -> employee_id;\n        $salaries -> date = $request -> date;\n        $salaries -> amount = $request -> amount;\n        $salaries -> save();\n        Toastr::success('Advance payment successfully done!','Success');\n//        \\Session::flash('alert-success','New record created successfully');\n        return redirect()->route('managesalary.detail', $request->employee_id)->with('msg','New record created successfully');\n    }\n\n    public function search(Request $request){\n        $data =User::where('username', 'LIKE',\"%{$request->search}%\")->paginate();\n        return redirect()->route('managesalary.detail');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/ProfileController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Employee;\nuse App\\Profile;\nuse App\\User;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Illuminate\\Support\\Facades\\DB;\nuse Illuminate\\Support\\Facades\\Hash;\n\nclass ProfileController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n\n    public function __construct()\n    {\n        $this->middleware('auth');\n    }\n\n    public function index()\n    {\n//        $details = DB::table('users')\n//            ->select('dob', 'gender', 'phone','email','join_date','address')\n//            ->get();\n        $user = Auth::user();\n//        dd($users->username);\n        return view('admin.profile.index',compact('user'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function changePassword()\n    {\n        return view('admin.profile.changepw');\n    }\n\n    public function updatePassword(Request $request)\n    {\n        $pass = $request->all();\n        $current_password = $pass('current_password');\n        $check_password = User::where(['admin'=>'1'])->first();\n        if(Hash::check($current_password,$check_password->password)){\n            echo \"true\";die;\n        }else{\n            echo \"false\";die;\n        }\n//        return view('admin.profile.changepw');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        //\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Profile  $profile\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Profile $profile)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Profile  $profile\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit(Profile $profile)\n    {\n        //\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Profile  $profile\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, Profile $profile)\n    {\n        //\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Profile  $profile\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy(Profile $profile)\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/SalaryController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Brian2694\\Toastr\\Facades\\Toastr;\nuse App\\User;\nuse Gate;\nuse App\\Salary;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\DB;\nuse phpDocumentor\\Reflection\\DocBlock\\Tags\\Uses;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass SalaryController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $salaries = Salary::paginate(15);\n//        $users = User::all();\n        return view('admin.salary.index',compact('salaries'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n\n        $users = User::all();\n        return view('admin.salary.create',compact('users'));\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'salary_amount' => 'required',\n        ]);\n        $salary = new Salary();\n        $salary -> employee_id = $request -> employee_name;\n        $salary -> salary_amount = $request -> salary_amount;\n        $salary -> save();\n        Toastr::success('Salary successfully added!','Success');\n        return redirect()->route('salary');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Salary  $salary\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Salary $salary)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Salary  $salary\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $salary = Salary::find($id);\n        return view('admin.salary.edit',compact('salary'));\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Salary  $salary\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'salary_amount' => 'required',\n        ]);\n        $salary = Salary::find($id);\n        $salary -> salary_amount = $request -> salary_amount;\n        $salary -> save();\n        Toastr::success('Salary successfully updated!','Success');\n        return redirect()->route('salary');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Salary  $salary\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function delete($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $salary = Salary::find($id);\n        $salary -> delete();\n        Toastr::error('Salary successfully deleted!','Deleted');\n        return redirect()->route('salary');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/ShiftController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Shift;\nuse Illuminate\\Http\\Request;\nuse Gate;\nuse Brian2694\\Toastr\\Facades\\Toastr;\n\nclass ShiftController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $shifts = Shift::paginate(5);\n        return view('admin.shift.index',compact('shifts'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        return view('admin.shift.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'shift' => 'required',\n        ]);\n        $shift = new Shift();\n        $shift -> shift = $request -> shift;\n        $shift -> save();\n        Toastr::success('Shift successfully added!','Success');\n        return redirect()->route('shift');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Shift  $shift\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Shift $shift)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Shift  $shift\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $shift = Shift::find($id);\n        return view('admin.shift.edit',compact('shift'));\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Shift  $shift\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, $id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n           'shift' => 'required',\n        ]);\n        $shift = Shift::find($id);\n        $shift -> shift = $request -> shift;\n        $shift -> save();\n        Toastr::success('Shift successfully updated!','Success');\n        return redirect()->route('shift');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Shift  $shift\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function delete($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $shift = Shift::find($id);\n        $shift -> delete();\n        Toastr::error('Shift successfully deleted!','Deleted');\n        return redirect()->route('shift');\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/TotalleaveController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Totalleave;\nuse Illuminate\\Http\\Request;\n\nclass TotalleaveController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        return view('admin.totalleave.index');\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        //\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        //\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  \\App\\Totalleave  $totalleave\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show(Totalleave $totalleave)\n    {\n        //\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  \\App\\Totalleave  $totalleave\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit(Totalleave $totalleave)\n    {\n        //\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\App\\Totalleave  $totalleave\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(Request $request, Totalleave $totalleave)\n    {\n        //\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  \\App\\Totalleave  $totalleave\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy(Totalleave $totalleave)\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/UserController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\nuse Brian2694\\Toastr\\Facades\\Toastr;\nuse App\\User;\nuse Gate;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\DB;\n\nclass UserController extends Controller\n{\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $users = User::withCount(['leave', 'leave as approve_leave_count' => function($query){\n            $query->where('is_approved',true);\n        }])->paginate(15);\n\n        return view('admin.user.index',compact('users'));\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        return view('admin.user.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(Request $request)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'username' => 'required',\n            'image' => 'required',\n            'fname' => 'required',\n            'lname' => 'required',\n            'email' => 'required',\n          //  'password' => 'required',\n//            'status' => 'required',\n\n    ]);\n        $user = new User();\n        $user -> username = $request -> username;\n        if($request->hasfile('image')){\n            $file = $request->file('image');\n            $extension = $file->getClientOriginalExtension();\n            $filename = time().'.'.$extension;\n            $file -> move('uploads/gallery/', $filename);\n            $user->image = $filename;\n        }else{\n            $user->image = '';\n        }\n        $user -> first_name = $request -> fname;\n        $user -> last_name = $request -> lname;\n        $user -> role = $request -> role;\n        $user -> email = $request -> email;\n        $user -> phone = $request -> phone;\n        $user -> address = $request -> address;\n        $user -> gender = $request -> gender;\n        $user -> dob = $request -> dob;\n        $user -> join_date = $request -> dob;\n        $user -> job_type = $request -> job_type;\n        $user -> city = $request -> city;\n        $user -> age = $request -> age;\n    //    $user -> password = bcrypt($request -> password);\n//        $user -> status = $request -> status == 'active'?1:0;\n        $user -> save();\n        Toastr::success('Employee successfully added!','Success');\n        return redirect()->route('user');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $user = User::find($id);\n        return view('admin.user.edit',compact('user'));\n    }\n\n    public function update(Request $request, $id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $request -> validate([\n            'username' => 'required',\n            'image' => 'required',\n            'fname' => 'required',\n            'lname' => 'required',\n            'email' => 'required',\n          //  'password' => 'required',\n//            'status' => 'required',\n        ]);\n        $user = User::find($id);\n        $user -> username = $request -> username;\n//        $user -> image = $request -> image;\n        if($request->hasfile('image')){\n            $file = $request->file('image');\n            $extension = $file->getClientOriginalExtension();\n            $filename = time().'.'.$extension;\n            $file -> move('uploads/gallery/', $filename);\n            $user->image = $filename;\n        }else{\n//            return $request;\n            $user->image = '';\n        }\n        $user -> first_name = $request -> fname;\n        $user -> last_name = $request -> lname;\n        $user -> role = $request -> role;\n        $user -> salary = $request -> salary;\n        $user -> email = $request -> email;\n        $user -> phone = $request -> phone;\n        $user -> address = $request -> address;\n        $user -> gender = $request -> gender;\n        $user -> dob = $request -> dob;\n        $user -> join_date = $request -> join_date;\n        $user -> job_type = $request -> job_type;\n        $user -> city = $request -> city;\n        $user -> age = $request -> age;\n       // $user -> password = $request -> password;\n//        $user -> password = bcrypt($request -> password);\n//        $user -> status = $request -> status;\n    //    dd($user);\n//        $user -> status = $request -> status == 'active'?1:0;\n        $user -> save();\n        Toastr::success('Employee successfully updated!','Success');\n        return redirect()->route('user');\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function delete($id)\n    {\n        if(!Gate::allows('isAdmin')){\n            abort(401);\n        }\n        $user = User::find($id);\n        $user -> delete();\n        Toastr::error('Employee successfully deleted!','Deleted');\n        return redirect()->route('user');\n    }\n\n    public function search(Request $request){\n        $users =User::where('username', 'LIKE',\"%{$request->search}%\")->paginate();\n        return view('admin.user.index',compact('users'));\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Kernel.php",
    "content": "<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n    /**\n     * The application's global HTTP middleware stack.\n     *\n     * These middleware are run during every request to your application.\n     *\n     * @var array\n     */\n    protected $middleware = [\n        \\App\\Http\\Middleware\\CheckForMaintenanceMode::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::class,\n        \\App\\Http\\Middleware\\TrimStrings::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::class,\n        \\App\\Http\\Middleware\\TrustProxies::class,\n    ];\n\n    /**\n     * The application's route middleware groups.\n     *\n     * @var array\n     */\n    protected $middlewareGroups = [\n        'web' => [\n            \\App\\Http\\Middleware\\EncryptCookies::class,\n            \\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,\n            \\Illuminate\\Session\\Middleware\\StartSession::class,\n            // \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,\n            \\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,\n            \\App\\Http\\Middleware\\VerifyCsrfToken::class,\n            \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        ],\n\n        'api' => [\n            'throttle:60,1',\n            'bindings',\n        ],\n    ];\n\n    /**\n     * The application's route middleware.\n     *\n     * These middleware may be assigned to groups or used individually.\n     *\n     * @var array\n     */\n    protected $routeMiddleware = [\n        'auth' => \\App\\Http\\Middleware\\Authenticate::class,\n        'auth.basic' => \\Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth::class,\n        'bindings' => \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        'cache.headers' => \\Illuminate\\Http\\Middleware\\SetCacheHeaders::class,\n        'can' => \\Illuminate\\Auth\\Middleware\\Authorize::class,\n        'guest' => \\App\\Http\\Middleware\\RedirectIfAuthenticated::class,\n        'signed' => \\Illuminate\\Routing\\Middleware\\ValidateSignature::class,\n        'throttle' => \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,\n        'verified' => \\Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified::class,\n    ];\n\n    /**\n     * The priority-sorted list of middleware.\n     *\n     * This forces non-global middleware to always be in the given order.\n     *\n     * @var array\n     */\n    protected $middlewarePriority = [\n        \\Illuminate\\Session\\Middleware\\StartSession::class,\n        \\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,\n        \\App\\Http\\Middleware\\Authenticate::class,\n        \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,\n        \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        \\Illuminate\\Auth\\Middleware\\Authorize::class,\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/Authenticate.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Auth\\Middleware\\Authenticate as Middleware;\n\nclass Authenticate extends Middleware\n{\n    /**\n     * Get the path the user should be redirected to when they are not authenticated.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return string\n     */\n    protected function redirectTo($request)\n    {\n        if (! $request->expectsJson()) {\n            return route('login');\n        }\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/CheckForMaintenanceMode.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode as Middleware;\n\nclass CheckForMaintenanceMode extends Middleware\n{\n    /**\n     * The URIs that should be reachable while maintenance mode is enabled.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/EncryptCookies.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCookies extends Middleware\n{\n    /**\n     * The names of the cookies that should not be encrypted.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/RedirectIfAuthenticated.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass RedirectIfAuthenticated\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @param  string|null  $guard\n     * @return mixed\n     */\n    public function handle($request, Closure $next, $guard = null)\n    {\n        if (Auth::guard($guard)->check()) {\n            return redirect('/home');\n        }\n\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/TrimStrings.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimStrings extends Middleware\n{\n    /**\n     * The names of the attributes that should not be trimmed.\n     *\n     * @var array\n     */\n    protected $except = [\n        'password',\n        'password_confirmation',\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/TrustProxies.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Http\\Request;\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\n\nclass TrustProxies extends Middleware\n{\n    /**\n     * The trusted proxies for this application.\n     *\n     * @var array\n     */\n    protected $proxies;\n\n    /**\n     * The headers that should be used to detect proxies.\n     *\n     * @var int\n     */\n    protected $headers = Request::HEADER_X_FORWARDED_ALL;\n}\n"
  },
  {
    "path": "app/Http/Middleware/VerifyCsrfToken.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass VerifyCsrfToken extends Middleware\n{\n    /**\n     * Indicates whether the XSRF-TOKEN cookie should be set on the response.\n     *\n     * @var bool\n     */\n    protected $addHttpCookie = true;\n\n    /**\n     * The URIs that should be excluded from CSRF verification.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Http/Requests/LeaveRequest.php",
    "content": "<?php\n\nnamespace App\\Http\\Requests;\n\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass LeaveRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        return auth()->check();\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return [\n            'leave_type' => 'required',\n            'date_from' => 'required',\n            'date_to' => 'required',\n            'days' => 'required',\n            'reason' => 'required',\n        ];\n    }\n}\n"
  },
  {
    "path": "app/Leave.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Leave extends Model\n{\n    /**\n     * The attributes that are mass assignable.\n     *\n     * @var array\n     */\n    protected $fillable = [\n        'employee_id',\n        'leave_type',\n        'date_from',\n        'date_to',\n        'days',\n        'reason'\n    ];\n\n    public function users()\n    {\n        return $this->belongsTo('App\\User', 'employee_id');\n    }\n\n    public function scopeApproved($query)\n    {\n        return $query->where('is_approved',true);\n    }\n}\n"
  },
  {
    "path": "app/Managesalary.php",
    "content": "<?php\n\nnamespace App;\n\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Managesalary extends Model\n{\n    public function usersss()\n    {\n        return $this->belongsTo('App\\User', 'employee_id');\n    }\n\n    public function advanceSum()\n    {\n        return $this->hasMany('App\\Advancepayment')\n            ->selectRaw('SUM(amount) as total')\n            ->groupBy('employee_id');\n    }\n}\n"
  },
  {
    "path": "app/Profile.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Profile extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/Providers/AppServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    /**\n     * Register any application services.\n     *\n     * @return void\n     */\n    public function register()\n    {\n        //\n    }\n\n    /**\n     * Bootstrap any application services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/AuthServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Gate;\nuse Illuminate\\Support\\Facades\\Gate as GateContract;\nuse Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider as ServiceProvider;\n\nclass AuthServiceProvider extends ServiceProvider\n{\n    /**\n     * The policy mappings for the application.\n     *\n     * @var array\n     */\n    protected $policies = [\n         'App\\Model' => 'App\\Policies\\ModelPolicy',\n    ];\n\n    /**\n     * Register any authentication / authorization services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n      //  dd('test');\n        $this->registerPolicies();\n\n        Gate::define('isAdmin',function($user){\n              return $user->role == 'admin';\n        });\n\n        Gate::define('isEmployee',function($user){\n            return $user->role == 'employee';\n        });\n\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/BroadcastServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse Illuminate\\Support\\Facades\\Broadcast;\n\nclass BroadcastServiceProvider extends ServiceProvider\n{\n    /**\n     * Bootstrap any application services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        Broadcast::routes();\n\n        require base_path('routes/channels.php');\n    }\n}\n"
  },
  {
    "path": "app/Providers/EventServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Event;\nuse Illuminate\\Auth\\Events\\Registered;\nuse Illuminate\\Auth\\Listeners\\SendEmailVerificationNotification;\nuse Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider as ServiceProvider;\n\nclass EventServiceProvider extends ServiceProvider\n{\n    /**\n     * The event listener mappings for the application.\n     *\n     * @var array\n     */\n    protected $listen = [\n        Registered::class => [\n            SendEmailVerificationNotification::class,\n        ],\n    ];\n\n    /**\n     * Register any events for your application.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        parent::boot();\n\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/RouteServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Route;\nuse Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider as ServiceProvider;\n\nclass RouteServiceProvider extends ServiceProvider\n{\n    /**\n     * This namespace is applied to your controller routes.\n     *\n     * In addition, it is set as the URL generator's root namespace.\n     *\n     * @var string\n     */\n    protected $namespace = 'App\\Http\\Controllers';\n\n    /**\n     * Define your route model bindings, pattern filters, etc.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        //\n\n        parent::boot();\n    }\n\n    /**\n     * Define the routes for the application.\n     *\n     * @return void\n     */\n    public function map()\n    {\n        $this->mapApiRoutes();\n\n        $this->mapWebRoutes();\n\n        //\n    }\n\n    /**\n     * Define the \"web\" routes for the application.\n     *\n     * These routes all receive session state, CSRF protection, etc.\n     *\n     * @return void\n     */\n    protected function mapWebRoutes()\n    {\n        Route::middleware('web')\n             ->namespace($this->namespace)\n             ->group(base_path('routes/web.php'));\n    }\n\n    /**\n     * Define the \"api\" routes for the application.\n     *\n     * These routes are typically stateless.\n     *\n     * @return void\n     */\n    protected function mapApiRoutes()\n    {\n        Route::prefix('api')\n             ->middleware('api')\n             ->namespace($this->namespace)\n             ->group(base_path('routes/api.php'));\n    }\n}\n"
  },
  {
    "path": "app/Salary.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Salary extends Model\n{\n    public function users()\n    {\n        return $this->belongsTo('App\\User', 'employee_id');\n    }\n\n    public function scopeAdvance($query)\n    {\n        return $query->where('salary_amount',true);\n    }\n}\n"
  },
  {
    "path": "app/Shift.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Shift extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/Totalleave.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Totalleave extends Model\n{\n    //\n}\n"
  },
  {
    "path": "app/User.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Notifications\\Notifiable;\nuse Illuminate\\Contracts\\Auth\\MustVerifyEmail;\nuse Illuminate\\Foundation\\Auth\\User as Authenticatable;\n\nclass User extends Authenticatable\n{\n    use Notifiable;\n    /**\n     * The attributes that are mass assignable.\n     *\n     * @var array\n     */\n    protected $fillable = [\n        'username','first_name', 'last_name', 'role', 'email',\n        'password','phone','address','gender','dob','join_date','job_type','city','salary','age',\n    ];\n\n    /**\n     * The attributes that should be hidden for arrays.\n     *\n     * @var array\n     */\n    protected $hidden = [\n        'password', 'remember_token',\n    ];\n\n    /**\n     * The attributes that should be cast to native types.\n     *\n     * @var array\n     */\n    protected $casts = [\n        'email_verified_at' => 'datetime',\n    ];\n//    For counting the leave\n    public function leave()\n    {\n        return $this->HasMAny('App\\Leave','employee_id');\n    }\n\n    public function get_UserNumber(){\n\n        $this->db->select(\"count(*) as no\");\n        $query = $this->db->get(\"users\");\n        return $query->result();\n\n    }\n}\n"
  },
  {
    "path": "artisan",
    "content": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|--------------------------------------------------------------------------\n| Register The Auto Loader\n|--------------------------------------------------------------------------\n|\n| Composer provides a convenient, automatically generated class loader\n| for our application. We just need to utilize it! We'll require it\n| into the script here so that we do not have to worry about the\n| loading of any our classes \"manually\". Feels great to relax.\n|\n*/\n\nrequire __DIR__.'/vendor/autoload.php';\n\n$app = require_once __DIR__.'/bootstrap/app.php';\n\n/*\n|--------------------------------------------------------------------------\n| Run The Artisan Application\n|--------------------------------------------------------------------------\n|\n| When we run the console application, the current CLI command will be\n| executed in this console and the response sent back to a terminal\n| or another output device for the developers. Here goes nothing!\n|\n*/\n\n$kernel = $app->make(Illuminate\\Contracts\\Console\\Kernel::class);\n\n$status = $kernel->handle(\n    $input = new Symfony\\Component\\Console\\Input\\ArgvInput,\n    new Symfony\\Component\\Console\\Output\\ConsoleOutput\n);\n\n/*\n|--------------------------------------------------------------------------\n| Shutdown The Application\n|--------------------------------------------------------------------------\n|\n| Once Artisan has finished running, we will fire off the shutdown events\n| so that any final work may be done by the application before we shut\n| down the process. This is the last thing to happen to the request.\n|\n*/\n\n$kernel->terminate($input, $status);\n\nexit($status);\n"
  },
  {
    "path": "bootstrap/app.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------------------------------------------------------------------------\n|\n| The first thing we will do is create a new Laravel application instance\n| which serves as the \"glue\" for all the components of Laravel, and is\n| the IoC container for the system binding all of the various parts.\n|\n*/\n\n$app = new Illuminate\\Foundation\\Application(\n    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)\n);\n\n/*\n|--------------------------------------------------------------------------\n| Bind Important Interfaces\n|--------------------------------------------------------------------------\n|\n| Next, we need to bind some important interfaces into the container so\n| we will be able to resolve them when needed. The kernels serve the\n| incoming requests to this application from both the web and CLI.\n|\n*/\n\n$app->singleton(\n    Illuminate\\Contracts\\Http\\Kernel::class,\n    App\\Http\\Kernel::class\n);\n\n$app->singleton(\n    Illuminate\\Contracts\\Console\\Kernel::class,\n    App\\Console\\Kernel::class\n);\n\n$app->singleton(\n    Illuminate\\Contracts\\Debug\\ExceptionHandler::class,\n    App\\Exceptions\\Handler::class\n);\n\n/*\n|--------------------------------------------------------------------------\n| Return The Application\n|--------------------------------------------------------------------------\n|\n| This script returns the application instance. The instance is given to\n| the calling script so we can separate the building of the instances\n| from the actual running of the application and sending responses.\n|\n*/\n\nreturn $app;\n"
  },
  {
    "path": "bootstrap/cache/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "composer.json",
    "content": "{\n    \"name\": \"laravel/laravel\",\n    \"type\": \"project\",\n    \"description\": \"The Laravel Framework.\",\n    \"keywords\": [\n        \"framework\",\n        \"laravel\"\n    ],\n    \"license\": \"MIT\",\n    \"require\": {\n        \"php\": \"^7.1.3\",\n        \"brian2694/laravel-toastr\": \"^5.5\",\n        \"fideloper/proxy\": \"^4.0\",\n        \"laravel/framework\": \"5.8.*\",\n        \"laravel/tinker\": \"^1.0\",\n        \"maddhatter/laravel-fullcalendar\": \"^1.3\"\n    },\n    \"require-dev\": {\n        \"beyondcode/laravel-dump-server\": \"^1.0\",\n        \"filp/whoops\": \"^2.0\",\n        \"fzaninotto/faker\": \"^1.4\",\n        \"mockery/mockery\": \"^1.0\",\n        \"nunomaduro/collision\": \"^2.0\",\n        \"phpunit/phpunit\": \"^7.5\"\n    },\n    \"config\": {\n        \"optimize-autoloader\": true,\n        \"preferred-install\": \"dist\",\n        \"sort-packages\": true\n    },\n    \"extra\": {\n        \"laravel\": {\n            \"dont-discover\": []\n        }\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"App\\\\\": \"app/\"\n        },\n        \"classmap\": [\n            \"database/seeds\",\n            \"database/factories\"\n        ]\n    },\n    \"autoload-dev\": {\n        \"psr-4\": {\n            \"Tests\\\\\": \"tests/\"\n        }\n    },\n    \"minimum-stability\": \"dev\",\n    \"prefer-stable\": true,\n    \"scripts\": {\n        \"post-autoload-dump\": [\n            \"Illuminate\\\\Foundation\\\\ComposerScripts::postAutoloadDump\",\n            \"@php artisan package:discover --ansi\"\n        ],\n        \"post-root-package-install\": [\n            \"@php -r \\\"file_exists('.env') || copy('.env.example', '.env');\\\"\"\n        ],\n        \"post-create-project-cmd\": [\n            \"@php artisan key:generate --ansi\"\n        ]\n    }\n}\n"
  },
  {
    "path": "config/app.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Name\n    |--------------------------------------------------------------------------\n    |\n    | This value is the name of your application. This value is used when the\n    | framework needs to place the application's name in a notification or\n    | any other location as required by the application or its packages.\n    |\n    */\n\n    'name' => env('APP_NAME', 'Laravel'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Environment\n    |--------------------------------------------------------------------------\n    |\n    | This value determines the \"environment\" your application is currently\n    | running in. This may determine how you prefer to configure various\n    | services the application utilizes. Set this in your \".env\" file.\n    |\n    */\n\n    'env' => env('APP_ENV', 'production'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Debug Mode\n    |--------------------------------------------------------------------------\n    |\n    | When your application is in debug mode, detailed error messages with\n    | stack traces will be shown on every error that occurs within your\n    | application. If disabled, a simple generic error page is shown.\n    |\n    */\n\n    'debug' => env('APP_DEBUG', false),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application URL\n    |--------------------------------------------------------------------------\n    |\n    | This URL is used by the console to properly generate URLs when using\n    | the Artisan command line tool. You should set this to the root of\n    | your application so that it is used when running Artisan tasks.\n    |\n    */\n\n    'url' => env('APP_URL', 'http://localhost'),\n\n    'asset_url' => env('ASSET_URL', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Timezone\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the default timezone for your application, which\n    | will be used by the PHP date and date-time functions. We have gone\n    | ahead and set this to a sensible default for you out of the box.\n    |\n    */\n\n    'timezone' => 'UTC',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Locale Configuration\n    |--------------------------------------------------------------------------\n    |\n    | The application locale determines the default locale that will be used\n    | by the translation service provider. You are free to set this value\n    | to any of the locales which will be supported by the application.\n    |\n    */\n\n    'locale' => 'en',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Fallback Locale\n    |--------------------------------------------------------------------------\n    |\n    | The fallback locale determines the locale to use when the current one\n    | is not available. You may change the value to correspond to any of\n    | the language folders that are provided through your application.\n    |\n    */\n\n    'fallback_locale' => 'en',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Faker Locale\n    |--------------------------------------------------------------------------\n    |\n    | This locale will be used by the Faker PHP library when generating fake\n    | data for your database seeds. For example, this will be used to get\n    | localized telephone numbers, street address information and more.\n    |\n    */\n\n    'faker_locale' => 'en_US',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Encryption Key\n    |--------------------------------------------------------------------------\n    |\n    | This key is used by the Illuminate encrypter service and should be set\n    | to a random, 32 character string, otherwise these encrypted strings\n    | will not be safe. Please do this before deploying an application!\n    |\n    */\n\n    'key' => env('APP_KEY'),\n\n    'cipher' => 'AES-256-CBC',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Autoloaded Service Providers\n    |--------------------------------------------------------------------------\n    |\n    | The service providers listed here will be automatically loaded on the\n    | request to your application. Feel free to add your own services to\n    | this array to grant expanded functionality to your applications.\n    |\n    */\n\n    'providers' => [\n\n        /*\n         * Laravel Framework Service Providers...\n         */\n        Illuminate\\Auth\\AuthServiceProvider::class,\n        Illuminate\\Broadcasting\\BroadcastServiceProvider::class,\n        Illuminate\\Bus\\BusServiceProvider::class,\n        Illuminate\\Cache\\CacheServiceProvider::class,\n        Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider::class,\n        Illuminate\\Cookie\\CookieServiceProvider::class,\n        Illuminate\\Database\\DatabaseServiceProvider::class,\n        Illuminate\\Encryption\\EncryptionServiceProvider::class,\n        Illuminate\\Filesystem\\FilesystemServiceProvider::class,\n        Illuminate\\Foundation\\Providers\\FoundationServiceProvider::class,\n        Illuminate\\Hashing\\HashServiceProvider::class,\n        Illuminate\\Mail\\MailServiceProvider::class,\n        Illuminate\\Notifications\\NotificationServiceProvider::class,\n        Illuminate\\Pagination\\PaginationServiceProvider::class,\n        Illuminate\\Pipeline\\PipelineServiceProvider::class,\n        Illuminate\\Queue\\QueueServiceProvider::class,\n        Illuminate\\Redis\\RedisServiceProvider::class,\n        Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider::class,\n        Illuminate\\Session\\SessionServiceProvider::class,\n        Illuminate\\Translation\\TranslationServiceProvider::class,\n        Illuminate\\Validation\\ValidationServiceProvider::class,\n        Illuminate\\View\\ViewServiceProvider::class,\n\n        /*\n         * Package Service Providers...\n         */\n\n        /*\n         * Application Service Providers...\n         */\n        App\\Providers\\AppServiceProvider::class,\n        App\\Providers\\AuthServiceProvider::class,\n        // App\\Providers\\BroadcastServiceProvider::class,\n        App\\Providers\\EventServiceProvider::class,\n        App\\Providers\\RouteServiceProvider::class,\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Class Aliases\n    |--------------------------------------------------------------------------\n    |\n    | This array of class aliases will be registered when this application\n    | is started. However, feel free to register as many as you wish as\n    | the aliases are \"lazy\" loaded so they don't hinder performance.\n    |\n    */\n\n    'aliases' => [\n\n        'App' => Illuminate\\Support\\Facades\\App::class,\n        'Arr' => Illuminate\\Support\\Arr::class,\n        'Artisan' => Illuminate\\Support\\Facades\\Artisan::class,\n        'Auth' => Illuminate\\Support\\Facades\\Auth::class,\n        'Blade' => Illuminate\\Support\\Facades\\Blade::class,\n        'Broadcast' => Illuminate\\Support\\Facades\\Broadcast::class,\n        'Bus' => Illuminate\\Support\\Facades\\Bus::class,\n        'Cache' => Illuminate\\Support\\Facades\\Cache::class,\n        'Config' => Illuminate\\Support\\Facades\\Config::class,\n        'Cookie' => Illuminate\\Support\\Facades\\Cookie::class,\n        'Crypt' => Illuminate\\Support\\Facades\\Crypt::class,\n        'DB' => Illuminate\\Support\\Facades\\DB::class,\n        'Eloquent' => Illuminate\\Database\\Eloquent\\Model::class,\n        'Event' => Illuminate\\Support\\Facades\\Event::class,\n        'File' => Illuminate\\Support\\Facades\\File::class,\n        'Gate' => Illuminate\\Support\\Facades\\Gate::class,\n        'Hash' => Illuminate\\Support\\Facades\\Hash::class,\n        'Lang' => Illuminate\\Support\\Facades\\Lang::class,\n        'Log' => Illuminate\\Support\\Facades\\Log::class,\n        'Mail' => Illuminate\\Support\\Facades\\Mail::class,\n        'Notification' => Illuminate\\Support\\Facades\\Notification::class,\n        'Password' => Illuminate\\Support\\Facades\\Password::class,\n        'Queue' => Illuminate\\Support\\Facades\\Queue::class,\n        'Redirect' => Illuminate\\Support\\Facades\\Redirect::class,\n        'Redis' => Illuminate\\Support\\Facades\\Redis::class,\n        'Request' => Illuminate\\Support\\Facades\\Request::class,\n        'Response' => Illuminate\\Support\\Facades\\Response::class,\n        'Route' => Illuminate\\Support\\Facades\\Route::class,\n        'Schema' => Illuminate\\Support\\Facades\\Schema::class,\n        'Session' => Illuminate\\Support\\Facades\\Session::class,\n        'Storage' => Illuminate\\Support\\Facades\\Storage::class,\n        'Str' => Illuminate\\Support\\Str::class,\n        'URL' => Illuminate\\Support\\Facades\\URL::class,\n        'Validator' => Illuminate\\Support\\Facades\\Validator::class,\n        'View' => Illuminate\\Support\\Facades\\View::class,\n\n    ],\n\n];\n"
  },
  {
    "path": "config/auth.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Defaults\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default authentication \"guard\" and password\n    | reset options for your application. You may change these defaults\n    | as required, but they're a perfect start for most applications.\n    |\n    */\n\n    'defaults' => [\n        'guard' => 'web',\n        'passwords' => 'users',\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Guards\n    |--------------------------------------------------------------------------\n    |\n    | Next, you may define every authentication guard for your application.\n    | Of course, a great default configuration has been defined for you\n    | here which uses session storage and the Eloquent user provider.\n    |\n    | All authentication drivers have a user provider. This defines how the\n    | users are actually retrieved out of your database or other storage\n    | mechanisms used by this application to persist your user's data.\n    |\n    | Supported: \"session\", \"token\"\n    |\n    */\n\n    'guards' => [\n        'web' => [\n            'driver' => 'session',\n            'provider' => 'users',\n        ],\n\n        'api' => [\n            'driver' => 'token',\n            'provider' => 'users',\n            'hash' => false,\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | User Providers\n    |--------------------------------------------------------------------------\n    |\n    | All authentication drivers have a user provider. This defines how the\n    | users are actually retrieved out of your database or other storage\n    | mechanisms used by this application to persist your user's data.\n    |\n    | If you have multiple user tables or models you may configure multiple\n    | sources which represent each model / table. These sources may then\n    | be assigned to any extra authentication guards you have defined.\n    |\n    | Supported: \"database\", \"eloquent\"\n    |\n    */\n\n    'providers' => [\n        'users' => [\n            'driver' => 'eloquent',\n            'model' => App\\User::class,\n        ],\n\n        // 'users' => [\n        //     'driver' => 'database',\n        //     'table' => 'users',\n        // ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Resetting Passwords\n    |--------------------------------------------------------------------------\n    |\n    | You may specify multiple password reset configurations if you have more\n    | than one user table or model in the application and you want to have\n    | separate password reset settings based on the specific user types.\n    |\n    | The expire time is the number of minutes that the reset token should be\n    | considered valid. This security feature keeps tokens short-lived so\n    | they have less time to be guessed. You may change this as needed.\n    |\n    */\n\n    'passwords' => [\n        'users' => [\n            'provider' => 'users',\n            'table' => 'password_resets',\n            'expire' => 60,\n        ],\n    ],\n\n];\n"
  },
  {
    "path": "config/broadcasting.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Broadcaster\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default broadcaster that will be used by the\n    | framework when an event needs to be broadcast. You may set this to\n    | any of the connections defined in the \"connections\" array below.\n    |\n    | Supported: \"pusher\", \"redis\", \"log\", \"null\"\n    |\n    */\n\n    'default' => env('BROADCAST_DRIVER', 'null'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Broadcast Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define all of the broadcast connections that will be used\n    | to broadcast events to other systems or over websockets. Samples of\n    | each available type of connection are provided inside this array.\n    |\n    */\n\n    'connections' => [\n\n        'pusher' => [\n            'driver' => 'pusher',\n            'key' => env('PUSHER_APP_KEY'),\n            'secret' => env('PUSHER_APP_SECRET'),\n            'app_id' => env('PUSHER_APP_ID'),\n            'options' => [\n                'cluster' => env('PUSHER_APP_CLUSTER'),\n                'encrypted' => true,\n            ],\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'default',\n        ],\n\n        'log' => [\n            'driver' => 'log',\n        ],\n\n        'null' => [\n            'driver' => 'null',\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/cache.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Cache Store\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default cache connection that gets used while\n    | using this caching library. This connection is used when another is\n    | not explicitly specified when executing a given caching function.\n    |\n    | Supported: \"apc\", \"array\", \"database\", \"file\",\n    |            \"memcached\", \"redis\", \"dynamodb\"\n    |\n    */\n\n    'default' => env('CACHE_DRIVER', 'file'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cache Stores\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define all of the cache \"stores\" for your application as\n    | well as their drivers. You may even define multiple stores for the\n    | same cache driver to group types of items stored in your caches.\n    |\n    */\n\n    'stores' => [\n\n        'apc' => [\n            'driver' => 'apc',\n        ],\n\n        'array' => [\n            'driver' => 'array',\n        ],\n\n        'database' => [\n            'driver' => 'database',\n            'table' => 'cache',\n            'connection' => null,\n        ],\n\n        'file' => [\n            'driver' => 'file',\n            'path' => storage_path('framework/cache/data'),\n        ],\n\n        'memcached' => [\n            'driver' => 'memcached',\n            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),\n            'sasl' => [\n                env('MEMCACHED_USERNAME'),\n                env('MEMCACHED_PASSWORD'),\n            ],\n            'options' => [\n                // Memcached::OPT_CONNECT_TIMEOUT => 2000,\n            ],\n            'servers' => [\n                [\n                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),\n                    'port' => env('MEMCACHED_PORT', 11211),\n                    'weight' => 100,\n                ],\n            ],\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'cache',\n        ],\n\n        'dynamodb' => [\n            'driver' => 'dynamodb',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cache Key Prefix\n    |--------------------------------------------------------------------------\n    |\n    | When utilizing a RAM based store such as APC or Memcached, there might\n    | be other applications utilizing the same cache. So, we'll specify a\n    | value to get prefixed to all our keys so we can avoid collisions.\n    |\n    */\n\n    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),\n\n];\n"
  },
  {
    "path": "config/database.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Database Connection Name\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify which of the database connections below you wish\n    | to use as your default connection for all database work. Of course\n    | you may use many connections at once using the Database library.\n    |\n    */\n\n    'default' => env('DB_CONNECTION', 'mysql'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Database Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here are each of the database connections setup for your application.\n    | Of course, examples of configuring each database platform that is\n    | supported by Laravel is shown below to make development simple.\n    |\n    |\n    | All database work in Laravel is done through the PHP PDO facilities\n    | so make sure you have the driver for your particular database of\n    | choice installed on your machine before you begin development.\n    |\n    */\n\n    'connections' => [\n\n        'sqlite' => [\n            'driver' => 'sqlite',\n            'database' => env('DB_DATABASE', database_path('database.sqlite')),\n            'prefix' => '',\n            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),\n        ],\n\n        'mysql' => [\n            'driver' => 'mysql',\n            'host' => env('DB_HOST', '127.0.0.1'),\n            'port' => env('DB_PORT', '3306'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'unix_socket' => env('DB_SOCKET', ''),\n            'charset' => 'utf8mb4',\n            'collation' => 'utf8mb4_unicode_ci',\n            'prefix' => '',\n            'prefix_indexes' => true,\n            'strict' => true,\n            'engine' => null,\n            'options' => extension_loaded('pdo_mysql') ? array_filter([\n                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),\n            ]) : [],\n        ],\n\n        'pgsql' => [\n            'driver' => 'pgsql',\n            'host' => env('DB_HOST', '127.0.0.1'),\n            'port' => env('DB_PORT', '5432'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'charset' => 'utf8',\n            'prefix' => '',\n            'prefix_indexes' => true,\n            'schema' => 'public',\n            'sslmode' => 'prefer',\n        ],\n\n        'sqlsrv' => [\n            'driver' => 'sqlsrv',\n            'host' => env('DB_HOST', 'localhost'),\n            'port' => env('DB_PORT', '1433'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'charset' => 'utf8',\n            'prefix' => '',\n            'prefix_indexes' => true,\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Migration Repository Table\n    |--------------------------------------------------------------------------\n    |\n    | This table keeps track of all the migrations that have already run for\n    | your application. Using this information, we can determine which of\n    | the migrations on disk haven't actually been run in the database.\n    |\n    */\n\n    'migrations' => 'migrations',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Redis Databases\n    |--------------------------------------------------------------------------\n    |\n    | Redis is an open source, fast, and advanced key-value store that also\n    | provides a richer body of commands than a typical key-value system\n    | such as APC or Memcached. Laravel makes it easy to dig right in.\n    |\n    */\n\n    'redis' => [\n\n        'client' => env('REDIS_CLIENT', 'predis'),\n\n        'options' => [\n            'cluster' => env('REDIS_CLUSTER', 'predis'),\n        ],\n\n        'default' => [\n            'host' => env('REDIS_HOST', '127.0.0.1'),\n            'password' => env('REDIS_PASSWORD', null),\n            'port' => env('REDIS_PORT', 6379),\n            'database' => env('REDIS_DB', 0),\n        ],\n\n        'cache' => [\n            'host' => env('REDIS_HOST', '127.0.0.1'),\n            'password' => env('REDIS_PASSWORD', null),\n            'port' => env('REDIS_PORT', 6379),\n            'database' => env('REDIS_CACHE_DB', 1),\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/filesystems.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Filesystem Disk\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the default filesystem disk that should be used\n    | by the framework. The \"local\" disk, as well as a variety of cloud\n    | based disks are available to your application. Just store away!\n    |\n    */\n\n    'default' => env('FILESYSTEM_DRIVER', 'local'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Cloud Filesystem Disk\n    |--------------------------------------------------------------------------\n    |\n    | Many applications store files both locally and in the cloud. For this\n    | reason, you may specify a default \"cloud\" driver here. This driver\n    | will be bound as the Cloud disk implementation in the container.\n    |\n    */\n\n    'cloud' => env('FILESYSTEM_CLOUD', 's3'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Filesystem Disks\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure as many filesystem \"disks\" as you wish, and you\n    | may even configure multiple disks of the same driver. Defaults have\n    | been setup for each driver as an example of the required options.\n    |\n    | Supported Drivers: \"local\", \"ftp\", \"sftp\", \"s3\", \"rackspace\"\n    |\n    */\n\n    'disks' => [\n\n        'local' => [\n            'driver' => 'local',\n            'root' => storage_path('app'),\n        ],\n\n        'public' => [\n            'driver' => 'local',\n            'root' => storage_path('app/public'),\n            'url' => env('APP_URL').'/storage',\n            'visibility' => 'public',\n        ],\n\n        's3' => [\n            'driver' => 's3',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'region' => env('AWS_DEFAULT_REGION'),\n            'bucket' => env('AWS_BUCKET'),\n            'url' => env('AWS_URL'),\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/hashing.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Hash Driver\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default hash driver that will be used to hash\n    | passwords for your application. By default, the bcrypt algorithm is\n    | used; however, you remain free to modify this option if you wish.\n    |\n    | Supported: \"bcrypt\", \"argon\", \"argon2id\"\n    |\n    */\n\n    'driver' => 'bcrypt',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Bcrypt Options\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the configuration options that should be used when\n    | passwords are hashed using the Bcrypt algorithm. This will allow you\n    | to control the amount of time it takes to hash the given password.\n    |\n    */\n\n    'bcrypt' => [\n        'rounds' => env('BCRYPT_ROUNDS', 10),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Argon Options\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the configuration options that should be used when\n    | passwords are hashed using the Argon algorithm. These will allow you\n    | to control the amount of time it takes to hash the given password.\n    |\n    */\n\n    'argon' => [\n        'memory' => 1024,\n        'threads' => 2,\n        'time' => 2,\n    ],\n\n];\n"
  },
  {
    "path": "config/logging.php",
    "content": "<?php\n\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Log Channel\n    |--------------------------------------------------------------------------\n    |\n    | This option defines the default log channel that gets used when writing\n    | messages to the logs. The name specified in this option should match\n    | one of the channels defined in the \"channels\" configuration array.\n    |\n    */\n\n    'default' => env('LOG_CHANNEL', 'stack'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Log Channels\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure the log channels for your application. Out of\n    | the box, Laravel uses the Monolog PHP logging library. This gives\n    | you a variety of powerful log handlers / formatters to utilize.\n    |\n    | Available Drivers: \"single\", \"daily\", \"slack\", \"syslog\",\n    |                    \"errorlog\", \"monolog\",\n    |                    \"custom\", \"stack\"\n    |\n    */\n\n    'channels' => [\n        'stack' => [\n            'driver' => 'stack',\n            'channels' => ['daily'],\n            'ignore_exceptions' => false,\n        ],\n\n        'single' => [\n            'driver' => 'single',\n            'path' => storage_path('logs/laravel.log'),\n            'level' => 'debug',\n        ],\n\n        'daily' => [\n            'driver' => 'daily',\n            'path' => storage_path('logs/laravel.log'),\n            'level' => 'debug',\n            'days' => 14,\n        ],\n\n        'slack' => [\n            'driver' => 'slack',\n            'url' => env('LOG_SLACK_WEBHOOK_URL'),\n            'username' => 'Laravel Log',\n            'emoji' => ':boom:',\n            'level' => 'critical',\n        ],\n\n        'papertrail' => [\n            'driver' => 'monolog',\n            'level' => 'debug',\n            'handler' => SyslogUdpHandler::class,\n            'handler_with' => [\n                'host' => env('PAPERTRAIL_URL'),\n                'port' => env('PAPERTRAIL_PORT'),\n            ],\n        ],\n\n        'stderr' => [\n            'driver' => 'monolog',\n            'handler' => StreamHandler::class,\n            'formatter' => env('LOG_STDERR_FORMATTER'),\n            'with' => [\n                'stream' => 'php://stderr',\n            ],\n        ],\n\n        'syslog' => [\n            'driver' => 'syslog',\n            'level' => 'debug',\n        ],\n\n        'errorlog' => [\n            'driver' => 'errorlog',\n            'level' => 'debug',\n        ],\n    ],\n\n];\n"
  },
  {
    "path": "config/mail.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Mail Driver\n    |--------------------------------------------------------------------------\n    |\n    | Laravel supports both SMTP and PHP's \"mail\" function as drivers for the\n    | sending of e-mail. You may specify which one you're using throughout\n    | your application here. By default, Laravel is setup for SMTP mail.\n    |\n    | Supported: \"smtp\", \"sendmail\", \"mailgun\", \"mandrill\", \"ses\",\n    |            \"sparkpost\", \"postmark\", \"log\", \"array\"\n    |\n    */\n\n    'driver' => env('MAIL_DRIVER', 'smtp'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Host Address\n    |--------------------------------------------------------------------------\n    |\n    | Here you may provide the host address of the SMTP server used by your\n    | applications. A default option is provided that is compatible with\n    | the Mailgun mail service which will provide reliable deliveries.\n    |\n    */\n\n    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Host Port\n    |--------------------------------------------------------------------------\n    |\n    | This is the SMTP port used by your application to deliver e-mails to\n    | users of the application. Like the host we have set this value to\n    | stay compatible with the Mailgun e-mail application by default.\n    |\n    */\n\n    'port' => env('MAIL_PORT', 587),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Global \"From\" Address\n    |--------------------------------------------------------------------------\n    |\n    | You may wish for all e-mails sent by your application to be sent from\n    | the same address. Here, you may specify a name and address that is\n    | used globally for all e-mails that are sent by your application.\n    |\n    */\n\n    'from' => [\n        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),\n        'name' => env('MAIL_FROM_NAME', 'Example'),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | E-Mail Encryption Protocol\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the encryption protocol that should be used when\n    | the application send e-mail messages. A sensible default using the\n    | transport layer security protocol should provide great security.\n    |\n    */\n\n    'encryption' => env('MAIL_ENCRYPTION', 'tls'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Server Username\n    |--------------------------------------------------------------------------\n    |\n    | If your SMTP server requires a username for authentication, you should\n    | set it here. This will get used to authenticate with your server on\n    | connection. You may also set the \"password\" value below this one.\n    |\n    */\n\n    'username' => env('MAIL_USERNAME'),\n\n    'password' => env('MAIL_PASSWORD'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Sendmail System Path\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"sendmail\" driver to send e-mails, we will need to know\n    | the path to where Sendmail lives on this server. A default path has\n    | been provided here, which will work well on most of your systems.\n    |\n    */\n\n    'sendmail' => '/usr/sbin/sendmail -bs',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Markdown Mail Settings\n    |--------------------------------------------------------------------------\n    |\n    | If you are using Markdown based email rendering, you may configure your\n    | theme and component paths here, allowing you to customize the design\n    | of the emails. Or, you may simply stick with the Laravel defaults!\n    |\n    */\n\n    'markdown' => [\n        'theme' => 'default',\n\n        'paths' => [\n            resource_path('views/vendor/mail'),\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Log Channel\n    |--------------------------------------------------------------------------\n    |\n    | If you are using the \"log\" driver, you may specify the logging channel\n    | if you prefer to keep mail messages separate from other log entries\n    | for simpler reading. Otherwise, the default channel will be used.\n    |\n    */\n\n    'log_channel' => env('MAIL_LOG_CHANNEL'),\n\n];\n"
  },
  {
    "path": "config/queue.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Queue Connection Name\n    |--------------------------------------------------------------------------\n    |\n    | Laravel's queue API supports an assortment of back-ends via a single\n    | API, giving you convenient access to each back-end using the same\n    | syntax for every one. Here you may define a default connection.\n    |\n    */\n\n    'default' => env('QUEUE_CONNECTION', 'sync'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Queue Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure the connection information for each server that\n    | is used by your application. A default configuration has been added\n    | for each back-end shipped with Laravel. You are free to add more.\n    |\n    | Drivers: \"sync\", \"database\", \"beanstalkd\", \"sqs\", \"redis\", \"null\"\n    |\n    */\n\n    'connections' => [\n\n        'sync' => [\n            'driver' => 'sync',\n        ],\n\n        'database' => [\n            'driver' => 'database',\n            'table' => 'jobs',\n            'queue' => 'default',\n            'retry_after' => 90,\n        ],\n\n        'beanstalkd' => [\n            'driver' => 'beanstalkd',\n            'host' => 'localhost',\n            'queue' => 'default',\n            'retry_after' => 90,\n            'block_for' => 0,\n        ],\n\n        'sqs' => [\n            'driver' => 'sqs',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),\n            'queue' => env('SQS_QUEUE', 'your-queue-name'),\n            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'default',\n            'queue' => env('REDIS_QUEUE', 'default'),\n            'retry_after' => 90,\n            'block_for' => null,\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Failed Queue Jobs\n    |--------------------------------------------------------------------------\n    |\n    | These options configure the behavior of failed queue job logging so you\n    | can control which database and table are used to store the jobs that\n    | have failed. You may change them to any database / table you wish.\n    |\n    */\n\n    'failed' => [\n        'database' => env('DB_CONNECTION', 'mysql'),\n        'table' => 'failed_jobs',\n    ],\n\n];\n"
  },
  {
    "path": "config/services.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Third Party Services\n    |--------------------------------------------------------------------------\n    |\n    | This file is for storing the credentials for third party services such\n    | as Stripe, Mailgun, SparkPost and others. This file provides a sane\n    | default location for this type of information, allowing packages\n    | to have a conventional place to find your various credentials.\n    |\n    */\n\n    'mailgun' => [\n        'domain' => env('MAILGUN_DOMAIN'),\n        'secret' => env('MAILGUN_SECRET'),\n        'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),\n    ],\n\n    'postmark' => [\n        'token' => env('POSTMARK_TOKEN'),\n    ],\n\n    'ses' => [\n        'key' => env('AWS_ACCESS_KEY_ID'),\n        'secret' => env('AWS_SECRET_ACCESS_KEY'),\n        'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n    ],\n\n    'sparkpost' => [\n        'secret' => env('SPARKPOST_SECRET'),\n    ],\n\n    'stripe' => [\n        'model' => App\\User::class,\n        'key' => env('STRIPE_KEY'),\n        'secret' => env('STRIPE_SECRET'),\n        'webhook' => [\n            'secret' => env('STRIPE_WEBHOOK_SECRET'),\n            'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300),\n        ],\n    ],\n\n];\n"
  },
  {
    "path": "config/session.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Session Driver\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default session \"driver\" that will be used on\n    | requests. By default, we will use the lightweight native driver but\n    | you may specify any of the other wonderful drivers provided here.\n    |\n    | Supported: \"file\", \"cookie\", \"database\", \"apc\",\n    |            \"memcached\", \"redis\", \"dynamodb\", \"array\"\n    |\n    */\n\n    'driver' => env('SESSION_DRIVER', 'file'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Lifetime\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the number of minutes that you wish the session\n    | to be allowed to remain idle before it expires. If you want them\n    | to immediately expire on the browser closing, set that option.\n    |\n    */\n\n    'lifetime' => env('SESSION_LIFETIME', 120),\n\n    'expire_on_close' => false,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Encryption\n    |--------------------------------------------------------------------------\n    |\n    | This option allows you to easily specify that all of your session data\n    | should be encrypted before it is stored. All encryption will be run\n    | automatically by Laravel and you can use the Session like normal.\n    |\n    */\n\n    'encrypt' => false,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session File Location\n    |--------------------------------------------------------------------------\n    |\n    | When using the native session driver, we need a location where session\n    | files may be stored. A default has been set for you but a different\n    | location may be specified. This is only needed for file sessions.\n    |\n    */\n\n    'files' => storage_path('framework/sessions'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Database Connection\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"database\" or \"redis\" session drivers, you may specify a\n    | connection that should be used to manage these sessions. This should\n    | correspond to a connection in your database configuration options.\n    |\n    */\n\n    'connection' => env('SESSION_CONNECTION', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Database Table\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"database\" session driver, you may specify the table we\n    | should use to manage the sessions. Of course, a sensible default is\n    | provided for you; however, you are free to change this as needed.\n    |\n    */\n\n    'table' => 'sessions',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cache Store\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"apc\", \"memcached\", or \"dynamodb\" session drivers you may\n    | list a cache store that should be used for these sessions. This value\n    | must match with one of the application's configured cache \"stores\".\n    |\n    */\n\n    'store' => env('SESSION_STORE', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Sweeping Lottery\n    |--------------------------------------------------------------------------\n    |\n    | Some session drivers must manually sweep their storage location to get\n    | rid of old sessions from storage. Here are the chances that it will\n    | happen on a given request. By default, the odds are 2 out of 100.\n    |\n    */\n\n    'lottery' => [2, 100],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Name\n    |--------------------------------------------------------------------------\n    |\n    | Here you may change the name of the cookie used to identify a session\n    | instance by ID. The name specified here will get used every time a\n    | new session cookie is created by the framework for every driver.\n    |\n    */\n\n    'cookie' => env(\n        'SESSION_COOKIE',\n        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'\n    ),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Path\n    |--------------------------------------------------------------------------\n    |\n    | The session cookie path determines the path for which the cookie will\n    | be regarded as available. Typically, this will be the root path of\n    | your application but you are free to change this when necessary.\n    |\n    */\n\n    'path' => '/',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Domain\n    |--------------------------------------------------------------------------\n    |\n    | Here you may change the domain of the cookie used to identify a session\n    | in your application. This will determine which domains the cookie is\n    | available to in your application. A sensible default has been set.\n    |\n    */\n\n    'domain' => env('SESSION_DOMAIN', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | HTTPS Only Cookies\n    |--------------------------------------------------------------------------\n    |\n    | By setting this option to true, session cookies will only be sent back\n    | to the server if the browser has a HTTPS connection. This will keep\n    | the cookie from being sent to you if it can not be done securely.\n    |\n    */\n\n    'secure' => env('SESSION_SECURE_COOKIE', false),\n\n    /*\n    |--------------------------------------------------------------------------\n    | HTTP Access Only\n    |--------------------------------------------------------------------------\n    |\n    | Setting this value to true will prevent JavaScript from accessing the\n    | value of the cookie and the cookie will only be accessible through\n    | the HTTP protocol. You are free to modify this option if needed.\n    |\n    */\n\n    'http_only' => true,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Same-Site Cookies\n    |--------------------------------------------------------------------------\n    |\n    | This option determines how your cookies behave when cross-site requests\n    | take place, and can be used to mitigate CSRF attacks. By default, we\n    | do not enable this as other CSRF protection services are in place.\n    |\n    | Supported: \"lax\", \"strict\"\n    |\n    */\n\n    'same_site' => null,\n\n];\n"
  },
  {
    "path": "config/toastr.php",
    "content": "<?php\n\nreturn [\n    'options' => [\n        \"closeButton\" => true,\n        \"debug\" => false,\n        \"newestOnTop\" => true,\n        \"progressBar\" => true,\n        \"positionClass\" => \"toast-top-right\",\n        \"preventDuplicates\" => false,\n        \"onclick\" => null,\n        \"showDuration\" => \"300\",\n        \"hideDuration\" => \"1000\",\n        \"timeOut\" => \"5000\",\n        \"extendedTimeOut\" => \"1000\",\n        \"showEasing\" => \"swing\",\n        \"hideEasing\" => \"linear\",\n        \"showMethod\" => \"fadeIn\",\n        \"hideMethod\" => \"fadeOut\"\n    ],\n];\n"
  },
  {
    "path": "config/view.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | View Storage Paths\n    |--------------------------------------------------------------------------\n    |\n    | Most templating systems load templates from disk. Here you may specify\n    | an array of paths that should be checked for your views. Of course\n    | the usual Laravel view path has already been registered for you.\n    |\n    */\n\n    'paths' => [\n        resource_path('views'),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Compiled View Path\n    |--------------------------------------------------------------------------\n    |\n    | This option determines where all the compiled Blade templates will be\n    | stored for your application. Typically, this is within the storage\n    | directory. However, as usual, you are free to change this value.\n    |\n    */\n\n    'compiled' => env(\n        'VIEW_COMPILED_PATH',\n        realpath(storage_path('framework/views'))\n    ),\n\n];\n"
  },
  {
    "path": "database/.gitignore",
    "content": "*.sqlite\n"
  },
  {
    "path": "database/factories/UserFactory.php",
    "content": "<?php\n\nuse App\\User;\nuse Illuminate\\Support\\Str;\nuse Faker\\Generator as Faker;\n\n/*\n|--------------------------------------------------------------------------\n| Model Factories\n|--------------------------------------------------------------------------\n|\n| This directory should contain each of the model factory definitions for\n| your application. Factories provide a convenient way to generate new\n| model instances for testing / seeding your application's database.\n|\n*/\n\n$factory->define(User::class, function (Faker $faker) {\n    return [\n        'name' => $faker->name,\n        'email' => $faker->unique()->safeEmail,\n        'email_verified_at' => now(),\n        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password\n        'remember_token' => Str::random(10),\n    ];\n});\n"
  },
  {
    "path": "database/migrations/2014_10_12_000000_create_users_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateUsersTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('users', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->bigInteger('leaves_count')->nullable();\n            $table->string('username');\n            $table->text('image')->nullable();\n            $table->string('first_name')->nullable();\n            $table->string('last_name')->nullable();\n            $table->string('role')->default('admin');\n            $table->bigInteger('salary')->nullable();\n            $table->string('email',100)->unique();\n            $table->string('password');\n            $table->boolean('status')->nullable();\n            $table->bigInteger('phone');\n            $table->string('address');\n            $table->string('gender');\n            $table->date('dob');\n            $table->date('join_date');\n            $table->string('job_type');\n            $table->string('city');\n            $table->bigInteger('age');\n            $table->rememberToken();\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('users');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2014_10_12_100000_create_password_resets_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreatePasswordResetsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('password_resets', function (Blueprint $table) {\n            $table->string('email',100);\n            $table->string('token');\n            $table->timestamp('created_at')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('password_resets');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_10_044553_create_employees_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateEmployeesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('employees', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->string('first_name');\n            $table->string('last_name');\n            $table->text('image')->nullable();\n            $table->string('email',100);\n            $table->bigInteger('phone');\n            $table->string('address');\n            $table->string('gender');\n            $table->date('dob');\n            $table->date('join_date');\n            $table->string('job_type');\n            $table->string('city');\n            $table->bigInteger('salary');\n            $table->string('age');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('employees');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_10_050306_create_admins_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateAdminsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('admins', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->timestamps();\n            $table->string('username');\n            $table->text('image')->nullable();\n            $table->string('first_name');\n            $table->string('last_name');\n            $table->string('email');\n            $table->string('password');\n            $table->boolean('status')->default(0);\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('admins');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_10_050652_create_cities_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateCitiesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('cities', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->timestamps();\n            $table->string('city_name');\n            $table->bigInteger('zip_code');\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('cities');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_10_050845_create_departments_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateDepartmentsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('departments', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->timestamps();\n            $table->string('department_name');\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('departments');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_10_050953_create_salaries_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateSalariesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('salaries', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->unsignedBigInteger('employee_id');\n            $table->bigInteger('salary_amount');\n            $table->foreign('employee_id')->references('id')->on('users');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('salaries');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_14_025243_create_shifts_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateShiftsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('shifts', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->timestamps();\n            $table->string('shift');\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('shifts');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_17_061433_create_leaves_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateLeavesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('leaves', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->unsignedBigInteger('employee_id');\n            $table->string('leave_type');\n            $table->date('date_from');\n            $table->date('date_to');\n            $table->bigInteger('days');\n            $table->text('reason');\n            $table->tinyInteger('leave_type_offer')->default('0');\n            $table->boolean('is_approved')->nullable();\n            $table->foreign('employee_id')->references('id')->on('users');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('leaves');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_17_094258_create_totalleaves_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateTotalleavesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('totalleaves', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('totalleaves');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_17_114000_create_profiles_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateProfilesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('profiles', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('profiles');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_18_061726_create_downloads_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateDownloadsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('downloads', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('downloads');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_24_051434_create_managesalaries_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateManagesalariesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('managesalaries', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->string('employee_name');\n            $table->string('designation_type');\n            $table->string('working_days');\n            $table->string('tax');\n            $table->string('gross_salary');\n//            $table->foreign('employee_id')->references('id')->on('users');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('managesalaries');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_03_25_143643_create_designations_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateDesignationsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('designations', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->unsignedBigInteger('employee_id');\n            $table->string('designation_type');\n            $table->foreign('employee_id')->references('id')->on('users');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('designations');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_04_10_113018_create_advancepayments_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateAdvancepaymentsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('advancepayments', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->unsignedBigInteger('employee_id');\n            $table->date('date');\n            $table->bigInteger('amount');\n            $table->foreign('employee_id')->references('id')->on('users');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('advancepayments');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_04_21_111757_create_events_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateEventsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('events', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->date('date');\n            $table->string('event');\n            $table->string('description')->nullable();\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('events');\n    }\n}\n"
  },
  {
    "path": "database/migrations/2019_04_26_023012_create_calendars_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateCalendarsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('calendars', function (Blueprint $table) {\n            $table->bigIncrements('id');\n            $table->string('title');\n            $table->string('color');\n            $table->date('start_date');\n            $table->date('end_date');\n            $table->timestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('calendars');\n    }\n}\n"
  },
  {
    "path": "database/seeds/AdminsTableSeeder.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass AdminsTableSeeder extends Seeder\n{\n    /**\n     * Run the database seeds.\n     *\n     * @return void\n     */\n    public function run()\n    {\n        DB::table('admins')->insert([\n           'created_at' => \\Carbon\\Carbon::now(),\n           'username' => 'ganesh',\n            'image' => '',\n            'first_name' => 'ganesh',\n            'last_name' => 'khadka',\n            'email' => 'ganesh46@gmail.com',\n            'password' => bcrypt('admin123'),\n            'status' => '1',\n        ]);\n    }\n}\n"
  },
  {
    "path": "database/seeds/DatabaseSeeder.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass DatabaseSeeder extends Seeder\n{\n    /**\n     * Seed the application's database.\n     *\n     * @return void\n     */\n    public function run()\n    {\n         $this->call(UsersTableSeeder::class);\n         $this->call(AdminsTableSeeder::class);\n    }\n}\n"
  },
  {
    "path": "database/seeds/UsersTableSeeder.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass UsersTableSeeder extends Seeder\n{\n    /**\n     * Run the database seeds.\n     *\n     * @return void\n     */\n    public function run()\n    {\n        DB::table('users')->insert([\n            [\n                'created_at' => \\Carbon\\Carbon::now(),\n                'username' => 'ganesh',\n                'image' => '',\n                'first_name' => 'ganesh',\n                'last_name' => 'khadka',\n                'role' => 'admin',\n                'email' => 'ganeshkhadka46@gmail.com',\n                'password' => bcrypt('admin123'),\n                'status' => '1',\n                'phone' => '9866567794',\n                'address' => 'butwal',\n                'gender' => 'male',\n                'dob' => '2019-03-12',\n                'join_date' => '2019-03-12',\n                'job_type' => 'sales',\n                'city' => 'butwal',\n                'age' => '23',\n            ],\n            [\n                'created_at' => \\Carbon\\Carbon::now(),\n                'username' => 'gunner',\n                'image' => '',\n                'first_name' => 'gunner',\n                'last_name' => 'kc',\n                'role' => 'employee',\n                'email' => 'gunnerpat46@gmail.com',\n                'password' => bcrypt('employee123'),\n                'status' => '1',\n                'phone' => '986133131',\n                'address' => 'butwal',\n                'gender' => 'male',\n                'dob' => '2019-03-12',\n                'join_date' => '2019-03-12',\n                'job_type' => 'IT',\n                'city' => 'butwal',\n                'age' => '22',\n            ],\n\n            [\n                'created_at' => \\Carbon\\Carbon::now(),\n                'username' => 'nabin',\n                'image' => '',\n                'first_name' => 'nbn',\n                'last_name' => 'bhandari',\n                'role' => 'admin',\n                'email' => 'nabin@gmail.com',\n                'password' => bcrypt('admin123'),\n                'status' => '1',\n                'phone' => '9866454562',\n                'address' => 'butwal',\n                'gender' => 'male',\n                'dob' => '2019-03-12',\n                'join_date' => '2019-03-12',\n                'job_type' => 'Developer',\n                'city' => 'butwal',\n                'age' => '21',\n            ],\n\n            [\n                'created_at' => \\Carbon\\Carbon::now(),\n                'username' => 'abcd',\n                'image' => '',\n                'first_name' => 'xyz',\n                'last_name' => 'pqr',\n                'role' => 'employee',\n                'email' => 'employee1@gmail.com',\n                'password' => bcrypt('employee123'),\n                'status' => '1',\n                'phone' => '9866567794',\n                'address' => 'butwal',\n                'gender' => 'male',\n                'dob' => '2019-03-12',\n                'join_date' => '2019-03-12',\n                'job_type' => 'Developer',\n                'city' => 'butwal',\n                'age' => '25',\n            ],\n\n            [\n                'created_at' => \\Carbon\\Carbon::now(),\n                'username' => 'bishal',\n                'image' => '',\n                'first_name' => 'bishal',\n                'last_name' => 'gc',\n                'role' => 'employee',\n                'email' => 'bishal@gmail.com',\n                'password' => bcrypt('employee123'),\n                'status' => '1',\n                'phone' => '9866567794',\n                'address' => 'butwal',\n                'gender' => 'male',\n                'dob' => '2019-03-12',\n                'join_date' => '2019-03-12',\n                'job_type' => 'designer',\n                'city' => 'butwal',\n                'age' => '25',\n            ],\n        ]);\n    }\n}\n"
  },
  {
    "path": "ems.sql",
    "content": "-- phpMyAdmin SQL Dump\n-- version 4.8.4\n-- https://www.phpmyadmin.net/\n--\n-- Host: 127.0.0.1\n-- Generation Time: Apr 29, 2019 at 11:17 AM\n-- Server version: 10.1.37-MariaDB\n-- PHP Version: 7.3.0\n\nSET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\nSET AUTOCOMMIT = 0;\nSTART TRANSACTION;\nSET time_zone = \"+00:00\";\n\n\n/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n/*!40101 SET NAMES utf8mb4 */;\n\n--\n-- Database: `ems`\n--\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `admins`\n--\n\nCREATE TABLE `admins` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `username` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `image` text COLLATE utf8mb4_unicode_ci,\n  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `status` tinyint(1) NOT NULL DEFAULT '0'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `admins`\n--\n\nINSERT INTO `admins` (`id`, `created_at`, `updated_at`, `username`, `image`, `first_name`, `last_name`, `email`, `password`, `status`) VALUES\n(1, '2019-04-16 00:56:05', NULL, 'ganesh', '', 'ganesh', 'khadka', 'ganesh46@gmail.com', '$2y$10$aVrkMlJMf/.tBYr15DMw.evh0r81e12pm83Pbel//g3gQgqCBQnau', 1);\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `advancepayments`\n--\n\nCREATE TABLE `advancepayments` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `employee_id` bigint(20) UNSIGNED NOT NULL,\n  `date` date NOT NULL,\n  `amount` bigint(20) NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `advancepayments`\n--\n\nINSERT INTO `advancepayments` (`id`, `employee_id`, `date`, `amount`, `created_at`, `updated_at`) VALUES\n(1, 3, '2019-04-17', 10000, '2019-04-16 01:57:23', '2019-04-16 01:57:23'),\n(2, 1, '2019-04-12', 6500, '2019-04-18 09:42:09', '2019-04-18 09:42:09'),\n(3, 1, '2019-04-18', 1, '2019-04-18 11:04:06', '2019-04-18 11:04:06'),\n(4, 4, '2019-04-10', 5000, '2019-04-18 23:28:54', '2019-04-18 23:28:54'),\n(5, 4, '2019-04-12', 2000, '2019-04-18 23:29:04', '2019-04-18 23:29:04'),\n(6, 5, '2019-04-18', 2000, '2019-04-19 04:01:00', '2019-04-19 04:01:00'),\n(7, 5, '2019-04-19', 3000, '2019-04-19 04:01:37', '2019-04-19 04:01:37'),\n(8, 2, '2019-04-03', 2000, '2019-04-19 05:38:33', '2019-04-19 05:38:33'),\n(9, 2, '2019-04-20', 500, '2019-04-19 05:48:12', '2019-04-19 05:48:12'),\n(10, 2, '2019-04-18', 5000, '2019-04-19 05:51:52', '2019-04-19 05:51:52'),\n(11, 2, '2019-04-23', 20200, '2019-04-29 00:33:35', '2019-04-29 00:33:35');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `calendars`\n--\n\nCREATE TABLE `calendars` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `color` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `start_date` date NOT NULL,\n  `end_date` date NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `calendars`\n--\n\nINSERT INTO `calendars` (`id`, `title`, `color`, `start_date`, `end_date`, `created_at`, `updated_at`) VALUES\n(1, 'sdf', '#ff8080', '2019-04-11', '2019-04-27', '2019-04-26 00:01:34', '2019-04-26 00:01:34'),\n(2, 'hhfh', '#008000', '2019-04-30', '2019-04-12', '2019-04-26 00:04:23', '2019-04-26 00:04:23'),\n(3, 'holiday', '#ff0080', '2019-04-30', '2019-05-01', '2019-04-28 04:05:18', '2019-04-28 04:05:18'),\n(4, 'Holiday', '#ff0080', '2019-04-30', '2019-04-30', '2019-04-29 00:10:55', '2019-04-29 00:10:55'),\n(5, 'rrt', '#8000ff', '2019-04-30', '2019-05-04', '2019-04-29 01:48:42', '2019-04-29 01:48:42');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `cities`\n--\n\nCREATE TABLE `cities` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `city_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `zip_code` bigint(20) NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `departments`\n--\n\nCREATE TABLE `departments` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `department_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `designations`\n--\n\nCREATE TABLE `designations` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `employee_id` bigint(20) UNSIGNED NOT NULL,\n  `designation_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `designations`\n--\n\nINSERT INTO `designations` (`id`, `employee_id`, `designation_type`, `created_at`, `updated_at`) VALUES\n(1, 1, 'Developer', '2019-04-16 00:58:02', '2019-04-16 00:58:02'),\n(2, 2, 'Backend developer', '2019-04-16 00:58:18', '2019-04-16 00:58:18'),\n(3, 3, 'Backend', '2019-04-16 00:58:31', '2019-04-16 00:58:31'),\n(4, 4, 'Frontend', '2019-04-16 00:58:53', '2019-04-16 00:58:53'),\n(5, 5, 'UI/UX designer', '2019-04-16 00:59:06', '2019-04-16 00:59:06');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `downloads`\n--\n\nCREATE TABLE `downloads` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `employees`\n--\n\nCREATE TABLE `employees` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `image` text COLLATE utf8mb4_unicode_ci,\n  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `phone` bigint(20) NOT NULL,\n  `address` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `gender` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `dob` date NOT NULL,\n  `join_date` date NOT NULL,\n  `job_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `city` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `salary` bigint(20) NOT NULL,\n  `age` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `events`\n--\n\nCREATE TABLE `events` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `date` date NOT NULL,\n  `event` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `events`\n--\n\nINSERT INTO `events` (`id`, `date`, `event`, `description`, `created_at`, `updated_at`) VALUES\n(1, '2019-04-10', 'Meeting', 'Related to project', '2019-04-23 00:44:30', '2019-04-23 00:44:30'),\n(2, '2019-04-17', 'Holiday', 'Due to strike', '2019-04-22 00:55:06', '2019-04-23 00:55:06'),\n(3, '2019-04-19', 'Meeting', '4 o\\'clock', '2019-04-23 03:14:57', '2019-04-23 03:14:57'),\n(4, '2019-04-17', 'Event organized by Concept', 'Event organized by Concept Event organized by Concept', '2019-04-23 04:58:58', '2019-04-23 04:58:58');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `leaves`\n--\n\nCREATE TABLE `leaves` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `employee_id` bigint(20) UNSIGNED NOT NULL,\n  `leave_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `date_from` date NOT NULL,\n  `date_to` date NOT NULL,\n  `days` bigint(20) NOT NULL,\n  `reason` text COLLATE utf8mb4_unicode_ci NOT NULL,\n  `leave_type_offer` tinyint(1) NOT NULL DEFAULT '0',\n  `is_approved` tinyint(1) DEFAULT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `leaves`\n--\n\nINSERT INTO `leaves` (`id`, `employee_id`, `leave_type`, `date_from`, `date_to`, `days`, `reason`, `leave_type_offer`, `is_approved`, `created_at`, `updated_at`) VALUES\n(1, 4, 'Sick leave', '2019-04-17', '2019-04-20', 4, 'Doctor recommend to take rest for few days', 2, 1, '2019-04-16 01:01:01', '2019-04-29 01:48:14'),\n(2, 5, 'Sick leave', '2019-04-20', '2019-04-22', 3, 'Suffering from hgh fever', 0, 2, '2019-04-19 01:33:30', '2019-04-19 03:10:56'),\n(3, 5, 'abcd', '2019-04-21', '2019-04-23', 3, 'abcd', 0, 1, '2019-04-19 01:38:03', '2019-04-19 01:38:03'),\n(4, 4, 'sicl', '2019-04-19', '2019-04-23', 5, 'asdfg', 1, 1, '2019-04-19 05:53:23', '2019-04-19 05:53:54'),\n(5, 4, 'ffng', '2019-04-30', '2019-05-02', 3, 'fdgdg', 0, NULL, '2019-04-29 00:29:17', '2019-04-29 00:29:17');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `managesalaries`\n--\n\nCREATE TABLE `managesalaries` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `employee_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `designation_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `working_days` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `tax` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `gross_salary` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `migrations`\n--\n\nCREATE TABLE `migrations` (\n  `id` int(10) UNSIGNED NOT NULL,\n  `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `batch` int(11) NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `migrations`\n--\n\nINSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES\n(203, '2014_10_12_000000_create_users_table', 1),\n(204, '2014_10_12_100000_create_password_resets_table', 1),\n(205, '2019_03_10_044553_create_employees_table', 1),\n(206, '2019_03_10_050306_create_admins_table', 1),\n(207, '2019_03_10_050652_create_cities_table', 1),\n(208, '2019_03_10_050845_create_departments_table', 1),\n(209, '2019_03_10_050953_create_salaries_table', 1),\n(210, '2019_03_14_025243_create_shifts_table', 1),\n(211, '2019_03_17_061433_create_leaves_table', 1),\n(212, '2019_03_17_094258_create_totalleaves_table', 1),\n(213, '2019_03_17_114000_create_profiles_table', 1),\n(214, '2019_03_18_061726_create_downloads_table', 1),\n(215, '2019_03_24_051434_create_managesalaries_table', 1),\n(216, '2019_03_25_143643_create_designations_table', 1),\n(217, '2019_04_10_113018_create_advancepayments_table', 1),\n(218, '2019_04_21_111757_create_events_table', 2),\n(219, '2019_04_26_023012_create_calendars_table', 3);\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `password_resets`\n--\n\nCREATE TABLE `password_resets` (\n  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `profiles`\n--\n\nCREATE TABLE `profiles` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `salaries`\n--\n\nCREATE TABLE `salaries` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `employee_id` bigint(20) UNSIGNED NOT NULL,\n  `salary_amount` bigint(20) NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `salaries`\n--\n\nINSERT INTO `salaries` (`id`, `employee_id`, `salary_amount`, `created_at`, `updated_at`) VALUES\n(1, 1, 20000, '2019-04-16 04:04:17', '2019-04-16 04:04:17'),\n(2, 2, 30000, '2019-04-16 04:04:26', '2019-04-16 04:04:26'),\n(3, 3, 35000, '2019-04-16 04:04:36', '2019-04-16 04:04:36'),\n(4, 4, 35000, '2019-04-16 04:05:08', '2019-04-16 04:05:08'),\n(5, 5, 40000, '2019-04-16 04:05:18', '2019-04-16 04:05:18');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `shifts`\n--\n\nCREATE TABLE `shifts` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `shift` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `totalleaves`\n--\n\nCREATE TABLE `totalleaves` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `users`\n--\n\nCREATE TABLE `users` (\n  `id` bigint(20) UNSIGNED NOT NULL,\n  `leaves_count` bigint(20) DEFAULT NULL,\n  `username` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `image` text COLLATE utf8mb4_unicode_ci,\n  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `role` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'admin',\n  `salary` bigint(20) DEFAULT NULL,\n  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `status` tinyint(1) DEFAULT NULL,\n  `phone` bigint(20) NOT NULL,\n  `address` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `gender` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `dob` date NOT NULL,\n  `join_date` date NOT NULL,\n  `job_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `city` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `age` bigint(20) NOT NULL,\n  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Dumping data for table `users`\n--\n\nINSERT INTO `users` (`id`, `leaves_count`, `username`, `image`, `first_name`, `last_name`, `role`, `salary`, `email`, `password`, `status`, `phone`, `address`, `gender`, `dob`, `join_date`, `job_type`, `city`, `age`, `remember_token`, `created_at`, `updated_at`) VALUES\n(1, NULL, 'ganesh', '1555605075.jpg', 'ganesh', 'khadka', 'admin', 15000, 'ganeshkhadka46@gmail.com', '$2y$10$DhPAagFOPtbAUP9EUfbZjOYH7NRQNxdN8BxB71lDU6CAMP8.qvZ/G', 1, 9866567794, 'butwal', 'male', '2019-03-12', '2019-03-12', 'sales', 'butwal', 23, NULL, '2019-04-16 00:56:04', '2019-04-18 10:46:15'),\n(2, NULL, 'gunner', '1555396911.png', 'gunner', 'kc', 'admin', 30000, 'gunnerpat46@gmail.com', '$2y$10$vqHYrwuE0BkNN9L8RiERRu/hREY4bD0XFOhFS1djs4SHGxpCBkY56', 1, 986133131, 'butwal', 'male', '2019-03-12', '2019-03-12', 'IT', 'butwal', 22, NULL, '2019-04-16 00:56:05', '2019-04-16 00:56:51'),\n(3, NULL, 'nabin', '1556525059.png', 'nbn', 'bhandari', 'admin', 35000, 'nabin@gmail.com', '$2y$10$MoU1ccsK5aPu226PNdgkm.yFWwXLx2aSUewuFjeCLSLeTL44CLdUC', 1, 9866454562, 'butwal', 'male', '2019-03-12', '2019-03-12', 'Developer', 'butwal', 21, NULL, '2019-04-16 00:56:05', '2019-04-29 02:19:19'),\n(4, NULL, 'abcd', '1555396946.png', 'xyz', 'pqr', 'employee', 35000, 'employee1@gmail.com', '$2y$10$YXH756kTdxICl0UtPRTfROOgmCqlZ8VYvc1nKfPp944FRs7AHnuBe', 1, 9866567794, 'butwal', 'male', '2019-03-12', '2019-03-12', 'Developer', 'butwal', 25, NULL, '2019-04-16 00:56:05', '2019-04-16 00:57:26'),\n(5, NULL, 'bishal', '1555396963.png', 'bishal', 'gc', 'employee', 40000, 'bishal@gmail.com', '$2y$10$oeL1FvQjgz6W7IiVqyLNIOEM5K4xOsgwdj5K.f48BAIIVqtAZ2ukK', 1, 9866567794, 'butwal', 'male', '2019-03-12', '2019-03-12', 'designer', 'butwal', 25, NULL, '2019-04-16 00:56:05', '2019-04-16 00:57:43'),\n(6, NULL, 'lekhmani', '1556521869.png', 'Lekh', 'Mani', 'employee', 50000, 'lekhmani@gmail.com', '$2y$10$9DB6OVgX88ubUM/JkorgkOC1ij3Gr703Kll.iDu.syjWtXiTaxeru', NULL, 987412425, 'Butwal', 'male', '2019-04-02', '2019-04-30', 'Developer', 'butwal', 25, NULL, '2019-04-29 01:19:00', '2019-04-29 01:26:09');\n\n--\n-- Indexes for dumped tables\n--\n\n--\n-- Indexes for table `admins`\n--\nALTER TABLE `admins`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `advancepayments`\n--\nALTER TABLE `advancepayments`\n  ADD PRIMARY KEY (`id`),\n  ADD KEY `advancepayments_employee_id_foreign` (`employee_id`);\n\n--\n-- Indexes for table `calendars`\n--\nALTER TABLE `calendars`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `cities`\n--\nALTER TABLE `cities`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `departments`\n--\nALTER TABLE `departments`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `designations`\n--\nALTER TABLE `designations`\n  ADD PRIMARY KEY (`id`),\n  ADD KEY `designations_employee_id_foreign` (`employee_id`);\n\n--\n-- Indexes for table `downloads`\n--\nALTER TABLE `downloads`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `employees`\n--\nALTER TABLE `employees`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `events`\n--\nALTER TABLE `events`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `leaves`\n--\nALTER TABLE `leaves`\n  ADD PRIMARY KEY (`id`),\n  ADD KEY `leaves_employee_id_foreign` (`employee_id`);\n\n--\n-- Indexes for table `managesalaries`\n--\nALTER TABLE `managesalaries`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `migrations`\n--\nALTER TABLE `migrations`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `profiles`\n--\nALTER TABLE `profiles`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `salaries`\n--\nALTER TABLE `salaries`\n  ADD PRIMARY KEY (`id`),\n  ADD KEY `salaries_employee_id_foreign` (`employee_id`);\n\n--\n-- Indexes for table `shifts`\n--\nALTER TABLE `shifts`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `totalleaves`\n--\nALTER TABLE `totalleaves`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `users`\n--\nALTER TABLE `users`\n  ADD PRIMARY KEY (`id`),\n  ADD UNIQUE KEY `users_email_unique` (`email`);\n\n--\n-- AUTO_INCREMENT for dumped tables\n--\n\n--\n-- AUTO_INCREMENT for table `admins`\n--\nALTER TABLE `admins`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;\n\n--\n-- AUTO_INCREMENT for table `advancepayments`\n--\nALTER TABLE `advancepayments`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;\n\n--\n-- AUTO_INCREMENT for table `calendars`\n--\nALTER TABLE `calendars`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;\n\n--\n-- AUTO_INCREMENT for table `cities`\n--\nALTER TABLE `cities`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `departments`\n--\nALTER TABLE `departments`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;\n\n--\n-- AUTO_INCREMENT for table `designations`\n--\nALTER TABLE `designations`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;\n\n--\n-- AUTO_INCREMENT for table `downloads`\n--\nALTER TABLE `downloads`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `employees`\n--\nALTER TABLE `employees`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `events`\n--\nALTER TABLE `events`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;\n\n--\n-- AUTO_INCREMENT for table `leaves`\n--\nALTER TABLE `leaves`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;\n\n--\n-- AUTO_INCREMENT for table `managesalaries`\n--\nALTER TABLE `managesalaries`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `migrations`\n--\nALTER TABLE `migrations`\n  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=220;\n\n--\n-- AUTO_INCREMENT for table `profiles`\n--\nALTER TABLE `profiles`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `salaries`\n--\nALTER TABLE `salaries`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;\n\n--\n-- AUTO_INCREMENT for table `shifts`\n--\nALTER TABLE `shifts`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `totalleaves`\n--\nALTER TABLE `totalleaves`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `users`\n--\nALTER TABLE `users`\n  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;\n\n--\n-- Constraints for dumped tables\n--\n\n--\n-- Constraints for table `advancepayments`\n--\nALTER TABLE `advancepayments`\n  ADD CONSTRAINT `advancepayments_employee_id_foreign` FOREIGN KEY (`employee_id`) REFERENCES `users` (`id`);\n\n--\n-- Constraints for table `designations`\n--\nALTER TABLE `designations`\n  ADD CONSTRAINT `designations_employee_id_foreign` FOREIGN KEY (`employee_id`) REFERENCES `users` (`id`);\n\n--\n-- Constraints for table `leaves`\n--\nALTER TABLE `leaves`\n  ADD CONSTRAINT `leaves_employee_id_foreign` FOREIGN KEY (`employee_id`) REFERENCES `users` (`id`);\n\n--\n-- Constraints for table `salaries`\n--\nALTER TABLE `salaries`\n  ADD CONSTRAINT `salaries_employee_id_foreign` FOREIGN KEY (`employee_id`) REFERENCES `users` (`id`);\nCOMMIT;\n\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"private\": true,\n    \"scripts\": {\n        \"dev\": \"npm run development\",\n        \"development\": \"cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"watch\": \"npm run development -- --watch\",\n        \"watch-poll\": \"npm run watch -- --watch-poll\",\n        \"hot\": \"cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"prod\": \"npm run production\",\n        \"production\": \"cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js\"\n    },\n    \"devDependencies\": {\n        \"axios\": \"^0.18\",\n        \"bootstrap\": \"^4.0.0\",\n        \"cross-env\": \"^5.1\",\n        \"jquery\": \"^3.2\",\n        \"laravel-mix\": \"^4.0.7\",\n        \"lodash\": \"^4.17.5\",\n        \"popper.js\": \"^1.12\",\n        \"resolve-url-loader\": \"^2.3.1\",\n        \"sass\": \"^1.15.2\",\n        \"sass-loader\": \"^7.1.0\",\n        \"vue\": \"^2.5.17\"\n    }\n}\n"
  },
  {
    "path": "phpunit.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit backupGlobals=\"false\"\n         backupStaticAttributes=\"false\"\n         bootstrap=\"vendor/autoload.php\"\n         colors=\"true\"\n         convertErrorsToExceptions=\"true\"\n         convertNoticesToExceptions=\"true\"\n         convertWarningsToExceptions=\"true\"\n         processIsolation=\"false\"\n         stopOnFailure=\"false\">\n    <testsuites>\n        <testsuite name=\"Unit\">\n            <directory suffix=\"Test.php\">./tests/Unit</directory>\n        </testsuite>\n\n        <testsuite name=\"Feature\">\n            <directory suffix=\"Test.php\">./tests/Feature</directory>\n        </testsuite>\n    </testsuites>\n    <filter>\n        <whitelist processUncoveredFilesFromWhitelist=\"true\">\n            <directory suffix=\".php\">./app</directory>\n        </whitelist>\n    </filter>\n    <php>\n        <server name=\"APP_ENV\" value=\"testing\"/>\n        <server name=\"BCRYPT_ROUNDS\" value=\"4\"/>\n        <server name=\"CACHE_DRIVER\" value=\"array\"/>\n        <server name=\"MAIL_DRIVER\" value=\"array\"/>\n        <server name=\"QUEUE_CONNECTION\" value=\"sync\"/>\n        <server name=\"SESSION_DRIVER\" value=\"array\"/>\n    </php>\n</phpunit>\n"
  },
  {
    "path": "public/.htaccess",
    "content": "<IfModule mod_rewrite.c>\n    <IfModule mod_negotiation.c>\n        Options -MultiViews -Indexes\n    </IfModule>\n\n    RewriteEngine On\n\n    # Handle Authorization Header\n    RewriteCond %{HTTP:Authorization} .\n    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n\n    # Redirect Trailing Slashes If Not A Folder...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_URI} (.+)/$\n    RewriteRule ^ %1 [L,R=301]\n\n    # Handle Front Controller...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_FILENAME} !-f\n    RewriteRule ^ index.php [L]\n</IfModule>\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.css",
    "content": "table.dataTable {\n  clear: both;\n  margin-top: 6px !important;\n  margin-bottom: 6px !important;\n  max-width: none !important;\n  border-collapse: separate !important;\n}\ntable.dataTable td,\ntable.dataTable th {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ntable.dataTable td.dataTables_empty,\ntable.dataTable th.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable.nowrap th,\ntable.dataTable.nowrap td {\n  white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length label {\n  font-weight: normal;\n  text-align: left;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_length select {\n  width: 75px;\n  display: inline-block;\n}\ndiv.dataTables_wrapper div.dataTables_filter {\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_filter label {\n  font-weight: normal;\n  white-space: nowrap;\n  text-align: left;\n}\ndiv.dataTables_wrapper div.dataTables_filter input {\n  margin-left: 0.5em;\n  display: inline-block;\n  width: auto;\n}\ndiv.dataTables_wrapper div.dataTables_info {\n  padding-top: 8px;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_paginate {\n  margin: 0;\n  white-space: nowrap;\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_paginate ul.pagination {\n  margin: 2px 0;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 200px;\n  margin-left: -100px;\n  margin-top: -26px;\n  text-align: center;\n  padding: 1em 0;\n}\n\ntable.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,\ntable.dataTable thead > tr > td.sorting_asc,\ntable.dataTable thead > tr > td.sorting_desc,\ntable.dataTable thead > tr > td.sorting {\n  padding-right: 30px;\n}\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n  outline: none;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  cursor: pointer;\n  position: relative;\n}\ntable.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:after {\n  position: absolute;\n  bottom: 8px;\n  right: 8px;\n  display: block;\n  font-family: 'Glyphicons Halflings';\n  opacity: 0.5;\n}\ntable.dataTable thead .sorting:after {\n  opacity: 0.2;\n  content: \"\\e150\";\n  /* sort */\n}\ntable.dataTable thead .sorting_asc:after {\n  content: \"\\e155\";\n  /* sort-by-attributes */\n}\ntable.dataTable thead .sorting_desc:after {\n  content: \"\\e156\";\n  /* sort-by-attributes-alt */\n}\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:after {\n  color: #eee;\n}\n\ndiv.dataTables_scrollHead table.dataTable {\n  margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody > table {\n  border-top: none;\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\ndiv.dataTables_scrollBody > table > thead .sorting:after,\ndiv.dataTables_scrollBody > table > thead .sorting_asc:after,\ndiv.dataTables_scrollBody > table > thead .sorting_desc:after {\n  display: none;\n}\ndiv.dataTables_scrollBody > table > tbody > tr:first-child > th,\ndiv.dataTables_scrollBody > table > tbody > tr:first-child > td {\n  border-top: none;\n}\n\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner {\n  box-sizing: content-box;\n}\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner > table {\n  margin-top: 0 !important;\n  border-top: none;\n}\n\n@media screen and (max-width: 767px) {\n  div.dataTables_wrapper div.dataTables_length,\n  div.dataTables_wrapper div.dataTables_filter,\n  div.dataTables_wrapper div.dataTables_info,\n  div.dataTables_wrapper div.dataTables_paginate {\n    text-align: center;\n  }\n}\ntable.dataTable.table-condensed > thead > tr > th {\n  padding-right: 20px;\n}\ntable.dataTable.table-condensed .sorting:after,\ntable.dataTable.table-condensed .sorting_asc:after,\ntable.dataTable.table-condensed .sorting_desc:after {\n  top: 6px;\n  right: 6px;\n}\n\ntable.table-bordered.dataTable th,\ntable.table-bordered.dataTable td {\n  border-left-width: 0;\n}\ntable.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,\ntable.table-bordered.dataTable td:last-child,\ntable.table-bordered.dataTable td:last-child {\n  border-right-width: 0;\n}\ntable.table-bordered.dataTable tbody th,\ntable.table-bordered.dataTable tbody td {\n  border-bottom-width: 0;\n}\n\ndiv.dataTables_scrollHead table.table-bordered {\n  border-bottom-width: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row {\n  margin: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:first-child {\n  padding-left: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:last-child {\n  padding-right: 0;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.css",
    "content": "table.dataTable {\n  clear: both;\n  margin-top: 6px !important;\n  margin-bottom: 6px !important;\n  max-width: none !important;\n  border-collapse: separate !important;\n}\ntable.dataTable td,\ntable.dataTable th {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ntable.dataTable td.dataTables_empty,\ntable.dataTable th.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable.nowrap th,\ntable.dataTable.nowrap td {\n  white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length label {\n  font-weight: normal;\n  text-align: left;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_length select {\n  width: 75px;\n  display: inline-block;\n}\ndiv.dataTables_wrapper div.dataTables_filter {\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_filter label {\n  font-weight: normal;\n  white-space: nowrap;\n  text-align: left;\n}\ndiv.dataTables_wrapper div.dataTables_filter input {\n  margin-left: 0.5em;\n  display: inline-block;\n  width: auto;\n}\ndiv.dataTables_wrapper div.dataTables_info {\n  padding-top: 0.85em;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_paginate {\n  margin: 0;\n  white-space: nowrap;\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_paginate ul.pagination {\n  margin: 2px 0;\n  white-space: nowrap;\n  justify-content: flex-end;\n}\ndiv.dataTables_wrapper div.dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 200px;\n  margin-left: -100px;\n  margin-top: -26px;\n  text-align: center;\n  padding: 1em 0;\n}\n\ntable.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,\ntable.dataTable thead > tr > td.sorting_asc,\ntable.dataTable thead > tr > td.sorting_desc,\ntable.dataTable thead > tr > td.sorting {\n  padding-right: 30px;\n}\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n  outline: none;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  cursor: pointer;\n  position: relative;\n}\ntable.dataTable thead .sorting:before, table.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  position: absolute;\n  bottom: 0.9em;\n  display: block;\n  opacity: 0.3;\n}\ntable.dataTable thead .sorting:before,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:before {\n  right: 1em;\n  content: \"\\2191\";\n}\ntable.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:after {\n  right: 0.5em;\n  content: \"\\2193\";\n}\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:after {\n  opacity: 1;\n}\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  opacity: 0;\n}\n\ndiv.dataTables_scrollHead table.dataTable {\n  margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n  border-top: none;\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\ndiv.dataTables_scrollBody table thead .sorting:after,\ndiv.dataTables_scrollBody table thead .sorting_asc:after,\ndiv.dataTables_scrollBody table thead .sorting_desc:after {\n  display: none;\n}\ndiv.dataTables_scrollBody table tbody tr:first-child th,\ndiv.dataTables_scrollBody table tbody tr:first-child td {\n  border-top: none;\n}\n\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner {\n  box-sizing: content-box;\n}\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner > table {\n  margin-top: 0 !important;\n  border-top: none;\n}\n\n@media screen and (max-width: 767px) {\n  div.dataTables_wrapper div.dataTables_length,\n  div.dataTables_wrapper div.dataTables_filter,\n  div.dataTables_wrapper div.dataTables_info,\n  div.dataTables_wrapper div.dataTables_paginate {\n    text-align: center;\n  }\n}\ntable.dataTable.table-sm > thead > tr > th {\n  padding-right: 20px;\n}\ntable.dataTable.table-sm .sorting:before,\ntable.dataTable.table-sm .sorting_asc:before,\ntable.dataTable.table-sm .sorting_desc:before {\n  top: 5px;\n  right: 0.85em;\n}\ntable.dataTable.table-sm .sorting:after,\ntable.dataTable.table-sm .sorting_asc:after,\ntable.dataTable.table-sm .sorting_desc:after {\n  top: 5px;\n}\n\ntable.table-bordered.dataTable th,\ntable.table-bordered.dataTable td {\n  border-left-width: 0;\n}\ntable.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,\ntable.table-bordered.dataTable td:last-child,\ntable.table-bordered.dataTable td:last-child {\n  border-right-width: 0;\n}\ntable.table-bordered.dataTable tbody th,\ntable.table-bordered.dataTable tbody td {\n  border-bottom-width: 0;\n}\n\ndiv.dataTables_scrollHead table.table-bordered {\n  border-bottom-width: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row {\n  margin: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:first-child {\n  padding-left: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:last-child {\n  padding-right: 0;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.css",
    "content": "table.dataTable {\n  clear: both;\n  margin: 0.5em 0 !important;\n  max-width: none !important;\n  width: 100%;\n}\ntable.dataTable td,\ntable.dataTable th {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ntable.dataTable td.dataTables_empty,\ntable.dataTable th.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable.nowrap th, table.dataTable.nowrap td {\n  white-space: nowrap;\n}\n\ndiv.dataTables_wrapper {\n  position: relative;\n}\ndiv.dataTables_wrapper div.dataTables_length label {\n  float: left;\n  text-align: left;\n  margin-bottom: 0;\n}\ndiv.dataTables_wrapper div.dataTables_length select {\n  width: 75px;\n  margin-bottom: 0;\n}\ndiv.dataTables_wrapper div.dataTables_filter label {\n  float: right;\n  margin-bottom: 0;\n}\ndiv.dataTables_wrapper div.dataTables_filter input {\n  display: inline-block !important;\n  width: auto !important;\n  margin-bottom: 0;\n  margin-left: 0.5em;\n}\ndiv.dataTables_wrapper div.dataTables_info {\n  padding-top: 2px;\n}\ndiv.dataTables_wrapper div.dataTables_paginate {\n  float: right;\n  margin: 0;\n}\ndiv.dataTables_wrapper div.dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 200px;\n  margin-left: -100px;\n  margin-top: -26px;\n  text-align: center;\n  padding: 1rem 0;\n}\n\ntable.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,\ntable.dataTable thead > tr > td.sorting_asc,\ntable.dataTable thead > tr > td.sorting_desc,\ntable.dataTable thead > tr > td.sorting {\n  padding-right: 1.5rem;\n}\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n  outline: none;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  cursor: pointer;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  background-repeat: no-repeat;\n  background-position: center right;\n}\ntable.dataTable thead .sorting {\n  background-image: url(\"../images/sort_both.png\");\n}\ntable.dataTable thead .sorting_asc {\n  background-image: url(\"../images/sort_asc.png\");\n}\ntable.dataTable thead .sorting_desc {\n  background-image: url(\"../images/sort_desc.png\");\n}\ntable.dataTable thead .sorting_asc_disabled {\n  background-image: url(\"../images/sort_asc_disabled.png\");\n}\ntable.dataTable thead .sorting_desc_disabled {\n  background-image: url(\"../images/sort_desc_disabled.png\");\n}\n\ndiv.dataTables_scrollHead table {\n  margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n  border-top: none;\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\ndiv.dataTables_scrollBody table tbody tr:first-child th,\ndiv.dataTables_scrollBody table tbody tr:first-child td {\n  border-top: none;\n}\n\ndiv.dataTables_scrollFoot table {\n  margin-top: 0 !important;\n  border-top: none;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.css",
    "content": "/*\n * Table styles\n */\ntable.dataTable {\n  width: 100%;\n  margin: 0 auto;\n  clear: both;\n  border-collapse: separate;\n  border-spacing: 0;\n  /*\n   * Header and footer styles\n   */\n  /*\n   * Body styles\n   */\n}\ntable.dataTable thead th,\ntable.dataTable tfoot th {\n  font-weight: bold;\n}\ntable.dataTable thead th,\ntable.dataTable thead td {\n  padding: 10px 18px;\n}\ntable.dataTable thead th:active,\ntable.dataTable thead td:active {\n  outline: none;\n}\ntable.dataTable tfoot th,\ntable.dataTable tfoot td {\n  padding: 10px 18px 6px 18px;\n}\ntable.dataTable tbody tr {\n  background-color: #ffffff;\n}\ntable.dataTable tbody tr.selected {\n  background-color: #B0BED9;\n}\ntable.dataTable tbody th,\ntable.dataTable tbody td {\n  padding: 8px 10px;\n}\ntable.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {\n  border-top: 1px solid #ddd;\n}\ntable.dataTable.row-border tbody tr:first-child th,\ntable.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,\ntable.dataTable.display tbody tr:first-child td {\n  border-top: none;\n}\ntable.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {\n  border-top: 1px solid #ddd;\n  border-right: 1px solid #ddd;\n}\ntable.dataTable.cell-border tbody tr th:first-child,\ntable.dataTable.cell-border tbody tr td:first-child {\n  border-left: 1px solid #ddd;\n}\ntable.dataTable.cell-border tbody tr:first-child th,\ntable.dataTable.cell-border tbody tr:first-child td {\n  border-top: none;\n}\ntable.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {\n  background-color: #f9f9f9;\n}\ntable.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {\n  background-color: #acbad4;\n}\ntable.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {\n  background-color: #f6f6f6;\n}\ntable.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {\n  background-color: #aab7d1;\n}\ntable.dataTable.order-column tbody tr > .sorting_1,\ntable.dataTable.order-column tbody tr > .sorting_2,\ntable.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,\ntable.dataTable.display tbody tr > .sorting_2,\ntable.dataTable.display tbody tr > .sorting_3 {\n  background-color: #fafafa;\n}\ntable.dataTable.order-column tbody tr.selected > .sorting_1,\ntable.dataTable.order-column tbody tr.selected > .sorting_2,\ntable.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,\ntable.dataTable.display tbody tr.selected > .sorting_2,\ntable.dataTable.display tbody tr.selected > .sorting_3 {\n  background-color: #acbad5;\n}\ntable.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {\n  background-color: #f1f1f1;\n}\ntable.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {\n  background-color: #f3f3f3;\n}\ntable.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {\n  background-color: whitesmoke;\n}\ntable.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {\n  background-color: #a6b4cd;\n}\ntable.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {\n  background-color: #a8b5cf;\n}\ntable.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {\n  background-color: #a9b7d1;\n}\ntable.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {\n  background-color: #fafafa;\n}\ntable.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {\n  background-color: #fcfcfc;\n}\ntable.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {\n  background-color: #fefefe;\n}\ntable.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {\n  background-color: #acbad5;\n}\ntable.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {\n  background-color: #aebcd6;\n}\ntable.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {\n  background-color: #afbdd8;\n}\ntable.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {\n  background-color: #eaeaea;\n}\ntable.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {\n  background-color: #ececec;\n}\ntable.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {\n  background-color: #efefef;\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {\n  background-color: #a2aec7;\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {\n  background-color: #a3b0c9;\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {\n  background-color: #a5b2cb;\n}\ntable.dataTable.no-footer {\n  border-bottom: 1px solid #111;\n}\ntable.dataTable.nowrap th, table.dataTable.nowrap td {\n  white-space: nowrap;\n}\ntable.dataTable.compact thead th,\ntable.dataTable.compact thead td {\n  padding: 4px 17px 4px 4px;\n}\ntable.dataTable.compact tfoot th,\ntable.dataTable.compact tfoot td {\n  padding: 4px;\n}\ntable.dataTable.compact tbody th,\ntable.dataTable.compact tbody td {\n  padding: 4px;\n}\ntable.dataTable th.dt-left,\ntable.dataTable td.dt-left {\n  text-align: left;\n}\ntable.dataTable th.dt-center,\ntable.dataTable td.dt-center,\ntable.dataTable td.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable th.dt-right,\ntable.dataTable td.dt-right {\n  text-align: right;\n}\ntable.dataTable th.dt-justify,\ntable.dataTable td.dt-justify {\n  text-align: justify;\n}\ntable.dataTable th.dt-nowrap,\ntable.dataTable td.dt-nowrap {\n  white-space: nowrap;\n}\ntable.dataTable thead th.dt-head-left,\ntable.dataTable thead td.dt-head-left,\ntable.dataTable tfoot th.dt-head-left,\ntable.dataTable tfoot td.dt-head-left {\n  text-align: left;\n}\ntable.dataTable thead th.dt-head-center,\ntable.dataTable thead td.dt-head-center,\ntable.dataTable tfoot th.dt-head-center,\ntable.dataTable tfoot td.dt-head-center {\n  text-align: center;\n}\ntable.dataTable thead th.dt-head-right,\ntable.dataTable thead td.dt-head-right,\ntable.dataTable tfoot th.dt-head-right,\ntable.dataTable tfoot td.dt-head-right {\n  text-align: right;\n}\ntable.dataTable thead th.dt-head-justify,\ntable.dataTable thead td.dt-head-justify,\ntable.dataTable tfoot th.dt-head-justify,\ntable.dataTable tfoot td.dt-head-justify {\n  text-align: justify;\n}\ntable.dataTable thead th.dt-head-nowrap,\ntable.dataTable thead td.dt-head-nowrap,\ntable.dataTable tfoot th.dt-head-nowrap,\ntable.dataTable tfoot td.dt-head-nowrap {\n  white-space: nowrap;\n}\ntable.dataTable tbody th.dt-body-left,\ntable.dataTable tbody td.dt-body-left {\n  text-align: left;\n}\ntable.dataTable tbody th.dt-body-center,\ntable.dataTable tbody td.dt-body-center {\n  text-align: center;\n}\ntable.dataTable tbody th.dt-body-right,\ntable.dataTable tbody td.dt-body-right {\n  text-align: right;\n}\ntable.dataTable tbody th.dt-body-justify,\ntable.dataTable tbody td.dt-body-justify {\n  text-align: justify;\n}\ntable.dataTable tbody th.dt-body-nowrap,\ntable.dataTable tbody td.dt-body-nowrap {\n  white-space: nowrap;\n}\n\ntable.dataTable,\ntable.dataTable th,\ntable.dataTable td {\n  box-sizing: content-box;\n}\n\n/*\n * Control feature layout\n */\n.dataTables_wrapper {\n  position: relative;\n  clear: both;\n  *zoom: 1;\n  zoom: 1;\n}\n.dataTables_wrapper .dataTables_length {\n  float: left;\n}\n.dataTables_wrapper .dataTables_filter {\n  float: right;\n  text-align: right;\n}\n.dataTables_wrapper .dataTables_filter input {\n  margin-left: 0.5em;\n}\n.dataTables_wrapper .dataTables_info {\n  clear: both;\n  float: left;\n  padding-top: 0.755em;\n}\n.dataTables_wrapper .dataTables_paginate {\n  float: right;\n  text-align: right;\n  padding-top: 0.25em;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button {\n  box-sizing: border-box;\n  display: inline-block;\n  min-width: 1.5em;\n  padding: 0.5em 1em;\n  margin-left: 2px;\n  text-align: center;\n  text-decoration: none !important;\n  cursor: pointer;\n  *cursor: hand;\n  color: #333 !important;\n  border: 1px solid transparent;\n  border-radius: 2px;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {\n  color: #333 !important;\n  border: 1px solid #979797;\n  background-color: white;\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* Chrome10+,Safari5.1+ */\n  background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* FF3.6+ */\n  background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* IE10+ */\n  background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* Opera 11.10+ */\n  background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);\n  /* W3C */\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {\n  cursor: default;\n  color: #666 !important;\n  border: 1px solid transparent;\n  background: transparent;\n  box-shadow: none;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button:hover {\n  color: white !important;\n  border: 1px solid #111;\n  background-color: #585858;\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, #585858 0%, #111 100%);\n  /* Chrome10+,Safari5.1+ */\n  background: -moz-linear-gradient(top, #585858 0%, #111 100%);\n  /* FF3.6+ */\n  background: -ms-linear-gradient(top, #585858 0%, #111 100%);\n  /* IE10+ */\n  background: -o-linear-gradient(top, #585858 0%, #111 100%);\n  /* Opera 11.10+ */\n  background: linear-gradient(to bottom, #585858 0%, #111 100%);\n  /* W3C */\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button:active {\n  outline: none;\n  background-color: #2b2b2b;\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* Chrome10+,Safari5.1+ */\n  background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* FF3.6+ */\n  background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* IE10+ */\n  background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* Opera 11.10+ */\n  background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);\n  /* W3C */\n  box-shadow: inset 0 0 3px #111;\n}\n.dataTables_wrapper .dataTables_paginate .ellipsis {\n  padding: 0 1em;\n}\n.dataTables_wrapper .dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 100%;\n  height: 40px;\n  margin-left: -50%;\n  margin-top: -25px;\n  padding-top: 20px;\n  text-align: center;\n  font-size: 1.2em;\n  background-color: white;\n  background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));\n  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n}\n.dataTables_wrapper .dataTables_length,\n.dataTables_wrapper .dataTables_filter,\n.dataTables_wrapper .dataTables_info,\n.dataTables_wrapper .dataTables_processing,\n.dataTables_wrapper .dataTables_paginate {\n  color: #333;\n}\n.dataTables_wrapper .dataTables_scroll {\n  clear: both;\n}\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {\n  *margin-top: -1px;\n  -webkit-overflow-scrolling: touch;\n}\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {\n  vertical-align: middle;\n}\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {\n  height: 0;\n  overflow: hidden;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n.dataTables_wrapper.no-footer .dataTables_scrollBody {\n  border-bottom: 1px solid #111;\n}\n.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,\n.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {\n  border-bottom: none;\n}\n.dataTables_wrapper:after {\n  visibility: hidden;\n  display: block;\n  content: \"\";\n  clear: both;\n  height: 0;\n}\n\n@media screen and (max-width: 767px) {\n  .dataTables_wrapper .dataTables_info,\n  .dataTables_wrapper .dataTables_paginate {\n    float: none;\n    text-align: center;\n  }\n  .dataTables_wrapper .dataTables_paginate {\n    margin-top: 0.5em;\n  }\n}\n@media screen and (max-width: 640px) {\n  .dataTables_wrapper .dataTables_length,\n  .dataTables_wrapper .dataTables_filter {\n    float: none;\n    text-align: center;\n  }\n  .dataTables_wrapper .dataTables_filter {\n    margin-top: 0.5em;\n  }\n}\ntable.dataTable thead th div.DataTables_sort_wrapper {\n  position: relative;\n}\ntable.dataTable thead th div.DataTables_sort_wrapper span {\n  position: absolute;\n  top: 50%;\n  margin-top: -8px;\n  right: -18px;\n}\ntable.dataTable thead th.ui-state-default,\ntable.dataTable tfoot th.ui-state-default {\n  border-left-width: 0;\n}\ntable.dataTable thead th.ui-state-default:first-child,\ntable.dataTable tfoot th.ui-state-default:first-child {\n  border-left-width: 1px;\n}\n\n/*\n * Control feature layout\n */\n.dataTables_wrapper .dataTables_paginate .fg-button {\n  box-sizing: border-box;\n  display: inline-block;\n  min-width: 1.5em;\n  padding: 0.5em;\n  margin-left: 2px;\n  text-align: center;\n  text-decoration: none !important;\n  cursor: pointer;\n  *cursor: hand;\n  border: 1px solid transparent;\n}\n.dataTables_wrapper .dataTables_paginate .fg-button:active {\n  outline: none;\n}\n.dataTables_wrapper .dataTables_paginate .fg-button:first-child {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.dataTables_wrapper .dataTables_paginate .fg-button:last-child {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.dataTables_wrapper .ui-widget-header {\n  font-weight: normal;\n}\n.dataTables_wrapper .ui-toolbar {\n  padding: 8px;\n}\n.dataTables_wrapper.no-footer .dataTables_scrollBody {\n  border-bottom: none;\n}\n.dataTables_wrapper .dataTables_length,\n.dataTables_wrapper .dataTables_filter,\n.dataTables_wrapper .dataTables_info,\n.dataTables_wrapper .dataTables_processing,\n.dataTables_wrapper .dataTables_paginate {\n  color: inherit;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.css",
    "content": "/*\n * Styling for DataTables with Semantic UI\n */\ntable.dataTable.table {\n  margin: 0;\n}\ntable.dataTable.table thead th,\ntable.dataTable.table thead td {\n  position: relative;\n}\ntable.dataTable.table thead th.sorting, table.dataTable.table thead th.sorting_asc, table.dataTable.table thead th.sorting_desc,\ntable.dataTable.table thead td.sorting,\ntable.dataTable.table thead td.sorting_asc,\ntable.dataTable.table thead td.sorting_desc {\n  padding-right: 20px;\n}\ntable.dataTable.table thead th.sorting:after, table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead th.sorting_desc:after,\ntable.dataTable.table thead td.sorting:after,\ntable.dataTable.table thead td.sorting_asc:after,\ntable.dataTable.table thead td.sorting_desc:after {\n  position: absolute;\n  top: 12px;\n  right: 8px;\n  display: block;\n  font-family: Icons;\n}\ntable.dataTable.table thead th.sorting:after,\ntable.dataTable.table thead td.sorting:after {\n  content: \"\\f0dc\";\n  color: #ddd;\n  font-size: 0.8em;\n}\ntable.dataTable.table thead th.sorting_asc:after,\ntable.dataTable.table thead td.sorting_asc:after {\n  content: \"\\f0de\";\n}\ntable.dataTable.table thead th.sorting_desc:after,\ntable.dataTable.table thead td.sorting_desc:after {\n  content: \"\\f0dd\";\n}\ntable.dataTable.table td,\ntable.dataTable.table th {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ntable.dataTable.table td.dataTables_empty,\ntable.dataTable.table th.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable.table.nowrap th,\ntable.dataTable.table.nowrap td {\n  white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length select {\n  vertical-align: middle;\n  min-height: 2.7142em;\n}\ndiv.dataTables_wrapper div.dataTables_length .ui.selection.dropdown {\n  min-width: 0;\n}\ndiv.dataTables_wrapper div.dataTables_filter input {\n  margin-left: 0.5em;\n}\ndiv.dataTables_wrapper div.dataTables_info {\n  padding-top: 13px;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 200px;\n  margin-left: -100px;\n  text-align: center;\n}\ndiv.dataTables_wrapper div.row.dt-table {\n  padding: 0;\n}\ndiv.dataTables_wrapper div.dataTables_scrollHead table.dataTable {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n  border-bottom: none;\n}\ndiv.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,\ndiv.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,\ndiv.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after {\n  display: none;\n}\ndiv.dataTables_wrapper div.dataTables_scrollBody table.dataTable {\n  border-radius: 0;\n  border-top: none;\n  border-bottom-width: 0;\n}\ndiv.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer {\n  border-bottom-width: 1px;\n}\ndiv.dataTables_wrapper div.dataTables_scrollFoot table.dataTable {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n  border-top: none;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.css",
    "content": "/*\n * Table styles\n */\ntable.dataTable {\n  width: 100%;\n  margin: 0 auto;\n  clear: both;\n  border-collapse: separate;\n  border-spacing: 0;\n  /*\n   * Header and footer styles\n   */\n  /*\n   * Body styles\n   */\n}\ntable.dataTable thead th,\ntable.dataTable tfoot th {\n  font-weight: bold;\n}\ntable.dataTable thead th,\ntable.dataTable thead td {\n  padding: 10px 18px;\n  border-bottom: 1px solid #111;\n}\ntable.dataTable thead th:active,\ntable.dataTable thead td:active {\n  outline: none;\n}\ntable.dataTable tfoot th,\ntable.dataTable tfoot td {\n  padding: 10px 18px 6px 18px;\n  border-top: 1px solid #111;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  cursor: pointer;\n  *cursor: hand;\n  background-repeat: no-repeat;\n  background-position: center right;\n}\ntable.dataTable thead .sorting {\n  background-image: url(\"../images/sort_both.png\");\n}\ntable.dataTable thead .sorting_asc {\n  background-image: url(\"../images/sort_asc.png\");\n}\ntable.dataTable thead .sorting_desc {\n  background-image: url(\"../images/sort_desc.png\");\n}\ntable.dataTable thead .sorting_asc_disabled {\n  background-image: url(\"../images/sort_asc_disabled.png\");\n}\ntable.dataTable thead .sorting_desc_disabled {\n  background-image: url(\"../images/sort_desc_disabled.png\");\n}\ntable.dataTable tbody tr {\n  background-color: #ffffff;\n}\ntable.dataTable tbody tr.selected {\n  background-color: #B0BED9;\n}\ntable.dataTable tbody th,\ntable.dataTable tbody td {\n  padding: 8px 10px;\n}\ntable.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {\n  border-top: 1px solid #ddd;\n}\ntable.dataTable.row-border tbody tr:first-child th,\ntable.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,\ntable.dataTable.display tbody tr:first-child td {\n  border-top: none;\n}\ntable.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {\n  border-top: 1px solid #ddd;\n  border-right: 1px solid #ddd;\n}\ntable.dataTable.cell-border tbody tr th:first-child,\ntable.dataTable.cell-border tbody tr td:first-child {\n  border-left: 1px solid #ddd;\n}\ntable.dataTable.cell-border tbody tr:first-child th,\ntable.dataTable.cell-border tbody tr:first-child td {\n  border-top: none;\n}\ntable.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {\n  background-color: #f9f9f9;\n}\ntable.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {\n  background-color: #acbad4;\n}\ntable.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {\n  background-color: #f6f6f6;\n}\ntable.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {\n  background-color: #aab7d1;\n}\ntable.dataTable.order-column tbody tr > .sorting_1,\ntable.dataTable.order-column tbody tr > .sorting_2,\ntable.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,\ntable.dataTable.display tbody tr > .sorting_2,\ntable.dataTable.display tbody tr > .sorting_3 {\n  background-color: #fafafa;\n}\ntable.dataTable.order-column tbody tr.selected > .sorting_1,\ntable.dataTable.order-column tbody tr.selected > .sorting_2,\ntable.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,\ntable.dataTable.display tbody tr.selected > .sorting_2,\ntable.dataTable.display tbody tr.selected > .sorting_3 {\n  background-color: #acbad5;\n}\ntable.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {\n  background-color: #f1f1f1;\n}\ntable.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {\n  background-color: #f3f3f3;\n}\ntable.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {\n  background-color: whitesmoke;\n}\ntable.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {\n  background-color: #a6b4cd;\n}\ntable.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {\n  background-color: #a8b5cf;\n}\ntable.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {\n  background-color: #a9b7d1;\n}\ntable.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {\n  background-color: #fafafa;\n}\ntable.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {\n  background-color: #fcfcfc;\n}\ntable.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {\n  background-color: #fefefe;\n}\ntable.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {\n  background-color: #acbad5;\n}\ntable.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {\n  background-color: #aebcd6;\n}\ntable.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {\n  background-color: #afbdd8;\n}\ntable.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {\n  background-color: #eaeaea;\n}\ntable.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {\n  background-color: #ececec;\n}\ntable.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {\n  background-color: #efefef;\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {\n  background-color: #a2aec7;\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {\n  background-color: #a3b0c9;\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {\n  background-color: #a5b2cb;\n}\ntable.dataTable.no-footer {\n  border-bottom: 1px solid #111;\n}\ntable.dataTable.nowrap th, table.dataTable.nowrap td {\n  white-space: nowrap;\n}\ntable.dataTable.compact thead th,\ntable.dataTable.compact thead td {\n  padding: 4px 17px 4px 4px;\n}\ntable.dataTable.compact tfoot th,\ntable.dataTable.compact tfoot td {\n  padding: 4px;\n}\ntable.dataTable.compact tbody th,\ntable.dataTable.compact tbody td {\n  padding: 4px;\n}\ntable.dataTable th.dt-left,\ntable.dataTable td.dt-left {\n  text-align: left;\n}\ntable.dataTable th.dt-center,\ntable.dataTable td.dt-center,\ntable.dataTable td.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable th.dt-right,\ntable.dataTable td.dt-right {\n  text-align: right;\n}\ntable.dataTable th.dt-justify,\ntable.dataTable td.dt-justify {\n  text-align: justify;\n}\ntable.dataTable th.dt-nowrap,\ntable.dataTable td.dt-nowrap {\n  white-space: nowrap;\n}\ntable.dataTable thead th.dt-head-left,\ntable.dataTable thead td.dt-head-left,\ntable.dataTable tfoot th.dt-head-left,\ntable.dataTable tfoot td.dt-head-left {\n  text-align: left;\n}\ntable.dataTable thead th.dt-head-center,\ntable.dataTable thead td.dt-head-center,\ntable.dataTable tfoot th.dt-head-center,\ntable.dataTable tfoot td.dt-head-center {\n  text-align: center;\n}\ntable.dataTable thead th.dt-head-right,\ntable.dataTable thead td.dt-head-right,\ntable.dataTable tfoot th.dt-head-right,\ntable.dataTable tfoot td.dt-head-right {\n  text-align: right;\n}\ntable.dataTable thead th.dt-head-justify,\ntable.dataTable thead td.dt-head-justify,\ntable.dataTable tfoot th.dt-head-justify,\ntable.dataTable tfoot td.dt-head-justify {\n  text-align: justify;\n}\ntable.dataTable thead th.dt-head-nowrap,\ntable.dataTable thead td.dt-head-nowrap,\ntable.dataTable tfoot th.dt-head-nowrap,\ntable.dataTable tfoot td.dt-head-nowrap {\n  white-space: nowrap;\n}\ntable.dataTable tbody th.dt-body-left,\ntable.dataTable tbody td.dt-body-left {\n  text-align: left;\n}\ntable.dataTable tbody th.dt-body-center,\ntable.dataTable tbody td.dt-body-center {\n  text-align: center;\n}\ntable.dataTable tbody th.dt-body-right,\ntable.dataTable tbody td.dt-body-right {\n  text-align: right;\n}\ntable.dataTable tbody th.dt-body-justify,\ntable.dataTable tbody td.dt-body-justify {\n  text-align: justify;\n}\ntable.dataTable tbody th.dt-body-nowrap,\ntable.dataTable tbody td.dt-body-nowrap {\n  white-space: nowrap;\n}\n\ntable.dataTable,\ntable.dataTable th,\ntable.dataTable td {\n  box-sizing: content-box;\n}\n\n/*\n * Control feature layout\n */\n.dataTables_wrapper {\n  position: relative;\n  clear: both;\n  *zoom: 1;\n  zoom: 1;\n}\n.dataTables_wrapper .dataTables_length {\n  float: left;\n}\n.dataTables_wrapper .dataTables_filter {\n  float: right;\n  text-align: right;\n}\n.dataTables_wrapper .dataTables_filter input {\n  margin-left: 0.5em;\n}\n.dataTables_wrapper .dataTables_info {\n  clear: both;\n  float: left;\n  padding-top: 0.755em;\n}\n.dataTables_wrapper .dataTables_paginate {\n  float: right;\n  text-align: right;\n  padding-top: 0.25em;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button {\n  box-sizing: border-box;\n  display: inline-block;\n  min-width: 1.5em;\n  padding: 0.5em 1em;\n  margin-left: 2px;\n  text-align: center;\n  text-decoration: none !important;\n  cursor: pointer;\n  *cursor: hand;\n  color: #333 !important;\n  border: 1px solid transparent;\n  border-radius: 2px;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {\n  color: #333 !important;\n  border: 1px solid #979797;\n  background-color: white;\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* Chrome10+,Safari5.1+ */\n  background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* FF3.6+ */\n  background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* IE10+ */\n  background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);\n  /* Opera 11.10+ */\n  background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);\n  /* W3C */\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {\n  cursor: default;\n  color: #666 !important;\n  border: 1px solid transparent;\n  background: transparent;\n  box-shadow: none;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button:hover {\n  color: white !important;\n  border: 1px solid #111;\n  background-color: #585858;\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, #585858 0%, #111 100%);\n  /* Chrome10+,Safari5.1+ */\n  background: -moz-linear-gradient(top, #585858 0%, #111 100%);\n  /* FF3.6+ */\n  background: -ms-linear-gradient(top, #585858 0%, #111 100%);\n  /* IE10+ */\n  background: -o-linear-gradient(top, #585858 0%, #111 100%);\n  /* Opera 11.10+ */\n  background: linear-gradient(to bottom, #585858 0%, #111 100%);\n  /* W3C */\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button:active {\n  outline: none;\n  background-color: #2b2b2b;\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* Chrome10+,Safari5.1+ */\n  background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* FF3.6+ */\n  background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* IE10+ */\n  background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);\n  /* Opera 11.10+ */\n  background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);\n  /* W3C */\n  box-shadow: inset 0 0 3px #111;\n}\n.dataTables_wrapper .dataTables_paginate .ellipsis {\n  padding: 0 1em;\n}\n.dataTables_wrapper .dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 100%;\n  height: 40px;\n  margin-left: -50%;\n  margin-top: -25px;\n  padding-top: 20px;\n  text-align: center;\n  font-size: 1.2em;\n  background-color: white;\n  background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));\n  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);\n}\n.dataTables_wrapper .dataTables_length,\n.dataTables_wrapper .dataTables_filter,\n.dataTables_wrapper .dataTables_info,\n.dataTables_wrapper .dataTables_processing,\n.dataTables_wrapper .dataTables_paginate {\n  color: #333;\n}\n.dataTables_wrapper .dataTables_scroll {\n  clear: both;\n}\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {\n  *margin-top: -1px;\n  -webkit-overflow-scrolling: touch;\n}\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {\n  vertical-align: middle;\n}\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,\n.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {\n  height: 0;\n  overflow: hidden;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n.dataTables_wrapper.no-footer .dataTables_scrollBody {\n  border-bottom: 1px solid #111;\n}\n.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,\n.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {\n  border-bottom: none;\n}\n.dataTables_wrapper:after {\n  visibility: hidden;\n  display: block;\n  content: \"\";\n  clear: both;\n  height: 0;\n}\n\n@media screen and (max-width: 767px) {\n  .dataTables_wrapper .dataTables_info,\n  .dataTables_wrapper .dataTables_paginate {\n    float: none;\n    text-align: center;\n  }\n  .dataTables_wrapper .dataTables_paginate {\n    margin-top: 0.5em;\n  }\n}\n@media screen and (max-width: 640px) {\n  .dataTables_wrapper .dataTables_length,\n  .dataTables_wrapper .dataTables_filter {\n    float: none;\n    text-align: center;\n  }\n  .dataTables_wrapper .dataTables_filter {\n    margin-top: 0.5em;\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.bootstrap.js",
    "content": "/*! DataTables Bootstrap 3 integration\n * ©2011-2015 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t// Require DataTables, which attaches to jQuery, including\n\t\t\t\t// jQuery if needed and have a $ property so we can access the\n\t\t\t\t// jQuery object that is used\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t\"<'row'<'col-sm-6'l><'col-sm-6'f>>\" +\n\t\t\"<'row'<'col-sm-12'tr>>\" +\n\t\t\"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n\trenderer: 'bootstrap'\n} );\n\n\n/* Default class modification */\n$.extend( DataTable.ext.classes, {\n\tsWrapper:      \"dataTables_wrapper form-inline dt-bootstrap\",\n\tsFilterInput:  \"form-control input-sm\",\n\tsLengthSelect: \"form-control input-sm\",\n\tsProcessing:   \"dataTables_processing panel panel-default\"\n} );\n\n\n/* Bootstrap paging button renderer */\nDataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {\n\tvar api     = new DataTable.Api( settings );\n\tvar classes = settings.oClasses;\n\tvar lang    = settings.oLanguage.oPaginate;\n\tvar aria = settings.oLanguage.oAria.paginate || {};\n\tvar btnDisplay, btnClass, counter=0;\n\n\tvar attach = function( container, buttons ) {\n\t\tvar i, ien, node, button;\n\t\tvar clickHandler = function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tif ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {\n\t\t\t\tapi.page( e.data.action ).draw( 'page' );\n\t\t\t}\n\t\t};\n\n\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\tbutton = buttons[i];\n\n\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\tattach( container, button );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtnDisplay = '';\n\t\t\t\tbtnClass = '';\n\n\t\t\t\tswitch ( button ) {\n\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\tbtnDisplay = '&#x2026;';\n\t\t\t\t\t\tbtnClass = 'disabled';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t'active' : '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\tnode = $('<li>', {\n\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append( $('<a>', {\n\t\t\t\t\t\t\t\t'href': '#',\n\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\tsettings.oApi._fnBindAction(\n\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t);\n\n\t\t\t\t\tcounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t// inside an iframe or frame. \n\tvar activeEl;\n\n\ttry {\n\t\t// Because this approach is destroying and recreating the paging\n\t\t// elements, focus is lost on the select button which is bad for\n\t\t// accessibility. So we want to restore focus once the draw has\n\t\t// completed\n\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t}\n\tcatch (e) {}\n\n\tattach(\n\t\t$(host).empty().html('<ul class=\"pagination\"/>').children('ul'),\n\t\tbuttons\n\t);\n\n\tif ( activeEl !== undefined ) {\n\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t}\n};\n\n\nreturn DataTable;\n}));\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.bootstrap4.js",
    "content": "/*! DataTables Bootstrap 3 integration\n * ©2011-2015 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t// Require DataTables, which attaches to jQuery, including\n\t\t\t\t// jQuery if needed and have a $ property so we can access the\n\t\t\t\t// jQuery object that is used\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t\"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>\" +\n\t\t\"<'row'<'col-sm-12'tr>>\" +\n\t\t\"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>\",\n\trenderer: 'bootstrap'\n} );\n\n\n/* Default class modification */\n$.extend( DataTable.ext.classes, {\n\tsWrapper:      \"dataTables_wrapper container-fluid dt-bootstrap4\",\n\tsFilterInput:  \"form-control form-control-sm\",\n\tsLengthSelect: \"form-control form-control-sm\",\n\tsProcessing:   \"dataTables_processing card\",\n\tsPageButton:   \"paginate_button page-item\"\n} );\n\n\n/* Bootstrap paging button renderer */\nDataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {\n\tvar api     = new DataTable.Api( settings );\n\tvar classes = settings.oClasses;\n\tvar lang    = settings.oLanguage.oPaginate;\n\tvar aria = settings.oLanguage.oAria.paginate || {};\n\tvar btnDisplay, btnClass, counter=0;\n\n\tvar attach = function( container, buttons ) {\n\t\tvar i, ien, node, button;\n\t\tvar clickHandler = function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tif ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {\n\t\t\t\tapi.page( e.data.action ).draw( 'page' );\n\t\t\t}\n\t\t};\n\n\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\tbutton = buttons[i];\n\n\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\tattach( container, button );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtnDisplay = '';\n\t\t\t\tbtnClass = '';\n\n\t\t\t\tswitch ( button ) {\n\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\tbtnDisplay = '&#x2026;';\n\t\t\t\t\t\tbtnClass = 'disabled';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t'active' : '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\tnode = $('<li>', {\n\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append( $('<a>', {\n\t\t\t\t\t\t\t\t'href': '#',\n\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t'class': 'page-link'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\tsettings.oApi._fnBindAction(\n\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t);\n\n\t\t\t\t\tcounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t// inside an iframe or frame. \n\tvar activeEl;\n\n\ttry {\n\t\t// Because this approach is destroying and recreating the paging\n\t\t// elements, focus is lost on the select button which is bad for\n\t\t// accessibility. So we want to restore focus once the draw has\n\t\t// completed\n\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t}\n\tcatch (e) {}\n\n\tattach(\n\t\t$(host).empty().html('<ul class=\"pagination\"/>').children('ul'),\n\t\tbuttons\n\t);\n\n\tif ( activeEl !== undefined ) {\n\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t}\n};\n\n\nreturn DataTable;\n}));\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.foundation.js",
    "content": "/*! DataTables Foundation integration\n * ©2011-2015 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Foundation. This requires Foundation 5 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Foundation. See http://datatables.net/manual/styling/foundation\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n// Detect Foundation 5 / 6 as they have different element and class requirements\nvar meta = $('<meta class=\"foundation-mq\"/>').appendTo('head');\nDataTable.ext.foundationVersion = meta.css('font-family').match(/small|medium|large/) ? 6 : 5;\nmeta.remove();\n\n\n$.extend( DataTable.ext.classes, {\n\tsWrapper:    \"dataTables_wrapper dt-foundation\",\n\tsProcessing: \"dataTables_processing panel callout\"\n} );\n\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t\"<'row'<'small-6 columns'l><'small-6 columns'f>r>\"+\n\t\t\"t\"+\n\t\t\"<'row'<'small-6 columns'i><'small-6 columns'p>>\",\n\trenderer: 'foundation'\n} );\n\n\n/* Page button renderer */\nDataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) {\n\tvar api = new DataTable.Api( settings );\n\tvar classes = settings.oClasses;\n\tvar lang = settings.oLanguage.oPaginate;\n\tvar aria = settings.oLanguage.oAria.paginate || {};\n\tvar btnDisplay, btnClass;\n\tvar tag;\n\tvar v5 = DataTable.ext.foundationVersion === 5;\n\n\tvar attach = function( container, buttons ) {\n\t\tvar i, ien, node, button;\n\t\tvar clickHandler = function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tif ( !$(e.currentTarget).hasClass('unavailable') && api.page() != e.data.action ) {\n\t\t\t\tapi.page( e.data.action ).draw( 'page' );\n\t\t\t}\n\t\t};\n\n\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\tbutton = buttons[i];\n\n\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\tattach( container, button );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtnDisplay = '';\n\t\t\t\tbtnClass = '';\n\t\t\t\ttag = null;\n\n\t\t\t\tswitch ( button ) {\n\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\tbtnDisplay = '&#x2026;';\n\t\t\t\t\t\tbtnClass = 'unavailable disabled';\n\t\t\t\t\t\ttag = null;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' unavailable disabled');\n\t\t\t\t\t\ttag = page > 0 ? 'a' : null;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' unavailable disabled');\n\t\t\t\t\t\ttag = page > 0 ? 'a' : null;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' unavailable disabled');\n\t\t\t\t\t\ttag = page < pages-1 ? 'a' : null;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' unavailable disabled');\n\t\t\t\t\t\ttag = page < pages-1 ? 'a' : null;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t'current' : '';\n\t\t\t\t\t\ttag = page === button ?\n\t\t\t\t\t\t\tnull : 'a';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( v5 ) {\n\t\t\t\t\ttag = 'a';\n\t\t\t\t}\n\n\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\tnode = $('<li>', {\n\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append( tag ?\n\t\t\t\t\t\t\t$('<'+tag+'/>', {'href': '#'} ).html( btnDisplay ) :\n\t\t\t\t\t\t\tbtnDisplay\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\tsettings.oApi._fnBindAction(\n\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tattach(\n\t\t$(host).empty().html('<ul class=\"pagination\"/>').children('ul'),\n\t\tbuttons\n\t);\n};\n\n\nreturn DataTable;\n}));\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.jqueryui.js",
    "content": "/*! DataTables jQuery UI integration\n * ©2011-2014 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for jQuery UI. This requires jQuery UI and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using jQuery UI. See http://datatables.net/manual/styling/jqueryui\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\nvar sort_prefix = 'css_right ui-icon ui-icon-';\nvar toolbar_prefix = 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-';\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t'<\"'+toolbar_prefix+'tl ui-corner-tr\"lfr>'+\n\t\t't'+\n\t\t'<\"'+toolbar_prefix+'bl ui-corner-br\"ip>',\n\trenderer: 'jqueryui'\n} );\n\n\n$.extend( DataTable.ext.classes, {\n\t\"sWrapper\":            \"dataTables_wrapper dt-jqueryui\",\n\n\t/* Full numbers paging buttons */\n\t\"sPageButton\":         \"fg-button ui-button ui-state-default\",\n\t\"sPageButtonActive\":   \"ui-state-disabled\",\n\t\"sPageButtonDisabled\": \"ui-state-disabled\",\n\n\t/* Features */\n\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\n\t/* Sorting */\n\t\"sSortAsc\":            \"ui-state-default sorting_asc\",\n\t\"sSortDesc\":           \"ui-state-default sorting_desc\",\n\t\"sSortable\":           \"ui-state-default sorting\",\n\t\"sSortableAsc\":        \"ui-state-default sorting_asc_disabled\",\n\t\"sSortableDesc\":       \"ui-state-default sorting_desc_disabled\",\n\t\"sSortableNone\":       \"ui-state-default sorting_disabled\",\n\t\"sSortIcon\":           \"DataTables_sort_icon\",\n\n\t/* Scrolling */\n\t\"sScrollHead\": \"dataTables_scrollHead \"+\"ui-state-default\",\n\t\"sScrollFoot\": \"dataTables_scrollFoot \"+\"ui-state-default\",\n\n\t/* Misc */\n\t\"sHeaderTH\":  \"ui-state-default\",\n\t\"sFooterTH\":  \"ui-state-default\"\n} );\n\n\nDataTable.ext.renderer.header.jqueryui = function ( settings, cell, column, classes ) {\n\t// Calculate what the unsorted class should be\n\tvar noSortAppliedClass = sort_prefix+'caret-2-n-s';\n\tvar asc = $.inArray('asc', column.asSorting) !== -1;\n\tvar desc = $.inArray('desc', column.asSorting) !== -1;\n\n\tif ( !column.bSortable || (!asc && !desc) ) {\n\t\tnoSortAppliedClass = '';\n\t}\n\telse if ( asc && !desc ) {\n\t\tnoSortAppliedClass = sort_prefix+'caret-1-n';\n\t}\n\telse if ( !asc && desc ) {\n\t\tnoSortAppliedClass = sort_prefix+'caret-1-s';\n\t}\n\n\t// Setup the DOM structure\n\t$('<div/>')\n\t\t.addClass( 'DataTables_sort_wrapper' )\n\t\t.append( cell.contents() )\n\t\t.append( $('<span/>')\n\t\t\t.addClass( classes.sSortIcon+' '+noSortAppliedClass )\n\t\t)\n\t\t.appendTo( cell );\n\n\t// Attach a sort listener to update on sort\n\t$(settings.nTable).on( 'order.dt', function ( e, ctx, sorting, columns ) {\n\t\tif ( settings !== ctx ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar colIdx = column.idx;\n\n\t\tcell\n\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\tcolumn.sSortingClass\n\t\t\t);\n\n\t\tcell\n\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t.removeClass(\n\t\t\t\tsort_prefix+'triangle-1-n' +\" \"+\n\t\t\t\tsort_prefix+'triangle-1-s' +\" \"+\n\t\t\t\tsort_prefix+'caret-2-n-s' +\" \"+\n\t\t\t\tsort_prefix+'caret-1-n' +\" \"+\n\t\t\t\tsort_prefix+'caret-1-s'\n\t\t\t)\n\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\tsort_prefix+'triangle-1-n' : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\tsort_prefix+'triangle-1-s' :\n\t\t\t\t\tnoSortAppliedClass\n\t\t\t);\n\t} );\n};\n\n\n/*\n * TableTools jQuery UI compatibility\n * Required TableTools 2.1+\n */\nif ( DataTable.TableTools ) {\n\t$.extend( true, DataTable.TableTools.classes, {\n\t\t\"container\": \"DTTT_container ui-buttonset ui-buttonset-multi\",\n\t\t\"buttons\": {\n\t\t\t\"normal\": \"DTTT_button ui-button ui-state-default\"\n\t\t},\n\t\t\"collection\": {\n\t\t\t\"container\": \"DTTT_collection ui-buttonset ui-buttonset-multi\"\n\t\t}\n\t} );\n}\n\n\nreturn DataTable;\n}));\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.semanticui.js",
    "content": "/*! DataTables Bootstrap 3 integration\n * ©2011-2015 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t// Require DataTables, which attaches to jQuery, including\n\t\t\t\t// jQuery if needed and have a $ property so we can access the\n\t\t\t\t// jQuery object that is used\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t\"<'ui stackable grid'\"+\n\t\t\t\"<'row'\"+\n\t\t\t\t\"<'eight wide column'l>\"+\n\t\t\t\t\"<'right aligned eight wide column'f>\"+\n\t\t\t\">\"+\n\t\t\t\"<'row dt-table'\"+\n\t\t\t\t\"<'sixteen wide column'tr>\"+\n\t\t\t\">\"+\n\t\t\t\"<'row'\"+\n\t\t\t\t\"<'seven wide column'i>\"+\n\t\t\t\t\"<'right aligned nine wide column'p>\"+\n\t\t\t\">\"+\n\t\t\">\",\n\trenderer: 'semanticUI'\n} );\n\n\n/* Default class modification */\n$.extend( DataTable.ext.classes, {\n\tsWrapper:      \"dataTables_wrapper dt-semanticUI\",\n\tsFilter:       \"dataTables_filter ui input\",\n\tsProcessing:   \"dataTables_processing ui segment\",\n\tsPageButton:   \"paginate_button item\"\n} );\n\n\n/* Bootstrap paging button renderer */\nDataTable.ext.renderer.pageButton.semanticUI = function ( settings, host, idx, buttons, page, pages ) {\n\tvar api     = new DataTable.Api( settings );\n\tvar classes = settings.oClasses;\n\tvar lang    = settings.oLanguage.oPaginate;\n\tvar aria = settings.oLanguage.oAria.paginate || {};\n\tvar btnDisplay, btnClass, counter=0;\n\n\tvar attach = function( container, buttons ) {\n\t\tvar i, ien, node, button;\n\t\tvar clickHandler = function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tif ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {\n\t\t\t\tapi.page( e.data.action ).draw( 'page' );\n\t\t\t}\n\t\t};\n\n\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\tbutton = buttons[i];\n\n\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\tattach( container, button );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtnDisplay = '';\n\t\t\t\tbtnClass = '';\n\n\t\t\t\tswitch ( button ) {\n\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\tbtnDisplay = '&#x2026;';\n\t\t\t\t\t\tbtnClass = 'disabled';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t'active' : '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvar tag = btnClass.indexOf( 'disabled' ) === -1 ?\n\t\t\t\t\t'a' :\n\t\t\t\t\t'div';\n\n\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\tnode = $('<'+tag+'>', {\n\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t'href': '#',\n\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t'tabindex': settings.iTabIndex\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\tsettings.oApi._fnBindAction(\n\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t);\n\n\t\t\t\t\tcounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t// inside an iframe or frame. \n\tvar activeEl;\n\n\ttry {\n\t\t// Because this approach is destroying and recreating the paging\n\t\t// elements, focus is lost on the select button which is bad for\n\t\t// accessibility. So we want to restore focus once the draw has\n\t\t// completed\n\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t}\n\tcatch (e) {}\n\n\tattach(\n\t\t$(host).empty().html('<div class=\"ui stackable pagination menu\"/>').children(),\n\t\tbuttons\n\t);\n\n\tif ( activeEl !== undefined ) {\n\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t}\n};\n\n\n// Javascript enhancements on table initialisation\n$(document).on( 'init.dt', function (e, ctx) {\n\tif ( e.namespace !== 'dt' ) {\n\t\treturn;\n\t}\n\n\t// Length menu drop down\n\tif ( $.fn.dropdown ) {\n\t\tvar api = new $.fn.dataTable.Api( ctx );\n\n\t\t$( 'div.dataTables_length select', api.table().container() ).dropdown();\n\t}\n} );\n\n\nreturn DataTable;\n}));"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/DataTables-1.10.16/js/jquery.dataTables.js",
    "content": "/*! DataTables 1.10.16\n * ©2008-2017 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary     DataTables\n * @description Paginate, search and order HTML tables\n * @version     1.10.16\n * @file        jquery.dataTables.js\n * @author      SpryMedia Ltd\n * @contact     www.datatables.net\n * @copyright   Copyright 2008-2017 SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n *   MIT license - http://datatables.net/license\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/\n\n(function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\t// CommonJS environments without a window global must pass a\n\t\t\t\t// root. This will give an error otherwise\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ ) {\n\t\t\t\t$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window\n\t\t\t\t\trequire('jquery') :\n\t\t\t\t\trequire('jquery')( root );\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}\n(function( $, window, document, undefined ) {\n\t\"use strict\";\n\n\t/**\n\t * DataTables is a plug-in for the jQuery Javascript library. It is a highly\n\t * flexible tool, based upon the foundations of progressive enhancement,\n\t * which will add advanced interaction controls to any HTML table. For a\n\t * full list of features please refer to\n\t * [DataTables.net](href=\"http://datatables.net).\n\t *\n\t * Note that the `DataTable` object is not a global variable but is aliased\n\t * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may\n\t * be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [init={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.7+\n\t *\n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *\n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"paginate\": false,\n\t *        \"sort\": false\n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function ( options )\n\t{\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {object} jQuery object, filtered by the given selector.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Highlight every second row\n\t\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t *      oTable.fnFilter('');\n\t\t *    } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).$( sSelector, oOpts );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to\n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null\n\t\t *    entry in the array.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the data from the first row in the table\n\t\t *      var data = oTable._('tr:first');\n\t\t *\n\t\t *      // Do something useful with the data\n\t\t *      alert( \"First cell is: \"+data[0] );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to 'Webkit' and get all data for\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      var data = oTable._('tr', {\"search\": \"applied\"});\n\t\t *\n\t\t *      // Do something with the data\n\t\t *      alert( data.length+\" rows matched the search\" );\n\t\t *    } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).rows( sSelector, oOpts ).data();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a DataTables Api instance, with the currently selected tables for\n\t\t * the Api's context.\n\t\t * @param {boolean} [traditional=false] Set the API instance's context to be\n\t\t *   only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n\t\t *   used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n\t\t *   or if all tables captured in the jQuery object should be used.\n\t\t * @return {DataTables.Api}\n\t\t */\n\t\tthis.api = function ( traditional )\n\t\t{\n\t\t\treturn traditional ?\n\t\t\t\tnew _Api(\n\t\t\t\t\t_fnSettingsFromNode( this[ _ext.iApiIndex ] )\n\t\t\t\t) :\n\t\t\t\tnew _Api( this );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using\n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t *  @param {array|object} data The data to be added to the table. This can be:\n\t\t *    <ul>\n\t\t *      <li>1D array of data - add a single row with the data provided</li>\n\t\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t *      <li>object - data object when using <i>mData</i></li>\n\t\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t *    </ul>\n\t\t *  @param {bool} [redraw=true] redraw the table or not\n\t\t *  @returns {array} An array of integers, representing the list of indexes in\n\t\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to\n\t\t *    the table.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    // Global var for counter\n\t\t *    var giCount = 2;\n\t\t *\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example').dataTable();\n\t\t *    } );\n\t\t *\n\t\t *    function fnClickAddRow() {\n\t\t *      $('#example').dataTable().fnAddData( [\n\t\t *        giCount+\".1\",\n\t\t *        giCount+\".2\",\n\t\t *        giCount+\".3\",\n\t\t *        giCount+\".4\" ]\n\t\t *      );\n\t\t *\n\t\t *      giCount++;\n\t\t *    }\n\t\t */\n\t\tthis.fnAddData = function( data, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tvar rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?\n\t\t\t\tapi.rows.add( data ) :\n\t\t\t\tapi.row.add( data );\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn rows.flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data\n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n\t\t * through the sWidth parameter). This can be useful when the width of the table's\n\t\t * parent element changes (for example a window resize).\n\t\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *\n\t\t *      $(window).on('resize', function () {\n\t\t *        oTable.fnAdjustColumnSizing();\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).columns.adjust();\n\t\t\tvar settings = api.settings()[0];\n\t\t\tvar scroll = settings.oScroll;\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw( false );\n\t\t\t}\n\t\t\telse if ( scroll.sX !== \"\" || scroll.sY !== \"\" ) {\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t *      oTable.fnClearTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).clear();\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which\n\t\t * are currently 'open'.\n\t\t *  @param {node} nTr the table row to 'close'\n\t\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\tthis.api( true ).row( nTr ).child.hide();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t *  @param {mixed} target The index of the row from aoData to be deleted, or\n\t\t *    the TR element you want to delete\n\t\t *  @param {function|null} [callBack] Callback function\n\t\t *  @param {bool} [redraw=true] Redraw the table or not\n\t\t *  @returns {array} The row that was deleted\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Immediately remove the first row\n\t\t *      oTable.fnDeleteRow( 0 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnDeleteRow = function( target, callback, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar rows = api.rows( target );\n\t\t\tvar settings = rows.settings()[0];\n\t\t\tvar data = settings.aoData[ rows[0][0] ];\n\t\t\n\t\t\trows.remove();\n\t\t\n\t\t\tif ( callback ) {\n\t\t\t\tcallback.call( this, settings, data );\n\t\t\t}\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn data;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables\n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t *  @param {boolean} [remove=false] Completely remove the table from the DOM\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnDestroy();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDestroy = function ( remove )\n\t\t{\n\t\t\tthis.api( true ).destroy( remove );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t *  @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t *      oTable.fnDraw();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDraw = function( complete )\n\t\t{\n\t\t\t// Note that this isn't an exact match to the old call to _fnDraw - it takes\n\t\t\t// into account the new data, but can hold position.\n\t\t\tthis.api( true ).draw( complete );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t *  @param {string} sInput String to filter the table on\n\t\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sometime later - filter...\n\t\t *      oTable.fnFilter( 'test string' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === null || iColumn === undefined ) {\n\t\t\t\tapi.search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\n\t\t\tapi.draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the\n\t\t * provided parameters.\n\t\t *  @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n\t\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t\t *  @param {int} [col] Optional column index that you want the data of.\n\t\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t\t *    defined, only data for the designated cell is returned.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    // Row data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('tr').click( function () {\n\t\t *        var data = oTable.fnGetData( this );\n\t\t *        // ... do something with the array / object of data for the row\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Individual cell data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('td').click( function () {\n\t\t *        var sData = oTable.fnGetData( this );\n\t\t *        alert( 'The cell clicked on had the value of '+sData );\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetData = function( src, col )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( src !== undefined ) {\n\t\t\t\tvar type = src.nodeName ? src.nodeName.toLowerCase() : '';\n\t\t\n\t\t\t\treturn col !== undefined || type == 'td' || type == 'th' ?\n\t\t\t\t\tapi.cell( src, col ).data() :\n\t\t\t\t\tapi.row( src ).data() || null;\n\t\t\t}\n\t\t\n\t\t\treturn api.data().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will\n\t\t * typically want to use the '$' API method in preference to this as it is more\n\t\t * flexible.\n\t\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the nodes from the table\n\t\t *      var nNodes = oTable.fnGetNodes( );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\treturn iRow !== undefined ?\n\t\t\t\tapi.row( iRow ).node() :\n\t\t\t\tapi.rows().nodes().flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t *  @param {node} node this can either be a TR, TD or TH in the table's body\n\t\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t *    if given as a cell, an array of [row index, column index (visible),\n\t\t *    column index (all)] is given.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example tbody td').click( function () {\n\t\t *        // Get the position of the current data from the node\n\t\t *        var aPos = oTable.fnGetPosition( this );\n\t\t *\n\t\t *        // Get the data array for this row\n\t\t *        var aData = oTable.fnGetData( aPos[0] );\n\t\t *\n\t\t *        // Update the data array and return the value\n\t\t *        aData[ aPos[1] ] = 'clicked';\n\t\t *        this.innerHTML = 'clicked';\n\t\t *      } );\n\t\t *\n\t\t *      // Init DataTables\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetPosition = function( node )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar nodeName = node.nodeName.toUpperCase();\n\t\t\n\t\t\tif ( nodeName == 'TR' ) {\n\t\t\t\treturn api.row( node ).index();\n\t\t\t}\n\t\t\telse if ( nodeName == 'TD' || nodeName == 'TH' ) {\n\t\t\t\tvar cell = api.cell( node ).index();\n\t\t\n\t\t\t\treturn [\n\t\t\t\t\tcell.row,\n\t\t\t\t\tcell.columnVisible,\n\t\t\t\t\tcell.column\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t *  @param {node} nTr the table row to check\n\t\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\treturn this.api( true ).row( nTr ).child.isShown();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently\n\t\t * on display on the page, with the HTML contents that is passed into the\n\t\t * function. This can be used, for example, to ask for confirmation that a\n\t\t * particular record should be deleted.\n\t\t *  @param {node} nTr The table row to 'open'\n\t\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t *  @param {string} sClass Class to give the new TD cell\n\t\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t\t *    first parameter, is not found in the table, this method will silently\n\t\t *    return.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\treturn this.api( true )\n\t\t\t\t.row( nTr )\n\t\t\t\t.child( mHtml, sClass )\n\t\t\t\t.show()\n\t\t\t\t.child()[0];\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API\n\t\t * function. With this function you can have a DataTables table go to the next,\n\t\t * previous, first or last pages.\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnPageChange( 'next' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).page( mAction );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw(false);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t *  @param {int} iCol The column whose display should be changed\n\t\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Hide the second column after initialisation\n\t\t *      oTable.fnSetColumnVis( 1, false );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).column( iCol ).visible( bShow );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.columns.adjust().draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t *  @returns {object} DataTables settings object. See\n\t\t *    {@link DataTable.models.oSettings}\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      var oSettings = oTable.fnSettings();\n\t\t *\n\t\t *      // Show an example parameter from the settings\n\t\t *      alert( oSettings._iDisplayStart );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[_ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t *  @param {int} iCol the data index to sort on. Note that this will not match the\n\t\t *    'display index' if you have hidden data entries\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sort immediately with columns 0 and 1\n\t\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tthis.api( true ).order( aaSort ).draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t *  @param {node} nNode the element to attach the sort listener to\n\t\t *  @param {int} iColumn the column that a click on this node will sort on\n\t\t *  @param {function} [fnCallback] callback function when sort is run\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sort on column 1, when 'sorter' is clicked on\n\t\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\tthis.api( true ).order.listener( nNode, iColumn, fnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t *  @param {object|array|string} mData Data to update the cell/row with\n\t\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t\t *  @param {int} [iColumn] The column to update, give as null or undefined to\n\t\t *    update a whole row.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t *  @returns {int} 0 on success, 1 on error\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n\t\t *    } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null ) {\n\t\t\t\tapi.row( mRow ).data( mData );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.cell( mRow, iColumn ).data( mData );\n\t\t\t}\n\t\t\n\t\t\tif ( bAction === undefined || bAction ) {\n\t\t\t\tapi.columns.adjust();\n\t\t\t}\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t *    version, or false if this version of DataTales is not suitable\n\t\t *  @method\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\tthis.fnVersionCheck = _ext.fnVersionCheck;\n\t\t\n\n\t\tvar _that = this;\n\t\tvar emptyInit = options === undefined;\n\t\tvar len = this.length;\n\n\t\tif ( emptyInit ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.oApi = this.internal = _ext.internal;\n\n\t\t// Extend with old style plug-in API methods\n\t\tfor ( var fn in DataTable.ext.internal ) {\n\t\t\tif ( fn ) {\n\t\t\t\tthis[fn] = _fnExternApiFunc(fn);\n\t\t\t}\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// For each initialisation we want to give it a clean initialisation\n\t\t\t// object that can be bashed around\n\t\t\tvar o = {};\n\t\t\tvar oInit = len > 1 ? // optimisation for single table case\n\t\t\t\t_fnExtend( o, options, true ) :\n\t\t\t\toptions;\n\n\t\t\t/*global oInit,_that,emptyInit*/\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar defaults = DataTable.defaults;\n\t\t\tvar $this = $(this);\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Backwards compatibility for the defaults */\n\t\t\t_fnCompatOpts( defaults );\n\t\t\t_fnCompatCols( defaults.column );\n\t\t\t\n\t\t\t/* Convert the camel-case defaults to Hungarian */\n\t\t\t_fnCamelToHungarian( defaults, defaults, true );\n\t\t\t_fnCamelToHungarian( defaults.column, defaults.column, true );\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\t_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) );\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tvar allSettings = DataTable.settings;\n\t\t\tfor ( i=0, iLen=allSettings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar s = allSettings[i];\n\t\t\t\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) )\n\t\t\t\t{\n\t\t\t\t\tvar bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;\n\t\t\t\t\tvar bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;\n\t\t\t\n\t\t\t\t\tif ( emptyInit || bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn s.oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\ts.oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\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_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( s.sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tallSettings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._unique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"sDestroyWidth\": $this[0].style.width,\n\t\t\t\t\"sInstance\":     sId,\n\t\t\t\t\"sTableId\":      sId\n\t\t\t} );\n\t\t\toSettings.nTable = this;\n\t\t\toSettings.oApi   = _that.internal;\n\t\t\toSettings.oInit  = oInit;\n\t\t\t\n\t\t\tallSettings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\t_fnCompatOpts( oInit );\n\t\t\t\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t// If the length menu is given, but the init display length is not, use the length menu\n\t\t\tif ( oInit.aLengthMenu && ! oInit.iDisplayLength )\n\t\t\t{\n\t\t\t\toInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?\n\t\t\t\t\toInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];\n\t\t\t}\n\t\t\t\n\t\t\t// Apply the defaults and init options to make a single init object will all\n\t\t\t// options defined from defaults and instance options.\n\t\t\toInit = _fnExtend( $.extend( true, {}, defaults ), oInit );\n\t\t\t\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, [\n\t\t\t\t\"bPaginate\",\n\t\t\t\t\"bLengthChange\",\n\t\t\t\t\"bFilter\",\n\t\t\t\t\"bSort\",\n\t\t\t\t\"bSortMulti\",\n\t\t\t\t\"bInfo\",\n\t\t\t\t\"bProcessing\",\n\t\t\t\t\"bAutoWidth\",\n\t\t\t\t\"bSortClasses\",\n\t\t\t\t\"bServerSide\",\n\t\t\t\t\"bDeferRender\"\n\t\t\t] );\n\t\t\t_fnMap( oSettings, oInit, [\n\t\t\t\t\"asStripeClasses\",\n\t\t\t\t\"ajax\",\n\t\t\t\t\"fnServerData\",\n\t\t\t\t\"fnFormatNumber\",\n\t\t\t\t\"sServerMethod\",\n\t\t\t\t\"aaSorting\",\n\t\t\t\t\"aaSortingFixed\",\n\t\t\t\t\"aLengthMenu\",\n\t\t\t\t\"sPaginationType\",\n\t\t\t\t\"sAjaxSource\",\n\t\t\t\t\"sAjaxDataProp\",\n\t\t\t\t\"iStateDuration\",\n\t\t\t\t\"sDom\",\n\t\t\t\t\"bSortCellsTop\",\n\t\t\t\t\"iTabIndex\",\n\t\t\t\t\"fnStateLoadCallback\",\n\t\t\t\t\"fnStateSaveCallback\",\n\t\t\t\t\"renderer\",\n\t\t\t\t\"searchDelay\",\n\t\t\t\t\"rowId\",\n\t\t\t\t[ \"iCookieDuration\", \"iStateDuration\" ], // backwards compat\n\t\t\t\t[ \"oSearch\", \"oPreviousSearch\" ],\n\t\t\t\t[ \"aoSearchCols\", \"aoPreSearchCols\" ],\n\t\t\t\t[ \"iDisplayLength\", \"_iDisplayLength\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oScroll, oInit, [\n\t\t\t\t[ \"sScrollX\", \"sX\" ],\n\t\t\t\t[ \"sScrollXInner\", \"sXInner\" ],\n\t\t\t\t[ \"sScrollY\", \"sY\" ],\n\t\t\t\t[ \"bScrollCollapse\", \"bCollapse\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\t\n\t\t\toSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\t$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );\n\t\t\t$this.addClass( oClasses.sTable );\n\t\t\t\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tvar oLanguage = oSettings.oLanguage;\n\t\t\t$.extend( true, oLanguage, oInit.oLanguage );\n\t\t\t\n\t\t\tif ( oLanguage.sUrl )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that\n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\t$.ajax( {\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\turl: oLanguage.sUrl,\n\t\t\t\t\tsuccess: function ( json ) {\n\t\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t\t_fnCamelToHungarian( defaults.oLanguage, json );\n\t\t\t\t\t\t$.extend( true, oLanguage, json );\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t},\n\t\t\t\t\terror: function () {\n\t\t\t\t\t\t// Error occurred loading language file, continue on as best we can\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toClasses.sStripeOdd,\n\t\t\t\t\toClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tvar stripeClasses = oSettings.asStripeClasses;\n\t\t\tvar rowOne = $this.children('tbody').find('tr').eq(0);\n\t\t\tif ( $.inArray( true, $.map( stripeClasses, function(el, i) {\n\t\t\t\treturn rowOne.hasClass(el);\n\t\t\t} ) ) !== -1 ) {\n\t\t\t\t$('tbody tr', this).removeClass( stripeClasses.join(' ') );\n\t\t\t\toSettings.asDestroyStripes = stripeClasses.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t/* HTML5 attribute detection - build an mData object automatically if the\n\t\t\t * attributes are found\n\t\t\t */\n\t\t\tif ( rowOne.length ) {\n\t\t\t\tvar a = function ( cell, name ) {\n\t\t\t\t\treturn cell.getAttribute( 'data-'+name ) !== null ? name : null;\n\t\t\t\t};\n\t\t\t\n\t\t\t\t$( rowOne[0] ).children('th, td').each( function (i, cell) {\n\t\t\t\t\tvar col = oSettings.aoColumns[i];\n\t\t\t\n\t\t\t\t\tif ( col.mData === i ) {\n\t\t\t\t\t\tvar sort = a( cell, 'sort' ) || a( cell, 'order' );\n\t\t\t\t\t\tvar filter = a( cell, 'filter' ) || a( cell, 'search' );\n\t\t\t\n\t\t\t\t\t\tif ( sort !== null || filter !== null ) {\n\t\t\t\t\t\t\tcol.mData = {\n\t\t\t\t\t\t\t\t_:      i+'.display',\n\t\t\t\t\t\t\t\tsort:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\t\ttype:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\t\tfilter: filter !== null ? i+'.@data-'+filter : undefined\n\t\t\t\t\t\t\t};\n\t\t\t\n\t\t\t\t\t\t\t_fnColumnOptions( oSettings, i );\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\t\n\t\t\tvar features = oSettings.oFeatures;\n\t\t\tvar loadedInit = function () {\n\t\t\t\t/*\n\t\t\t\t * Sorting\n\t\t\t\t * @todo For modularisation (1.11) this needs to do into a sort start up handler\n\t\t\t\t */\n\t\t\t\n\t\t\t\t// If aaSorting is not defined, then we use the first indicator in asSorting\n\t\t\t\t// in case that has been altered, so the default sort reflects that option\n\t\t\t\tif ( oInit.aaSorting === undefined ) {\n\t\t\t\t\tvar sorting = oSettings.aaSorting;\n\t\t\t\t\tfor ( i=0, iLen=sorting.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\tsorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t\t */\n\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t\tif ( features.bSort ) {\n\t\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\t\tif ( oSettings.bSorted ) {\n\t\t\t\t\t\t\tvar aSort = _fnSortFlatten( oSettings );\n\t\t\t\t\t\t\tvar sortedColumns = {};\n\t\t\t\n\t\t\t\t\t\t\t$.each( aSort, function (i, val) {\n\t\t\t\t\t\t\t\tsortedColumns[ val.src ] = val.dir;\n\t\t\t\t\t\t\t} );\n\t\t\t\n\t\t\t\t\t\t\t_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );\n\t\t\t\t\t\t\t_fnSortAria( oSettings );\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\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\tif ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {\n\t\t\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\t\t}\n\t\t\t\t}, 'sc' );\n\t\t\t\n\t\t\t\n\t\t\t\t/*\n\t\t\t\t * Final init\n\t\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t\t */\n\t\t\t\n\t\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\t\tvar captions = $this.children('caption').each( function () {\n\t\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t\t} );\n\t\t\t\n\t\t\t\tvar thead = $this.children('thead');\n\t\t\t\tif ( thead.length === 0 ) {\n\t\t\t\t\tthead = $('<thead/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\t\tvar tbody = $this.children('tbody');\n\t\t\t\tif ( tbody.length === 0 ) {\n\t\t\t\t\ttbody = $('<tbody/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\toSettings.nTBody = tbody[0];\n\t\t\t\n\t\t\t\tvar tfoot = $this.children('tfoot');\n\t\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") ) {\n\t\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\t\ttfoot = $('<tfoot/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif ( tfoot.length === 0 || tfoot.children().length === 0 ) {\n\t\t\t\t\t$this.addClass( oClasses.sNoFooter );\n\t\t\t\t}\n\t\t\t\telse if ( tfoot.length > 0 ) {\n\t\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Check if there is data passing into the constructor */\n\t\t\t\tif ( oInit.aaData ) {\n\t\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) {\n\t\t\t\t\t/* Grab the data from the page - only do this when deferred loading or no Ajax\n\t\t\t\t\t * source since there is no point in reading the DOM data if we are then going\n\t\t\t\t\t * to replace it with Ajax data\n\t\t\t\t\t */\n\t\t\t\t\t_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Copy the data index array */\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t\t * language processor)\n\t\t\t\t */\n\t\t\t\tif ( bInitHandedOff === false ) {\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by the state saving! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\tfeatures.bStateSave = true;\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t\t_fnLoadState( oSettings, oInit, loadedInit );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tloadedInit();\n\t\t\t}\n\t\t\t\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t/*\n\t * It is useful to have variables which are scoped locally so only the\n\t * DataTables functions can access them and they don't leak into global space.\n\t * At the same time these functions are often useful over multiple files in the\n\t * core and API, so we list, or at least document, all variables which are used\n\t * by DataTables as private variables here. This also ensures that there is no\n\t * clashing of variable names and that they can easily referenced for reuse.\n\t */\n\t\n\t\n\t// Defined else where\n\t//  _selector_run\n\t//  _selector_opts\n\t//  _selector_first\n\t//  _selector_row_indexes\n\t\n\tvar _ext; // DataTable.ext\n\tvar _Api; // DataTable.Api\n\tvar _api_register; // DataTable.Api.register\n\tvar _api_registerPlural; // DataTable.Api.registerPlural\n\t\n\tvar _re_dic = {};\n\tvar _re_new_lines = /[\\r\\n]/g;\n\tvar _re_html = /<.*?>/g;\n\t\n\t// This is not strict ISO8601 - Date.parse() is quite lax, although\n\t// implementations differ between browsers.\n\tvar _re_date = /^\\d{2,4}[\\.\\/\\-]\\d{1,2}[\\.\\/\\-]\\d{1,2}([T ]{1}\\d{1,2}[:\\.]\\d{2}([\\.:]\\d{2})?)?$/;\n\t\n\t// Escape regular expression special characters\n\tvar _re_escape_regex = new RegExp( '(\\\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ].join('|\\\\') + ')', 'g' );\n\t\n\t// http://en.wikipedia.org/wiki/Foreign_exchange_market\n\t// - \\u20BD - Russian ruble.\n\t// - \\u20a9 - South Korean Won\n\t// - \\u20BA - Turkish Lira\n\t// - \\u20B9 - Indian Rupee\n\t// - R - Brazil (R$) and South Africa\n\t// - fr - Swiss Franc\n\t// - kr - Swedish krona, Norwegian krone and Danish krone\n\t// - \\u2009 is thin space and \\u202F is narrow no-break space, both used in many\n\t//   standards as thousands separators.\n\tvar _re_formatted_numeric = /[',$£€¥%\\u2009\\u202F\\u20BD\\u20a9\\u20BArfk]/gi;\n\t\n\t\n\tvar _empty = function ( d ) {\n\t\treturn !d || d === true || d === '-' ? true : false;\n\t};\n\t\n\t\n\tvar _intVal = function ( s ) {\n\t\tvar integer = parseInt( s, 10 );\n\t\treturn !isNaN(integer) && isFinite(s) ? integer : null;\n\t};\n\t\n\t// Convert from a formatted number with characters other than `.` as the\n\t// decimal place, to a Javascript number\n\tvar _numToDecimal = function ( num, decimalPoint ) {\n\t\t// Cache created regular expressions for speed as this function is called often\n\t\tif ( ! _re_dic[ decimalPoint ] ) {\n\t\t\t_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );\n\t\t}\n\t\treturn typeof num === 'string' && decimalPoint !== '.' ?\n\t\t\tnum.replace( /\\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :\n\t\t\tnum;\n\t};\n\t\n\t\n\tvar _isNumber = function ( d, decimalPoint, formatted ) {\n\t\tvar strType = typeof d === 'string';\n\t\n\t\t// If empty return immediately so there must be a number if it is a\n\t\t// formatted string (this stops the string \"k\", or \"kr\", etc being detected\n\t\t// as a formatted number for currency\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tif ( decimalPoint && strType ) {\n\t\t\td = _numToDecimal( d, decimalPoint );\n\t\t}\n\t\n\t\tif ( formatted && strType ) {\n\t\t\td = d.replace( _re_formatted_numeric, '' );\n\t\t}\n\t\n\t\treturn !isNaN( parseFloat(d) ) && isFinite( d );\n\t};\n\t\n\t\n\t// A string without HTML in it can be considered to be HTML still\n\tvar _isHtml = function ( d ) {\n\t\treturn _empty( d ) || typeof d === 'string';\n\t};\n\t\n\t\n\tvar _htmlNumeric = function ( d, decimalPoint, formatted ) {\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar html = _isHtml( d );\n\t\treturn ! html ?\n\t\t\tnull :\n\t\t\t_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?\n\t\t\t\ttrue :\n\t\t\t\tnull;\n\t};\n\t\n\t\n\tvar _pluck = function ( a, prop, prop2 ) {\n\t\tvar out = [];\n\t\tvar i=0, ien=a.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] && a[i][ prop ] ) {\n\t\t\t\t\tout.push( a[i][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] ) {\n\t\t\t\t\tout.push( a[i][ prop ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t// Basically the same as _pluck, but rather than looping over `a` we use `order`\n\t// as the indexes to pick from `a`\n\tvar _pluck_order = function ( a, order, prop, prop2 )\n\t{\n\t\tvar out = [];\n\t\tvar i=0, ien=order.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[ order[i] ][ prop ] ) {\n\t\t\t\t\tout.push( a[ order[i] ][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tout.push( a[ order[i] ][ prop ] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _range = function ( len, start )\n\t{\n\t\tvar out = [];\n\t\tvar end;\n\t\n\t\tif ( start === undefined ) {\n\t\t\tstart = 0;\n\t\t\tend = len;\n\t\t}\n\t\telse {\n\t\t\tend = start;\n\t\t\tstart = len;\n\t\t}\n\t\n\t\tfor ( var i=start ; i<end ; i++ ) {\n\t\t\tout.push( i );\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _removeEmpty = function ( a )\n\t{\n\t\tvar out = [];\n\t\n\t\tfor ( var i=0, ien=a.length ; i<ien ; i++ ) {\n\t\t\tif ( a[i] ) { // careful - will remove all falsy values!\n\t\t\t\tout.push( a[i] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _stripHtml = function ( d ) {\n\t\treturn d.replace( _re_html, '' );\n\t};\n\t\n\t\n\t/**\n\t * Determine if all values in the array are unique. This means we can short\n\t * cut the _unique method at the cost of a single loop. A sorted array is used\n\t * to easily check the values.\n\t *\n\t * @param  {array} src Source array\n\t * @return {boolean} true if all unique, false otherwise\n\t * @ignore\n\t */\n\tvar _areAllUnique = function ( src ) {\n\t\tif ( src.length < 2 ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar sorted = src.slice().sort();\n\t\tvar last = sorted[0];\n\t\n\t\tfor ( var i=1, ien=sorted.length ; i<ien ; i++ ) {\n\t\t\tif ( sorted[i] === last ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tlast = sorted[i];\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Find the unique elements in a source array.\n\t *\n\t * @param  {array} src Source array\n\t * @return {array} Array of unique items\n\t * @ignore\n\t */\n\tvar _unique = function ( src )\n\t{\n\t\tif ( _areAllUnique( src ) ) {\n\t\t\treturn src.slice();\n\t\t}\n\t\n\t\t// A faster unique method is to use object keys to identify used values,\n\t\t// but this doesn't work with arrays or objects, which we must also\n\t\t// consider. See jsperf.com/compare-array-unique-versions/4 for more\n\t\t// information.\n\t\tvar\n\t\t\tout = [],\n\t\t\tval,\n\t\t\ti, ien=src.length,\n\t\t\tj, k=0;\n\t\n\t\tagain: for ( i=0 ; i<ien ; i++ ) {\n\t\t\tval = src[i];\n\t\n\t\t\tfor ( j=0 ; j<k ; j++ ) {\n\t\t\t\tif ( out[j] === val ) {\n\t\t\t\t\tcontinue again;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tout.push( val );\n\t\t\tk++;\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t/**\n\t * DataTables utility methods\n\t * \n\t * This namespace provides helper methods that DataTables uses internally to\n\t * create a DataTable, but which are not exclusively used only for DataTables.\n\t * These methods can be used by extension authors to save the duplication of\n\t * code.\n\t *\n\t *  @namespace\n\t */\n\tDataTable.util = {\n\t\t/**\n\t\t * Throttle the calls to a function. Arguments and context are maintained\n\t\t * for the throttled function.\n\t\t *\n\t\t * @param {function} fn Function to be called\n\t\t * @param {integer} freq Call frequency in mS\n\t\t * @return {function} Wrapped function\n\t\t */\n\t\tthrottle: function ( fn, freq ) {\n\t\t\tvar\n\t\t\t\tfrequency = freq !== undefined ? freq : 200,\n\t\t\t\tlast,\n\t\t\t\ttimer;\n\t\n\t\t\treturn function () {\n\t\t\t\tvar\n\t\t\t\t\tthat = this,\n\t\t\t\t\tnow  = +new Date(),\n\t\t\t\t\targs = arguments;\n\t\n\t\t\t\tif ( last && now < last + frequency ) {\n\t\t\t\t\tclearTimeout( timer );\n\t\n\t\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\t\tlast = undefined;\n\t\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t\t}, frequency );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlast = now;\n\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Escape a string such that it can be used in a regular expression\n\t\t *\n\t\t *  @param {string} val string to escape\n\t\t *  @returns {string} escaped string\n\t\t */\n\t\tescapeRegex: function ( val ) {\n\t\t\treturn val.replace( _re_escape_regex, '\\\\$1' );\n\t\t}\n\t};\n\t\n\t\n\t\n\t/**\n\t * Create a mapping object that allows camel case parameters to be looked up\n\t * for their Hungarian counterparts. The mapping is stored in a private\n\t * parameter called `_hungarianMap` which can be accessed on the source object.\n\t *  @param {object} o\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnHungarianMap ( o )\n\t{\n\t\tvar\n\t\t\thungarian = 'a aa ai ao as b fn i m o s ',\n\t\t\tmatch,\n\t\t\tnewKey,\n\t\t\tmap = {};\n\t\n\t\t$.each( o, function (key, val) {\n\t\t\tmatch = key.match(/^([^A-Z]+?)([A-Z])/);\n\t\n\t\t\tif ( match && hungarian.indexOf(match[1]+' ') !== -1 )\n\t\t\t{\n\t\t\t\tnewKey = key.replace( match[0], match[2].toLowerCase() );\n\t\t\t\tmap[ newKey ] = key;\n\t\n\t\t\t\tif ( match[1] === 'o' )\n\t\t\t\t{\n\t\t\t\t\t_fnHungarianMap( o[key] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\n\t\to._hungarianMap = map;\n\t}\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian, based on a Hungarian map\n\t * created by _fnHungarianMap.\n\t *  @param {object} src The model object which holds all parameters that can be\n\t *    mapped.\n\t *  @param {object} user The object to convert from camel case to Hungarian.\n\t *  @param {boolean} force When set to `true`, properties which already have a\n\t *    Hungarian value in the `user` object will be overwritten. Otherwise they\n\t *    won't be.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCamelToHungarian ( src, user, force )\n\t{\n\t\tif ( ! src._hungarianMap ) {\n\t\t\t_fnHungarianMap( src );\n\t\t}\n\t\n\t\tvar hungarianKey;\n\t\n\t\t$.each( user, function (key, val) {\n\t\t\thungarianKey = src._hungarianMap[ key ];\n\t\n\t\t\tif ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )\n\t\t\t{\n\t\t\t\t// For objects, we need to buzz down into the object to copy parameters\n\t\t\t\tif ( hungarianKey.charAt(0) === 'o' )\n\t\t\t\t{\n\t\t\t\t\t// Copy the camelCase options over to the hungarian\n\t\t\t\t\tif ( ! user[ hungarianKey ] ) {\n\t\t\t\t\t\tuser[ hungarianKey ] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, user[hungarianKey], user[key] );\n\t\n\t\t\t\t\t_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser[hungarianKey] = user[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Language compatibility - when certain options are given, and others aren't, we\n\t * need to duplicate the values over, in order to provide backwards compatibility\n\t * with older language files.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLanguageCompat( lang )\n\t{\n\t\tvar defaults = DataTable.defaults.oLanguage;\n\t\tvar zeroRecords = lang.sZeroRecords;\n\t\n\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t * sZeroRecords - assuming that is given.\n\t\t */\n\t\tif ( ! lang.sEmptyTable && zeroRecords &&\n\t\t\tdefaults.sEmptyTable === \"No data available in table\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );\n\t\t}\n\t\n\t\t/* Likewise with loading records */\n\t\tif ( ! lang.sLoadingRecords && zeroRecords &&\n\t\t\tdefaults.sLoadingRecords === \"Loading...\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );\n\t\t}\n\t\n\t\t// Old parameter name of the thousands separator mapped onto the new\n\t\tif ( lang.sInfoThousands ) {\n\t\t\tlang.sThousands = lang.sInfoThousands;\n\t\t}\n\t\n\t\tvar decimal = lang.sDecimal;\n\t\tif ( decimal ) {\n\t\t\t_addNumericSort( decimal );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Map one parameter onto another\n\t *  @param {object} o Object to map\n\t *  @param {*} knew The new parameter name\n\t *  @param {*} old The old parameter name\n\t */\n\tvar _fnCompatMap = function ( o, knew, old ) {\n\t\tif ( o[ knew ] !== undefined ) {\n\t\t\to[ old ] = o[ knew ];\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for the main DT options. Note that the new\n\t * options are mapped onto the old parameters, so this is an external interface\n\t * change only.\n\t *  @param {object} init Object to map\n\t */\n\tfunction _fnCompatOpts ( init )\n\t{\n\t\t_fnCompatMap( init, 'ordering',      'bSort' );\n\t\t_fnCompatMap( init, 'orderMulti',    'bSortMulti' );\n\t\t_fnCompatMap( init, 'orderClasses',  'bSortClasses' );\n\t\t_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );\n\t\t_fnCompatMap( init, 'order',         'aaSorting' );\n\t\t_fnCompatMap( init, 'orderFixed',    'aaSortingFixed' );\n\t\t_fnCompatMap( init, 'paging',        'bPaginate' );\n\t\t_fnCompatMap( init, 'pagingType',    'sPaginationType' );\n\t\t_fnCompatMap( init, 'pageLength',    'iDisplayLength' );\n\t\t_fnCompatMap( init, 'searching',     'bFilter' );\n\t\n\t\t// Boolean initialisation of x-scrolling\n\t\tif ( typeof init.sScrollX === 'boolean' ) {\n\t\t\tinit.sScrollX = init.sScrollX ? '100%' : '';\n\t\t}\n\t\tif ( typeof init.scrollX === 'boolean' ) {\n\t\t\tinit.scrollX = init.scrollX ? '100%' : '';\n\t\t}\n\t\n\t\t// Column search objects are in an array, so it needs to be converted\n\t\t// element by element\n\t\tvar searchCols = init.aoSearchCols;\n\t\n\t\tif ( searchCols ) {\n\t\t\tfor ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {\n\t\t\t\tif ( searchCols[i] ) {\n\t\t\t\t\t_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for column options. Note that the new options\n\t * are mapped onto the old parameters, so this is an external interface change\n\t * only.\n\t *  @param {object} init Object to map\n\t */\n\tfunction _fnCompatCols ( init )\n\t{\n\t\t_fnCompatMap( init, 'orderable',     'bSortable' );\n\t\t_fnCompatMap( init, 'orderData',     'aDataSort' );\n\t\t_fnCompatMap( init, 'orderSequence', 'asSorting' );\n\t\t_fnCompatMap( init, 'orderDataType', 'sortDataType' );\n\t\n\t\t// orderData can be given as an integer\n\t\tvar dataSort = init.aDataSort;\n\t\tif ( typeof dataSort === 'number' && ! $.isArray( dataSort ) ) {\n\t\t\tinit.aDataSort = [ dataSort ];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Browser feature detection for capabilities, quirks\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBrowserDetect( settings )\n\t{\n\t\t// We don't need to do this every time DataTables is constructed, the values\n\t\t// calculated are specific to the browser and OS configuration which we\n\t\t// don't expect to change between initialisations\n\t\tif ( ! DataTable.__browser ) {\n\t\t\tvar browser = {};\n\t\t\tDataTable.__browser = browser;\n\t\n\t\t\t// Scrolling feature / quirks detection\n\t\t\tvar n = $('<div/>')\n\t\t\t\t.css( {\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: $(window).scrollLeft()*-1, // allow for scrolling\n\t\t\t\t\theight: 1,\n\t\t\t\t\twidth: 1,\n\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t} )\n\t\t\t\t.append(\n\t\t\t\t\t$('<div/>')\n\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\ttop: 1,\n\t\t\t\t\t\t\tleft: 1,\n\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\toverflow: 'scroll'\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t$('<div/>')\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\theight: 10\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.appendTo( 'body' );\n\t\n\t\t\tvar outer = n.children();\n\t\t\tvar inner = outer.children();\n\t\n\t\t\t// Numbers below, in order, are:\n\t\t\t// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth\n\t\t\t//\n\t\t\t// IE6 XP:                           100 100 100  83\n\t\t\t// IE7 Vista:                        100 100 100  83\n\t\t\t// IE 8+ Windows:                     83  83 100  83\n\t\t\t// Evergreen Windows:                 83  83 100  83\n\t\t\t// Evergreen Mac with scrollbars:     85  85 100  85\n\t\t\t// Evergreen Mac without scrollbars: 100 100 100 100\n\t\n\t\t\t// Get scrollbar width\n\t\t\tbrowser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;\n\t\n\t\t\t// IE6/7 will oversize a width 100% element inside a scrolling element, to\n\t\t\t// include the width of the scrollbar, while other browsers ensure the inner\n\t\t\t// element is contained without forcing scrolling\n\t\t\tbrowser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;\n\t\n\t\t\t// In rtl text layout, some browsers (most, but not all) will place the\n\t\t\t// scrollbar on the left, rather than the right.\n\t\t\tbrowser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;\n\t\n\t\t\t// IE8- don't provide height and width for getBoundingClientRect\n\t\t\tbrowser.bBounding = n[0].getBoundingClientRect().width ? true : false;\n\t\n\t\t\tn.remove();\n\t\t}\n\t\n\t\t$.extend( settings.oBrowser, DataTable.__browser );\n\t\tsettings.oScroll.iBarWidth = DataTable.__browser.barWidth;\n\t}\n\t\n\t\n\t/**\n\t * Array.prototype reduce[Right] method, used for browsers which don't support\n\t * JS 1.6. Done this way to reduce code size, since we iterate either way\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnReduce ( that, fn, init, start, end, inc )\n\t{\n\t\tvar\n\t\t\ti = start,\n\t\t\tvalue,\n\t\t\tisSet = false;\n\t\n\t\tif ( init !== undefined ) {\n\t\t\tvalue = init;\n\t\t\tisSet = true;\n\t\t}\n\t\n\t\twhile ( i !== end ) {\n\t\t\tif ( ! that.hasOwnProperty(i) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tvalue = isSet ?\n\t\t\t\tfn( value, that[i], i, that ) :\n\t\t\t\tthat[i];\n\t\n\t\t\tisSet = true;\n\t\t\ti += inc;\n\t\t}\n\t\n\t\treturn value;\n\t}\n\t\n\t/**\n\t * Add a column to the list used for the table with default values\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} nTh The th element for this column\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddColumn( oSettings, nTh )\n\t{\n\t\t// Add column to aoColumns array\n\t\tvar oDefaults = DataTable.defaults.column;\n\t\tvar iCol = oSettings.aoColumns.length;\n\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n\t\t\tidx: iCol\n\t\t} );\n\t\toSettings.aoColumns.push( oCol );\n\t\n\t\t// Add search object for column specific search. Note that the `searchCols[ iCol ]`\n\t\t// passed into extend can be undefined. This allows the user to give a default\n\t\t// with only some of the parameters defined, and also not give a default\n\t\tvar searchCols = oSettings.aoPreSearchCols;\n\t\tsearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );\n\t\n\t\t// Use the default column options function to initialise classes etc\n\t\t_fnColumnOptions( oSettings, iCol, $(nTh).data() );\n\t}\n\t\n\t\n\t/**\n\t * Apply options for a column\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iCol column index to consider\n\t *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t{\n\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\tvar oClasses = oSettings.oClasses;\n\t\tvar th = $(oCol.nTh);\n\t\n\t\t// Try to get width information from the DOM. We can't get it from CSS\n\t\t// as we'd need to parse the CSS stylesheet. `width` option can override\n\t\tif ( ! oCol.sWidthOrig ) {\n\t\t\t// Width attribute\n\t\t\toCol.sWidthOrig = th.attr('width') || null;\n\t\n\t\t\t// Style attribute\n\t\t\tvar t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\t\t\tif ( t ) {\n\t\t\t\toCol.sWidthOrig = t[1];\n\t\t\t}\n\t\t}\n\t\n\t\t/* User specified column options */\n\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t{\n\t\t\t// Backwards compatibility\n\t\t\t_fnCompatCols( oOptions );\n\t\n\t\t\t// Map camel case parameters to their Hungarian counterparts\n\t\t\t_fnCamelToHungarian( DataTable.defaults.column, oOptions );\n\t\n\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\tif ( oOptions.mDataProp !== undefined && !oOptions.mData )\n\t\t\t{\n\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t}\n\t\n\t\t\tif ( oOptions.sType )\n\t\t\t{\n\t\t\t\toCol._sManualType = oOptions.sType;\n\t\t\t}\n\t\n\t\t\t// `class` is a reserved word in Javascript, so we need to provide\n\t\t\t// the ability to use a valid name for the camel case input\n\t\t\tif ( oOptions.className && ! oOptions.sClass )\n\t\t\t{\n\t\t\t\toOptions.sClass = oOptions.className;\n\t\t\t}\n\t\t\tif ( oOptions.sClass ) {\n\t\t\t\tth.addClass( oOptions.sClass );\n\t\t\t}\n\t\n\t\t\t$.extend( oCol, oOptions );\n\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\n\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t * priority if defined\n\t\t\t */\n\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t{\n\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t}\n\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t}\n\t\n\t\t/* Cache the data get and set functions for speed */\n\t\tvar mDataSrc = oCol.mData;\n\t\tvar mData = _fnGetObjectDataFn( mDataSrc );\n\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\n\t\tvar attrTest = function( src ) {\n\t\t\treturn typeof src === 'string' && src.indexOf('@') !== -1;\n\t\t};\n\t\toCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (\n\t\t\tattrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)\n\t\t);\n\t\toCol._setter = null;\n\t\n\t\toCol.fnGetData = function (rowData, type, meta) {\n\t\t\tvar innerData = mData( rowData, type, undefined, meta );\n\t\n\t\t\treturn mRender && type ?\n\t\t\t\tmRender( innerData, type, rowData, meta ) :\n\t\t\t\tinnerData;\n\t\t};\n\t\toCol.fnSetData = function ( rowData, val, meta ) {\n\t\t\treturn _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );\n\t\t};\n\t\n\t\t// Indicate if DataTables should read DOM data as an object or array\n\t\t// Used in _fnGetRowElements\n\t\tif ( typeof mDataSrc !== 'number' ) {\n\t\t\toSettings._rowReadObject = true;\n\t\t}\n\t\n\t\t/* Feature sorting overrides column specific when off */\n\t\tif ( !oSettings.oFeatures.bSort )\n\t\t{\n\t\t\toCol.bSortable = false;\n\t\t\tth.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called\n\t\t}\n\t\n\t\t/* Check that the class assignment is correct for sorting */\n\t\tvar bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n\t\tvar bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\t\tif ( !oCol.bSortable || (!bAsc && !bDesc) )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableNone;\n\t\t\toCol.sSortingClassJUI = \"\";\n\t\t}\n\t\telse if ( bAsc && !bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableAsc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n\t\t}\n\t\telse if ( !bAsc && bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableDesc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortable;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUI;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Adjust the table column widths for new data. Note: you would probably want to\n\t * do a redraw after calling this function!\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAdjustColumnSizing ( settings )\n\t{\n\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\tif ( settings.oFeatures.bAutoWidth !== false )\n\t\t{\n\t\t\tvar columns = settings.aoColumns;\n\t\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t\tfor ( var i=0 , iLen=columns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tcolumns[i].nTh.style.width = columns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\n\t\tvar scroll = settings.oScroll;\n\t\tif ( scroll.sY !== '' || scroll.sX !== '')\n\t\t{\n\t\t\t_fnScrollDraw( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'column-sizing', [settings] );\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of a visible column to the index in the data array (take account\n\t * of hidden columns)\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iMatch Visible column index to lookup\n\t *  @returns {int} i the data index\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\n\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\taiVis[iMatch] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of an index in the data array and convert it to the visible\n\t *   column index (take account of hidden columns)\n\t *  @param {int} iMatch Column index to lookup\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {int} i the data index\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\n\t\treturn iPos !== -1 ? iPos : null;\n\t}\n\t\n\t\n\t/**\n\t * Get the number of visible columns\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {int} i the number of visible columns\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnVisbleColumns( oSettings )\n\t{\n\t\tvar vis = 0;\n\t\n\t\t// No reduce in IE8, use a loop for now\n\t\t$.each( oSettings.aoColumns, function ( i, col ) {\n\t\t\tif ( col.bVisible && $(col.nTh).css('display') !== 'none' ) {\n\t\t\t\tvis++;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn vis;\n\t}\n\t\n\t\n\t/**\n\t * Get an array of column indexes that match a given property\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sParam Parameter in aoColumns to look for - typically\n\t *    bVisible or bSearchable\n\t *  @returns {array} Array of indexes with matched properties\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetColumns( oSettings, sParam )\n\t{\n\t\tvar a = [];\n\t\n\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\tif ( val[sParam] ) {\n\t\t\t\ta.push( i );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn a;\n\t}\n\t\n\t\n\t/**\n\t * Calculate the 'type' of a column\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnTypes ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar data = settings.aoData;\n\t\tvar types = DataTable.ext.type.detect;\n\t\tvar i, ien, j, jen, k, ken;\n\t\tvar col, cell, detectedType, cache;\n\t\n\t\t// For each column, spin over the \n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcol = columns[i];\n\t\t\tcache = [];\n\t\n\t\t\tif ( ! col.sType && col._sManualType ) {\n\t\t\t\tcol.sType = col._sManualType;\n\t\t\t}\n\t\t\telse if ( ! col.sType ) {\n\t\t\t\tfor ( j=0, jen=types.length ; j<jen ; j++ ) {\n\t\t\t\t\tfor ( k=0, ken=data.length ; k<ken ; k++ ) {\n\t\t\t\t\t\t// Use a cache array so we only need to get the type data\n\t\t\t\t\t\t// from the formatter once (when using multiple detectors)\n\t\t\t\t\t\tif ( cache[k] === undefined ) {\n\t\t\t\t\t\t\tcache[k] = _fnGetCellData( settings, k, i, 'type' );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tdetectedType = types[j]( cache[k], settings );\n\t\n\t\t\t\t\t\t// If null, then this type can't apply to this column, so\n\t\t\t\t\t\t// rather than testing all cells, break out. There is an\n\t\t\t\t\t\t// exception for the last type which is `html`. We need to\n\t\t\t\t\t\t// scan all rows since it is possible to mix string and HTML\n\t\t\t\t\t\t// types\n\t\t\t\t\t\tif ( ! detectedType && j !== types.length-1 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Only a single match is needed for html type since it is\n\t\t\t\t\t\t// bottom of the pile and very similar to string\n\t\t\t\t\t\tif ( detectedType === 'html' ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Type is valid for all data points in the column - use this\n\t\t\t\t\t// type\n\t\t\t\t\tif ( detectedType ) {\n\t\t\t\t\t\tcol.sType = detectedType;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Fall back - if no type was detected, always use string\n\t\t\t\tif ( ! col.sType ) {\n\t\t\t\t\tcol.sType = 'string';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Take the column definitions and static columns arrays and calculate how\n\t * they relate to column indexes. The callback function will then apply the\n\t * definition found for a column to a suitable configuration object.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t *  @param {array} aoCols The aoColumns array that defines columns individually\n\t *  @param {function} fn Callback function - takes two parameters, the calculated\n\t *    column index and the definition for that column.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, def;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Column definitions with aTargets\n\t\tif ( aoColDefs )\n\t\t{\n\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tdef = aoColDefs[i];\n\t\n\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\tvar aTargets = def.targets !== undefined ?\n\t\t\t\t\tdef.targets :\n\t\t\t\t\tdef.aTargets;\n\t\n\t\t\t\tif ( ! $.isArray( aTargets ) )\n\t\t\t\t{\n\t\t\t\t\taTargets = [ aTargets ];\n\t\t\t\t}\n\t\n\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\twhile( columns.length <= aTargets[j] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\tfn( aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\tfn( columns.length+aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\tfor ( k=0, kLen=columns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t     $(columns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfn( k, def );\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\t\n\t\t// Statically defined columns array\n\t\tif ( aoCols )\n\t\t{\n\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfn( i, aoCols[i] );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Add a data array to the table, creating DOM node etc. This is the parallel to\n\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t * DOM source.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {array} aData data array to be added\n\t *  @param {node} [nTr] TR element to add to the table - optional. If not given,\n\t *    DataTables will create a row automatically\n\t *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t *    if nTr is.\n\t *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddData ( oSettings, aDataIn, nTr, anTds )\n\t{\n\t\t/* Create the object for storing information about this new row */\n\t\tvar iRow = oSettings.aoData.length;\n\t\tvar oData = $.extend( true, {}, DataTable.models.oRow, {\n\t\t\tsrc: nTr ? 'dom' : 'data',\n\t\t\tidx: iRow\n\t\t} );\n\t\n\t\toData._aData = aDataIn;\n\t\toSettings.aoData.push( oData );\n\t\n\t\t/* Create the cells */\n\t\tvar nTd, sThisType;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Invalidate the column types as the new data needs to be revalidated\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tcolumns[i].sType = null;\n\t\t}\n\t\n\t\t/* Add to the display array */\n\t\toSettings.aiDisplayMaster.push( iRow );\n\t\n\t\tvar id = oSettings.rowIdFn( aDataIn );\n\t\tif ( id !== undefined ) {\n\t\t\toSettings.aIds[ id ] = oData;\n\t\t}\n\t\n\t\t/* Create the DOM information, or register it if already present */\n\t\tif ( nTr || ! oSettings.oFeatures.bDeferRender )\n\t\t{\n\t\t\t_fnCreateTr( oSettings, iRow, nTr, anTds );\n\t\t}\n\t\n\t\treturn iRow;\n\t}\n\t\n\t\n\t/**\n\t * Add one or more TR elements to the table. Generally we'd expect to\n\t * use this for reading data from a DOM sourced table, but it could be\n\t * used for an TR element. Note that if a TR is given, it is used (i.e.\n\t * it is not cloned).\n\t *  @param {object} settings dataTables settings object\n\t *  @param {array|node|jQuery} trs The TR element(s) to add to the table\n\t *  @returns {array} Array of indexes for the added rows\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddTr( settings, trs )\n\t{\n\t\tvar row;\n\t\n\t\t// Allow an individual node to be passed in\n\t\tif ( ! (trs instanceof $) ) {\n\t\t\ttrs = $(trs);\n\t\t}\n\t\n\t\treturn trs.map( function (i, el) {\n\t\t\trow = _fnGetRowElements( settings, el );\n\t\t\treturn _fnAddData( settings, row.data, el, row.cells );\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Take a TR element and convert it to an index in aoData\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} n the TR element to find\n\t *  @returns {int} index if the node is found, null if not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToDataIndex( oSettings, n )\n\t{\n\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t}\n\t\n\t\n\t/**\n\t * Take a TD element and convert it into a column data index (not the visible index)\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iRow The row number the TD/TH can be found in\n\t *  @param {node} n The TD/TH element to find\n\t *  @returns {int} index if the node is found, -1 if not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t{\n\t\treturn $.inArray( n, oSettings.aoData[ iRow ].anCells );\n\t}\n\t\n\t\n\t/**\n\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} rowIdx aoData row id\n\t *  @param {int} colIdx Column index\n\t *  @param {string} type data get type ('display', 'type' 'filter' 'sort')\n\t *  @returns {*} Cell data\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetCellData( settings, rowIdx, colIdx, type )\n\t{\n\t\tvar draw           = settings.iDraw;\n\t\tvar col            = settings.aoColumns[colIdx];\n\t\tvar rowData        = settings.aoData[rowIdx]._aData;\n\t\tvar defaultContent = col.sDefaultContent;\n\t\tvar cellData       = col.fnGetData( rowData, type, {\n\t\t\tsettings: settings,\n\t\t\trow:      rowIdx,\n\t\t\tcol:      colIdx\n\t\t} );\n\t\n\t\tif ( cellData === undefined ) {\n\t\t\tif ( settings.iDrawError != draw && defaultContent === null ) {\n\t\t\t\t_fnLog( settings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t(typeof col.mData=='function' ? '{function}' : \"'\"+col.mData+\"'\")+\n\t\t\t\t\t\" for row \"+rowIdx+\", column \"+colIdx, 4 );\n\t\t\t\tsettings.iDrawError = draw;\n\t\t\t}\n\t\t\treturn defaultContent;\n\t\t}\n\t\n\t\t// When the data source is null and a specific data type is requested (i.e.\n\t\t// not the original data), we can use default column data\n\t\tif ( (cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined ) {\n\t\t\tcellData = defaultContent;\n\t\t}\n\t\telse if ( typeof cellData === 'function' ) {\n\t\t\t// If the data source is a function, then we run it and use the return,\n\t\t\t// executing in the scope of the data object (for instances)\n\t\t\treturn cellData.call( rowData );\n\t\t}\n\t\n\t\tif ( cellData === null && type == 'display' ) {\n\t\t\treturn '';\n\t\t}\n\t\treturn cellData;\n\t}\n\t\n\t\n\t/**\n\t * Set the value for a specific cell, into the internal data cache\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} rowIdx aoData row id\n\t *  @param {int} colIdx Column index\n\t *  @param {*} val Value to set\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSetCellData( settings, rowIdx, colIdx, val )\n\t{\n\t\tvar col     = settings.aoColumns[colIdx];\n\t\tvar rowData = settings.aoData[rowIdx]._aData;\n\t\n\t\tcol.fnSetData( rowData, val, {\n\t\t\tsettings: settings,\n\t\t\trow:      rowIdx,\n\t\t\tcol:      colIdx\n\t\t}  );\n\t}\n\t\n\t\n\t// Private variable that is used to match action syntax in the data property object\n\tvar __reArray = /\\[.*?\\]$/;\n\tvar __reFn = /\\(\\)$/;\n\t\n\t/**\n\t * Split string on periods, taking into account escaped periods\n\t * @param  {string} str String to split\n\t * @return {array} Split string\n\t */\n\tfunction _fnSplitObjNotation( str )\n\t{\n\t\treturn $.map( str.match(/(\\\\.|[^\\.])+/g) || [''], function ( s ) {\n\t\t\treturn s.replace(/\\\\\\./g, '.');\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to get data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t *  @param {string|int|function} mSource The data source for the object\n\t *  @returns {function} Data get function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Build an object of get functions, and wrap them in a single call */\n\t\t\tvar o = {};\n\t\t\t$.each( mSource, function (key, val) {\n\t\t\t\tif ( val ) {\n\t\t\t\t\to[key] = _fnGetObjectDataFn( val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\tvar t = o[type] || o._;\n\t\t\t\treturn t !== undefined ?\n\t\t\t\t\tt(data, type, row, meta) :\n\t\t\t\t\tdata;\n\t\t\t};\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\treturn function (data) { // type, row and meta also passed, but not used\n\t\t\t\treturn data;\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\treturn mSource( data, type, row, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* If there is a . in the source string then the data source is in a\n\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t * be used if defined, rather than throwing an error\n\t\t\t */\n\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\tvar arrayNotation, funcNotation, out, innerSrc;\n\t\n\t\t\t\tif ( src !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar a = _fnSplitObjNotation( src );\n\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with special notation\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Array notation\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\n\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tout = [];\n\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\n\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\tif ( $.isArray( data ) ) {\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\n\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Function call\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\t\tdata = data[ a[i] ]();\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn data;\n\t\t\t};\n\t\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn data[mSource];\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to set data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t *  @param {string|int|function} mSource The data source for the object\n\t *  @returns {function} Data set function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Unlike get, only the underscore (global) option is used for for\n\t\t\t * setting data since we don't know the type here. This is why an object\n\t\t\t * option is not documented for `mData` (which is read/write), but it is\n\t\t\t * for `mRender` which is read only.\n\t\t\t */\n\t\t\treturn _fnSetObjectDataFn( mSource._ );\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Nothing to do when the data source is null */\n\t\t\treturn function () {};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, val, meta) {\n\t\t\t\tmSource( data, 'set', val, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\tvar setData = function (data, val, src) {\n\t\t\t\tvar a = _fnSplitObjNotation( src ), b;\n\t\t\t\tvar aLast = a[a.length-1];\n\t\t\t\tvar arrayNotation, funcNotation, o, innerSrc;\n\t\n\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\n\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\n\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\tif ( $.isArray( val ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t}\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\t// We've been asked to save data to an array, but it\n\t\t\t\t\t\t\t// isn't array data to be saved. Best that can be done\n\t\t\t\t\t\t\t// is to just save the value.\n\t\t\t\t\t\t\tdata[ a[i] ] = val;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Function call\n\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\tdata = data[ a[i] ]( val );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t}\n\t\n\t\t\t\t// Last item in the input - i.e, the actual set\n\t\t\t\tif ( aLast.match(__reFn ) )\n\t\t\t\t{\n\t\t\t\t\t// Function call\n\t\t\t\t\tdata = data[ aLast.replace(__reFn, '') ]( val );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ aLast.replace(__reArray, '') ] = val;\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\treturn setData( data, val, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\tdata[mSource] = val;\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return an array with the full table data\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns array {array} aData Master data array\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetDataMaster ( settings )\n\t{\n\t\treturn _pluck( settings.aoData, '_aData' );\n\t}\n\t\n\t\n\t/**\n\t * Nuke the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnClearTable( settings )\n\t{\n\t\tsettings.aoData.length = 0;\n\t\tsettings.aiDisplayMaster.length = 0;\n\t\tsettings.aiDisplay.length = 0;\n\t\tsettings.aIds = {};\n\t}\n\t\n\t\n\t /**\n\t * Take an array of integers (index array) and remove a target integer (value - not\n\t * the key!)\n\t *  @param {array} a Index array to target\n\t *  @param {int} iTarget value to find\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDeleteIndex( a, iTarget, splice )\n\t{\n\t\tvar iTargetIndex = -1;\n\t\n\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( a[i] == iTarget )\n\t\t\t{\n\t\t\t\tiTargetIndex = i;\n\t\t\t}\n\t\t\telse if ( a[i] > iTarget )\n\t\t\t{\n\t\t\t\ta[i]--;\n\t\t\t}\n\t\t}\n\t\n\t\tif ( iTargetIndex != -1 && splice === undefined )\n\t\t{\n\t\t\ta.splice( iTargetIndex, 1 );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Mark cached data as invalid such that a re-read of the data will occur when\n\t * the cached data is next requested. Also update from the data source object.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {int}    rowIdx   Row index to invalidate\n\t * @param {string} [src]    Source to invalidate from: undefined, 'auto', 'dom'\n\t *     or 'data'\n\t * @param {int}    [colIdx] Column index to invalidate. If undefined the whole\n\t *     row will be invalidated\n\t * @memberof DataTable#oApi\n\t *\n\t * @todo For the modularisation of v1.11 this will need to become a callback, so\n\t *   the sort and filter methods can subscribe to it. That will required\n\t *   initialisation options for sorting, which is why it is not already baked in\n\t */\n\tfunction _fnInvalidate( settings, rowIdx, src, colIdx )\n\t{\n\t\tvar row = settings.aoData[ rowIdx ];\n\t\tvar i, ien;\n\t\tvar cellWrite = function ( cell, col ) {\n\t\t\t// This is very frustrating, but in IE if you just write directly\n\t\t\t// to innerHTML, and elements that are overwritten are GC'ed,\n\t\t\t// even if there is a reference to them elsewhere\n\t\t\twhile ( cell.childNodes.length ) {\n\t\t\t\tcell.removeChild( cell.firstChild );\n\t\t\t}\n\t\n\t\t\tcell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );\n\t\t};\n\t\n\t\t// Are we reading last data from DOM or the data object?\n\t\tif ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {\n\t\t\t// Read the data from the DOM\n\t\t\trow._aData = _fnGetRowElements(\n\t\t\t\t\tsettings, row, colIdx, colIdx === undefined ? undefined : row._aData\n\t\t\t\t)\n\t\t\t\t.data;\n\t\t}\n\t\telse {\n\t\t\t// Reading from data object, update the DOM\n\t\t\tvar cells = row.anCells;\n\t\n\t\t\tif ( cells ) {\n\t\t\t\tif ( colIdx !== undefined ) {\n\t\t\t\t\tcellWrite( cells[colIdx], colIdx );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tcellWrite( cells[i], i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// For both row and cell invalidation, the cached data for sorting and\n\t\t// filtering is nulled out\n\t\trow._aSortData = null;\n\t\trow._aFilterData = null;\n\t\n\t\t// Invalidate the type for a specific column (if given) or all columns since\n\t\t// the data might have changed\n\t\tvar cols = settings.aoColumns;\n\t\tif ( colIdx !== undefined ) {\n\t\t\tcols[ colIdx ].sType = null;\n\t\t}\n\t\telse {\n\t\t\tfor ( i=0, ien=cols.length ; i<ien ; i++ ) {\n\t\t\t\tcols[i].sType = null;\n\t\t\t}\n\t\n\t\t\t// Update DataTables special `DT_*` attributes for the row\n\t\t\t_fnRowAttributes( settings, row );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a data source object from an HTML row, reading the contents of the\n\t * cells that are in the row.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {node|object} TR element from which to read data or existing row\n\t *   object from which to re-read the data from the cells\n\t * @param {int} [colIdx] Optional column index\n\t * @param {array|object} [d] Data source object. If `colIdx` is given then this\n\t *   parameter should also be given and will be used to write the data into.\n\t *   Only the column in question will be written\n\t * @returns {object} Object with two parameters: `data` the data read, in\n\t *   document order, and `cells` and array of nodes (they can be useful to the\n\t *   caller, so rather than needing a second traversal to get them, just return\n\t *   them from here).\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetRowElements( settings, row, colIdx, d )\n\t{\n\t\tvar\n\t\t\ttds = [],\n\t\t\ttd = row.firstChild,\n\t\t\tname, col, o, i=0, contents,\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tobjectRead = settings._rowReadObject;\n\t\n\t\t// Allow the data object to be passed in, or construct\n\t\td = d !== undefined ?\n\t\t\td :\n\t\t\tobjectRead ?\n\t\t\t\t{} :\n\t\t\t\t[];\n\t\n\t\tvar attr = function ( str, td  ) {\n\t\t\tif ( typeof str === 'string' ) {\n\t\t\t\tvar idx = str.indexOf('@');\n\t\n\t\t\t\tif ( idx !== -1 ) {\n\t\t\t\t\tvar attr = str.substring( idx+1 );\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( str );\n\t\t\t\t\tsetter( d, td.getAttribute( attr ) );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\t// Read data from a cell and store into the data object\n\t\tvar cellProcess = function ( cell ) {\n\t\t\tif ( colIdx === undefined || colIdx === i ) {\n\t\t\t\tcol = columns[i];\n\t\t\t\tcontents = $.trim(cell.innerHTML);\n\t\n\t\t\t\tif ( col && col._bAttrSrc ) {\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( col.mData._ );\n\t\t\t\t\tsetter( d, contents );\n\t\n\t\t\t\t\tattr( col.mData.sort, cell );\n\t\t\t\t\tattr( col.mData.type, cell );\n\t\t\t\t\tattr( col.mData.filter, cell );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Depending on the `data` option for the columns the data can\n\t\t\t\t\t// be read to either an object or an array.\n\t\t\t\t\tif ( objectRead ) {\n\t\t\t\t\t\tif ( ! col._setter ) {\n\t\t\t\t\t\t\t// Cache the setter function\n\t\t\t\t\t\t\tcol._setter = _fnSetObjectDataFn( col.mData );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcol._setter( d, contents );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\td[i] = contents;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t};\n\t\n\t\tif ( td ) {\n\t\t\t// `tr` element was passed in\n\t\t\twhile ( td ) {\n\t\t\t\tname = td.nodeName.toUpperCase();\n\t\n\t\t\t\tif ( name == \"TD\" || name == \"TH\" ) {\n\t\t\t\t\tcellProcess( td );\n\t\t\t\t\ttds.push( td );\n\t\t\t\t}\n\t\n\t\t\t\ttd = td.nextSibling;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Existing row object passed in\n\t\t\ttds = row.anCells;\n\t\n\t\t\tfor ( var j=0, jen=tds.length ; j<jen ; j++ ) {\n\t\t\t\tcellProcess( tds[j] );\n\t\t\t}\n\t\t}\n\t\n\t\t// Read the ID from the DOM if present\n\t\tvar rowNode = row.firstChild ? row : row.nTr;\n\t\n\t\tif ( rowNode ) {\n\t\t\tvar id = rowNode.getAttribute( 'id' );\n\t\n\t\t\tif ( id ) {\n\t\t\t\t_fnSetObjectDataFn( settings.rowId )( d, id );\n\t\t\t}\n\t\t}\n\t\n\t\treturn {\n\t\t\tdata: d,\n\t\t\tcells: tds\n\t\t};\n\t}\n\t/**\n\t * Create a new TR element (and it's TD children) for a row\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iRow Row to consider\n\t *  @param {node} [nTrIn] TR element to add to the table - optional. If not given,\n\t *    DataTables will create a row automatically\n\t *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t *    if nTr is.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCreateTr ( oSettings, iRow, nTrIn, anTds )\n\t{\n\t\tvar\n\t\t\trow = oSettings.aoData[iRow],\n\t\t\trowData = row._aData,\n\t\t\tcells = [],\n\t\t\tnTr, nTd, oCol,\n\t\t\ti, iLen;\n\t\n\t\tif ( row.nTr === null )\n\t\t{\n\t\t\tnTr = nTrIn || document.createElement('tr');\n\t\n\t\t\trow.nTr = nTr;\n\t\t\trow.anCells = cells;\n\t\n\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t * to the aoData array for fast look up\n\t\t\t */\n\t\t\tnTr._DT_RowIndex = iRow;\n\t\n\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t_fnRowAttributes( oSettings, row );\n\t\n\t\t\t/* Process each column */\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\n\t\t\t\tnTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType );\n\t\t\t\tnTd._DT_CellIndex = {\n\t\t\t\t\trow: iRow,\n\t\t\t\t\tcolumn: i\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tcells.push( nTd );\n\t\n\t\t\t\t// Need to create the HTML if new, or if a rendering function is defined\n\t\t\t\tif ( (!nTrIn || oCol.mRender || oCol.mData !== i) &&\n\t\t\t\t\t (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i+'.display')\n\t\t\t\t) {\n\t\t\t\t\tnTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t}\n\t\n\t\t\t\t/* Add user defined class */\n\t\t\t\tif ( oCol.sClass )\n\t\t\t\t{\n\t\t\t\t\tnTd.className += ' '+oCol.sClass;\n\t\t\t\t}\n\t\n\t\t\t\t// Visibility - add or remove as required\n\t\t\t\tif ( oCol.bVisible && ! nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t}\n\t\t\t\telse if ( ! oCol.bVisible && nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t}\n\t\n\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t{\n\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] );\n\t\t}\n\t\n\t\t// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved\n\t\t// and deployed\n\t\trow.nTr.setAttribute( 'role', 'row' );\n\t}\n\t\n\t\n\t/**\n\t * Add attributes to a row based on the special `DT_*` parameters in a data\n\t * source object.\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} DataTables row object for the row to be modified\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnRowAttributes( settings, row )\n\t{\n\t\tvar tr = row.nTr;\n\t\tvar data = row._aData;\n\t\n\t\tif ( tr ) {\n\t\t\tvar id = settings.rowIdFn( data );\n\t\n\t\t\tif ( id ) {\n\t\t\t\ttr.id = id;\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowClass ) {\n\t\t\t\t// Remove any classes added by DT_RowClass before\n\t\t\t\tvar a = data.DT_RowClass.split(' ');\n\t\t\t\trow.__rowc = row.__rowc ?\n\t\t\t\t\t_unique( row.__rowc.concat( a ) ) :\n\t\t\t\t\ta;\n\t\n\t\t\t\t$(tr)\n\t\t\t\t\t.removeClass( row.__rowc.join(' ') )\n\t\t\t\t\t.addClass( data.DT_RowClass );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowAttr ) {\n\t\t\t\t$(tr).attr( data.DT_RowAttr );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowData ) {\n\t\t\t\t$(tr).data( data.DT_RowData );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Create the HTML header for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBuildHead( oSettings )\n\t{\n\t\tvar i, ien, cell, row, column;\n\t\tvar thead = oSettings.nTHead;\n\t\tvar tfoot = oSettings.nTFoot;\n\t\tvar createHeader = $('th, td', thead).length === 0;\n\t\tvar classes = oSettings.oClasses;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\tif ( createHeader ) {\n\t\t\trow = $('<tr/>').appendTo( thead );\n\t\t}\n\t\n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcell = $( column.nTh ).addClass( column.sClass );\n\t\n\t\t\tif ( createHeader ) {\n\t\t\t\tcell.appendTo( row );\n\t\t\t}\n\t\n\t\t\t// 1.11 move into sorting\n\t\t\tif ( oSettings.oFeatures.bSort ) {\n\t\t\t\tcell.addClass( column.sSortingClass );\n\t\n\t\t\t\tif ( column.bSortable !== false ) {\n\t\t\t\t\tcell\n\t\t\t\t\t\t.attr( 'tabindex', oSettings.iTabIndex )\n\t\t\t\t\t\t.attr( 'aria-controls', oSettings.sTableId );\n\t\n\t\t\t\t\t_fnSortAttachListener( oSettings, column.nTh, i );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( column.sTitle != cell[0].innerHTML ) {\n\t\t\t\tcell.html( column.sTitle );\n\t\t\t}\n\t\n\t\t\t_fnRenderer( oSettings, 'header' )(\n\t\t\t\toSettings, cell, column, classes\n\t\t\t);\n\t\t}\n\t\n\t\tif ( createHeader ) {\n\t\t\t_fnDetectHeader( oSettings.aoHeader, thead );\n\t\t}\n\t\t\n\t\t/* ARIA role for the rows */\n\t \t$(thead).find('>tr').attr('role', 'row');\n\t\n\t\t/* Deal with the footer - add classes if required */\n\t\t$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );\n\t\t$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );\n\t\n\t\t// Cache the footer cells. Note that we only take the cells from the first\n\t\t// row in the footer. If there is more than one row the user wants to\n\t\t// interact with, they need to use the table().foot() method. Note also this\n\t\t// allows cells to be used for multiple columns using colspan\n\t\tif ( tfoot !== null ) {\n\t\t\tvar cells = oSettings.aoFooter[0];\n\t\n\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\tcolumn = columns[i];\n\t\t\t\tcolumn.nTf = cells[i].cell;\n\t\n\t\t\t\tif ( column.sClass ) {\n\t\t\t\t\t$(column.nTf).addClass( column.sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the header (or footer) element based on the column visibility states. The\n\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t * traversed over cell at a time in a rows x columns grid fashion, although each\n\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t * already a cell in that position.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param array {objects} aoSource Layout array from _fnDetectHeader\n\t *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\tvar aoLocal = [];\n\t\tvar aApplied = [];\n\t\tvar iColumns = oSettings.aoColumns.length;\n\t\tvar iRowspan, iColspan;\n\t\n\t\tif ( ! aoSource )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif (  bIncludeHidden === undefined )\n\t\t{\n\t\t\tbIncludeHidden = false;\n\t\t}\n\t\n\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\n\t\t\t/* Remove any columns which are currently hidden */\n\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t{\n\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\taApplied.push( [] );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\n\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\tif ( nLocalTr )\n\t\t\t{\n\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tiRowspan = 1;\n\t\t\t\tiColspan = 1;\n\t\n\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t */\n\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\taApplied[i][j] = 1;\n\t\n\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t$(aoLocal[i][j].cell)\n\t\t\t\t\t\t.attr('rowspan', iRowspan)\n\t\t\t\t\t\t.attr('colspan', iColspan);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Insert the required TR nodes into the table for display\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDraw( oSettings )\n\t{\n\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t{\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar i, iLen, n;\n\t\tvar anRows = [];\n\t\tvar iRowCount = 0;\n\t\tvar asStripeClasses = oSettings.asStripeClasses;\n\t\tvar iStripes = asStripeClasses.length;\n\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\tvar oLang = oSettings.oLanguage;\n\t\tvar iInitDisplayStart = oSettings.iInitDisplayStart;\n\t\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\n\t\toSettings.bDrawing = true;\n\t\n\t\t/* Check and see if we have an initial draw position from state saving */\n\t\tif ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )\n\t\t{\n\t\t\toSettings._iDisplayStart = bServerSide ?\n\t\t\t\tiInitDisplayStart :\n\t\t\t\tiInitDisplayStart >= oSettings.fnRecordsDisplay() ?\n\t\t\t\t\t0 :\n\t\t\t\t\tiInitDisplayStart;\n\t\n\t\t\toSettings.iInitDisplayStart = -1;\n\t\t}\n\t\n\t\tvar iDisplayStart = oSettings._iDisplayStart;\n\t\tvar iDisplayEnd = oSettings.fnDisplayEnd();\n\t\n\t\t/* Server-side processing draw intercept */\n\t\tif ( oSettings.bDeferLoading )\n\t\t{\n\t\t\toSettings.bDeferLoading = false;\n\t\t\toSettings.iDraw++;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\telse if ( !bServerSide )\n\t\t{\n\t\t\toSettings.iDraw++;\n\t\t}\n\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( aiDisplay.length !== 0 )\n\t\t{\n\t\t\tvar iStart = bServerSide ? 0 : iDisplayStart;\n\t\t\tvar iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;\n\t\n\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t{\n\t\t\t\tvar iDataIndex = aiDisplay[j];\n\t\t\t\tvar aoData = oSettings.aoData[ iDataIndex ];\n\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t{\n\t\t\t\t\t_fnCreateTr( oSettings, iDataIndex );\n\t\t\t\t}\n\t\n\t\t\t\tvar nRow = aoData.nTr;\n\t\n\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t{\n\t\t\t\t\tvar sStripe = asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Row callback functions - might want to manipulate the row\n\t\t\t\t// iRowCount and j are not currently documented. Are they at all\n\t\t\t\t// useful?\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null,\n\t\t\t\t\t[nRow, aoData._aData, iRowCount, j] );\n\t\n\t\t\t\tanRows.push( nRow );\n\t\t\t\tiRowCount++;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\tif ( oSettings.iDraw == 1 &&  _fnDataSource( oSettings ) == 'ajax' )\n\t\t\t{\n\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t}\n\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t{\n\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t}\n\t\n\t\t\tanRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )\n\t\t\t\t.append( $('<td />', {\n\t\t\t\t\t'valign':  'top',\n\t\t\t\t\t'colSpan': _fnVisbleColumns( oSettings ),\n\t\t\t\t\t'class':   oSettings.oClasses.sRowEmpty\n\t\t\t\t} ).html( sZero ) )[0];\n\t\t}\n\t\n\t\t/* Header and footer callbacks */\n\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\tvar body = $(oSettings.nTBody);\n\t\n\t\tbody.children().detach();\n\t\tbody.append( $(anRows) );\n\t\n\t\t/* Call all required callback functions for the end of a draw */\n\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\toSettings.bSorted = false;\n\t\toSettings.bFiltered = false;\n\t\toSettings.bDrawing = false;\n\t}\n\t\n\t\n\t/**\n\t * Redraw the table - taking account of the various features which are enabled\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {boolean} [holdPosition] Keep the current paging position. By default\n\t *    the paging is reset to the first page\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnReDraw( settings, holdPosition )\n\t{\n\t\tvar\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tsort     = features.bSort,\n\t\t\tfilter   = features.bFilter;\n\t\n\t\tif ( sort ) {\n\t\t\t_fnSort( settings );\n\t\t}\n\t\n\t\tif ( filter ) {\n\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch );\n\t\t}\n\t\telse {\n\t\t\t// No filtering, so we want to just use the display master\n\t\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\t}\n\t\n\t\tif ( holdPosition !== true ) {\n\t\t\tsettings._iDisplayStart = 0;\n\t\t}\n\t\n\t\t// Let any modules know about the draw hold position state (used by\n\t\t// scrolling internally)\n\t\tsettings._drawHold = holdPosition;\n\t\n\t\t_fnDraw( settings );\n\t\n\t\tsettings._drawHold = false;\n\t}\n\t\n\t\n\t/**\n\t * Add the options to the page HTML for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddOptionsHtml ( oSettings )\n\t{\n\t\tvar classes = oSettings.oClasses;\n\t\tvar table = $(oSettings.nTable);\n\t\tvar holding = $('<div/>').insertBefore( table ); // Holding element for speed\n\t\tvar features = oSettings.oFeatures;\n\t\n\t\t// All DataTables are wrapped in a div\n\t\tvar insert = $('<div/>', {\n\t\t\tid:      oSettings.sTableId+'_wrapper',\n\t\t\t'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)\n\t\t} );\n\t\n\t\toSettings.nHolding = holding[0];\n\t\toSettings.nTableWrapper = insert[0];\n\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\n\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\tvar aDom = oSettings.sDom.split('');\n\t\tvar featureNode, cOption, nNewNode, cNext, sAttr, j;\n\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t{\n\t\t\tfeatureNode = null;\n\t\t\tcOption = aDom[i];\n\t\n\t\t\tif ( cOption == '<' )\n\t\t\t{\n\t\t\t\t/* New container div */\n\t\t\t\tnNewNode = $('<div/>')[0];\n\t\n\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\tcNext = aDom[i+1];\n\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t{\n\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\tj = 2;\n\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\tj++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Replace jQuery UI constants @todo depreciated */\n\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIHeader;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIFooter;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t */\n\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t}\n\t\n\t\t\t\tinsert.append( nNewNode );\n\t\t\t\tinsert = $(nNewNode);\n\t\t\t}\n\t\t\telse if ( cOption == '>' )\n\t\t\t{\n\t\t\t\t/* End container div */\n\t\t\t\tinsert = insert.parent();\n\t\t\t}\n\t\t\t// @todo Move options into their own plugins?\n\t\t\telse if ( cOption == 'l' && features.bPaginate && features.bLengthChange )\n\t\t\t{\n\t\t\t\t/* Length */\n\t\t\t\tfeatureNode = _fnFeatureHtmlLength( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'f' && features.bFilter )\n\t\t\t{\n\t\t\t\t/* Filter */\n\t\t\t\tfeatureNode = _fnFeatureHtmlFilter( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'r' && features.bProcessing )\n\t\t\t{\n\t\t\t\t/* pRocessing */\n\t\t\t\tfeatureNode = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 't' )\n\t\t\t{\n\t\t\t\t/* Table */\n\t\t\t\tfeatureNode = _fnFeatureHtmlTable( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption ==  'i' && features.bInfo )\n\t\t\t{\n\t\t\t\t/* Info */\n\t\t\t\tfeatureNode = _fnFeatureHtmlInfo( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'p' && features.bPaginate )\n\t\t\t{\n\t\t\t\t/* Pagination */\n\t\t\t\tfeatureNode = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t}\n\t\t\telse if ( DataTable.ext.feature.length !== 0 )\n\t\t\t{\n\t\t\t\t/* Plug-in features */\n\t\t\t\tvar aoFeatures = DataTable.ext.feature;\n\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t{\n\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t{\n\t\t\t\t\t\tfeatureNode = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Add to the 2D features array */\n\t\t\tif ( featureNode )\n\t\t\t{\n\t\t\t\tvar aanFeatures = oSettings.aanFeatures;\n\t\n\t\t\t\tif ( ! aanFeatures[cOption] )\n\t\t\t\t{\n\t\t\t\t\taanFeatures[cOption] = [];\n\t\t\t\t}\n\t\n\t\t\t\taanFeatures[cOption].push( featureNode );\n\t\t\t\tinsert.append( featureNode );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\tholding.replaceWith( insert );\n\t\toSettings.nHolding = null;\n\t}\n\t\n\t\n\t/**\n\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t * create a layout grid (array) of rows x columns, which contains a reference\n\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t * any column / row could be removed and the new grid constructed\n\t *  @param array {object} aLayout Array to store the calculated layout in\n\t *  @param {node} nThead The header/footer element for the table\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDetectHeader ( aLayout, nThead )\n\t{\n\t\tvar nTrs = $(nThead).children('tr');\n\t\tvar nTr, nCell;\n\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\tvar bUnique;\n\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\tvar k = a[i];\n\t                while ( k[j] ) {\n\t\t\t\tj++;\n\t\t\t}\n\t\t\treturn j;\n\t\t};\n\t\n\t\taLayout.splice( 0, aLayout.length );\n\t\n\t\t/* We know how many rows there are in the layout - so prep it */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taLayout.push( [] );\n\t\t}\n\t\n\t\t/* Calculate a layout array */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTr = nTrs[i];\n\t\t\tiColumn = 0;\n\t\n\t\t\t/* For every cell in the row... */\n\t\t\tnCell = nTr.firstChild;\n\t\t\twhile ( nCell ) {\n\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t{\n\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\n\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target\n\t\t\t\t\t * accordingly\n\t\t\t\t\t */\n\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\n\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\n\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Get an array of unique th elements, one for each column\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} nHeader automatically detect the layout from this node - optional\n\t *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t *  @returns array {node} aReturn list of unique th's\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t{\n\t\tvar aReturn = [];\n\t\tif ( !aLayout )\n\t\t{\n\t\t\taLayout = oSettings.aoHeader;\n\t\t\tif ( nHeader )\n\t\t\t{\n\t\t\t\taLayout = [];\n\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t}\n\t\t}\n\t\n\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( aLayout[i][j].unique &&\n\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t{\n\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn aReturn;\n\t}\n\t\n\t/**\n\t * Create an Ajax call based on the table's settings, taking into account that\n\t * parameters can have multiple forms, and backwards compatibility.\n\t *\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} data Data to send to the server, required by\n\t *     DataTables - may be augmented by developer callbacks\n\t * @param {function} fn Callback function to run when data is obtained\n\t */\n\tfunction _fnBuildAjax( oSettings, data, fn )\n\t{\n\t\t// Compatibility with 1.9-, allow fnServerData and event to manipulate\n\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );\n\t\n\t\t// Convert to object based for 1.10+ if using the old array scheme which can\n\t\t// come from server-side processing or serverParams\n\t\tif ( data && $.isArray(data) ) {\n\t\t\tvar tmp = {};\n\t\t\tvar rbracket = /(.*?)\\[\\]$/;\n\t\n\t\t\t$.each( data, function (key, val) {\n\t\t\t\tvar match = val.name.match(rbracket);\n\t\n\t\t\t\tif ( match ) {\n\t\t\t\t\t// Support for arrays\n\t\t\t\t\tvar name = match[0];\n\t\n\t\t\t\t\tif ( ! tmp[ name ] ) {\n\t\t\t\t\t\ttmp[ name ] = [];\n\t\t\t\t\t}\n\t\t\t\t\ttmp[ name ].push( val.value );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttmp[val.name] = val.value;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdata = tmp;\n\t\t}\n\t\n\t\tvar ajaxData;\n\t\tvar ajax = oSettings.ajax;\n\t\tvar instance = oSettings.oInstance;\n\t\tvar callback = function ( json ) {\n\t\t\t_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );\n\t\t\tfn( json );\n\t\t};\n\t\n\t\tif ( $.isPlainObject( ajax ) && ajax.data )\n\t\t{\n\t\t\tajaxData = ajax.data;\n\t\n\t\t\tvar newData = $.isFunction( ajaxData ) ?\n\t\t\t\tajaxData( data, oSettings ) :  // fn can manipulate data or return\n\t\t\t\tajaxData;                      // an object object or array to merge\n\t\n\t\t\t// If the function returned something, use that alone\n\t\t\tdata = $.isFunction( ajaxData ) && newData ?\n\t\t\t\tnewData :\n\t\t\t\t$.extend( true, data, newData );\n\t\n\t\t\t// Remove the data property as we've resolved it already and don't want\n\t\t\t// jQuery to do it again (it is restored at the end of the function)\n\t\t\tdelete ajax.data;\n\t\t}\n\t\n\t\tvar baseAjax = {\n\t\t\t\"data\": data,\n\t\t\t\"success\": function (json) {\n\t\t\t\tvar error = json.error || json.sError;\n\t\t\t\tif ( error ) {\n\t\t\t\t\t_fnLog( oSettings, 0, error );\n\t\t\t\t}\n\t\n\t\t\t\toSettings.json = json;\n\t\t\t\tcallback( json );\n\t\t\t},\n\t\t\t\"dataType\": \"json\",\n\t\t\t\"cache\": false,\n\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\tvar ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );\n\t\n\t\t\t\tif ( $.inArray( true, ret ) === -1 ) {\n\t\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t\t_fnLog( oSettings, 0, 'Invalid JSON response', 1 );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t_fnLog( oSettings, 0, 'Ajax error', 7 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t}\n\t\t};\n\t\n\t\t// Store the data submitted for the API\n\t\toSettings.oAjaxData = data;\n\t\n\t\t// Allow plug-ins and external processes to modify the data\n\t\t_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );\n\t\n\t\tif ( oSettings.fnServerData )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.fnServerData.call( instance,\n\t\t\t\toSettings.sAjaxSource,\n\t\t\t\t$.map( data, function (val, key) { // Need to convert back to 1.9 trad format\n\t\t\t\t\treturn { name: key, value: val };\n\t\t\t\t} ),\n\t\t\t\tcallback,\n\t\t\t\toSettings\n\t\t\t);\n\t\t}\n\t\telse if ( oSettings.sAjaxSource || typeof ajax === 'string' )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, {\n\t\t\t\turl: ajax || oSettings.sAjaxSource\n\t\t\t} ) );\n\t\t}\n\t\telse if ( $.isFunction( ajax ) )\n\t\t{\n\t\t\t// Is a function - let the caller define what needs to be done\n\t\t\toSettings.jqXHR = ajax.call( instance, data, callback, oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Object to extend the base settings\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );\n\t\n\t\t\t// Restore for next time around\n\t\t\tajax.data = ajaxData;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Update the table using an Ajax call\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {boolean} Block the table drawing or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdate( settings )\n\t{\n\t\tif ( settings.bAjaxDataGet ) {\n\t\t\tsettings.iDraw++;\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t_fnBuildAjax(\n\t\t\t\tsettings,\n\t\t\t\t_fnAjaxParameters( settings ),\n\t\t\t\tfunction(json) {\n\t\t\t\t\t_fnAjaxUpdateDraw( settings, json );\n\t\t\t\t}\n\t\t\t);\n\t\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\t\n\t/**\n\t * Build up the parameters in an object needed for a server-side processing\n\t * request. Note that this is basically done twice, is different ways - a modern\n\t * method which is used by default in DataTables 1.10 which uses objects and\n\t * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if\n\t * the sAjaxSource option is used in the initialisation, or the legacyAjax\n\t * option is set.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {bool} block the table drawing or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxParameters( settings )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tcolumnCount = columns.length,\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tpreSearch = settings.oPreviousSearch,\n\t\t\tpreColSearch = settings.aoPreSearchCols,\n\t\t\ti, data = [], dataProp, column, columnSearch,\n\t\t\tsort = _fnSortFlatten( settings ),\n\t\t\tdisplayStart = settings._iDisplayStart,\n\t\t\tdisplayLength = features.bPaginate !== false ?\n\t\t\t\tsettings._iDisplayLength :\n\t\t\t\t-1;\n\t\n\t\tvar param = function ( name, value ) {\n\t\t\tdata.push( { 'name': name, 'value': value } );\n\t\t};\n\t\n\t\t// DataTables 1.9- compatible method\n\t\tparam( 'sEcho',          settings.iDraw );\n\t\tparam( 'iColumns',       columnCount );\n\t\tparam( 'sColumns',       _pluck( columns, 'sName' ).join(',') );\n\t\tparam( 'iDisplayStart',  displayStart );\n\t\tparam( 'iDisplayLength', displayLength );\n\t\n\t\t// DataTables 1.10+ method\n\t\tvar d = {\n\t\t\tdraw:    settings.iDraw,\n\t\t\tcolumns: [],\n\t\t\torder:   [],\n\t\t\tstart:   displayStart,\n\t\t\tlength:  displayLength,\n\t\t\tsearch:  {\n\t\t\t\tvalue: preSearch.sSearch,\n\t\t\t\tregex: preSearch.bRegex\n\t\t\t}\n\t\t};\n\t\n\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcolumnSearch = preColSearch[i];\n\t\t\tdataProp = typeof column.mData==\"function\" ? 'function' : column.mData ;\n\t\n\t\t\td.columns.push( {\n\t\t\t\tdata:       dataProp,\n\t\t\t\tname:       column.sName,\n\t\t\t\tsearchable: column.bSearchable,\n\t\t\t\torderable:  column.bSortable,\n\t\t\t\tsearch:     {\n\t\t\t\t\tvalue: columnSearch.sSearch,\n\t\t\t\t\tregex: columnSearch.bRegex\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\tparam( \"mDataProp_\"+i, dataProp );\n\t\n\t\t\tif ( features.bFilter ) {\n\t\t\t\tparam( 'sSearch_'+i,     columnSearch.sSearch );\n\t\t\t\tparam( 'bRegex_'+i,      columnSearch.bRegex );\n\t\t\t\tparam( 'bSearchable_'+i, column.bSearchable );\n\t\t\t}\n\t\n\t\t\tif ( features.bSort ) {\n\t\t\t\tparam( 'bSortable_'+i, column.bSortable );\n\t\t\t}\n\t\t}\n\t\n\t\tif ( features.bFilter ) {\n\t\t\tparam( 'sSearch', preSearch.sSearch );\n\t\t\tparam( 'bRegex', preSearch.bRegex );\n\t\t}\n\t\n\t\tif ( features.bSort ) {\n\t\t\t$.each( sort, function ( i, val ) {\n\t\t\t\td.order.push( { column: val.col, dir: val.dir } );\n\t\n\t\t\t\tparam( 'iSortCol_'+i, val.col );\n\t\t\t\tparam( 'sSortDir_'+i, val.dir );\n\t\t\t} );\n\t\n\t\t\tparam( 'iSortingCols', sort.length );\n\t\t}\n\t\n\t\t// If the legacy.ajax parameter is null, then we automatically decide which\n\t\t// form to use, based on sAjaxSource\n\t\tvar legacy = DataTable.ext.legacy.ajax;\n\t\tif ( legacy === null ) {\n\t\t\treturn settings.sAjaxSource ? data : d;\n\t\t}\n\t\n\t\t// Otherwise, if legacy has been specified then we use that to decide on the\n\t\t// form\n\t\treturn legacy ? data : d;\n\t}\n\t\n\t\n\t/**\n\t * Data the data from the server (nuking the old) and redraw the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} json json data return from the server.\n\t *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t *  @param {array} json.aaData The data to display on this page\n\t *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdateDraw ( settings, json )\n\t{\n\t\t// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.\n\t\t// Support both\n\t\tvar compat = function ( old, modern ) {\n\t\t\treturn json[old] !== undefined ? json[old] : json[modern];\n\t\t};\n\t\n\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\tvar draw            = compat( 'sEcho',                'draw' );\n\t\tvar recordsTotal    = compat( 'iTotalRecords',        'recordsTotal' );\n\t\tvar recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );\n\t\n\t\tif ( draw ) {\n\t\t\t// Protect against out of sequence returns\n\t\t\tif ( draw*1 < settings.iDraw ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettings.iDraw = draw * 1;\n\t\t}\n\t\n\t\t_fnClearTable( settings );\n\t\tsettings._iRecordsTotal   = parseInt(recordsTotal, 10);\n\t\tsettings._iRecordsDisplay = parseInt(recordsFiltered, 10);\n\t\n\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t_fnAddData( settings, data[i] );\n\t\t}\n\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\n\t\tsettings.bAjaxDataGet = false;\n\t\t_fnDraw( settings );\n\t\n\t\tif ( ! settings._bInitComplete ) {\n\t\t\t_fnInitComplete( settings, json );\n\t\t}\n\t\n\t\tsettings.bAjaxDataGet = true;\n\t\t_fnProcessingDisplay( settings, false );\n\t}\n\t\n\t\n\t/**\n\t * Get the data from the JSON data source to use for drawing a table. Using\n\t * `_fnGetObjectDataFn` allows the data to be sourced from a property of the\n\t * source object, or from a processing function.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param  {object} json Data source object / array from the server\n\t *  @return {array} Array of data to use\n\t */\n\tfunction _fnAjaxDataSrc ( oSettings, json )\n\t{\n\t\tvar dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?\n\t\t\toSettings.ajax.dataSrc :\n\t\t\toSettings.sAjaxDataProp; // Compatibility with 1.9-.\n\t\n\t\t// Compatibility with 1.9-. In order to read from aaData, check if the\n\t\t// default has been changed, if not, check for aaData\n\t\tif ( dataSrc === 'data' ) {\n\t\t\treturn json.aaData || json[dataSrc];\n\t\t}\n\t\n\t\treturn dataSrc !== \"\" ?\n\t\t\t_fnGetObjectDataFn( dataSrc )( json ) :\n\t\t\tjson;\n\t}\n\t\n\t/**\n\t * Generate the node required for filtering text\n\t *  @returns {node} Filter control element\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlFilter ( settings )\n\t{\n\t\tvar classes = settings.oClasses;\n\t\tvar tableId = settings.sTableId;\n\t\tvar language = settings.oLanguage;\n\t\tvar previousSearch = settings.oPreviousSearch;\n\t\tvar features = settings.aanFeatures;\n\t\tvar input = '<input type=\"search\" class=\"'+classes.sFilterInput+'\"/>';\n\t\n\t\tvar str = language.sSearch;\n\t\tstr = str.match(/_INPUT_/) ?\n\t\t\tstr.replace('_INPUT_', input) :\n\t\t\tstr+input;\n\t\n\t\tvar filter = $('<div/>', {\n\t\t\t\t'id': ! features.f ? tableId+'_filter' : null,\n\t\t\t\t'class': classes.sFilter\n\t\t\t} )\n\t\t\t.append( $('<label/>' ).append( str ) );\n\t\n\t\tvar searchFn = function() {\n\t\t\t/* Update all other filter input elements for the new display */\n\t\t\tvar n = features.f;\n\t\t\tvar val = !this.value ? \"\" : this.value; // mental IE8 fix :-(\n\t\n\t\t\t/* Now do the filter */\n\t\t\tif ( val != previousSearch.sSearch ) {\n\t\t\t\t_fnFilterComplete( settings, {\n\t\t\t\t\t\"sSearch\": val,\n\t\t\t\t\t\"bRegex\": previousSearch.bRegex,\n\t\t\t\t\t\"bSmart\": previousSearch.bSmart ,\n\t\t\t\t\t\"bCaseInsensitive\": previousSearch.bCaseInsensitive\n\t\t\t\t} );\n\t\n\t\t\t\t// Need to redraw, without resorting\n\t\t\t\tsettings._iDisplayStart = 0;\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t};\n\t\n\t\tvar searchDelay = settings.searchDelay !== null ?\n\t\t\tsettings.searchDelay :\n\t\t\t_fnDataSource( settings ) === 'ssp' ?\n\t\t\t\t400 :\n\t\t\t\t0;\n\t\n\t\tvar jqFilter = $('input', filter)\n\t\t\t.val( previousSearch.sSearch )\n\t\t\t.attr( 'placeholder', language.sSearchPlaceholder )\n\t\t\t.on(\n\t\t\t\t'keyup.DT search.DT input.DT paste.DT cut.DT',\n\t\t\t\tsearchDelay ?\n\t\t\t\t\t_fnThrottle( searchFn, searchDelay ) :\n\t\t\t\t\tsearchFn\n\t\t\t)\n\t\t\t.on( 'keypress.DT', function(e) {\n\t\t\t\t/* Prevent form submission */\n\t\t\t\tif ( e.keyCode == 13 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attr('aria-controls', tableId);\n\t\n\t\t// Update the input elements whenever the table is filtered\n\t\t$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame...\n\t\t\t\ttry {\n\t\t\t\t\tif ( jqFilter[0] !== document.activeElement ) {\n\t\t\t\t\t\tjqFilter.val( previousSearch.sSearch );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {}\n\t\t\t}\n\t\t} );\n\t\n\t\treturn filter[0];\n\t}\n\t\n\t\n\t/**\n\t * Filter the table using both the global filter and column based filtering\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} oSearch search information\n\t *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t{\n\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t/* Save the filtering values */\n\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t};\n\t\tvar fnRegex = function ( o ) {\n\t\t\t// Backwards compatibility with the bEscapeRegex option\n\t\t\treturn o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;\n\t\t};\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo As per sort - can this be moved into an event handler?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' )\n\t\t{\n\t\t\t/* Global filter */\n\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\tfnSaveFilter( oInput );\n\t\n\t\t\t/* Now do the individual column filter */\n\t\t\tfor ( var i=0 ; i<aoPrevSearch.length ; i++ )\n\t\t\t{\n\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),\n\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t}\n\t\n\t\t\t/* Custom filtering */\n\t\t\t_fnFilterCustom( oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfnSaveFilter( oInput );\n\t\t}\n\t\n\t\t/* Tell the draw function we have been filtering */\n\t\toSettings.bFiltered = true;\n\t\t_fnCallbackFire( oSettings, null, 'search', [oSettings] );\n\t}\n\t\n\t\n\t/**\n\t * Apply custom filtering functions\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCustom( settings )\n\t{\n\t\tvar filters = DataTable.ext.search;\n\t\tvar displayRows = settings.aiDisplay;\n\t\tvar row, rowIdx;\n\t\n\t\tfor ( var i=0, ien=filters.length ; i<ien ; i++ ) {\n\t\t\tvar rows = [];\n\t\n\t\t\t// Loop over each row and see if it should be included\n\t\t\tfor ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {\n\t\t\t\trowIdx = displayRows[ j ];\n\t\t\t\trow = settings.aoData[ rowIdx ];\n\t\n\t\t\t\tif ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {\n\t\t\t\t\trows.push( rowIdx );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// So the array reference doesn't break set the results into the\n\t\t\t// existing array\n\t\t\tdisplayRows.length = 0;\n\t\t\t$.merge( displayRows, rows );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Filter the table on a per-column basis\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sInput string to filter on\n\t *  @param {int} iColumn column to filter\n\t *  @param {bool} bRegex treat search string as a regular expression or not\n\t *  @param {bool} bSmart use smart filtering or not\n\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )\n\t{\n\t\tif ( searchStr === '' ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar data;\n\t\tvar out = [];\n\t\tvar display = settings.aiDisplay;\n\t\tvar rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );\n\t\n\t\tfor ( var i=0 ; i<display.length ; i++ ) {\n\t\t\tdata = settings.aoData[ display[i] ]._aFilterData[ colIdx ];\n\t\n\t\t\tif ( rpSearch.test( data ) ) {\n\t\t\t\tout.push( display[i] );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aiDisplay = out;\n\t}\n\t\n\t\n\t/**\n\t * Filter the data table based on user input and draw the table\n\t *  @param {object} settings dataTables settings object\n\t *  @param {string} input string to filter on\n\t *  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)\n\t *  @param {bool} regex treat as a regular expression or not\n\t *  @param {bool} smart perform smart filtering or not\n\t *  @param {bool} caseInsensitive Do case insenstive matching or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilter( settings, input, force, regex, smart, caseInsensitive )\n\t{\n\t\tvar rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );\n\t\tvar prevSearch = settings.oPreviousSearch.sSearch;\n\t\tvar displayMaster = settings.aiDisplayMaster;\n\t\tvar display, invalidated, i;\n\t\tvar filtered = [];\n\t\n\t\t// Need to take account of custom filtering functions - always filter\n\t\tif ( DataTable.ext.search.length !== 0 ) {\n\t\t\tforce = true;\n\t\t}\n\t\n\t\t// Check if any of the rows were invalidated\n\t\tinvalidated = _fnFilterData( settings );\n\t\n\t\t// If the input is blank - we just want the full data set\n\t\tif ( input.length <= 0 ) {\n\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t}\n\t\telse {\n\t\t\t// New search - start from the master array\n\t\t\tif ( invalidated ||\n\t\t\t\t force ||\n\t\t\t\t prevSearch.length > input.length ||\n\t\t\t\t input.indexOf(prevSearch) !== 0 ||\n\t\t\t\t settings.bSorted // On resort, the display master needs to be\n\t\t\t\t                  // re-filtered since indexes will have changed\n\t\t\t) {\n\t\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t\t}\n\t\n\t\t\t// Search the display array\n\t\t\tdisplay = settings.aiDisplay;\n\t\n\t\t\tfor ( i=0 ; i<display.length ; i++ ) {\n\t\t\t\tif ( rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {\n\t\t\t\t\tfiltered.push( display[i] );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tsettings.aiDisplay = filtered;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a regular expression object suitable for searching a table\n\t *  @param {string} sSearch string to search for\n\t *  @param {bool} bRegex treat as a regular expression or not\n\t *  @param {bool} bSmart perform smart filtering or not\n\t *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t *  @returns {RegExp} constructed object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCreateSearch( search, regex, smart, caseInsensitive )\n\t{\n\t\tsearch = regex ?\n\t\t\tsearch :\n\t\t\t_fnEscapeRegex( search );\n\t\t\n\t\tif ( smart ) {\n\t\t\t/* For smart filtering we want to allow the search to work regardless of\n\t\t\t * word order. We also want double quoted text to be preserved, so word\n\t\t\t * order is important - a la google. So this is what we want to\n\t\t\t * generate:\n\t\t\t * \n\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo three\\b)(?=.*?\\bfour\\b).*$\n\t\t\t */\n\t\t\tvar a = $.map( search.match( /\"[^\"]+\"|[^ ]+/g ) || [''], function ( word ) {\n\t\t\t\tif ( word.charAt(0) === '\"' ) {\n\t\t\t\t\tvar m = word.match( /^\"(.*)\"$/ );\n\t\t\t\t\tword = m ? m[1] : word;\n\t\t\t\t}\n\t\n\t\t\t\treturn word.replace('\"', '');\n\t\t\t} );\n\t\n\t\t\tsearch = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';\n\t\t}\n\t\n\t\treturn new RegExp( search, caseInsensitive ? 'i' : '' );\n\t}\n\t\n\t\n\t/**\n\t * Escape a string such that it can be used in a regular expression\n\t *  @param {string} sVal string to escape\n\t *  @returns {string} escaped string\n\t *  @memberof DataTable#oApi\n\t */\n\tvar _fnEscapeRegex = DataTable.util.escapeRegex;\n\t\n\tvar __filter_div = $('<div>')[0];\n\tvar __filter_div_textContent = __filter_div.textContent !== undefined;\n\t\n\t// Update the filtering data for each row if needed (by invalidation or first run)\n\tfunction _fnFilterData ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar column;\n\t\tvar i, j, ien, jen, filterData, cellData, row;\n\t\tvar fomatters = DataTable.ext.type.search;\n\t\tvar wasInvalidated = false;\n\t\n\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aFilterData ) {\n\t\t\t\tfilterData = [];\n\t\n\t\t\t\tfor ( j=0, jen=columns.length ; j<jen ; j++ ) {\n\t\t\t\t\tcolumn = columns[j];\n\t\n\t\t\t\t\tif ( column.bSearchable ) {\n\t\t\t\t\t\tcellData = _fnGetCellData( settings, i, j, 'filter' );\n\t\n\t\t\t\t\t\tif ( fomatters[ column.sType ] ) {\n\t\t\t\t\t\t\tcellData = fomatters[ column.sType ]( cellData );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Search in DataTables 1.10 is string based. In 1.11 this\n\t\t\t\t\t\t// should be altered to also allow strict type checking.\n\t\t\t\t\t\tif ( cellData === null ) {\n\t\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( typeof cellData !== 'string' && cellData.toString ) {\n\t\t\t\t\t\t\tcellData = cellData.toString();\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\tcellData = '';\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If it looks like there is an HTML entity in the string,\n\t\t\t\t\t// attempt to decode it so sorting works as expected. Note that\n\t\t\t\t\t// we could use a single line of jQuery to do this, but the DOM\n\t\t\t\t\t// method used here is much faster http://jsperf.com/html-decode\n\t\t\t\t\tif ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {\n\t\t\t\t\t\t__filter_div.innerHTML = cellData;\n\t\t\t\t\t\tcellData = __filter_div_textContent ?\n\t\t\t\t\t\t\t__filter_div.textContent :\n\t\t\t\t\t\t\t__filter_div.innerText;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif ( cellData.replace ) {\n\t\t\t\t\t\tcellData = cellData.replace(/[\\r\\n]/g, '');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfilterData.push( cellData );\n\t\t\t\t}\n\t\n\t\t\t\trow._aFilterData = filterData;\n\t\t\t\trow._sFilterRow = filterData.join('  ');\n\t\t\t\twasInvalidated = true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn wasInvalidated;\n\t}\n\t\n\t\n\t/**\n\t * Convert from the internal Hungarian notation to camelCase for external\n\t * interaction\n\t *  @param {object} obj Object to convert\n\t *  @returns {object} Inverted object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToCamel ( obj )\n\t{\n\t\treturn {\n\t\t\tsearch:          obj.sSearch,\n\t\t\tsmart:           obj.bSmart,\n\t\t\tregex:           obj.bRegex,\n\t\t\tcaseInsensitive: obj.bCaseInsensitive\n\t\t};\n\t}\n\t\n\t\n\t\n\t/**\n\t * Convert from camelCase notation to the internal Hungarian. We could use the\n\t * Hungarian convert function here, but this is cleaner\n\t *  @param {object} obj Object to convert\n\t *  @returns {object} Inverted object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToHung ( obj )\n\t{\n\t\treturn {\n\t\t\tsSearch:          obj.search,\n\t\t\tbSmart:           obj.smart,\n\t\t\tbRegex:           obj.regex,\n\t\t\tbCaseInsensitive: obj.caseInsensitive\n\t\t};\n\t}\n\t\n\t/**\n\t * Generate the node required for the info display\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {node} Information element\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlInfo ( settings )\n\t{\n\t\tvar\n\t\t\ttid = settings.sTableId,\n\t\t\tnodes = settings.aanFeatures.i,\n\t\t\tn = $('<div/>', {\n\t\t\t\t'class': settings.oClasses.sInfo,\n\t\t\t\t'id': ! nodes ? tid+'_info' : null\n\t\t\t} );\n\t\n\t\tif ( ! nodes ) {\n\t\t\t// Update display on each draw\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\"sName\": \"information\"\n\t\t\t} );\n\t\n\t\t\tn\n\t\t\t\t.attr( 'role', 'status' )\n\t\t\t\t.attr( 'aria-live', 'polite' );\n\t\n\t\t\t// Table is described by our info div\n\t\t\t$(settings.nTable).attr( 'aria-describedby', tid+'_info' );\n\t\t}\n\t\n\t\treturn n[0];\n\t}\n\t\n\t\n\t/**\n\t * Update the information elements in the display\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnUpdateInfo ( settings )\n\t{\n\t\t/* Show information about the table */\n\t\tvar nodes = settings.aanFeatures.i;\n\t\tif ( nodes.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\tlang  = settings.oLanguage,\n\t\t\tstart = settings._iDisplayStart+1,\n\t\t\tend   = settings.fnDisplayEnd(),\n\t\t\tmax   = settings.fnRecordsTotal(),\n\t\t\ttotal = settings.fnRecordsDisplay(),\n\t\t\tout   = total ?\n\t\t\t\tlang.sInfo :\n\t\t\t\tlang.sInfoEmpty;\n\t\n\t\tif ( total !== max ) {\n\t\t\t/* Record set after filtering */\n\t\t\tout += ' ' + lang.sInfoFiltered;\n\t\t}\n\t\n\t\t// Convert the macros\n\t\tout += lang.sInfoPostFix;\n\t\tout = _fnInfoMacros( settings, out );\n\t\n\t\tvar callback = lang.fnInfoCallback;\n\t\tif ( callback !== null ) {\n\t\t\tout = callback.call( settings.oInstance,\n\t\t\t\tsettings, start, end, max, total, out\n\t\t\t);\n\t\t}\n\t\n\t\t$(nodes).html( out );\n\t}\n\t\n\t\n\tfunction _fnInfoMacros ( settings, str )\n\t{\n\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t// internally\n\t\tvar\n\t\t\tformatter  = settings.fnFormatNumber,\n\t\t\tstart      = settings._iDisplayStart+1,\n\t\t\tlen        = settings._iDisplayLength,\n\t\t\tvis        = settings.fnRecordsDisplay(),\n\t\t\tall        = len === -1;\n\t\n\t\treturn str.\n\t\t\treplace(/_START_/g, formatter.call( settings, start ) ).\n\t\t\treplace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).\n\t\t\treplace(/_MAX_/g,   formatter.call( settings, settings.fnRecordsTotal() ) ).\n\t\t\treplace(/_TOTAL_/g, formatter.call( settings, vis ) ).\n\t\t\treplace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).\n\t\t\treplace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );\n\t}\n\t\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnInitialise ( settings )\n\t{\n\t\tvar i, iLen, iAjaxStart=settings.iInitDisplayStart;\n\t\tvar columns = settings.aoColumns, column;\n\t\tvar features = settings.oFeatures;\n\t\tvar deferLoading = settings.bDeferLoading; // value modified by the draw\n\t\n\t\t/* Ensure that the table data is fully initialised */\n\t\tif ( ! settings.bInitialised ) {\n\t\t\tsetTimeout( function(){ _fnInitialise( settings ); }, 200 );\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Show the display HTML options */\n\t\t_fnAddOptionsHtml( settings );\n\t\n\t\t/* Build and draw the header / footer for the table */\n\t\t_fnBuildHead( settings );\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t/* Okay to show that something is going on now */\n\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t/* Calculate sizes for columns */\n\t\tif ( features.bAutoWidth ) {\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=columns.length ; i<iLen ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\n\t\t\tif ( column.sWidth ) {\n\t\t\t\tcolumn.nTh.style.width = _fnStringToCss( column.sWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'preInit', [settings] );\n\t\n\t\t// If there is default sorting required - let's do it. The sort function\n\t\t// will do the drawing for us. Otherwise we draw the table regardless of the\n\t\t// Ajax source - this allows the table to look initialised for Ajax sourcing\n\t\t// data (show 'loading' message possibly)\n\t\t_fnReDraw( settings );\n\t\n\t\t// Server-side processing init complete is done by _fnAjaxUpdateDraw\n\t\tvar dataSrc = _fnDataSource( settings );\n\t\tif ( dataSrc != 'ssp' || deferLoading ) {\n\t\t\t// if there is an ajax source load the data\n\t\t\tif ( dataSrc == 'ajax' ) {\n\t\t\t\t_fnBuildAjax( settings, [], function(json) {\n\t\t\t\t\tvar aData = _fnAjaxDataSrc( settings, json );\n\t\n\t\t\t\t\t// Got the data - add it to the table\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( settings, aData[i] );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Reset the init display for cookie saving. We've already done\n\t\t\t\t\t// a filter, and therefore cleared it before. So we need to make\n\t\t\t\t\t// it appear 'fresh'\n\t\t\t\t\tsettings.iInitDisplayStart = iAjaxStart;\n\t\n\t\t\t\t\t_fnReDraw( settings );\n\t\n\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t_fnInitComplete( settings, json );\n\t\t\t\t}, settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t_fnInitComplete( settings );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t *    with client-side processing (optional)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnInitComplete ( settings, json )\n\t{\n\t\tsettings._bInitComplete = true;\n\t\n\t\t// When data was added after the initialisation (data or Ajax) we need to\n\t\t// calculate the column sizing\n\t\tif ( json || settings.oInit.aaData ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'plugin-init', [settings, json] );\n\t\t_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );\n\t}\n\t\n\t\n\tfunction _fnLengthChange ( settings, val )\n\t{\n\t\tvar len = parseInt( val, 10 );\n\t\tsettings._iDisplayLength = len;\n\t\n\t\t_fnLengthOverflow( settings );\n\t\n\t\t// Fire length change event\n\t\t_fnCallbackFire( settings, null, 'length', [settings, len] );\n\t}\n\t\n\t\n\t/**\n\t * Generate the node required for user display length changing\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Display length feature node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlLength ( settings )\n\t{\n\t\tvar\n\t\t\tclasses  = settings.oClasses,\n\t\t\ttableId  = settings.sTableId,\n\t\t\tmenu     = settings.aLengthMenu,\n\t\t\td2       = $.isArray( menu[0] ),\n\t\t\tlengths  = d2 ? menu[0] : menu,\n\t\t\tlanguage = d2 ? menu[1] : menu;\n\t\n\t\tvar select = $('<select/>', {\n\t\t\t'name':          tableId+'_length',\n\t\t\t'aria-controls': tableId,\n\t\t\t'class':         classes.sLengthSelect\n\t\t} );\n\t\n\t\tfor ( var i=0, ien=lengths.length ; i<ien ; i++ ) {\n\t\t\tselect[0][ i ] = new Option(\n\t\t\t\ttypeof language[i] === 'number' ?\n\t\t\t\t\tsettings.fnFormatNumber( language[i] ) :\n\t\t\t\t\tlanguage[i],\n\t\t\t\tlengths[i]\n\t\t\t);\n\t\t}\n\t\n\t\tvar div = $('<div><label/></div>').addClass( classes.sLength );\n\t\tif ( ! settings.aanFeatures.l ) {\n\t\t\tdiv[0].id = tableId+'_length';\n\t\t}\n\t\n\t\tdiv.children().append(\n\t\t\tsettings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )\n\t\t);\n\t\n\t\t// Can't use `select` variable as user might provide their own and the\n\t\t// reference is broken by the use of outerHTML\n\t\t$('select', div)\n\t\t\t.val( settings._iDisplayLength )\n\t\t\t.on( 'change.DT', function(e) {\n\t\t\t\t_fnLengthChange( settings, $(this).val() );\n\t\t\t\t_fnDraw( settings );\n\t\t\t} );\n\t\n\t\t// Update node value whenever anything changes the table's length\n\t\t$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t$('select', div).val( len );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn div[0];\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Note that most of the paging logic is done in\n\t * DataTable.ext.pager\n\t */\n\t\n\t/**\n\t * Generate the node required for default pagination\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {node} Pagination feature node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlPaginate ( settings )\n\t{\n\t\tvar\n\t\t\ttype   = settings.sPaginationType,\n\t\t\tplugin = DataTable.ext.pager[ type ],\n\t\t\tmodern = typeof plugin === 'function',\n\t\t\tredraw = function( settings ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t},\n\t\t\tnode = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],\n\t\t\tfeatures = settings.aanFeatures;\n\t\n\t\tif ( ! modern ) {\n\t\t\tplugin.fnInit( settings, node, redraw );\n\t\t}\n\t\n\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\tif ( ! features.p )\n\t\t{\n\t\t\tnode.id = settings.sTableId+'_paginate';\n\t\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": function( settings ) {\n\t\t\t\t\tif ( modern ) {\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\tstart      = settings._iDisplayStart,\n\t\t\t\t\t\t\tlen        = settings._iDisplayLength,\n\t\t\t\t\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\t\t\t\t\tall        = len === -1,\n\t\t\t\t\t\t\tpage = all ? 0 : Math.ceil( start / len ),\n\t\t\t\t\t\t\tpages = all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\t\t\t\tbuttons = plugin(page, pages),\n\t\t\t\t\t\t\ti, ien;\n\t\n\t\t\t\t\t\tfor ( i=0, ien=features.p.length ; i<ien ; i++ ) {\n\t\t\t\t\t\t\t_fnRenderer( settings, 'pageButton' )(\n\t\t\t\t\t\t\t\tsettings, features.p[i], i, buttons, page, pages\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\tplugin.fnUpdate( settings, redraw );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"sName\": \"pagination\"\n\t\t\t} );\n\t\t}\n\t\n\t\treturn node;\n\t}\n\t\n\t\n\t/**\n\t * Alter the display settings to change the page\n\t *  @param {object} settings DataTables settings object\n\t *  @param {string|int} action Paging action to take: \"first\", \"previous\",\n\t *    \"next\" or \"last\" or page number to jump to (integer)\n\t *  @param [bool] redraw Automatically draw the update or not\n\t *  @returns {bool} true page has changed, false - no change\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnPageChange ( settings, action, redraw )\n\t{\n\t\tvar\n\t\t\tstart     = settings._iDisplayStart,\n\t\t\tlen       = settings._iDisplayLength,\n\t\t\trecords   = settings.fnRecordsDisplay();\n\t\n\t\tif ( records === 0 || len === -1 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( typeof action === \"number\" )\n\t\t{\n\t\t\tstart = action * len;\n\t\n\t\t\tif ( start > records )\n\t\t\t{\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"first\" )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( action == \"previous\" )\n\t\t{\n\t\t\tstart = len >= 0 ?\n\t\t\t\tstart - len :\n\t\t\t\t0;\n\t\n\t\t\tif ( start < 0 )\n\t\t\t{\n\t\t\t  start = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"next\" )\n\t\t{\n\t\t\tif ( start + len < records )\n\t\t\t{\n\t\t\t\tstart += len;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"last\" )\n\t\t{\n\t\t\tstart = Math.floor( (records-1) / len) * len;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( settings, 0, \"Unknown paging action: \"+action, 5 );\n\t\t}\n\t\n\t\tvar changed = settings._iDisplayStart !== start;\n\t\tsettings._iDisplayStart = start;\n\t\n\t\tif ( changed ) {\n\t\t\t_fnCallbackFire( settings, null, 'page', [settings] );\n\t\n\t\t\tif ( redraw ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\treturn changed;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Generate the node required for the processing node\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Processing element\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlProcessing ( settings )\n\t{\n\t\treturn $('<div/>', {\n\t\t\t\t'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,\n\t\t\t\t'class': settings.oClasses.sProcessing\n\t\t\t} )\n\t\t\t.html( settings.oLanguage.sProcessing )\n\t\t\t.insertBefore( settings.nTable )[0];\n\t}\n\t\n\t\n\t/**\n\t * Display or hide the processing indicator\n\t *  @param {object} settings dataTables settings object\n\t *  @param {bool} show Show the processing indicator (true) or not (false)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnProcessingDisplay ( settings, show )\n\t{\n\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'processing', [settings, show] );\n\t}\n\t\n\t/**\n\t * Add any control elements for the table - specifically scrolling\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Node to add to the DOM\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlTable ( settings )\n\t{\n\t\tvar table = $(settings.nTable);\n\t\n\t\t// Add the ARIA grid role to the table\n\t\ttable.attr( 'role', 'grid' );\n\t\n\t\t// Scrolling from here on in\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX === '' && scroll.sY === '' ) {\n\t\t\treturn settings.nTable;\n\t\t}\n\t\n\t\tvar scrollX = scroll.sX;\n\t\tvar scrollY = scroll.sY;\n\t\tvar classes = settings.oClasses;\n\t\tvar caption = table.children('caption');\n\t\tvar captionSide = caption.length ? caption[0]._captionSide : null;\n\t\tvar headerClone = $( table[0].cloneNode(false) );\n\t\tvar footerClone = $( table[0].cloneNode(false) );\n\t\tvar footer = table.children('tfoot');\n\t\tvar _div = '<div/>';\n\t\tvar size = function ( s ) {\n\t\t\treturn !s ? null : _fnStringToCss( s );\n\t\t};\n\t\n\t\tif ( ! footer.length ) {\n\t\t\tfooter = null;\n\t\t}\n\t\n\t\t/*\n\t\t * The HTML structure that we want to generate in this function is:\n\t\t *  div - scroller\n\t\t *    div - scroll head\n\t\t *      div - scroll head inner\n\t\t *        table - scroll head table\n\t\t *          thead - thead\n\t\t *    div - scroll body\n\t\t *      table - table (master table)\n\t\t *        thead - thead clone for sizing\n\t\t *        tbody - tbody\n\t\t *    div - scroll foot\n\t\t *      div - scroll foot inner\n\t\t *        table - scroll foot table\n\t\t *          tfoot - tfoot\n\t\t */\n\t\tvar scroller = $( _div, { 'class': classes.sScrollWrapper } )\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollHead } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollHeadInner } )\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t'box-sizing': 'content-box',\n\t\t\t\t\t\t\t\twidth: scroll.sXInner || '100%'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\theaderClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'top' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('thead')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollBody } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\twidth: size( scrollX )\n\t\t\t\t\t} )\n\t\t\t\t\t.append( table )\n\t\t\t);\n\t\n\t\tif ( footer ) {\n\t\t\tscroller.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollFoot } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollFootInner } )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\tfooterClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'bottom' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('tfoot')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\n\t\tvar children = scroller.children();\n\t\tvar scrollHead = children[0];\n\t\tvar scrollBody = children[1];\n\t\tvar scrollFoot = footer ? children[2] : null;\n\t\n\t\t// When the body is scrolled, then we also want to scroll the headers\n\t\tif ( scrollX ) {\n\t\t\t$(scrollBody).on( 'scroll.DT', function (e) {\n\t\t\t\tvar scrollLeft = this.scrollLeft;\n\t\n\t\t\t\tscrollHead.scrollLeft = scrollLeft;\n\t\n\t\t\t\tif ( footer ) {\n\t\t\t\t\tscrollFoot.scrollLeft = scrollLeft;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\n\t\t$(scrollBody).css(\n\t\t\tscrollY && scroll.bCollapse ? 'max-height' : 'height', \n\t\t\tscrollY\n\t\t);\n\t\n\t\tsettings.nScrollHead = scrollHead;\n\t\tsettings.nScrollBody = scrollBody;\n\t\tsettings.nScrollFoot = scrollFoot;\n\t\n\t\t// On redraw - align columns\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\"sName\": \"scrolling\"\n\t\t} );\n\t\n\t\treturn scroller[0];\n\t}\n\t\n\t\n\t\n\t/**\n\t * Update the header, footer and body tables for resizing - i.e. column\n\t * alignment.\n\t *\n\t * Welcome to the most horrible function DataTables. The process that this\n\t * function follows is basically:\n\t *   1. Re-create the table inside the scrolling div\n\t *   2. Take live measurements from the DOM\n\t *   3. Apply the measurements to align the columns\n\t *   4. Clean up\n\t *\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollDraw ( settings )\n\t{\n\t\t// Given that this is such a monster function, a lot of variables are use\n\t\t// to try and keep the minimised size as small as possible\n\t\tvar\n\t\t\tscroll         = settings.oScroll,\n\t\t\tscrollX        = scroll.sX,\n\t\t\tscrollXInner   = scroll.sXInner,\n\t\t\tscrollY        = scroll.sY,\n\t\t\tbarWidth       = scroll.iBarWidth,\n\t\t\tdivHeader      = $(settings.nScrollHead),\n\t\t\tdivHeaderStyle = divHeader[0].style,\n\t\t\tdivHeaderInner = divHeader.children('div'),\n\t\t\tdivHeaderInnerStyle = divHeaderInner[0].style,\n\t\t\tdivHeaderTable = divHeaderInner.children('table'),\n\t\t\tdivBodyEl      = settings.nScrollBody,\n\t\t\tdivBody        = $(divBodyEl),\n\t\t\tdivBodyStyle   = divBodyEl.style,\n\t\t\tdivFooter      = $(settings.nScrollFoot),\n\t\t\tdivFooterInner = divFooter.children('div'),\n\t\t\tdivFooterTable = divFooterInner.children('table'),\n\t\t\theader         = $(settings.nTHead),\n\t\t\ttable          = $(settings.nTable),\n\t\t\ttableEl        = table[0],\n\t\t\ttableStyle     = tableEl.style,\n\t\t\tfooter         = settings.nTFoot ? $(settings.nTFoot) : null,\n\t\t\tbrowser        = settings.oBrowser,\n\t\t\tie67           = browser.bScrollOversize,\n\t\t\tdtHeaderCells  = _pluck( settings.aoColumns, 'nTh' ),\n\t\t\theaderTrgEls, footerTrgEls,\n\t\t\theaderSrcEls, footerSrcEls,\n\t\t\theaderCopy, footerCopy,\n\t\t\theaderWidths=[], footerWidths=[],\n\t\t\theaderContent=[], footerContent=[],\n\t\t\tidx, correction, sanityWidth,\n\t\t\tzeroOut = function(nSizer) {\n\t\t\t\tvar style = nSizer.style;\n\t\t\t\tstyle.paddingTop = \"0\";\n\t\t\t\tstyle.paddingBottom = \"0\";\n\t\t\t\tstyle.borderTopWidth = \"0\";\n\t\t\t\tstyle.borderBottomWidth = \"0\";\n\t\t\t\tstyle.height = 0;\n\t\t\t};\n\t\n\t\t// If the scrollbar visibility has changed from the last draw, we need to\n\t\t// adjust the column sizes as the table width will have changed to account\n\t\t// for the scrollbar\n\t\tvar scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;\n\t\t\n\t\tif ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t\treturn; // adjust column sizing will call this function again\n\t\t}\n\t\telse {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t}\n\t\n\t\t/*\n\t\t * 1. Re-create the table inside the scrolling div\n\t\t */\n\t\n\t\t// Remove the old minimised thead and tfoot elements in the inner table\n\t\ttable.children('thead, tfoot').remove();\n\t\n\t\tif ( footer ) {\n\t\t\tfooterCopy = footer.clone().prependTo( table );\n\t\t\tfooterTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized\n\t\t\tfooterSrcEls = footerCopy.find('tr');\n\t\t}\n\t\n\t\t// Clone the current header and footer elements and then place it into the inner table\n\t\theaderCopy = header.clone().prependTo( table );\n\t\theaderTrgEls = header.find('tr'); // original header is in its own table\n\t\theaderSrcEls = headerCopy.find('tr');\n\t\theaderCopy.find('th, td').removeAttr('tabindex');\n\t\n\t\n\t\t/*\n\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t */\n\t\n\t\t// Remove old sizing and apply the calculated column widths\n\t\t// Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t// calculated sizes to this header\n\t\tif ( ! scrollX )\n\t\t{\n\t\t\tdivBodyStyle.width = '100%';\n\t\t\tdivHeader[0].style.width = '100%';\n\t\t}\n\t\n\t\t$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {\n\t\t\tidx = _fnVisibleToColumnIndex( settings, i );\n\t\t\tel.style.width = settings.aoColumns[idx].sWidth;\n\t\t} );\n\t\n\t\tif ( footer ) {\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Size the table as a whole\n\t\tsanityWidth = table.outerWidth();\n\t\tif ( scrollX === \"\" ) {\n\t\t\t// No x scrolling\n\t\t\ttableStyle.width = \"100%\";\n\t\n\t\t\t// IE7 will make the width of the table when 100% include the scrollbar\n\t\t\t// - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t// into account.\n\t\t\tif ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);\n\t\t\t}\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\telse if ( scrollXInner !== \"\" ) {\n\t\t\t// legacy x scroll inner has been given - use it\n\t\t\ttableStyle.width = _fnStringToCss(scrollXInner);\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\n\t\t// Hidden header should have zero height, so remove padding and borders. Then\n\t\t// set the width based on the real headers\n\t\n\t\t// Apply all styles in one pass\n\t\t_fnApplyToChildren( zeroOut, headerSrcEls );\n\t\n\t\t// Read all widths in next pass\n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\theaderContent.push( nSizer.innerHTML );\n\t\t\theaderWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t}, headerSrcEls );\n\t\n\t\t// Apply all widths in final pass\n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t// Only apply widths to the DataTables detected header cells - this\n\t\t\t// prevents complex headers from having contradictory sizes applied\n\t\t\tif ( $.inArray( nToSize, dtHeaderCells ) !== -1 ) {\n\t\t\t\tnToSize.style.width = headerWidths[i];\n\t\t\t}\n\t\t}, headerTrgEls );\n\t\n\t\t$(headerSrcEls).height(0);\n\t\n\t\t/* Same again with the footer if we have one */\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( zeroOut, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\tfooterContent.push( nSizer.innerHTML );\n\t\t\t\tfooterWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t\t}, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = footerWidths[i];\n\t\t\t}, footerTrgEls );\n\t\n\t\t\t$(footerSrcEls).height(0);\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 3. Apply the measurements\n\t\t */\n\t\n\t\t// \"Hide\" the header and footer that we used for the sizing. We need to keep\n\t\t// the content of the cell so that the width applied to the header and body\n\t\t// both match, but we want to hide it completely. We want to also fix their\n\t\t// width to what they currently are\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\" style=\"height:0;overflow:hidden;\">'+headerContent[i]+'</div>';\n\t\t\tnSizer.style.width = headerWidths[i];\n\t\t}, headerSrcEls );\n\t\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\" style=\"height:0;overflow:hidden;\">'+footerContent[i]+'</div>';\n\t\t\t\tnSizer.style.width = footerWidths[i];\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t// misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\tif ( table.outerWidth() < sanityWidth )\n\t\t{\n\t\t\t// The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\tcorrection = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\tsanityWidth+barWidth :\n\t\t\t\t\tsanityWidth;\n\t\n\t\t\t// IE6/7 are a law unto themselves...\n\t\t\tif ( ie67 && (divBodyEl.scrollHeight >\n\t\t\t\tdivBodyEl.offsetHeight || divBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( correction-barWidth );\n\t\t\t}\n\t\n\t\t\t// And give the user a warning that we've stopped the table getting too small\n\t\t\tif ( scrollX === \"\" || scrollXInner !== \"\" ) {\n\t\t\t\t_fnLog( settings, 1, 'Possible column misalignment', 6 );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcorrection = '100%';\n\t\t}\n\t\n\t\t// Apply to the container elements\n\t\tdivBodyStyle.width = _fnStringToCss( correction );\n\t\tdivHeaderStyle.width = _fnStringToCss( correction );\n\t\n\t\tif ( footer ) {\n\t\t\tsettings.nScrollFoot.style.width = _fnStringToCss( correction );\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 4. Clean up\n\t\t */\n\t\tif ( ! scrollY ) {\n\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t */\n\t\t\tif ( ie67 ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Finally set the width's of the header and footer tables */\n\t\tvar iOuterWidth = table.outerWidth();\n\t\tdivHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );\n\t\n\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\tvar bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == \"scroll\";\n\t\tvar padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );\n\t\tdivHeaderInnerStyle[ padding ] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\n\t\tif ( footer ) {\n\t\t\tdivFooterTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style[padding] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\t}\n\t\n\t\t// Correct DOM ordering for colgroup - comes before the thead\n\t\ttable.children('colgroup').insertBefore( table.children('thead') );\n\t\n\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\tdivBody.scroll();\n\t\n\t\t// If sorting or filtering has occurred, jump the scrolling back to the top\n\t\t// only if we aren't holding the position\n\t\tif ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {\n\t\t\tdivBodyEl.scrollTop = 0;\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Apply a given function to the display child nodes of an element array (typically\n\t * TD children of TR rows\n\t *  @param {function} fn Method to apply to the objects\n\t *  @param array {nodes} an1 List of elements to look through for display children\n\t *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t{\n\t\tvar index=0, i=0, iLen=an1.length;\n\t\tvar nNode1, nNode2;\n\t\n\t\twhile ( i < iLen ) {\n\t\t\tnNode1 = an1[i].firstChild;\n\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\n\t\t\twhile ( nNode1 ) {\n\t\t\t\tif ( nNode1.nodeType === 1 ) {\n\t\t\t\t\tif ( an2 ) {\n\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\n\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t}\n\t}\n\t\n\t\n\t\n\tvar __re_html_remove = /<.*?>/g;\n\t\n\t\n\t/**\n\t * Calculate the width of columns for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCalculateColumnWidths ( oSettings )\n\t{\n\t\tvar\n\t\t\ttable = oSettings.nTable,\n\t\t\tcolumns = oSettings.aoColumns,\n\t\t\tscroll = oSettings.oScroll,\n\t\t\tscrollY = scroll.sY,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tcolumnCount = columns.length,\n\t\t\tvisibleColumns = _fnGetColumns( oSettings, 'bVisible' ),\n\t\t\theaderCells = $('th', oSettings.nTHead),\n\t\t\ttableWidthAttr = table.getAttribute('width'), // from DOM element\n\t\t\ttableContainer = table.parentNode,\n\t\t\tuserInputs = false,\n\t\t\ti, column, columnIdx, width, outerWidth,\n\t\t\tbrowser = oSettings.oBrowser,\n\t\t\tie67 = browser.bScrollOversize;\n\t\n\t\tvar styleWidth = table.style.width;\n\t\tif ( styleWidth && styleWidth.indexOf('%') !== -1 ) {\n\t\t\ttableWidthAttr = styleWidth;\n\t\t}\n\t\n\t\t/* Convert any user input sizes into pixel sizes */\n\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\tif ( column.sWidth !== null ) {\n\t\t\t\tcolumn.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );\n\t\n\t\t\t\tuserInputs = true;\n\t\t\t}\n\t\t}\n\t\n\t\t/* If the number of columns in the DOM equals the number that we have to\n\t\t * process in DataTables, then we can use the offsets that are created by\n\t\t * the web- browser. No custom sizes can be set in order for this to happen,\n\t\t * nor scrolling used\n\t\t */\n\t\tif ( ie67 || ! userInputs && ! scrollX && ! scrollY &&\n\t\t     columnCount == _fnVisbleColumns( oSettings ) &&\n\t\t     columnCount == headerCells.length\n\t\t) {\n\t\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\t\tvar colIdx = _fnVisibleToColumnIndex( oSettings, i );\n\t\n\t\t\t\tif ( colIdx !== null ) {\n\t\t\t\t\tcolumns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Otherwise construct a single row, worst case, table with the widest\n\t\t\t// node in the data, assign any user defined widths, then insert it into\n\t\t\t// the DOM and allow the browser to do all the hard work of calculating\n\t\t\t// table widths\n\t\t\tvar tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table\n\t\t\t\t.css( 'visibility', 'hidden' )\n\t\t\t\t.removeAttr( 'id' );\n\t\n\t\t\t// Clean up the table body\n\t\t\ttmpTable.find('tbody tr').remove();\n\t\t\tvar tr = $('<tr/>').appendTo( tmpTable.find('tbody') );\n\t\n\t\t\t// Clone the table header and footer - we can't use the header / footer\n\t\t\t// from the cloned table, since if scrolling is active, the table's\n\t\t\t// real header and footer are contained in different table tags\n\t\t\ttmpTable.find('thead, tfoot').remove();\n\t\t\ttmpTable\n\t\t\t\t.append( $(oSettings.nTHead).clone() )\n\t\t\t\t.append( $(oSettings.nTFoot).clone() );\n\t\n\t\t\t// Remove any assigned widths from the footer (from scrolling)\n\t\t\ttmpTable.find('tfoot th, tfoot td').css('width', '');\n\t\n\t\t\t// Apply custom sizing to the cloned header\n\t\t\theaderCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );\n\t\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\t\theaderCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?\n\t\t\t\t\t_fnStringToCss( column.sWidthOrig ) :\n\t\t\t\t\t'';\n\t\n\t\t\t\t// For scrollX we need to force the column width otherwise the\n\t\t\t\t// browser will collapse it. If this width is smaller than the\n\t\t\t\t// width the column requires, then it will have no effect\n\t\t\t\tif ( column.sWidthOrig && scrollX ) {\n\t\t\t\t\t$( headerCells[i] ).append( $('<div/>').css( {\n\t\t\t\t\t\twidth: column.sWidthOrig,\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\theight: 1\n\t\t\t\t\t} ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Find the widest cell for each column and put it into the table\n\t\t\tif ( oSettings.aoData.length ) {\n\t\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\t\tcolumnIdx = visibleColumns[i];\n\t\t\t\t\tcolumn = columns[ columnIdx ];\n\t\n\t\t\t\t\t$( _fnGetWidestNode( oSettings, columnIdx ) )\n\t\t\t\t\t\t.clone( false )\n\t\t\t\t\t\t.append( column.sContentPadding )\n\t\t\t\t\t\t.appendTo( tr );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Tidy the temporary table - remove name attributes so there aren't\n\t\t\t// duplicated in the dom (radio elements for example)\n\t\t\t$('[name]', tmpTable).removeAttr('name');\n\t\n\t\t\t// Table has been built, attach to the document so we can work with it.\n\t\t\t// A holding element is used, positioned at the top of the container\n\t\t\t// with minimal height, so it has no effect on if the container scrolls\n\t\t\t// or not. Otherwise it might trigger scrolling when it actually isn't\n\t\t\t// needed\n\t\t\tvar holder = $('<div/>').css( scrollX || scrollY ?\n\t\t\t\t\t{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t\t} :\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t\t.append( tmpTable )\n\t\t\t\t.appendTo( tableContainer );\n\t\n\t\t\t// When scrolling (X or Y) we want to set the width of the table as \n\t\t\t// appropriate. However, when not scrolling leave the table width as it\n\t\t\t// is. This results in slightly different, but I think correct behaviour\n\t\t\tif ( scrollX && scrollXInner ) {\n\t\t\t\ttmpTable.width( scrollXInner );\n\t\t\t}\n\t\t\telse if ( scrollX ) {\n\t\t\t\ttmpTable.css( 'width', 'auto' );\n\t\t\t\ttmpTable.removeAttr('width');\n\t\n\t\t\t\t// If there is no width attribute or style, then allow the table to\n\t\t\t\t// collapse\n\t\t\t\tif ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {\n\t\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( scrollY ) {\n\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t}\n\t\t\telse if ( tableWidthAttr ) {\n\t\t\t\ttmpTable.width( tableWidthAttr );\n\t\t\t}\n\t\n\t\t\t// Get the width of each column in the constructed table - we need to\n\t\t\t// know the inner width (so it can be assigned to the other table's\n\t\t\t// cells) and the outer width so we can calculate the full width of the\n\t\t\t// table. This is safe since DataTables requires a unique cell for each\n\t\t\t// column, but if ever a header can span multiple columns, this will\n\t\t\t// need to be modified.\n\t\t\tvar total = 0;\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tvar cell = $(headerCells[i]);\n\t\t\t\tvar border = cell.outerWidth() - cell.width();\n\t\n\t\t\t\t// Use getBounding... where possible (not IE8-) because it can give\n\t\t\t\t// sub-pixel accuracy, which we then want to round up!\n\t\t\t\tvar bounding = browser.bBounding ?\n\t\t\t\t\tMath.ceil( headerCells[i].getBoundingClientRect().width ) :\n\t\t\t\t\tcell.outerWidth();\n\t\n\t\t\t\t// Total is tracked to remove any sub-pixel errors as the outerWidth\n\t\t\t\t// of the table might not equal the total given here (IE!).\n\t\t\t\ttotal += bounding;\n\t\n\t\t\t\t// Width for each column to use\n\t\t\t\tcolumns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding - border );\n\t\t\t}\n\t\n\t\t\ttable.style.width = _fnStringToCss( total );\n\t\n\t\t\t// Finished with the table - ditch it\n\t\t\tholder.remove();\n\t\t}\n\t\n\t\t// If there is a width attr, we want to attach an event listener which\n\t\t// allows the table sizing to automatically adjust when the window is\n\t\t// resized. Use the width attr rather than CSS, since we can't know if the\n\t\t// CSS is a relative value or absolute - DOM read is always px.\n\t\tif ( tableWidthAttr ) {\n\t\t\ttable.style.width = _fnStringToCss( tableWidthAttr );\n\t\t}\n\t\n\t\tif ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {\n\t\t\tvar bindResize = function () {\n\t\t\t\t$(window).on('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {\n\t\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\t} ) );\n\t\t\t};\n\t\n\t\t\t// IE6/7 will crash if we bind a resize event handler on page load.\n\t\t\t// To be removed in 1.11 which drops IE6/7 support\n\t\t\tif ( ie67 ) {\n\t\t\t\tsetTimeout( bindResize, 1000 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbindResize();\n\t\t\t}\n\t\n\t\t\toSettings._reszEvt = true;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Throttle the calls to a function. Arguments and context are maintained for\n\t * the throttled function\n\t *  @param {function} fn Function to be called\n\t *  @param {int} [freq=200] call frequency in mS\n\t *  @returns {function} wrapped function\n\t *  @memberof DataTable#oApi\n\t */\n\tvar _fnThrottle = DataTable.util.throttle;\n\t\n\t\n\t/**\n\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t *  @param {string} width width to be converted\n\t *  @param {node} parent parent to get the with for (required for relative widths) - optional\n\t *  @returns {int} width in pixels\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnConvertToWidth ( width, parent )\n\t{\n\t\tif ( ! width ) {\n\t\t\treturn 0;\n\t\t}\n\t\n\t\tvar n = $('<div/>')\n\t\t\t.css( 'width', _fnStringToCss( width ) )\n\t\t\t.appendTo( parent || document.body );\n\t\n\t\tvar val = n[0].offsetWidth;\n\t\tn.remove();\n\t\n\t\treturn val;\n\t}\n\t\n\t\n\t/**\n\t * Get the widest node\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} colIdx column of interest\n\t *  @returns {node} widest table node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetWidestNode( settings, colIdx )\n\t{\n\t\tvar idx = _fnGetMaxLenString( settings, colIdx );\n\t\tif ( idx < 0 ) {\n\t\t\treturn null;\n\t\t}\n\t\n\t\tvar data = settings.aoData[ idx ];\n\t\treturn ! data.nTr ? // Might not have been created when deferred rendering\n\t\t\t$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :\n\t\t\tdata.anCells[ colIdx ];\n\t}\n\t\n\t\n\t/**\n\t * Get the maximum strlen for each data column\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} colIdx column of interest\n\t *  @returns {string} max string length for each column\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetMaxLenString( settings, colIdx )\n\t{\n\t\tvar s, max=-1, maxIdx = -1;\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\ts = _fnGetCellData( settings, i, colIdx, 'display' )+'';\n\t\t\ts = s.replace( __re_html_remove, '' );\n\t\t\ts = s.replace( /&nbsp;/g, ' ' );\n\t\n\t\t\tif ( s.length > max ) {\n\t\t\t\tmax = s.length;\n\t\t\t\tmaxIdx = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn maxIdx;\n\t}\n\t\n\t\n\t/**\n\t * Append a CSS unit (only if required) to a string\n\t *  @param {string} value to css-ify\n\t *  @returns {string} value with css unit\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnStringToCss( s )\n\t{\n\t\tif ( s === null ) {\n\t\t\treturn '0px';\n\t\t}\n\t\n\t\tif ( typeof s == 'number' ) {\n\t\t\treturn s < 0 ?\n\t\t\t\t'0px' :\n\t\t\t\ts+'px';\n\t\t}\n\t\n\t\t// Check it has a unit character already\n\t\treturn s.match(/\\d$/) ?\n\t\t\ts+'px' :\n\t\t\ts;\n\t}\n\t\n\t\n\t\n\tfunction _fnSortFlatten ( settings )\n\t{\n\t\tvar\n\t\t\ti, iLen, k, kLen,\n\t\t\taSort = [],\n\t\t\taiOrig = [],\n\t\t\taoColumns = settings.aoColumns,\n\t\t\taDataSort, iCol, sType, srcCol,\n\t\t\tfixed = settings.aaSortingFixed,\n\t\t\tfixedObj = $.isPlainObject( fixed ),\n\t\t\tnestedSort = [],\n\t\t\tadd = function ( a ) {\n\t\t\t\tif ( a.length && ! $.isArray( a[0] ) ) {\n\t\t\t\t\t// 1D array\n\t\t\t\t\tnestedSort.push( a );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// 2D array\n\t\t\t\t\t$.merge( nestedSort, a );\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t// Build the sort array, with pre-fix and post-fix options if they have been\n\t\t// specified\n\t\tif ( $.isArray( fixed ) ) {\n\t\t\tadd( fixed );\n\t\t}\n\t\n\t\tif ( fixedObj && fixed.pre ) {\n\t\t\tadd( fixed.pre );\n\t\t}\n\t\n\t\tadd( settings.aaSorting );\n\t\n\t\tif (fixedObj && fixed.post ) {\n\t\t\tadd( fixed.post );\n\t\t}\n\t\n\t\tfor ( i=0 ; i<nestedSort.length ; i++ )\n\t\t{\n\t\t\tsrcCol = nestedSort[i][0];\n\t\t\taDataSort = aoColumns[ srcCol ].aDataSort;\n\t\n\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tiCol = aDataSort[k];\n\t\t\t\tsType = aoColumns[ iCol ].sType || 'string';\n\t\n\t\t\t\tif ( nestedSort[i]._idx === undefined ) {\n\t\t\t\t\tnestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );\n\t\t\t\t}\n\t\n\t\t\t\taSort.push( {\n\t\t\t\t\tsrc:       srcCol,\n\t\t\t\t\tcol:       iCol,\n\t\t\t\t\tdir:       nestedSort[i][1],\n\t\t\t\t\tindex:     nestedSort[i]._idx,\n\t\t\t\t\ttype:      sType,\n\t\t\t\t\tformatter: DataTable.ext.type.order[ sType+\"-pre\" ]\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\treturn aSort;\n\t}\n\t\n\t/**\n\t * Change the order of the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t *  @todo This really needs split up!\n\t */\n\tfunction _fnSort ( oSettings )\n\t{\n\t\tvar\n\t\t\ti, ien, iLen, j, jLen, k, kLen,\n\t\t\tsDataType, nTh,\n\t\t\taiOrig = [],\n\t\t\toExtSort = DataTable.ext.type.order,\n\t\t\taoData = oSettings.aoData,\n\t\t\taoColumns = oSettings.aoColumns,\n\t\t\taDataSort, data, iCol, sType, oSort,\n\t\t\tformatters = 0,\n\t\t\tsortCol,\n\t\t\tdisplayMaster = oSettings.aiDisplayMaster,\n\t\t\taSort;\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo Can this be moved into a 'data-ready' handler which is called when\n\t\t//   data is going to be used in the table?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\taSort = _fnSortFlatten( oSettings );\n\t\n\t\tfor ( i=0, ien=aSort.length ; i<ien ; i++ ) {\n\t\t\tsortCol = aSort[i];\n\t\n\t\t\t// Track if we can use the fast sort algorithm\n\t\t\tif ( sortCol.formatter ) {\n\t\t\t\tformatters++;\n\t\t\t}\n\t\n\t\t\t// Load the data needed for the sort, for each cell\n\t\t\t_fnSortData( oSettings, sortCol.col );\n\t\t}\n\t\n\t\t/* No sorting required if server-side or no sorting array */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )\n\t\t{\n\t\t\t// Create a value - key array of the current row positions such that we can use their\n\t\t\t// current position during the sort, if values match, in order to perform stable sorting\n\t\t\tfor ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {\n\t\t\t\taiOrig[ displayMaster[i] ] = i;\n\t\t\t}\n\t\n\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t *  fnLocalSorting = function(a,b){\n\t\t\t *    var iTest;\n\t\t\t *    iTest = oSort['string-asc']('data11', 'data12');\n\t\t\t *      if (iTest !== 0)\n\t\t\t *        return iTest;\n\t\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t *    if (iTest !== 0)\n\t\t\t *      return iTest;\n\t\t\t *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t *  }\n\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row\n\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t *\n\t\t\t * Note - I know it seems excessive to have two sorting methods, but the first is around\n\t\t\t * 15% faster, so the second is only maintained for backwards compatibility with sorting\n\t\t\t * methods which do not have a pre-sort formatting function.\n\t\t\t */\n\t\t\tif ( formatters === aSort.length ) {\n\t\t\t\t// All sort types have formatting functions\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, test, sort,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\ttest = x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn sort.dir === 'asc' ? test : -test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Depreciated - remove in 1.11 (providing a plug-in option)\n\t\t\t\t// Not all sort types have formatting methods, so we have to call their sorting\n\t\t\t\t// methods.\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, l, test, sort, fn,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\tfn = oExtSort[ sort.type+\"-\"+sort.dir ] || oExtSort[ \"string-\"+sort.dir ];\n\t\t\t\t\t\ttest = fn( x, y );\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Tell the draw function that we have sorted the data */\n\t\toSettings.bSorted = true;\n\t}\n\t\n\t\n\tfunction _fnSortAria ( settings )\n\t{\n\t\tvar label;\n\t\tvar nextSort;\n\t\tvar columns = settings.aoColumns;\n\t\tvar aSort = _fnSortFlatten( settings );\n\t\tvar oAria = settings.oLanguage.oAria;\n\t\n\t\t// ARIA attributes - need to loop all columns, to update all (removing old\n\t\t// attributes as needed)\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar col = columns[i];\n\t\t\tvar asSorting = col.asSorting;\n\t\t\tvar sTitle = col.sTitle.replace( /<.*?>/g, \"\" );\n\t\t\tvar th = col.nTh;\n\t\n\t\t\t// IE7 is throwing an error when setting these properties with jQuery's\n\t\t\t// attr() and removeAttr() methods...\n\t\t\tth.removeAttribute('aria-sort');\n\t\n\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\tif ( col.bSortable ) {\n\t\t\t\tif ( aSort.length > 0 && aSort[0].col == i ) {\n\t\t\t\t\tth.setAttribute('aria-sort', aSort[0].dir==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\tnextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnextSort = asSorting[0];\n\t\t\t\t}\n\t\n\t\t\t\tlabel = sTitle + ( nextSort === \"asc\" ?\n\t\t\t\t\toAria.sSortAscending :\n\t\t\t\t\toAria.sSortDescending\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlabel = sTitle;\n\t\t\t}\n\t\n\t\t\tth.setAttribute('aria-label', label);\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Function to run on user sort request\n\t *  @param {object} settings dataTables settings object\n\t *  @param {node} attachTo node to attach the handler to\n\t *  @param {int} colIdx column sorting index\n\t *  @param {boolean} [append=false] Append the requested sort to the existing\n\t *    sort if true (i.e. multi-column sort)\n\t *  @param {function} [callback] callback function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortListener ( settings, colIdx, append, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\tvar sorting = settings.aaSorting;\n\t\tvar asSorting = col.asSorting;\n\t\tvar nextSortIdx;\n\t\tvar next = function ( a, overflow ) {\n\t\t\tvar idx = a._idx;\n\t\t\tif ( idx === undefined ) {\n\t\t\t\tidx = $.inArray( a[1], asSorting );\n\t\t\t}\n\t\n\t\t\treturn idx+1 < asSorting.length ?\n\t\t\t\tidx+1 :\n\t\t\t\toverflow ?\n\t\t\t\t\tnull :\n\t\t\t\t\t0;\n\t\t};\n\t\n\t\t// Convert to 2D array if needed\n\t\tif ( typeof sorting[0] === 'number' ) {\n\t\t\tsorting = settings.aaSorting = [ sorting ];\n\t\t}\n\t\n\t\t// If appending the sort then we are multi-column sorting\n\t\tif ( append && settings.oFeatures.bSortMulti ) {\n\t\t\t// Are we already doing some kind of sort on this column?\n\t\t\tvar sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );\n\t\n\t\t\tif ( sortIdx !== -1 ) {\n\t\t\t\t// Yes, modify the sort\n\t\t\t\tnextSortIdx = next( sorting[sortIdx], true );\n\t\n\t\t\t\tif ( nextSortIdx === null && sorting.length === 1 ) {\n\t\t\t\t\tnextSortIdx = 0; // can't remove sorting completely\n\t\t\t\t}\n\t\n\t\t\t\tif ( nextSortIdx === null ) {\n\t\t\t\t\tsorting.splice( sortIdx, 1 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsorting[sortIdx][1] = asSorting[ nextSortIdx ];\n\t\t\t\t\tsorting[sortIdx]._idx = nextSortIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// No sort on this column yet\n\t\t\t\tsorting.push( [ colIdx, asSorting[0], 0 ] );\n\t\t\t\tsorting[sorting.length-1]._idx = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( sorting.length && sorting[0][0] == colIdx ) {\n\t\t\t// Single column - already sorting on this column, modify the sort\n\t\t\tnextSortIdx = next( sorting[0] );\n\t\n\t\t\tsorting.length = 1;\n\t\t\tsorting[0][1] = asSorting[ nextSortIdx ];\n\t\t\tsorting[0]._idx = nextSortIdx;\n\t\t}\n\t\telse {\n\t\t\t// Single column - sort only on this column\n\t\t\tsorting.length = 0;\n\t\t\tsorting.push( [ colIdx, asSorting[0] ] );\n\t\t\tsorting[0]._idx = 0;\n\t\t}\n\t\n\t\t// Run the sort by calling a full redraw\n\t\t_fnReDraw( settings );\n\t\n\t\t// callback used for async user interaction\n\t\tif ( typeof callback == 'function' ) {\n\t\t\tcallback( settings );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Attach a sort handler (click) to a node\n\t *  @param {object} settings dataTables settings object\n\t *  @param {node} attachTo node to attach the handler to\n\t *  @param {int} colIdx column sorting index\n\t *  @param {function} [callback] callback function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortAttachListener ( settings, attachTo, colIdx, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\n\t\t_fnBindAction( attachTo, {}, function (e) {\n\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\tif ( col.bSortable === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If processing is enabled use a timeout to allow the processing\n\t\t\t// display to be shown - otherwise to it synchronously\n\t\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\n\t\t\t\t\t// In server-side processing, the draw callback will remove the\n\t\t\t\t\t// processing display\n\t\t\t\t\tif ( _fnDataSource( settings ) !== 'ssp' ) {\n\t\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t}\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Set the sorting classes on table's body, Note: it is safe to call this function\n\t * when bSort and bSortClasses are false\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortingClasses( settings )\n\t{\n\t\tvar oldSort = settings.aLastSort;\n\t\tvar sortClass = settings.oClasses.sSortColumn;\n\t\tvar sort = _fnSortFlatten( settings );\n\t\tvar features = settings.oFeatures;\n\t\tvar i, ien, colIdx;\n\t\n\t\tif ( features.bSort && features.bSortClasses ) {\n\t\t\t// Remove old sorting classes\n\t\t\tfor ( i=0, ien=oldSort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = oldSort[i].src;\n\t\n\t\t\t\t// Remove column sorting\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.removeClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\n\t\t\t// Add new column sorting\n\t\t\tfor ( i=0, ien=sort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = sort[i].src;\n\t\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.addClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aLastSort = sort;\n\t}\n\t\n\t\n\t// Get the data to sort a column, be it from cache, fresh (populating the\n\t// cache), or from a sort formatter\n\tfunction _fnSortData( settings, idx )\n\t{\n\t\t// Custom sorting function - provided by the sort data type\n\t\tvar column = settings.aoColumns[ idx ];\n\t\tvar customSort = DataTable.ext.order[ column.sSortDataType ];\n\t\tvar customData;\n\t\n\t\tif ( customSort ) {\n\t\t\tcustomData = customSort.call( settings.oInstance, settings, idx,\n\t\t\t\t_fnColumnIndexToVisible( settings, idx )\n\t\t\t);\n\t\t}\n\t\n\t\t// Use / populate cache\n\t\tvar row, cellData;\n\t\tvar formatter = DataTable.ext.type.order[ column.sType+\"-pre\" ];\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aSortData ) {\n\t\t\t\trow._aSortData = [];\n\t\t\t}\n\t\n\t\t\tif ( ! row._aSortData[idx] || customSort ) {\n\t\t\t\tcellData = customSort ?\n\t\t\t\t\tcustomData[i] : // If there was a custom sort function, use data from there\n\t\t\t\t\t_fnGetCellData( settings, i, idx, 'sort' );\n\t\n\t\t\t\trow._aSortData[ idx ] = formatter ?\n\t\t\t\t\tformatter( cellData ) :\n\t\t\t\t\tcellData;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Save the state of a table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSaveState ( settings )\n\t{\n\t\tif ( !settings.oFeatures.bStateSave || settings.bDestroying )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Store the interesting variables */\n\t\tvar state = {\n\t\t\ttime:    +new Date(),\n\t\t\tstart:   settings._iDisplayStart,\n\t\t\tlength:  settings._iDisplayLength,\n\t\t\torder:   $.extend( true, [], settings.aaSorting ),\n\t\t\tsearch:  _fnSearchToCamel( settings.oPreviousSearch ),\n\t\t\tcolumns: $.map( settings.aoColumns, function ( col, i ) {\n\t\t\t\treturn {\n\t\t\t\t\tvisible: col.bVisible,\n\t\t\t\t\tsearch: _fnSearchToCamel( settings.aoPreSearchCols[i] )\n\t\t\t\t};\n\t\t\t} )\n\t\t};\n\t\n\t\t_fnCallbackFire( settings, \"aoStateSaveParams\", 'stateSaveParams', [settings, state] );\n\t\n\t\tsettings.oSavedState = state;\n\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, state );\n\t}\n\t\n\t\n\t/**\n\t * Attempt to load a saved table state\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} oInit DataTables init object so we can override settings\n\t *  @param {function} callback Callback to execute when the state has been loaded\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLoadState ( settings, oInit, callback )\n\t{\n\t\tvar i, ien;\n\t\tvar columns = settings.aoColumns;\n\t\tvar loaded = function ( s ) {\n\t\t\tif ( ! s || ! s.time ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t\t// cancelling of loading by returning false\n\t\t\tvar abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );\n\t\t\tif ( $.inArray( false, abStateLoad ) !== -1 ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Reject old data\n\t\t\tvar duration = settings.iStateDuration;\n\t\t\tif ( duration > 0 && s.time < +new Date() - (duration*1000) ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Number of columns have changed - all bets are off, no restore of settings\n\t\t\tif ( s.columns && columns.length !== s.columns.length ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Store the saved state so it might be accessed at any time\n\t\t\tsettings.oLoadedState = $.extend( true, {}, s );\n\t\n\t\t\t// Restore key features - todo - for 1.11 this needs to be done by\n\t\t\t// subscribed events\n\t\t\tif ( s.start !== undefined ) {\n\t\t\t\tsettings._iDisplayStart    = s.start;\n\t\t\t\tsettings.iInitDisplayStart = s.start;\n\t\t\t}\n\t\t\tif ( s.length !== undefined ) {\n\t\t\t\tsettings._iDisplayLength   = s.length;\n\t\t\t}\n\t\n\t\t\t// Order\n\t\t\tif ( s.order !== undefined ) {\n\t\t\t\tsettings.aaSorting = [];\n\t\t\t\t$.each( s.order, function ( i, col ) {\n\t\t\t\t\tsettings.aaSorting.push( col[0] >= columns.length ?\n\t\t\t\t\t\t[ 0, col[1] ] :\n\t\t\t\t\t\tcol\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Search\n\t\t\tif ( s.search !== undefined ) {\n\t\t\t\t$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );\n\t\t\t}\n\t\n\t\t\t// Columns\n\t\t\t//\n\t\t\tif ( s.columns ) {\n\t\t\t\tfor ( i=0, ien=s.columns.length ; i<ien ; i++ ) {\n\t\t\t\t\tvar col = s.columns[i];\n\t\n\t\t\t\t\t// Visibility\n\t\t\t\t\tif ( col.visible !== undefined ) {\n\t\t\t\t\t\tcolumns[i].bVisible = col.visible;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Search\n\t\t\t\t\tif ( col.search !== undefined ) {\n\t\t\t\t\t\t$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );\n\t\t\tcallback();\n\t\t}\n\t\n\t\tif ( ! settings.oFeatures.bStateSave ) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );\n\t\n\t\tif ( state !== undefined ) {\n\t\t\tloaded( state );\n\t\t}\n\t\t// otherwise, wait for the loaded callback to be executed\n\t}\n\t\n\t\n\t/**\n\t * Return the settings object for a particular table\n\t *  @param {node} table table we are using as a dataTable\n\t *  @returns {object} Settings object - or null if not found\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSettingsFromNode ( table )\n\t{\n\t\tvar settings = DataTable.settings;\n\t\tvar idx = $.inArray( table, _pluck( settings, 'nTable' ) );\n\t\n\t\treturn idx !== -1 ?\n\t\t\tsettings[ idx ] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Log an error message\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} level log error messages, or display them to the user\n\t *  @param {string} msg error message\n\t *  @param {int} tn Technical note id to get more information about the error.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLog( settings, level, msg, tn )\n\t{\n\t\tmsg = 'DataTables warning: '+\n\t\t\t(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;\n\t\n\t\tif ( tn ) {\n\t\t\tmsg += '. For more information about this error, please see '+\n\t\t\t'http://datatables.net/tn/'+tn;\n\t\t}\n\t\n\t\tif ( ! level  ) {\n\t\t\t// Backwards compatibility pre 1.10\n\t\t\tvar ext = DataTable.ext;\n\t\t\tvar type = ext.sErrMode || ext.errMode;\n\t\n\t\t\tif ( settings ) {\n\t\t\t\t_fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );\n\t\t\t}\n\t\n\t\t\tif ( type == 'alert' ) {\n\t\t\t\talert( msg );\n\t\t\t}\n\t\t\telse if ( type == 'throw' ) {\n\t\t\t\tthrow new Error(msg);\n\t\t\t}\n\t\t\telse if ( typeof type == 'function' ) {\n\t\t\t\ttype( settings, tn, msg );\n\t\t\t}\n\t\t}\n\t\telse if ( window.console && console.log ) {\n\t\t\tconsole.log( msg );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * See if a property is defined on one object, if so assign it to the other object\n\t *  @param {object} ret target object\n\t *  @param {object} src source object\n\t *  @param {string} name property\n\t *  @param {string} [mappedName] name to map too - optional, name used if not given\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnMap( ret, src, name, mappedName )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\t$.each( name, function (i, val) {\n\t\t\t\tif ( $.isArray( val ) ) {\n\t\t\t\t\t_fnMap( ret, src, val[0], val[1] );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t_fnMap( ret, src, val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( mappedName === undefined ) {\n\t\t\tmappedName = name;\n\t\t}\n\t\n\t\tif ( src[name] !== undefined ) {\n\t\t\tret[mappedName] = src[name];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and\n\t * shallow copy arrays. The reason we need to do this, is that we don't want to\n\t * deep copy array init values (such as aaSorting) since the dev wouldn't be\n\t * able to override them, but we do want to deep copy arrays.\n\t *  @param {object} out Object to extend\n\t *  @param {object} extender Object from which the properties will be applied to\n\t *      out\n\t *  @param {boolean} breakRefs If true, then arrays will be sliced to take an\n\t *      independent copy with the exception of the `data` or `aaData` parameters\n\t *      if they are present. This is so you can pass in a collection to\n\t *      DataTables and have that used as your data source without breaking the\n\t *      references\n\t *  @returns {object} out Reference, just for convenience - out === the return.\n\t *  @memberof DataTable#oApi\n\t *  @todo This doesn't take account of arrays inside the deep copied objects.\n\t */\n\tfunction _fnExtend( out, extender, breakRefs )\n\t{\n\t\tvar val;\n\t\n\t\tfor ( var prop in extender ) {\n\t\t\tif ( extender.hasOwnProperty(prop) ) {\n\t\t\t\tval = extender[prop];\n\t\n\t\t\t\tif ( $.isPlainObject( val ) ) {\n\t\t\t\t\tif ( ! $.isPlainObject( out[prop] ) ) {\n\t\t\t\t\t\tout[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, out[prop], val );\n\t\t\t\t}\n\t\t\t\telse if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {\n\t\t\t\t\tout[prop] = val.slice();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tout[prop] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t}\n\t\n\t\n\t/**\n\t * Bind an event handers to allow a click or return key to activate the callback.\n\t * This is good for accessibility since a return on the keyboard will have the\n\t * same effect as a click, if the element has focus.\n\t *  @param {element} n Element to bind the action to\n\t *  @param {object} oData Data object to pass to the triggered function\n\t *  @param {function} fn Callback function for when the event is triggered\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBindAction( n, oData, fn )\n\t{\n\t\t$(n)\n\t\t\t.on( 'click.DT', oData, function (e) {\n\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\tfn(e);\n\t\t\t\t} )\n\t\t\t.on( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t.on( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Register a callback function. Easily allows a callback function to be added to\n\t * an array store of callback functions that can then all be called together.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t *  @param {function} fn Function to be called back\n\t *  @param {string} sName Identifying name for the callback (i.e. a label)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t{\n\t\tif ( fn )\n\t\t{\n\t\t\toSettings[sStore].push( {\n\t\t\t\t\"fn\": fn,\n\t\t\t\t\"sName\": sName\n\t\t\t} );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Fire callback functions and trigger events. Note that the loop over the\n\t * callback array store is done backwards! Further note that you do not want to\n\t * fire off triggers in time sensitive applications (for example cell creation)\n\t * as its slow.\n\t *  @param {object} settings dataTables settings object\n\t *  @param {string} callbackArr Name of the array storage for the callbacks in\n\t *      oSettings\n\t *  @param {string} eventName Name of the jQuery custom event to trigger. If\n\t *      null no trigger is fired\n\t *  @param {array} args Array of arguments to pass to the callback function /\n\t *      trigger\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackFire( settings, callbackArr, eventName, args )\n\t{\n\t\tvar ret = [];\n\t\n\t\tif ( callbackArr ) {\n\t\t\tret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {\n\t\t\t\treturn val.fn.apply( settings.oInstance, args );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( eventName !== null ) {\n\t\t\tvar e = $.Event( eventName+'.dt' );\n\t\n\t\t\t$(settings.nTable).trigger( e, args );\n\t\n\t\t\tret.push( e.result );\n\t\t}\n\t\n\t\treturn ret;\n\t}\n\t\n\t\n\tfunction _fnLengthOverflow ( settings )\n\t{\n\t\tvar\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tend = settings.fnDisplayEnd(),\n\t\t\tlen = settings._iDisplayLength;\n\t\n\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\tif ( start >= end )\n\t\t{\n\t\t\tstart = end - len;\n\t\t}\n\t\n\t\t// Keep the start record on the current page\n\t\tstart -= (start % len);\n\t\n\t\tif ( len === -1 || start < 0 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\n\t\tsettings._iDisplayStart = start;\n\t}\n\t\n\t\n\tfunction _fnRenderer( settings, type )\n\t{\n\t\tvar renderer = settings.renderer;\n\t\tvar host = DataTable.ext.renderer[type];\n\t\n\t\tif ( $.isPlainObject( renderer ) && renderer[type] ) {\n\t\t\t// Specific renderer for this type. If available use it, otherwise use\n\t\t\t// the default.\n\t\t\treturn host[renderer[type]] || host._;\n\t\t}\n\t\telse if ( typeof renderer === 'string' ) {\n\t\t\t// Common renderer - if there is one available for this type use it,\n\t\t\t// otherwise use the default\n\t\t\treturn host[renderer] || host._;\n\t\t}\n\t\n\t\t// Use the default\n\t\treturn host._;\n\t}\n\t\n\t\n\t/**\n\t * Detect the data source being used for the table. Used to simplify the code\n\t * a little (ajax) and to make it compress a little smaller.\n\t *\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {string} Data source\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDataSource ( settings )\n\t{\n\t\tif ( settings.oFeatures.bServerSide ) {\n\t\t\treturn 'ssp';\n\t\t}\n\t\telse if ( settings.ajax || settings.sAjaxSource ) {\n\t\t\treturn 'ajax';\n\t\t}\n\t\treturn 'dom';\n\t}\n\t\n\n\t\n\t\n\t/**\n\t * Computed structure of the DataTables API, defined by the options passed to\n\t * `DataTable.Api.register()` when building the API.\n\t *\n\t * The structure is built in order to speed creation and extension of the Api\n\t * objects since the extensions are effectively pre-parsed.\n\t *\n\t * The array is an array of objects with the following structure, where this\n\t * base array represents the Api prototype base:\n\t *\n\t *     [\n\t *       {\n\t *         name:      'data'                -- string   - Property name\n\t *         val:       function () {},       -- function - Api method (or undefined if just an object\n\t *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n\t *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n\t *       },\n\t *       {\n\t *         name:     'row'\n\t *         val:       {},\n\t *         methodExt: [ ... ],\n\t *         propExt:   [\n\t *           {\n\t *             name:      'data'\n\t *             val:       function () {},\n\t *             methodExt: [ ... ],\n\t *             propExt:   [ ... ]\n\t *           },\n\t *           ...\n\t *         ]\n\t *       }\n\t *     ]\n\t *\n\t * @type {Array}\n\t * @ignore\n\t */\n\tvar __apiStruct = [];\n\t\n\t\n\t/**\n\t * `Array.prototype` reference.\n\t *\n\t * @type object\n\t * @ignore\n\t */\n\tvar __arrayProto = Array.prototype;\n\t\n\t\n\t/**\n\t * Abstraction for `context` parameter of the `Api` constructor to allow it to\n\t * take several different forms for ease of use.\n\t *\n\t * Each of the input parameter types will be converted to a DataTables settings\n\t * object where possible.\n\t *\n\t * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one\n\t *   of:\n\t *\n\t *   * `string` - jQuery selector. Any DataTables' matching the given selector\n\t *     with be found and used.\n\t *   * `node` - `TABLE` node which has already been formed into a DataTable.\n\t *   * `jQuery` - A jQuery object of `TABLE` nodes.\n\t *   * `object` - DataTables settings object\n\t *   * `DataTables.Api` - API instance\n\t * @return {array|null} Matching DataTables settings objects. `null` or\n\t *   `undefined` is returned if no matching DataTable is found.\n\t * @ignore\n\t */\n\tvar _toSettings = function ( mixed )\n\t{\n\t\tvar idx, jq;\n\t\tvar settings = DataTable.settings;\n\t\tvar tables = $.map( settings, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\tif ( ! mixed ) {\n\t\t\treturn [];\n\t\t}\n\t\telse if ( mixed.nTable && mixed.oApi ) {\n\t\t\t// DataTables settings object\n\t\t\treturn [ mixed ];\n\t\t}\n\t\telse if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {\n\t\t\t// Table node\n\t\t\tidx = $.inArray( mixed, tables );\n\t\t\treturn idx !== -1 ? [ settings[idx] ] : null;\n\t\t}\n\t\telse if ( mixed && typeof mixed.settings === 'function' ) {\n\t\t\treturn mixed.settings().toArray();\n\t\t}\n\t\telse if ( typeof mixed === 'string' ) {\n\t\t\t// jQuery selector\n\t\t\tjq = $(mixed);\n\t\t}\n\t\telse if ( mixed instanceof $ ) {\n\t\t\t// jQuery object (also DataTables instance)\n\t\t\tjq = mixed;\n\t\t}\n\t\n\t\tif ( jq ) {\n\t\t\treturn jq.map( function(i) {\n\t\t\t\tidx = $.inArray( this, tables );\n\t\t\t\treturn idx !== -1 ? settings[idx] : null;\n\t\t\t} ).toArray();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * DataTables API class - used to control and interface with  one or more\n\t * DataTables enhanced tables.\n\t *\n\t * The API class is heavily based on jQuery, presenting a chainable interface\n\t * that you can use to interact with tables. Each instance of the API class has\n\t * a \"context\" - i.e. the tables that it will operate on. This could be a single\n\t * table, all tables on a page or a sub-set thereof.\n\t *\n\t * Additionally the API is designed to allow you to easily work with the data in\n\t * the tables, retrieving and manipulating it as required. This is done by\n\t * presenting the API class as an array like interface. The contents of the\n\t * array depend upon the actions requested by each method (for example\n\t * `rows().nodes()` will return an array of nodes, while `rows().data()` will\n\t * return an array of objects or arrays depending upon your table's\n\t * configuration). The API object has a number of array like methods (`push`,\n\t * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,\n\t * `unique` etc) to assist your working with the data held in a table.\n\t *\n\t * Most methods (those which return an Api instance) are chainable, which means\n\t * the return from a method call also has all of the methods available that the\n\t * top level object had. For example, these two calls are equivalent:\n\t *\n\t *     // Not chained\n\t *     api.row.add( {...} );\n\t *     api.draw();\n\t *\n\t *     // Chained\n\t *     api.row.add( {...} ).draw();\n\t *\n\t * @class DataTable.Api\n\t * @param {array|object|string|jQuery} context DataTable identifier. This is\n\t *   used to define which DataTables enhanced tables this API will operate on.\n\t *   Can be one of:\n\t *\n\t *   * `string` - jQuery selector. Any DataTables' matching the given selector\n\t *     with be found and used.\n\t *   * `node` - `TABLE` node which has already been formed into a DataTable.\n\t *   * `jQuery` - A jQuery object of `TABLE` nodes.\n\t *   * `object` - DataTables settings object\n\t * @param {array} [data] Data to initialise the Api instance with.\n\t *\n\t * @example\n\t *   // Direct initialisation during DataTables construction\n\t *   var api = $('#example').DataTable();\n\t *\n\t * @example\n\t *   // Initialisation using a DataTables jQuery object\n\t *   var api = $('#example').dataTable().api();\n\t *\n\t * @example\n\t *   // Initialisation as a constructor\n\t *   var api = new $.fn.DataTable.Api( 'table.dataTable' );\n\t */\n\t_Api = function ( context, data )\n\t{\n\t\tif ( ! (this instanceof _Api) ) {\n\t\t\treturn new _Api( context, data );\n\t\t}\n\t\n\t\tvar settings = [];\n\t\tvar ctxSettings = function ( o ) {\n\t\t\tvar a = _toSettings( o );\n\t\t\tif ( a ) {\n\t\t\t\tsettings = settings.concat( a );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( $.isArray( context ) ) {\n\t\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tctxSettings( context[i] );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tctxSettings( context );\n\t\t}\n\t\n\t\t// Remove duplicates\n\t\tthis.context = _unique( settings );\n\t\n\t\t// Initial data\n\t\tif ( data ) {\n\t\t\t$.merge( this, data );\n\t\t}\n\t\n\t\t// selector\n\t\tthis.selector = {\n\t\t\trows: null,\n\t\t\tcols: null,\n\t\t\topts: null\n\t\t};\n\t\n\t\t_Api.extend( this, this, __apiStruct );\n\t};\n\t\n\tDataTable.Api = _Api;\n\t\n\t// Don't destroy the existing prototype, just extend it. Required for jQuery 2's\n\t// isPlainObject.\n\t$.extend( _Api.prototype, {\n\t\tany: function ()\n\t\t{\n\t\t\treturn this.count() !== 0;\n\t\t},\n\t\n\t\n\t\tconcat:  __arrayProto.concat,\n\t\n\t\n\t\tcontext: [], // array of table settings objects\n\t\n\t\n\t\tcount: function ()\n\t\t{\n\t\t\treturn this.flatten().length;\n\t\t},\n\t\n\t\n\t\teach: function ( fn )\n\t\t{\n\t\t\tfor ( var i=0, ien=this.length ; i<ien; i++ ) {\n\t\t\t\tfn.call( this, this[i], i, this );\n\t\t\t}\n\t\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\teq: function ( idx )\n\t\t{\n\t\t\tvar ctx = this.context;\n\t\n\t\t\treturn ctx.length > idx ?\n\t\t\t\tnew _Api( ctx[idx], this[idx] ) :\n\t\t\t\tnull;\n\t\t},\n\t\n\t\n\t\tfilter: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.filter ) {\n\t\t\t\ta = __arrayProto.filter.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( fn.call( this, this[i], i, this ) ) {\n\t\t\t\t\t\ta.push( this[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tflatten: function ()\n\t\t{\n\t\t\tvar a = [];\n\t\t\treturn new _Api( this.context, a.concat.apply( a, this.toArray() ) );\n\t\t},\n\t\n\t\n\t\tjoin:    __arrayProto.join,\n\t\n\t\n\t\tindexOf: __arrayProto.indexOf || function (obj, start)\n\t\t{\n\t\t\tfor ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {\n\t\t\t\tif ( this[i] === obj ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\t\n\t\titerator: function ( flatten, type, fn, alwaysNew ) {\n\t\t\tvar\n\t\t\t\ta = [], ret,\n\t\t\t\ti, ien, j, jen,\n\t\t\t\tcontext = this.context,\n\t\t\t\trows, items, item,\n\t\t\t\tselector = this.selector;\n\t\n\t\t\t// Argument shifting\n\t\t\tif ( typeof flatten === 'string' ) {\n\t\t\t\talwaysNew = fn;\n\t\t\t\tfn = type;\n\t\t\t\ttype = flatten;\n\t\t\t\tflatten = false;\n\t\t\t}\n\t\n\t\t\tfor ( i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tvar apiInst = new _Api( context[i] );\n\t\n\t\t\t\tif ( type === 'table' ) {\n\t\t\t\t\tret = fn.call( apiInst, context[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'columns' || type === 'rows' ) {\n\t\t\t\t\t// this has same length as context - one entry for each table\n\t\t\t\t\tret = fn.call( apiInst, context[i], this[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {\n\t\t\t\t\t// columns and rows share the same structure.\n\t\t\t\t\t// 'this' is an array of column indexes for each context\n\t\t\t\t\titems = this[i];\n\t\n\t\t\t\t\tif ( type === 'column-rows' ) {\n\t\t\t\t\t\trows = _selector_row_indexes( context[i], selector.opts );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor ( j=0, jen=items.length ; j<jen ; j++ ) {\n\t\t\t\t\t\titem = items[j];\n\t\n\t\t\t\t\t\tif ( type === 'cell' ) {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item.row, item.column, i, j );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item, i, j, rows );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( a.length || alwaysNew ) {\n\t\t\t\tvar api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );\n\t\t\t\tvar apiSelector = api.selector;\n\t\t\t\tapiSelector.rows = selector.rows;\n\t\t\t\tapiSelector.cols = selector.cols;\n\t\t\t\tapiSelector.opts = selector.opts;\n\t\t\t\treturn api;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\tlastIndexOf: __arrayProto.lastIndexOf || function (obj, start)\n\t\t{\n\t\t\t// Bit cheeky...\n\t\t\treturn this.indexOf.apply( this.toArray.reverse(), arguments );\n\t\t},\n\t\n\t\n\t\tlength:  0,\n\t\n\t\n\t\tmap: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.map ) {\n\t\t\t\ta = __arrayProto.map.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\ta.push( fn.call( this, this[i], i ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tpluck: function ( prop )\n\t\t{\n\t\t\treturn this.map( function ( el ) {\n\t\t\t\treturn el[ prop ];\n\t\t\t} );\n\t\t},\n\t\n\t\tpop:     __arrayProto.pop,\n\t\n\t\n\t\tpush:    __arrayProto.push,\n\t\n\t\n\t\t// Does not return an API instance\n\t\treduce: __arrayProto.reduce || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, 0, this.length, 1 );\n\t\t},\n\t\n\t\n\t\treduceRight: __arrayProto.reduceRight || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, this.length-1, -1, -1 );\n\t\t},\n\t\n\t\n\t\treverse: __arrayProto.reverse,\n\t\n\t\n\t\t// Object with rows, columns and opts\n\t\tselector: null,\n\t\n\t\n\t\tshift:   __arrayProto.shift,\n\t\n\t\n\t\tslice: function () {\n\t\t\treturn new _Api( this.context, this );\n\t\t},\n\t\n\t\n\t\tsort:    __arrayProto.sort, // ? name - order?\n\t\n\t\n\t\tsplice:  __arrayProto.splice,\n\t\n\t\n\t\ttoArray: function ()\n\t\t{\n\t\t\treturn __arrayProto.slice.call( this );\n\t\t},\n\t\n\t\n\t\tto$: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\ttoJQuery: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\tunique: function ()\n\t\t{\n\t\t\treturn new _Api( this.context, _unique(this) );\n\t\t},\n\t\n\t\n\t\tunshift: __arrayProto.unshift\n\t} );\n\t\n\t\n\t_Api.extend = function ( scope, obj, ext )\n\t{\n\t\t// Only extend API instances and static properties of the API\n\t\tif ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\tj, jen,\n\t\t\tstruct, inner,\n\t\t\tmethodScoping = function ( scope, fn, struc ) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar ret = fn.apply( scope, arguments );\n\t\n\t\t\t\t\t// Method extension\n\t\t\t\t\t_Api.extend( ret, ret, struc.methodExt );\n\t\t\t\t\treturn ret;\n\t\t\t\t};\n\t\t\t};\n\t\n\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\tstruct = ext[i];\n\t\n\t\t\t// Value\n\t\t\tobj[ struct.name ] = typeof struct.val === 'function' ?\n\t\t\t\tmethodScoping( scope, struct.val, struct ) :\n\t\t\t\t$.isPlainObject( struct.val ) ?\n\t\t\t\t\t{} :\n\t\t\t\t\tstruct.val;\n\t\n\t\t\tobj[ struct.name ].__dt_wrapper = true;\n\t\n\t\t\t// Property extension\n\t\t\t_Api.extend( scope, obj[ struct.name ], struct.propExt );\n\t\t}\n\t};\n\t\n\t\n\t// @todo - Is there need for an augment function?\n\t// _Api.augment = function ( inst, name )\n\t// {\n\t// \t// Find src object in the structure from the name\n\t// \tvar parts = name.split('.');\n\t\n\t// \t_Api.extend( inst, obj );\n\t// };\n\t\n\t\n\t//     [\n\t//       {\n\t//         name:      'data'                -- string   - Property name\n\t//         val:       function () {},       -- function - Api method (or undefined if just an object\n\t//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n\t//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n\t//       },\n\t//       {\n\t//         name:     'row'\n\t//         val:       {},\n\t//         methodExt: [ ... ],\n\t//         propExt:   [\n\t//           {\n\t//             name:      'data'\n\t//             val:       function () {},\n\t//             methodExt: [ ... ],\n\t//             propExt:   [ ... ]\n\t//           },\n\t//           ...\n\t//         ]\n\t//       }\n\t//     ]\n\t\n\t_Api.register = _api_register = function ( name, val )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\tfor ( var j=0, jen=name.length ; j<jen ; j++ ) {\n\t\t\t\t_Api.register( name[j], val );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\their = name.split('.'),\n\t\t\tstruct = __apiStruct,\n\t\t\tkey, method;\n\t\n\t\tvar find = function ( src, name ) {\n\t\t\tfor ( var i=0, ien=src.length ; i<ien ; i++ ) {\n\t\t\t\tif ( src[i].name === name ) {\n\t\t\t\t\treturn src[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\n\t\tfor ( i=0, ien=heir.length ; i<ien ; i++ ) {\n\t\t\tmethod = heir[i].indexOf('()') !== -1;\n\t\t\tkey = method ?\n\t\t\t\their[i].replace('()', '') :\n\t\t\t\their[i];\n\t\n\t\t\tvar src = find( struct, key );\n\t\t\tif ( ! src ) {\n\t\t\t\tsrc = {\n\t\t\t\t\tname:      key,\n\t\t\t\t\tval:       {},\n\t\t\t\t\tmethodExt: [],\n\t\t\t\t\tpropExt:   []\n\t\t\t\t};\n\t\t\t\tstruct.push( src );\n\t\t\t}\n\t\n\t\t\tif ( i === ien-1 ) {\n\t\t\t\tsrc.val = val;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstruct = method ?\n\t\t\t\t\tsrc.methodExt :\n\t\t\t\t\tsrc.propExt;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\t_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {\n\t\t_Api.register( pluralName, val );\n\t\n\t\t_Api.register( singularName, function () {\n\t\t\tvar ret = val.apply( this, arguments );\n\t\n\t\t\tif ( ret === this ) {\n\t\t\t\t// Returned item is the API instance that was passed in, return it\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\telse if ( ret instanceof _Api ) {\n\t\t\t\t// New API instance returned, want the value from the first item\n\t\t\t\t// in the returned array for the singular result.\n\t\t\t\treturn ret.length ?\n\t\t\t\t\t$.isArray( ret[0] ) ?\n\t\t\t\t\t\tnew _Api( ret.context, ret[0] ) : // Array results are 'enhanced'\n\t\t\t\t\t\tret[0] :\n\t\t\t\t\tundefined;\n\t\t\t}\n\t\n\t\t\t// Non-API return - just fire it back\n\t\t\treturn ret;\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t * Selector for HTML tables. Apply the given selector to the give array of\n\t * DataTables settings objects.\n\t *\n\t * @param {string|integer} [selector] jQuery selector string or integer\n\t * @param  {array} Array of DataTables settings objects to be filtered\n\t * @return {array}\n\t * @ignore\n\t */\n\tvar __table_selector = function ( selector, a )\n\t{\n\t\t// Integer is used to pick out a table by index\n\t\tif ( typeof selector === 'number' ) {\n\t\t\treturn [ a[ selector ] ];\n\t\t}\n\t\n\t\t// Perform a jQuery selector on the table nodes\n\t\tvar nodes = $.map( a, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\treturn $(nodes)\n\t\t\t.filter( selector )\n\t\t\t.map( function (i) {\n\t\t\t\t// Need to translate back from the table node to the settings\n\t\t\t\tvar idx = $.inArray( this, nodes );\n\t\t\t\treturn a[ idx ];\n\t\t\t} )\n\t\t\t.toArray();\n\t};\n\t\n\t\n\t\n\t/**\n\t * Context selector for the API's context (i.e. the tables the API instance\n\t * refers to.\n\t *\n\t * @name    DataTable.Api#tables\n\t * @param {string|integer} [selector] Selector to pick which tables the iterator\n\t *   should operate on. If not given, all tables in the current context are\n\t *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to\n\t *   select multiple tables or as an integer to select a single table.\n\t * @returns {DataTable.Api} Returns a new API instance if a selector is given.\n\t */\n\t_api_register( 'tables()', function ( selector ) {\n\t\t// A new instance is created if there was a selector specified\n\t\treturn selector ?\n\t\t\tnew _Api( __table_selector( selector, this.context ) ) :\n\t\t\tthis;\n\t} );\n\t\n\t\n\t_api_register( 'table()', function ( selector ) {\n\t\tvar tables = this.tables( selector );\n\t\tvar ctx = tables.context;\n\t\n\t\t// Truncate to the first matched table\n\t\treturn ctx.length ?\n\t\t\tnew _Api( ctx[0] ) :\n\t\t\ttables;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTable;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().body()', 'table().body()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTBody;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().header()', 'table().header()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTHead;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTFoot;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().containers()', 'table().container()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTableWrapper;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Redraw the tables in the current context.\n\t */\n\t_api_register( 'draw()', function ( paging ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( paging === 'page' ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif ( typeof paging === 'string' ) {\n\t\t\t\t\tpaging = paging === 'full-hold' ?\n\t\t\t\t\t\tfalse :\n\t\t\t\t\t\ttrue;\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, paging===false );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get the current page index.\n\t *\n\t * @return {integer} Current page index (zero based)\n\t *//**\n\t * Set the current page.\n\t *\n\t * Note that if you attempt to show a page which does not exist, DataTables will\n\t * not throw an error, but rather reset the paging.\n\t *\n\t * @param {integer|string} action The paging action to take. This can be one of:\n\t *  * `integer` - The page index to jump to\n\t *  * `string` - An action to take:\n\t *    * `first` - Jump to first page.\n\t *    * `next` - Jump to the next page\n\t *    * `previous` - Jump to previous page\n\t *    * `last` - Jump to the last page.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page()', function ( action ) {\n\t\tif ( action === undefined ) {\n\t\t\treturn this.page.info().page; // not an expensive call\n\t\t}\n\t\n\t\t// else, have an action to take on all tables\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnPageChange( settings, action );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Paging information for the first table in the current context.\n\t *\n\t * If you require paging information for another table, use the `table()` method\n\t * with a suitable selector.\n\t *\n\t * @return {object} Object with the following properties set:\n\t *  * `page` - Current page index (zero based - i.e. the first page is `0`)\n\t *  * `pages` - Total number of pages\n\t *  * `start` - Display index for the first record shown on the current page\n\t *  * `end` - Display index for the last record shown on the current page\n\t *  * `length` - Display length (number of records). Note that generally `start\n\t *    + length = end`, but this is not always true, for example if there are\n\t *    only 2 records to show on the final page, with a length of 10.\n\t *  * `recordsTotal` - Full data set length\n\t *  * `recordsDisplay` - Data set length once the current filtering criterion\n\t *    are applied.\n\t */\n\t_api_register( 'page.info()', function ( action ) {\n\t\tif ( this.context.length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t\n\t\tvar\n\t\t\tsettings   = this.context[0],\n\t\t\tstart      = settings._iDisplayStart,\n\t\t\tlen        = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,\n\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\tall        = len === -1;\n\t\n\t\treturn {\n\t\t\t\"page\":           all ? 0 : Math.floor( start / len ),\n\t\t\t\"pages\":          all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\"start\":          start,\n\t\t\t\"end\":            settings.fnDisplayEnd(),\n\t\t\t\"length\":         len,\n\t\t\t\"recordsTotal\":   settings.fnRecordsTotal(),\n\t\t\t\"recordsDisplay\": visRecords,\n\t\t\t\"serverSide\":     _fnDataSource( settings ) === 'ssp'\n\t\t};\n\t} );\n\t\n\t\n\t/**\n\t * Get the current page length.\n\t *\n\t * @return {integer} Current page length. Note `-1` indicates that all records\n\t *   are to be shown.\n\t *//**\n\t * Set the current page length.\n\t *\n\t * @param {integer} Page length to set. Use `-1` to show all records.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page.len()', function ( len ) {\n\t\t// Note that we can't call this function 'length()' because `length`\n\t\t// is a Javascript property of functions which defines how many arguments\n\t\t// the function expects.\n\t\tif ( len === undefined ) {\n\t\t\treturn this.context.length !== 0 ?\n\t\t\t\tthis.context[0]._iDisplayLength :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// else, set the page length\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnLengthChange( settings, len );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\tvar __reload = function ( settings, holdPosition, callback ) {\n\t\t// Use the draw event to trigger a callback\n\t\tif ( callback ) {\n\t\t\tvar api = new _Api( settings );\n\t\n\t\t\tapi.one( 'draw', function () {\n\t\t\t\tcallback( api.ajax.json() );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t_fnReDraw( settings, holdPosition );\n\t\t}\n\t\telse {\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t// Cancel an existing request\n\t\t\tvar xhr = settings.jqXHR;\n\t\t\tif ( xhr && xhr.readyState !== 4 ) {\n\t\t\t\txhr.abort();\n\t\t\t}\n\t\n\t\t\t// Trigger xhr\n\t\t\t_fnBuildAjax( settings, [], function( json ) {\n\t\t\t\t_fnClearTable( settings );\n\t\n\t\t\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\t_fnAddData( settings, data[i] );\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, holdPosition );\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Get the JSON response from the last Ajax request that DataTables made to the\n\t * server. Note that this returns the JSON from the first table in the current\n\t * context.\n\t *\n\t * @return {object} JSON received from the server.\n\t */\n\t_api_register( 'ajax.json()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].json;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Get the data submitted in the last Ajax request\n\t */\n\t_api_register( 'ajax.params()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].oAjaxData;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Reload tables from the Ajax data source. Note that this function will\n\t * automatically re-draw the table when the remote data has been loaded.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t *   position. A full re-sort and re-filter is performed when this method is\n\t *   called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.reload()', function ( callback, resetPaging ) {\n\t\treturn this.iterator( 'table', function (settings) {\n\t\t\t__reload( settings, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Get the current Ajax URL. Note that this returns the URL from the first\n\t * table in the current context.\n\t *\n\t * @return {string} Current Ajax source URL\n\t *//**\n\t * Set the Ajax URL. Note that this will set the URL for all tables in the\n\t * current context.\n\t *\n\t * @param {string} url URL to set.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url()', function ( url ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( url === undefined ) {\n\t\t\t// get\n\t\t\tif ( ctx.length === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tctx = ctx[0];\n\t\n\t\t\treturn ctx.ajax ?\n\t\t\t\t$.isPlainObject( ctx.ajax ) ?\n\t\t\t\t\tctx.ajax.url :\n\t\t\t\t\tctx.ajax :\n\t\t\t\tctx.sAjaxSource;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( $.isPlainObject( settings.ajax ) ) {\n\t\t\t\tsettings.ajax.url = url;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsettings.ajax = url;\n\t\t\t}\n\t\t\t// No need to consider sAjaxSource here since DataTables gives priority\n\t\t\t// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any\n\t\t\t// value of `sAjaxSource` redundant.\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Load data from the newly set Ajax URL. Note that this method is only\n\t * available when `ajax.url()` is used to set a URL. Additionally, this method\n\t * has the same effect as calling `ajax.reload()` but is provided for\n\t * convenience when setting a new URL. Like `ajax.reload()` it will\n\t * automatically redraw the table once the remote data has been loaded.\n\t *\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {\n\t\t// Same as a reload, but makes sense to present it for easy access after a\n\t\t// url change\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\t__reload( ctx, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t\n\tvar _selector_run = function ( type, selector, selectFn, settings, opts )\n\t{\n\t\tvar\n\t\t\tout = [], res,\n\t\t\ta, i, ien, j, jen,\n\t\t\tselectorType = typeof selector;\n\t\n\t\t// Can't just check for isArray here, as an API or jQuery instance might be\n\t\t// given with their array like look\n\t\tif ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {\n\t\t\tselector = [ selector ];\n\t\t}\n\t\n\t\tfor ( i=0, ien=selector.length ; i<ien ; i++ ) {\n\t\t\t// Only split on simple strings - complex expressions will be jQuery selectors\n\t\t\ta = selector[i] && selector[i].split && ! selector[i].match(/[\\[\\(:]/) ?\n\t\t\t\tselector[i].split(',') :\n\t\t\t\t[ selector[i] ];\n\t\n\t\t\tfor ( j=0, jen=a.length ; j<jen ; j++ ) {\n\t\t\t\tres = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );\n\t\n\t\t\t\tif ( res && res.length ) {\n\t\t\t\t\tout = out.concat( res );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// selector extensions\n\t\tvar ext = _ext.selector[ type ];\n\t\tif ( ext.length ) {\n\t\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\t\tout = ext[i]( settings, opts, out );\n\t\t\t}\n\t\t}\n\t\n\t\treturn _unique( out );\n\t};\n\t\n\t\n\tvar _selector_opts = function ( opts )\n\t{\n\t\tif ( ! opts ) {\n\t\t\topts = {};\n\t\t}\n\t\n\t\t// Backwards compatibility for 1.9- which used the terminology filter rather\n\t\t// than search\n\t\tif ( opts.filter && opts.search === undefined ) {\n\t\t\topts.search = opts.filter;\n\t\t}\n\t\n\t\treturn $.extend( {\n\t\t\tsearch: 'none',\n\t\t\torder: 'current',\n\t\t\tpage: 'all'\n\t\t}, opts );\n\t};\n\t\n\t\n\tvar _selector_first = function ( inst )\n\t{\n\t\t// Reduce the API instance to the first item found\n\t\tfor ( var i=0, ien=inst.length ; i<ien ; i++ ) {\n\t\t\tif ( inst[i].length > 0 ) {\n\t\t\t\t// Assign the first element to the first item in the instance\n\t\t\t\t// and truncate the instance and context\n\t\t\t\tinst[0] = inst[i];\n\t\t\t\tinst[0].length = 1;\n\t\t\t\tinst.length = 1;\n\t\t\t\tinst.context = [ inst.context[i] ];\n\t\n\t\t\t\treturn inst;\n\t\t\t}\n\t\t}\n\t\n\t\t// Not found - return an empty instance\n\t\tinst.length = 0;\n\t\treturn inst;\n\t};\n\t\n\t\n\tvar _selector_row_indexes = function ( settings, opts )\n\t{\n\t\tvar\n\t\t\ti, ien, tmp, a=[],\n\t\t\tdisplayFiltered = settings.aiDisplay,\n\t\t\tdisplayMaster = settings.aiDisplayMaster;\n\t\n\t\tvar\n\t\t\tsearch = opts.search,  // none, applied, removed\n\t\t\torder  = opts.order,   // applied, current, index (original - compatibility with 1.9)\n\t\t\tpage   = opts.page;    // all, current\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t// In server-side processing mode, most options are irrelevant since\n\t\t\t// rows not shown don't exist and the index order is the applied order\n\t\t\t// Removed is a special case - for consistency just return an empty\n\t\t\t// array\n\t\t\treturn search === 'removed' ?\n\t\t\t\t[] :\n\t\t\t\t_range( 0, displayMaster.length );\n\t\t}\n\t\telse if ( page == 'current' ) {\n\t\t\t// Current page implies that order=current and fitler=applied, since it is\n\t\t\t// fairly senseless otherwise, regardless of what order and search actually\n\t\t\t// are\n\t\t\tfor ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {\n\t\t\t\ta.push( displayFiltered[i] );\n\t\t\t}\n\t\t}\n\t\telse if ( order == 'current' || order == 'applied' ) {\n\t\t\ta = search == 'none' ?\n\t\t\t\tdisplayMaster.slice() :                      // no search\n\t\t\t\tsearch == 'applied' ?\n\t\t\t\t\tdisplayFiltered.slice() :                // applied search\n\t\t\t\t\t$.map( displayMaster, function (el, i) { // removed search\n\t\t\t\t\t\treturn $.inArray( el, displayFiltered ) === -1 ? el : null;\n\t\t\t\t\t} );\n\t\t}\n\t\telse if ( order == 'index' || order == 'original' ) {\n\t\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tif ( search == 'none' ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t\telse { // applied | removed\n\t\t\t\t\ttmp = $.inArray( i, displayFiltered );\n\t\n\t\t\t\t\tif ((tmp === -1 && search == 'removed') ||\n\t\t\t\t\t\t(tmp >= 0   && search == 'applied') )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn a;\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Rows\n\t *\n\t * {}          - no selector - use all available rows\n\t * {integer}   - row aoData index\n\t * {node}      - TR node\n\t * {string}    - jQuery selector to apply to the TR elements\n\t * {array}     - jQuery array of nodes, or simply an array of TR nodes\n\t *\n\t */\n\t\n\t\n\tvar __row_selector = function ( settings, selector, opts )\n\t{\n\t\tvar rows;\n\t\tvar run = function ( sel ) {\n\t\t\tvar selInt = _intVal( sel );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Short cut - selector is a number and no options provided (default is\n\t\t\t// all records, so no need to check if the index is in there, since it\n\t\t\t// must be - dev error if the index doesn't exist).\n\t\t\tif ( selInt !== null && ! opts ) {\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\n\t\t\tif ( ! rows ) {\n\t\t\t\trows = _selector_row_indexes( settings, opts );\n\t\t\t}\n\t\n\t\t\tif ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {\n\t\t\t\t// Selector - integer\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\t\telse if ( sel === null || sel === undefined || sel === '' ) {\n\t\t\t\t// Selector - none\n\t\t\t\treturn rows;\n\t\t\t}\n\t\n\t\t\t// Selector - function\n\t\t\tif ( typeof sel === 'function' ) {\n\t\t\t\treturn $.map( rows, function (idx) {\n\t\t\t\t\tvar row = settings.aoData[ idx ];\n\t\t\t\t\treturn sel( idx, row._aData, row.nTr ) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Get nodes in the order from the `rows` array with null values removed\n\t\t\tvar nodes = _removeEmpty(\n\t\t\t\t_pluck_order( settings.aoData, rows, 'nTr' )\n\t\t\t);\n\t\n\t\t\t// Selector - node\n\t\t\tif ( sel.nodeName ) {\n\t\t\t\tif ( sel._DT_RowIndex !== undefined ) {\n\t\t\t\t\treturn [ sel._DT_RowIndex ]; // Property added by DT for fast lookup\n\t\t\t\t}\n\t\t\t\telse if ( sel._DT_CellIndex ) {\n\t\t\t\t\treturn [ sel._DT_CellIndex.row ];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar host = $(sel).closest('*[data-dt-row]');\n\t\t\t\t\treturn host.length ?\n\t\t\t\t\t\t[ host.data('dt-row') ] :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// ID selector. Want to always be able to select rows by id, regardless\n\t\t\t// of if the tr element has been created or not, so can't rely upon\n\t\t\t// jQuery here - hence a custom implementation. This does not match\n\t\t\t// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,\n\t\t\t// but to select it using a CSS selector engine (like Sizzle or\n\t\t\t// querySelect) it would need to need to be escaped for some characters.\n\t\t\t// DataTables simplifies this for row selectors since you can select\n\t\t\t// only a row. A # indicates an id any anything that follows is the id -\n\t\t\t// unescaped.\n\t\t\tif ( typeof sel === 'string' && sel.charAt(0) === '#' ) {\n\t\t\t\t// get row index from id\n\t\t\t\tvar rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];\n\t\t\t\tif ( rowObj !== undefined ) {\n\t\t\t\t\treturn [ rowObj.idx ];\n\t\t\t\t}\n\t\n\t\t\t\t// need to fall through to jQuery in case there is DOM id that\n\t\t\t\t// matches\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery selector string, array of nodes or jQuery object/\n\t\t\t// As jQuery's .filter() allows jQuery objects to be passed in filter,\n\t\t\t// it also allows arrays, so this will cope with all three options\n\t\t\treturn $(nodes)\n\t\t\t\t.filter( sel )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn this._DT_RowIndex;\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t};\n\t\n\t\treturn _selector_run( 'row', selector, run, settings, opts );\n\t};\n\t\n\t\n\t_api_register( 'rows()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __row_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in __row_selector?\n\t\tinst.selector.rows = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t_api_register( 'rows().nodes()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn settings.aoData[ row ].nTr || undefined;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'rows().data()', function () {\n\t\treturn this.iterator( true, 'rows', function ( settings, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, '_aData' );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\tvar r = settings.aoData[ row ];\n\t\t\treturn type === 'search' ? r._aFilterData : r._aSortData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\t_fnInvalidate( settings, row, src );\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().indexes()', 'row().index()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn row;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {\n\t\tvar a = [];\n\t\tvar context = this.context;\n\t\n\t\t// `iterator` will drop undefined values, but in this case we want them\n\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\tfor ( var j=0, jen=this[i].length ; j<jen ; j++ ) {\n\t\t\t\tvar id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );\n\t\t\t\ta.push( (hash === true ? '#' : '' )+ id );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new _Api( context, a );\n\t} );\n\t\n\t_api_registerPlural( 'rows().remove()', 'row().remove()', function () {\n\t\tvar that = this;\n\t\n\t\tthis.iterator( 'row', function ( settings, row, thatIdx ) {\n\t\t\tvar data = settings.aoData;\n\t\t\tvar rowData = data[ row ];\n\t\t\tvar i, ien, j, jen;\n\t\t\tvar loopRow, loopCells;\n\t\n\t\t\tdata.splice( row, 1 );\n\t\n\t\t\t// Update the cached indexes\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\tloopRow = data[i];\n\t\t\t\tloopCells = loopRow.anCells;\n\t\n\t\t\t\t// Rows\n\t\t\t\tif ( loopRow.nTr !== null ) {\n\t\t\t\t\tloopRow.nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\n\t\t\t\t// Cells\n\t\t\t\tif ( loopCells !== null ) {\n\t\t\t\t\tfor ( j=0, jen=loopCells.length ; j<jen ; j++ ) {\n\t\t\t\t\t\tloopCells[j]._DT_CellIndex.row = i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Delete from the display arrays\n\t\t\t_fnDeleteIndex( settings.aiDisplayMaster, row );\n\t\t\t_fnDeleteIndex( settings.aiDisplay, row );\n\t\t\t_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes\n\t\n\t\t\t// For server-side processing tables - subtract the deleted row from the count\n\t\t\tif ( settings._iRecordsDisplay > 0 ) {\n\t\t\t\tsettings._iRecordsDisplay--;\n\t\t\t}\n\t\n\t\t\t// Check for an 'overflow' they case for displaying the table\n\t\t\t_fnLengthOverflow( settings );\n\t\n\t\t\t// Remove the row's ID reference if there is one\n\t\t\tvar id = settings.rowIdFn( rowData._aData );\n\t\t\tif ( id !== undefined ) {\n\t\t\t\tdelete settings.aIds[ id ];\n\t\t\t}\n\t\t} );\n\t\n\t\tthis.iterator( 'table', function ( settings ) {\n\t\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tsettings.aoData[i].idx = i;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'rows.add()', function ( rows ) {\n\t\tvar newRows = this.iterator( 'table', function ( settings ) {\n\t\t\t\tvar row, i, ien;\n\t\t\t\tvar out = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\t\t\tout.push( _fnAddTr( settings, row )[0] );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tout.push( _fnAddData( settings, row ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn out;\n\t\t\t}, 1 );\n\t\n\t\t// Return an Api.rows() extended instance, so rows().nodes() etc can be used\n\t\tvar modRows = this.rows( -1 );\n\t\tmodRows.pop();\n\t\t$.merge( modRows, newRows );\n\t\n\t\treturn modRows;\n\t} );\n\t\n\t\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'row()', function ( selector, opts ) {\n\t\treturn _selector_first( this.rows( selector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'row().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._aData :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\tctx[0].aoData[ this[0] ]._aData = data;\n\t\n\t\t// Automatically invalidate\n\t\t_fnInvalidate( ctx[0], this[0], 'data' );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'row().node()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\treturn ctx.length && this.length ?\n\t\t\tctx[0].aoData[ this[0] ].nTr || null :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'row.add()', function ( row ) {\n\t\t// Allow a jQuery object to be passed in - only a single row is added from\n\t\t// it though - the first element in the set\n\t\tif ( row instanceof $ && row.length ) {\n\t\t\trow = row[0];\n\t\t}\n\t\n\t\tvar rows = this.iterator( 'table', function ( settings ) {\n\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\treturn _fnAddTr( settings, row )[0];\n\t\t\t}\n\t\t\treturn _fnAddData( settings, row );\n\t\t} );\n\t\n\t\t// Return an Api.rows() extended instance, with the newly added row selected\n\t\treturn this.row( rows[0] );\n\t} );\n\t\n\t\n\t\n\tvar __details_add = function ( ctx, row, data, klass )\n\t{\n\t\t// Convert to array of TR elements\n\t\tvar rows = [];\n\t\tvar addRow = function ( r, k ) {\n\t\t\t// Recursion to allow for arrays of jQuery objects\n\t\t\tif ( $.isArray( r ) || r instanceof $ ) {\n\t\t\t\tfor ( var i=0, ien=r.length ; i<ien ; i++ ) {\n\t\t\t\t\taddRow( r[i], k );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If we get a TR element, then just add it directly - up to the dev\n\t\t\t// to add the correct number of columns etc\n\t\t\tif ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {\n\t\t\t\trows.push( r );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Otherwise create a row with a wrapper\n\t\t\t\tvar created = $('<tr><td/></tr>').addClass( k );\n\t\t\t\t$('td', created)\n\t\t\t\t\t.addClass( k )\n\t\t\t\t\t.html( r )\n\t\t\t\t\t[0].colSpan = _fnVisbleColumns( ctx );\n\t\n\t\t\t\trows.push( created[0] );\n\t\t\t}\n\t\t};\n\t\n\t\taddRow( data, klass );\n\t\n\t\tif ( row._details ) {\n\t\t\trow._details.detach();\n\t\t}\n\t\n\t\trow._details = $(rows);\n\t\n\t\t// If the children were already shown, that state should be retained\n\t\tif ( row._detailsShow ) {\n\t\t\trow._details.insertAfter( row.nTr );\n\t\t}\n\t};\n\t\n\t\n\tvar __details_remove = function ( api, idx )\n\t{\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length ) {\n\t\t\tvar row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];\n\t\n\t\t\tif ( row && row._details ) {\n\t\t\t\trow._details.remove();\n\t\n\t\t\t\trow._detailsShow = undefined;\n\t\t\t\trow._details = undefined;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_display = function ( api, show ) {\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length && api.length ) {\n\t\t\tvar row = ctx[0].aoData[ api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._detailsShow = show;\n\t\n\t\t\t\tif ( show ) {\n\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow._details.detach();\n\t\t\t\t}\n\t\n\t\t\t\t__details_events( ctx[0] );\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_events = function ( settings )\n\t{\n\t\tvar api = new _Api( settings );\n\t\tvar namespace = '.dt.DT_details';\n\t\tvar drawEvent = 'draw'+namespace;\n\t\tvar colvisEvent = 'column-visibility'+namespace;\n\t\tvar destroyEvent = 'destroy'+namespace;\n\t\tvar data = settings.aoData;\n\t\n\t\tapi.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );\n\t\n\t\tif ( _pluck( data, '_details' ).length > 0 ) {\n\t\t\t// On each draw, insert the required elements into the document\n\t\t\tapi.on( drawEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tapi.rows( {page:'current'} ).eq(0).each( function (idx) {\n\t\t\t\t\t// Internal data grab\n\t\t\t\t\tvar row = data[ idx ];\n\t\n\t\t\t\t\tif ( row._detailsShow ) {\n\t\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\n\t\t\t// Column visibility change - update the colspan\n\t\t\tapi.on( colvisEvent, function ( e, ctx, idx, vis ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Update the colspan for the details rows (note, only if it already has\n\t\t\t\t// a colspan)\n\t\t\t\tvar row, visible = _fnVisbleColumns( ctx );\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = data[i];\n\t\n\t\t\t\t\tif ( row._details ) {\n\t\t\t\t\t\trow._details.children('td[colspan]').attr('colspan', visible );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\t// Table destroyed - nuke any child rows\n\t\t\tapi.on( destroyEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( data[i]._details ) {\n\t\t\t\t\t\t__details_remove( api, i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t// Strings for the method names to help minification\n\tvar _emp = '';\n\tvar _child_obj = _emp+'row().child';\n\tvar _child_mth = _child_obj+'()';\n\t\n\t// data can be:\n\t//  tr\n\t//  string\n\t//  jQuery or array of any of the above\n\t_api_register( _child_mth, function ( data, klass ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._details :\n\t\t\t\tundefined;\n\t\t}\n\t\telse if ( data === true ) {\n\t\t\t// show\n\t\t\tthis.child.show();\n\t\t}\n\t\telse if ( data === false ) {\n\t\t\t// remove\n\t\t\t__details_remove( this );\n\t\t}\n\t\telse if ( ctx.length && this.length ) {\n\t\t\t// set\n\t\t\t__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );\n\t\t}\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.show()',\n\t\t_child_mth+'.show()' // only when `child()` was called with parameters (without\n\t], function ( show ) {   // it returns an object and this method is not executed)\n\t\t__details_display( this, true );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.hide()',\n\t\t_child_mth+'.hide()' // only when `child()` was called with parameters (without\n\t], function () {         // it returns an object and this method is not executed)\n\t\t__details_display( this, false );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.remove()',\n\t\t_child_mth+'.remove()' // only when `child()` was called with parameters (without\n\t], function () {           // it returns an object and this method is not executed)\n\t\t__details_remove( this );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( _child_obj+'.isShown()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length && this.length ) {\n\t\t\t// _detailsShown as false or undefined will fall through to return false\n\t\t\treturn ctx[0].aoData[ this[0] ]._detailsShow || false;\n\t\t}\n\t\treturn false;\n\t} );\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Columns\n\t *\n\t * {integer}           - column index (>=0 count from left, <0 count from right)\n\t * \"{integer}:visIdx\"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)\n\t * \"{integer}:visible\" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)\n\t * \"{string}:name\"     - column name\n\t * \"{string}\"          - jQuery selector on column header nodes\n\t *\n\t */\n\t\n\t// can be an array of these items, comma separated list, or an array of comma\n\t// separated lists\n\t\n\tvar __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;\n\t\n\t\n\t// r1 and r2 are redundant - but it means that the parameters match for the\n\t// iterator callback in columns().data()\n\tvar __columnData = function ( settings, column, r1, r2, rows ) {\n\t\tvar a = [];\n\t\tfor ( var row=0, ien=rows.length ; row<ien ; row++ ) {\n\t\t\ta.push( _fnGetCellData( settings, rows[row], column ) );\n\t\t}\n\t\treturn a;\n\t};\n\t\n\t\n\tvar __column_selector = function ( settings, selector, opts )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tnames = _pluck( columns, 'sName' ),\n\t\t\tnodes = _pluck( columns, 'nTh' );\n\t\n\t\tvar run = function ( s ) {\n\t\t\tvar selInt = _intVal( s );\n\t\n\t\t\t// Selector - all\n\t\t\tif ( s === '' ) {\n\t\t\t\treturn _range( columns.length );\n\t\t\t}\n\t\n\t\t\t// Selector - index\n\t\t\tif ( selInt !== null ) {\n\t\t\t\treturn [ selInt >= 0 ?\n\t\t\t\t\tselInt : // Count from left\n\t\t\t\t\tcolumns.length + selInt // Count from right (+ because its a negative value)\n\t\t\t\t];\n\t\t\t}\n\t\n\t\t\t// Selector = function\n\t\t\tif ( typeof s === 'function' ) {\n\t\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\n\t\t\t\treturn $.map( columns, function (col, idx) {\n\t\t\t\t\treturn s(\n\t\t\t\t\t\t\tidx,\n\t\t\t\t\t\t\t__columnData( settings, idx, 0, 0, rows ),\n\t\t\t\t\t\t\tnodes[ idx ]\n\t\t\t\t\t\t) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// jQuery or string selector\n\t\t\tvar match = typeof s === 'string' ?\n\t\t\t\ts.match( __re_column_selector ) :\n\t\t\t\t'';\n\t\n\t\t\tif ( match ) {\n\t\t\t\tswitch( match[2] ) {\n\t\t\t\t\tcase 'visIdx':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\tvar idx = parseInt( match[1], 10 );\n\t\t\t\t\t\t// Visible index given, convert to column index\n\t\t\t\t\t\tif ( idx < 0 ) {\n\t\t\t\t\t\t\t// Counting from the right\n\t\t\t\t\t\t\tvar visColumns = $.map( columns, function (col,i) {\n\t\t\t\t\t\t\t\treturn col.bVisible ? i : null;\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn [ visColumns[ visColumns.length + idx ] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Counting from the left\n\t\t\t\t\t\treturn [ _fnVisibleToColumnIndex( settings, idx ) ];\n\t\n\t\t\t\t\tcase 'name':\n\t\t\t\t\t\t// match by name. `names` is column index complete and in order\n\t\t\t\t\t\treturn $.map( names, function (name, i) {\n\t\t\t\t\t\t\treturn name === match[1] ? i : null;\n\t\t\t\t\t\t} );\n\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Cell in the table body\n\t\t\tif ( s.nodeName && s._DT_CellIndex ) {\n\t\t\t\treturn [ s._DT_CellIndex.column ];\n\t\t\t}\n\t\n\t\t\t// jQuery selector on the TH elements for the columns\n\t\t\tvar jqResult = $( nodes )\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn $.inArray( this, nodes ); // `nodes` is column index complete and in order\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\n\t\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\t\treturn jqResult;\n\t\t\t}\n\t\n\t\t\t// Otherwise a node which might have a `dt-column` data attribute, or be\n\t\t\t// a child or such an element\n\t\t\tvar host = $(s).closest('*[data-dt-column]');\n\t\t\treturn host.length ?\n\t\t\t\t[ host.data('dt-column') ] :\n\t\t\t\t[];\n\t\t};\n\t\n\t\treturn _selector_run( 'column', selector, run, settings, opts );\n\t};\n\t\n\t\n\tvar __setColumnVis = function ( settings, column, vis ) {\n\t\tvar\n\t\t\tcols = settings.aoColumns,\n\t\t\tcol  = cols[ column ],\n\t\t\tdata = settings.aoData,\n\t\t\trow, cells, i, ien, tr;\n\t\n\t\t// Get\n\t\tif ( vis === undefined ) {\n\t\t\treturn col.bVisible;\n\t\t}\n\t\n\t\t// Set\n\t\t// No change\n\t\tif ( col.bVisible === vis ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( vis ) {\n\t\t\t// Insert column\n\t\t\t// Need to decide if we should use appendChild or insertBefore\n\t\t\tvar insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );\n\t\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\ttr = data[i].nTr;\n\t\t\t\tcells = data[i].anCells;\n\t\n\t\t\t\tif ( tr ) {\n\t\t\t\t\t// insertBefore can act like appendChild if 2nd arg is null\n\t\t\t\t\ttr.insertBefore( cells[ column ], cells[ insertBefore ] || null );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Remove column\n\t\t\t$( _pluck( settings.aoData, 'anCells', column ) ).detach();\n\t\t}\n\t\n\t\t// Common actions\n\t\tcol.bVisible = vis;\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t_fnSaveState( settings );\n\t};\n\t\n\t\n\t_api_register( 'columns()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __column_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in _row_selector?\n\t\tinst.selector.cols = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTh;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTf;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().data()', 'column().data()', function () {\n\t\treturn this.iterator( 'column-rows', __columnData, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].mData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows,\n\t\t\t\ttype === 'search' ? '_aFilterData' : '_aSortData', column\n\t\t\t);\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, 'anCells', column ) ;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {\n\t\tvar ret = this.iterator( 'column', function ( settings, column ) {\n\t\t\tif ( vis === undefined ) {\n\t\t\t\treturn settings.aoColumns[ column ].bVisible;\n\t\t\t} // else\n\t\t\t__setColumnVis( settings, column, vis );\n\t\t} );\n\t\n\t\t// Group the column visibility changes\n\t\tif ( vis !== undefined ) {\n\t\t\t// Second loop once the first is done for events\n\t\t\tthis.iterator( 'column', function ( settings, column ) {\n\t\t\t\t_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );\n\t\t\t} );\n\t\n\t\t\tif ( calc === undefined || calc ) {\n\t\t\t\tthis.columns.adjust();\n\t\t\t}\n\t\t}\n\t\n\t\treturn ret;\n\t} );\n\t\n\t_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn type === 'visible' ?\n\t\t\t\t_fnColumnIndexToVisible( settings, column ) :\n\t\t\t\tcolumn;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'columns.adjust()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'column.index()', function ( type, idx ) {\n\t\tif ( this.context.length !== 0 ) {\n\t\t\tvar ctx = this.context[0];\n\t\n\t\t\tif ( type === 'fromVisible' || type === 'toData' ) {\n\t\t\t\treturn _fnVisibleToColumnIndex( ctx, idx );\n\t\t\t}\n\t\t\telse if ( type === 'fromData' || type === 'toVisible' ) {\n\t\t\t\treturn _fnColumnIndexToVisible( ctx, idx );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t_api_register( 'column()', function ( selector, opts ) {\n\t\treturn _selector_first( this.columns( selector, opts ) );\n\t} );\n\t\n\t\n\t\n\tvar __cell_selector = function ( settings, selector, opts )\n\t{\n\t\tvar data = settings.aoData;\n\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\tvar cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );\n\t\tvar allCells = $( [].concat.apply([], cells) );\n\t\tvar row;\n\t\tvar columns = settings.aoColumns.length;\n\t\tvar a, i, ien, j, o, host;\n\t\n\t\tvar run = function ( s ) {\n\t\t\tvar fnSelector = typeof s === 'function';\n\t\n\t\t\tif ( s === null || s === undefined || fnSelector ) {\n\t\t\t\t// All cells and function selectors\n\t\t\t\ta = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tfor ( j=0 ; j<columns ; j++ ) {\n\t\t\t\t\t\to = {\n\t\t\t\t\t\t\trow: row,\n\t\t\t\t\t\t\tcolumn: j\n\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\tif ( fnSelector ) {\n\t\t\t\t\t\t\t// Selector - function\n\t\t\t\t\t\t\thost = data[ row ];\n\t\n\t\t\t\t\t\t\tif ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {\n\t\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// Selector - all\n\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn a;\n\t\t\t}\n\t\t\t\n\t\t\t// Selector - index\n\t\t\tif ( $.isPlainObject( s ) ) {\n\t\t\t\treturn [s];\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery filtered cells\n\t\t\tvar jqResult = allCells\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function (i, el) {\n\t\t\t\t\treturn { // use a new object, in case someone changes the values\n\t\t\t\t\t\trow:    el._DT_CellIndex.row,\n\t\t\t\t\t\tcolumn: el._DT_CellIndex.column\n\t \t\t\t\t};\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\n\t\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\t\treturn jqResult;\n\t\t\t}\n\t\n\t\t\t// Otherwise the selector is a node, and there is one last option - the\n\t\t\t// element might be a child of an element which has dt-row and dt-column\n\t\t\t// data attributes\n\t\t\thost = $(s).closest('*[data-dt-row]');\n\t\t\treturn host.length ?\n\t\t\t\t[ {\n\t\t\t\t\trow: host.data('dt-row'),\n\t\t\t\t\tcolumn: host.data('dt-column')\n\t\t\t\t} ] :\n\t\t\t\t[];\n\t\t};\n\t\n\t\treturn _selector_run( 'cell', selector, run, settings, opts );\n\t};\n\t\n\t\n\t\n\t\n\t_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {\n\t\t// Argument shifting\n\t\tif ( $.isPlainObject( rowSelector ) ) {\n\t\t\t// Indexes\n\t\t\tif ( rowSelector.row === undefined ) {\n\t\t\t\t// Selector options in first parameter\n\t\t\t\topts = rowSelector;\n\t\t\t\trowSelector = null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Cell index objects in first parameter\n\t\t\t\topts = columnSelector;\n\t\t\t\tcolumnSelector = null;\n\t\t\t}\n\t\t}\n\t\tif ( $.isPlainObject( columnSelector ) ) {\n\t\t\topts = columnSelector;\n\t\t\tcolumnSelector = null;\n\t\t}\n\t\n\t\t// Cell selector\n\t\tif ( columnSelector === null || columnSelector === undefined ) {\n\t\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t\treturn __cell_selector( settings, rowSelector, _selector_opts( opts ) );\n\t\t\t} );\n\t\t}\n\t\n\t\t// Row + column selector\n\t\tvar columns = this.columns( columnSelector, opts );\n\t\tvar rows = this.rows( rowSelector, opts );\n\t\tvar a, i, ien, j, jen;\n\t\n\t\tvar cells = this.iterator( 'table', function ( settings, idx ) {\n\t\t\ta = [];\n\t\n\t\t\tfor ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {\n\t\t\t\tfor ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {\n\t\t\t\t\ta.push( {\n\t\t\t\t\t\trow:    rows[idx][i],\n\t\t\t\t\t\tcolumn: columns[idx][j]\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn a;\n\t\t}, 1 );\n\t\n\t\t$.extend( cells.selector, {\n\t\t\tcols: columnSelector,\n\t\t\trows: rowSelector,\n\t\t\topts: opts\n\t\t} );\n\t\n\t\treturn cells;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\tvar data = settings.aoData[ row ];\n\t\n\t\t\treturn data && data.anCells ?\n\t\t\t\tdata.anCells[ column ] :\n\t\t\t\tundefined;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_register( 'cells().data()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {\n\t\ttype = type === 'search' ? '_aFilterData' : '_aSortData';\n\t\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn settings.aoData[ row ][ type ][ column ];\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column, type );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn {\n\t\t\t\trow: row,\n\t\t\t\tcolumn: column,\n\t\t\t\tcolumnVisible: _fnColumnIndexToVisible( settings, column )\n\t\t\t};\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\t_fnInvalidate( settings, row, src, column );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {\n\t\treturn _selector_first( this.cells( rowSelector, columnSelector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'cell().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\tvar cell = this[0];\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && cell.length ?\n\t\t\t\t_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\t_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );\n\t\t_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get current ordering (sorting) that has been applied to the table.\n\t *\n\t * @returns {array} 2D array containing the sorting information for the first\n\t *   table in the current context. Each element in the parent array represents\n\t *   a column being sorted upon (i.e. multi-sorting with two columns would have\n\t *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is\n\t *   the column index that the sorting condition applies to, the second is the\n\t *   direction of the sort (`desc` or `asc`) and, optionally, the third is the\n\t *   index of the sorting order from the `column.sorting` initialisation array.\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {integer} order Column index to sort upon.\n\t * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 1D array of sorting information to be applied.\n\t * @param {array} [...] Optional additional sorting conditions\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 2D array of sorting information to be applied.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order()', function ( order, dir ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( order === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].aaSorting :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\tif ( typeof order === 'number' ) {\n\t\t\t// Simple column / direction passed in\n\t\t\torder = [ [ order, dir ] ];\n\t\t}\n\t\telse if ( order.length && ! $.isArray( order[0] ) ) {\n\t\t\t// Arguments passed in (list of 1D arrays)\n\t\t\torder = Array.prototype.slice.call( arguments );\n\t\t}\n\t\t// otherwise a 2D array was passed in\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSorting = order.slice();\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Attach a sort listener to an element for a given column\n\t *\n\t * @param {node|jQuery|string} node Identifier for the element(s) to attach the\n\t *   listener to. This can take the form of a single DOM node, a jQuery\n\t *   collection of nodes or a jQuery selector which will identify the node(s).\n\t * @param {integer} column the column that a click on this node will sort on\n\t * @param {function} [callback] callback function when sort is run\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order.listener()', function ( node, column, callback ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSortAttachListener( settings, node, column, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'order.fixed()', function ( set ) {\n\t\tif ( ! set ) {\n\t\t\tvar ctx = this.context;\n\t\t\tvar fixed = ctx.length ?\n\t\t\t\tctx[0].aaSortingFixed :\n\t\t\t\tundefined;\n\t\n\t\t\treturn $.isArray( fixed ) ?\n\t\t\t\t{ pre: fixed } :\n\t\t\t\tfixed;\n\t\t}\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSortingFixed = $.extend( true, {}, set );\n\t\t} );\n\t} );\n\t\n\t\n\t// Order by the selected column(s)\n\t_api_register( [\n\t\t'columns().order()',\n\t\t'column().order()'\n\t], function ( dir ) {\n\t\tvar that = this;\n\t\n\t\treturn this.iterator( 'table', function ( settings, i ) {\n\t\t\tvar sort = [];\n\t\n\t\t\t$.each( that[i], function (j, col) {\n\t\t\t\tsort.push( [ col, dir ] );\n\t\t\t} );\n\t\n\t\t\tsettings.aaSorting = sort;\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'search()', function ( input, regex, smart, caseInsen ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( input === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].oPreviousSearch.sSearch :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {\n\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t} ), 1 );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural(\n\t\t'columns().search()',\n\t\t'column().search()',\n\t\tfunction ( input, regex, smart, caseInsen ) {\n\t\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\t\tvar preSearch = settings.aoPreSearchCols;\n\t\n\t\t\t\tif ( input === undefined ) {\n\t\t\t\t\t// get\n\t\t\t\t\treturn preSearch[ column ].sSearch;\n\t\t\t\t}\n\t\n\t\t\t\t// set\n\t\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t$.extend( preSearch[ column ], {\n\t\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t\t} );\n\t\n\t\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch, 1 );\n\t\t\t} );\n\t\t}\n\t);\n\t\n\t/*\n\t * State API methods\n\t */\n\t\n\t_api_register( 'state()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oSavedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t// Save an empty object\n\t\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, {} );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'state.loaded()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oLoadedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.save()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSaveState( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being\n\t * used, in order to ensure compatibility.\n\t *\n\t *  @param {string} version Version string to check for, in the format \"X.Y.Z\".\n\t *    Note that the formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to\n\t *    the required version, or false if this version of DataTales is not\n\t *    suitable\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );\n\t */\n\tDataTable.versionCheck = DataTable.fnVersionCheck = function( version )\n\t{\n\t\tvar aThis = DataTable.version.split('.');\n\t\tvar aThat = version.split('.');\n\t\tvar iThis, iThat;\n\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {\n\t\t\tiThis = parseInt( aThis[i], 10 ) || 0;\n\t\t\tiThat = parseInt( aThat[i], 10 ) || 0;\n\t\n\t\t\t// Parts are the same, keep comparing\n\t\t\tif (iThis === iThat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\t// Parts are different, return immediately\n\t\t\treturn iThis > iThat;\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Check if a `<table>` node is a DataTable table already or not.\n\t *\n\t *  @param {node|jquery|string} table Table node, jQuery object or jQuery\n\t *      selector for the table to test. Note that if more than more than one\n\t *      table is passed on, only the first will be checked\n\t *  @returns {boolean} true the table given is a DataTable, or false otherwise\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {\n\t *      $('#example').dataTable();\n\t *    }\n\t */\n\tDataTable.isDataTable = DataTable.fnIsDataTable = function ( table )\n\t{\n\t\tvar t = $(table).get(0);\n\t\tvar is = false;\n\t\n\t\tif ( table instanceof DataTable.Api ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\t$.each( DataTable.settings, function (i, o) {\n\t\t\tvar head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;\n\t\t\tvar foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;\n\t\n\t\t\tif ( o.nTable === t || head === t || foot === t ) {\n\t\t\t\tis = true;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn is;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can\n\t * select to get only currently visible tables.\n\t *\n\t *  @param {boolean} [visible=false] Flag to indicate if you want all (default)\n\t *    or visible tables only.\n\t *  @returns {array} Array of `table` nodes (not DataTable instances) which are\n\t *    DataTables\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    $.each( $.fn.dataTable.tables(true), function () {\n\t *      $(table).DataTable().columns.adjust();\n\t *    } );\n\t */\n\tDataTable.tables = DataTable.fnTables = function ( visible )\n\t{\n\t\tvar api = false;\n\t\n\t\tif ( $.isPlainObject( visible ) ) {\n\t\t\tapi = visible.api;\n\t\t\tvisible = visible.visible;\n\t\t}\n\t\n\t\tvar a = $.map( DataTable.settings, function (o) {\n\t\t\tif ( !visible || (visible && $(o.nTable).is(':visible')) ) {\n\t\t\t\treturn o.nTable;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn api ?\n\t\t\tnew _Api( a ) :\n\t\t\ta;\n\t};\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian notation. This is made public\n\t * for the extensions to provide the same ability as DataTables core to accept\n\t * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase\n\t * parameters.\n\t *\n\t *  @param {object} src The model object which holds all parameters that can be\n\t *    mapped.\n\t *  @param {object} user The object to convert from camel case to Hungarian.\n\t *  @param {boolean} force When set to `true`, properties which already have a\n\t *    Hungarian value in the `user` object will be overwritten. Otherwise they\n\t *    won't be.\n\t */\n\tDataTable.camelToHungarian = _fnCamelToHungarian;\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( '$()', function ( selector, opts ) {\n\t\tvar\n\t\t\trows   = this.rows( opts ).nodes(), // Get all rows\n\t\t\tjqRows = $(rows);\n\t\n\t\treturn $( [].concat(\n\t\t\tjqRows.filter( selector ).toArray(),\n\t\t\tjqRows.find( selector ).toArray()\n\t\t) );\n\t} );\n\t\n\t\n\t// jQuery functions to operate on the tables\n\t$.each( [ 'on', 'one', 'off' ], function (i, key) {\n\t\t_api_register( key+'()', function ( /* event, handler */ ) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\n\t\t\t// Add the `dt` namespace automatically if it isn't already present\n\t\t\targs[0] = $.map( args[0].split( /\\s/ ), function ( e ) {\n\t\t\t\treturn ! e.match(/\\.dt\\b/) ?\n\t\t\t\t\te+'.dt' :\n\t\t\t\t\te;\n\t\t\t\t} ).join( ' ' );\n\t\n\t\t\tvar inst = $( this.tables().nodes() );\n\t\t\tinst[key].apply( inst, args );\n\t\t\treturn this;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnClearTable( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'settings()', function () {\n\t\treturn new _Api( this.context, this.context );\n\t} );\n\t\n\t\n\t_api_register( 'init()', function () {\n\t\tvar ctx = this.context;\n\t\treturn ctx.length ? ctx[0].oInit : null;\n\t} );\n\t\n\t\n\t_api_register( 'data()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\treturn _pluck( settings.aoData, '_aData' );\n\t\t} ).flatten();\n\t} );\n\t\n\t\n\t_api_register( 'destroy()', function ( remove ) {\n\t\tremove = remove || false;\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tvar orig      = settings.nTableWrapper.parentNode;\n\t\t\tvar classes   = settings.oClasses;\n\t\t\tvar table     = settings.nTable;\n\t\t\tvar tbody     = settings.nTBody;\n\t\t\tvar thead     = settings.nTHead;\n\t\t\tvar tfoot     = settings.nTFoot;\n\t\t\tvar jqTable   = $(table);\n\t\t\tvar jqTbody   = $(tbody);\n\t\t\tvar jqWrapper = $(settings.nTableWrapper);\n\t\t\tvar rows      = $.map( settings.aoData, function (r) { return r.nTr; } );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Flag to note that the table is currently being destroyed - no action\n\t\t\t// should be taken\n\t\t\tsettings.bDestroying = true;\n\t\n\t\t\t// Fire off the destroy callbacks for plug-ins etc\n\t\t\t_fnCallbackFire( settings, \"aoDestroyCallback\", \"destroy\", [settings] );\n\t\n\t\t\t// If not being removed from the document, make all columns visible\n\t\t\tif ( ! remove ) {\n\t\t\t\tnew _Api( settings ).columns().visible( true );\n\t\t\t}\n\t\n\t\t\t// Blitz all `DT` namespaced events (these are internal events, the\n\t\t\t// lowercase, `dt` events are user subscribed and they are responsible\n\t\t\t// for removing them\n\t\t\tjqWrapper.off('.DT').find(':not(tbody *)').off('.DT');\n\t\t\t$(window).off('.DT-'+settings.sInstance);\n\t\n\t\t\t// When scrolling we had to break the table up - restore it\n\t\t\tif ( table != thead.parentNode ) {\n\t\t\t\tjqTable.children('thead').detach();\n\t\t\t\tjqTable.append( thead );\n\t\t\t}\n\t\n\t\t\tif ( tfoot && table != tfoot.parentNode ) {\n\t\t\t\tjqTable.children('tfoot').detach();\n\t\t\t\tjqTable.append( tfoot );\n\t\t\t}\n\t\n\t\t\tsettings.aaSorting = [];\n\t\t\tsettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( settings );\n\t\n\t\t\t$( rows ).removeClass( settings.asStripeClasses.join(' ') );\n\t\n\t\t\t$('th, td', thead).removeClass( classes.sSortable+' '+\n\t\t\t\tclasses.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone\n\t\t\t);\n\t\n\t\t\t// Add the TR elements back into the table in their original order\n\t\t\tjqTbody.children().detach();\n\t\t\tjqTbody.append( rows );\n\t\n\t\t\t// Remove the DataTables generated nodes, events and classes\n\t\t\tvar removedMethod = remove ? 'remove' : 'detach';\n\t\t\tjqTable[ removedMethod ]();\n\t\t\tjqWrapper[ removedMethod ]();\n\t\n\t\t\t// If we need to reattach the table to the document\n\t\t\tif ( ! remove && orig ) {\n\t\t\t\t// insertBefore acts like appendChild if !arg[1]\n\t\t\t\torig.insertBefore( table, settings.nTableReinsertBefore );\n\t\n\t\t\t\t// Restore the width of the original table - was read from the style property,\n\t\t\t\t// so we can restore directly to that\n\t\t\t\tjqTable\n\t\t\t\t\t.css( 'width', settings.sDestroyWidth )\n\t\t\t\t\t.removeClass( classes.sTable );\n\t\n\t\t\t\t// If the were originally stripe classes - then we add them back here.\n\t\t\t\t// Note this is not fool proof (for example if not all rows had stripe\n\t\t\t\t// classes - but it's a good effort without getting carried away\n\t\t\t\tien = settings.asDestroyStripes.length;\n\t\n\t\t\t\tif ( ien ) {\n\t\t\t\t\tjqTbody.children().each( function (i) {\n\t\t\t\t\t\t$(this).addClass( settings.asDestroyStripes[i % ien] );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tvar idx = $.inArray( settings, DataTable.settings );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\tDataTable.settings.splice( idx, 1 );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\t\n\t// Add the `every()` method for rows, columns and cells in a compact form\n\t$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {\n\t\t_api_register( type+'s().every()', function ( fn ) {\n\t\t\tvar opts = this.selector.opts;\n\t\t\tvar api = this;\n\t\n\t\t\treturn this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {\n\t\t\t\t// Rows and columns:\n\t\t\t\t//  arg1 - index\n\t\t\t\t//  arg2 - table counter\n\t\t\t\t//  arg3 - loop counter\n\t\t\t\t//  arg4 - undefined\n\t\t\t\t// Cells:\n\t\t\t\t//  arg1 - row index\n\t\t\t\t//  arg2 - column index\n\t\t\t\t//  arg3 - table counter\n\t\t\t\t//  arg4 - loop counter\n\t\t\t\tfn.call(\n\t\t\t\t\tapi[ type ](\n\t\t\t\t\t\targ1,\n\t\t\t\t\t\ttype==='cell' ? arg2 : opts,\n\t\t\t\t\t\ttype==='cell' ? opts : undefined\n\t\t\t\t\t),\n\t\t\t\t\targ1, arg2, arg3, arg4\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t} );\n\t\n\t\n\t// i18n method for extensions to be able to use the language object from the\n\t// DataTable\n\t_api_register( 'i18n()', function ( token, def, plural ) {\n\t\tvar ctx = this.context[0];\n\t\tvar resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );\n\t\n\t\tif ( resolved === undefined ) {\n\t\t\tresolved = def;\n\t\t}\n\t\n\t\tif ( plural !== undefined && $.isPlainObject( resolved ) ) {\n\t\t\tresolved = resolved[ plural ] !== undefined ?\n\t\t\t\tresolved[ plural ] :\n\t\t\t\tresolved._;\n\t\t}\n\t\n\t\treturn resolved.replace( '%d', plural ); // nb: plural might be undefined,\n\t} );\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used\n\t * only for non-release builds. See http://semver.org/ for more information.\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.10.16\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are\n\t * created for the tables on a given page.\n\t *\n\t * Note that the `DataTable.settings` object is aliased to\n\t * `jQuery.fn.dataTableExt` through which it may be accessed and\n\t * manipulated, or `jQuery.fn.dataTable.settings`.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has\n\t * available to it. These models define the objects that are used to hold\n\t * the active state and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t *  @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings\n\t * aoData array.\n\t *  @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Array of TD elements for each row. This is null until the row has been\n\t\t * created.\n\t\t *  @type array nodes\n\t\t *  @default []\n\t\t */\n\t\t\"anCells\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data\n\t\t * source.\n\t\t *  @type array|object\n\t\t *  @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is\n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_aSortData\": null,\n\t\n\t\t/**\n\t\t * Per cell filtering data cache. As per the sort data cache, used to\n\t\t * increase the performance of the filtering in DataTables\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_aFilterData\": null,\n\t\n\t\t/**\n\t\t * Filtering data cache. This is the same as the cell filtering cache, but\n\t\t * in this case a string rather than an array. This is easily computed with\n\t\t * a join on `_aFilterData`, but is provided as a cache so the join isn't\n\t\t * needed on every search (memory traded for performance)\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_sFilterRow\": null,\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @private\n\t\t */\n\t\t\"_sRowStripe\": \"\",\n\t\n\t\t/**\n\t\t * Denote if the original data source was from the DOM, or the data source\n\t\t * object. This is used for invalidating data, so DataTables can\n\t\t * automatically read data from the original source, unless uninstructed\n\t\t * otherwise.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"src\": null,\n\t\n\t\t/**\n\t\t * Index in the aoData array. This saves an indexOf lookup when we have the\n\t\t * object, but want to know the index\n\t\t *  @type integer\n\t\t *  @default -1\n\t\t *  @private\n\t\t */\n\t\t\"idx\": -1\n\t};\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults.column}\n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t *  @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * Column index. This could be worked out on-the-fly with $.inArray, but it\n\t\t * is faster to just hold it as a variable\n\t\t *  @type integer\n\t\t *  @default null\n\t\t */\n\t\t\"idx\": null,\n\t\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t *  @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t *  @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t *  @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\n\t\t/**\n\t\t * Store for manual type assignment using the `column.type` option. This\n\t\t * is held in store so we can manipulate the column's `sType` property.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_sManualType\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if HTML5 data attributes should be used as the data\n\t\t * source for filtering or sorting. True is either are.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @private\n\t\t */\n\t\t\"_bAttrSrc\": false,\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column\n\t\t * initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array\n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {string} sSpecific The specific data type you want to get -\n\t\t *    'display', 'type' 'filter' 'sort'\n\t\t *  @returns {*} The data for the cell from the given row's data\n\t\t *  @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b>\n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array\n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {*} sValue Value to set\n\t\t *  @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data\n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used\n\t\t * in DataTables as such, but can be used for plug-ins to reference the\n\t\t * footer for each column.\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t *  @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t *  @type string\n\t\t */\n\t\t\"sName\": null,\n\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t *  @type string\n\t\t *  @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t *  @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\t/**\n\t\t * Width of the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t/*\n\t * Developer note: The properties of the object below are given in Hungarian\n\t * notation, that was used as the interface for DataTables prior to v1.10, however\n\t * from v1.10 onwards the primary interface is camel case. In order to avoid\n\t * breaking backwards compatibility utterly with this change, the Hungarian\n\t * version is still, internally the primary interface, but is is not documented\n\t * - hence the @name tags in each doc comment. This allows a Javascript function\n\t * to create a map from Hungarian notation to camel case (going the other direction\n\t * would require each property to be listed, which would at around 3K to the size\n\t * of DataTables, while this method is about a 0.5K hit.\n\t *\n\t * Ultimately this does pave the way for Hungarian notation to be dropped\n\t * completely, but that is a massive amount of work and will break current\n\t * installs (therefore is on-hold until v2).\n\t */\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation\n\t * time.\n\t *  @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which\n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.data\n\t\t *\n\t\t *  @example\n\t\t *    // Using a 2D array data source\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"data\": [\n\t\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t *        ],\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"Engine\" },\n\t\t *          { \"title\": \"Browser\" },\n\t\t *          { \"title\": \"Platform\" },\n\t\t *          { \"title\": \"Version\" },\n\t\t *          { \"title\": \"Grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using an array of objects as a data source (`data`)\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"data\": [\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  4,\n\t\t *            \"grade\":    \"X\"\n\t\t *          },\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  5,\n\t\t *            \"grade\":    \"C\"\n\t\t *          }\n\t\t *        ],\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"Engine\",   \"data\": \"engine\" },\n\t\t *          { \"title\": \"Browser\",  \"data\": \"browser\" },\n\t\t *          { \"title\": \"Platform\", \"data\": \"platform\" },\n\t\t *          { \"title\": \"Version\",  \"data\": \"version\" },\n\t\t *          { \"title\": \"Grade\",    \"data\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If ordering is enabled, then DataTables will perform a first pass sort on\n\t\t * initialisation. You can define which column(s) the sort is performed\n\t\t * upon, and the sorting direction, with this variable. The `sorting` array\n\t\t * should contain an array for each column to be sorted initially containing\n\t\t * the column's index and a direction string ('asc' or 'desc').\n\t\t *  @type array\n\t\t *  @default [[0,'asc']]\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.order\n\t\t *\n\t\t *  @example\n\t\t *    // Sort by 3rd column first, and then 4th column\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"order\": [[2,'asc'], [3,'desc']]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *    // No initial sorting\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"order\": []\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the `sorting` parameter, but\n\t\t * cannot be overridden by user interaction with the table. What this means\n\t\t * is that you could have a column (visible or hidden) which the sorting\n\t\t * will always be forced on first - any sorting after that (from the user)\n\t\t * will then be performed as required. This can be useful for grouping rows\n\t\t * together.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.orderFixed\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderFixed\": [[0,'asc']]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\n\t\t/**\n\t\t * DataTables can be instructed to load data to display in the table from a\n\t\t * Ajax source. This option defines how that Ajax call is made and where to.\n\t\t *\n\t\t * The `ajax` property has three different modes of operation, depending on\n\t\t * how it is defined. These are:\n\t\t *\n\t\t * * `string` - Set the URL from where the data should be loaded from.\n\t\t * * `object` - Define properties for `jQuery.ajax`.\n\t\t * * `function` - Custom data get function\n\t\t *\n\t\t * `string`\n\t\t * --------\n\t\t *\n\t\t * As a string, the `ajax` property simply defines the URL from which\n\t\t * DataTables will load data.\n\t\t *\n\t\t * `object`\n\t\t * --------\n\t\t *\n\t\t * As an object, the parameters in the object are passed to\n\t\t * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control\n\t\t * of the Ajax request. DataTables has a number of default parameters which\n\t\t * you can override using this option. Please refer to the jQuery\n\t\t * documentation for a full description of the options available, although\n\t\t * the following parameters provide additional options in DataTables or\n\t\t * require special consideration:\n\t\t *\n\t\t * * `data` - As with jQuery, `data` can be provided as an object, but it\n\t\t *   can also be used as a function to manipulate the data DataTables sends\n\t\t *   to the server. The function takes a single parameter, an object of\n\t\t *   parameters with the values that DataTables has readied for sending. An\n\t\t *   object may be returned which will be merged into the DataTables\n\t\t *   defaults, or you can add the items to the object that was passed in and\n\t\t *   not return anything from the function. This supersedes `fnServerParams`\n\t\t *   from DataTables 1.9-.\n\t\t *\n\t\t * * `dataSrc` - By default DataTables will look for the property `data` (or\n\t\t *   `aaData` for compatibility with DataTables 1.9-) when obtaining data\n\t\t *   from an Ajax source or for server-side processing - this parameter\n\t\t *   allows that property to be changed. You can use Javascript dotted\n\t\t *   object notation to get a data source for multiple levels of nesting, or\n\t\t *   it my be used as a function. As a function it takes a single parameter,\n\t\t *   the JSON returned from the server, which can be manipulated as\n\t\t *   required, with the returned value being that used by DataTables as the\n\t\t *   data source for the table. This supersedes `sAjaxDataProp` from\n\t\t *   DataTables 1.9-.\n\t\t *\n\t\t * * `success` - Should not be overridden it is used internally in\n\t\t *   DataTables. To manipulate / transform the data returned by the server\n\t\t *   use `ajax.dataSrc`, or use `ajax` as a function (see below).\n\t\t *\n\t\t * `function`\n\t\t * ----------\n\t\t *\n\t\t * As a function, making the Ajax call is left up to yourself allowing\n\t\t * complete control of the Ajax request. Indeed, if desired, a method other\n\t\t * than Ajax could be used to obtain the required data, such as Web storage\n\t\t * or an AIR database.\n\t\t *\n\t\t * The function is given four parameters and no return is required. The\n\t\t * parameters are:\n\t\t *\n\t\t * 1. _object_ - Data to send to the server\n\t\t * 2. _function_ - Callback function that must be executed when the required\n\t\t *    data has been obtained. That data should be passed into the callback\n\t\t *    as the only parameter\n\t\t * 3. _object_ - DataTables settings object for the table\n\t\t *\n\t\t * Note that this supersedes `fnServerData` from DataTables 1.9-.\n\t\t *\n\t\t *  @type string|object|function\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.ajax\n\t\t *  @since 1.10.0\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax.\n\t\t *   // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": \"data.json\"\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax, using `dataSrc` to change\n\t\t *   // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": \"tableData\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax, using `dataSrc` to read data\n\t\t *   // from a plain array rather than an array in an object\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": \"\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Manipulate the data returned from the server - add a link to data\n\t\t *   // (note this can, should, be done using `render` for the column - this\n\t\t *   // is just a simple example of how the data can be manipulated).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": function ( json ) {\n\t\t *         for ( var i=0, ien=json.length ; i<ien ; i++ ) {\n\t\t *           json[i][0] = '<a href=\"/message/'+json[i][0]+'>View message</a>';\n\t\t *         }\n\t\t *         return json;\n\t\t *       }\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Add data to the request\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"data\": function ( d ) {\n\t\t *         return {\n\t\t *           \"extra_search\": $('#extra').val()\n\t\t *         };\n\t\t *       }\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Send request as POST\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"type\": \"POST\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get the data from localStorage (could interface with a form for\n\t\t *   // adding, editing and removing rows).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": function (data, callback, settings) {\n\t\t *       callback(\n\t\t *         JSON.parse( localStorage.getItem('dataTablesData') )\n\t\t *       );\n\t\t *     }\n\t\t *   } );\n\t\t */\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be\n\t\t * either a 1D array of options which will be used for both the displayed\n\t\t * option and the value, or a 2D array which will use the array in the first\n\t\t * position as the value, and the array in the second position as the\n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *\n\t\t * Note that the `pageLength` property will be automatically set to the\n\t\t * first value given in this array, unless `pageLength` is also provided.\n\t\t *  @type array\n\t\t *  @default [ 10, 25, 50, 100 ]\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.lengthMenu\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The `columns` option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see\n\t\t * {@link DataTable.defaults.column}. Note that if you use `columns` to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t *  @member\n\t\t *\n\t\t *  @name DataTable.defaults.column\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to `columns`, `columnDefs` allows you to target a specific\n\t\t * column, multiple columns, or all columns, using the `targets` property of\n\t\t * each object in the array. This allows great flexibility when creating\n\t\t * tables, as the `columnDefs` arrays can be of any length, targeting the\n\t\t * columns you specifically want. `columnDefs` may use any of the column\n\t\t * options available: {@link DataTable.defaults.column}, but it _must_\n\t\t * have `targets` defined in each object in the array. Values in the `targets`\n\t\t * array may be:\n\t\t *   <ul>\n\t\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t\t *     <li>a negative integer - column index counting from the right</li>\n\t\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t *   </ul>\n\t\t *  @member\n\t\t *\n\t\t *  @name DataTable.defaults.columnDefs\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as `search`, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size\n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * `search` and `escapeRegex` (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.searchCols\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searchCols\": [\n\t\t *          null,\n\t\t *          { \"search\": \"My filter\" },\n\t\t *          null,\n\t\t *          { \"search\": \"^[0-9]\", \"escapeRegex\": false }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This\n\t\t * array may be of any length, and DataTables will apply each class\n\t\t * sequentially, looping when required.\n\t\t *  @type array\n\t\t *  @default null <i>Will take the values determined by the `oClasses.stripe*`\n\t\t *    options</i>\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.stripeClasses\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using `columns`.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.autoWidth\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"autoWidth\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.deferRender\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajax\": \"sources/arrays.txt\",\n\t\t *        \"deferRender\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with\n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.destroy\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"srollY\": \"200px\",\n\t\t *        \"paginate\": false\n\t\t *      } );\n\t\t *\n\t\t *      // Some time later....\n\t\t *      $('#example').dataTable( {\n\t\t *        \"filter\": false,\n\t\t *        \"destroy\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.dom}.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.searching\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searching\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information\n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.info\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"info\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.lengthChange\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"lengthChange\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.paging\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"paging\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.processing\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"processing\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). `destroy` can be used to reinitialise a table if\n\t\t * you need.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.retrieve\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      initTable();\n\t\t *      tableActions();\n\t\t *    } );\n\t\t *\n\t\t *    function initTable ()\n\t\t *    {\n\t\t *      return $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200px\",\n\t\t *        \"paginate\": false,\n\t\t *        \"retrieve\": true\n\t\t *      } );\n\t\t *    }\n\t\t *\n\t\t *    function tableActions ()\n\t\t *    {\n\t\t *      var table = initTable();\n\t\t *      // perform API operations with oTable\n\t\t *    }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.scrollCollapse\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200\",\n\t\t *        \"scrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * `ajax` parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverSide\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"xhr.php\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the `sortable` option for each column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.ordering\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ordering\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or display DataTables' ability to sort multiple columns at the\n\t\t * same time (activated by shift-click by the user).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.orderMulti\n\t\t *\n\t\t *  @example\n\t\t *    // Disable multiple column sorting ability\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderMulti\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortMulti\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.orderCellsTop\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderCellsTop\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes `sorting\\_1`, `sorting\\_2` and\n\t\t * `sorting\\_3` to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.orderClasses\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderClasses\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled HTML5 `localStorage` will be\n\t\t * used to save table display information such as pagination information,\n\t\t * display length, filtering and sorting. As such when the end user reloads\n\t\t * the page the display display will match what thy had previously set up.\n\t\t *\n\t\t * Due to the use of `localStorage` the default state saving is not supported\n\t\t * in IE6 or 7. If state saving is required in those browsers, use\n\t\t * `stateSaveCallback` to provide a storage solution such as cookies.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.stateSave\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t *  @type function\n\t\t *  @param {node} row \"TR\" element for the current row\n\t\t *  @param {array} data Raw data array for this row\n\t\t *  @param {int} dataIndex The index of this row in the internal aoData array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.createdRow\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"createdRow\": function( row, data, dataIndex ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( data[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.drawCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"drawCallback\": function( settings ) {\n\t\t *          alert( 'DataTables has redrawn the table' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' event.\n\t\t *  @type function\n\t\t *  @param {node} foot \"TR\" element for the footer\n\t\t *  @param {array} data Full table data (as derived from the original HTML)\n\t\t *  @param {int} start Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} end Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} display Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.footerCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"footerCallback\": function( tfoot, data, start, end, display ) {\n\t\t *          tfoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+start;\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {int} toFormat number to be formatted\n\t\t *  @returns {string} formatted string for DataTables to show the number\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.formatNumber\n\t\t *\n\t\t *  @example\n\t\t *    // Format a number using a single quote for the separator (note that\n\t\t *    // this can also be done with the language.thousands option)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"formatNumber\": function ( toFormat ) {\n\t\t *          return toFormat.toString().replace(\n\t\t *            /\\B(?=(\\d{3})+(?!\\d))/g, \"'\"\n\t\t *          );\n\t\t *        };\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( toFormat ) {\n\t\t\treturn toFormat.toString().replace(\n\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\t\t\tthis.oLanguage.sThousands\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t *  @type function\n\t\t *  @param {node} head \"TR\" element for the header\n\t\t *  @param {array} data Full table data (as derived from the original HTML)\n\t\t *  @param {int} start Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} end Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} display Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.headerCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fheaderCallback\": function( head, data, start, end, display ) {\n\t\t *          head.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(end-start)+\" records\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {int} start Starting position in data for the draw\n\t\t *  @param {int} end End position in data for the draw\n\t\t *  @param {int} max Total number of rows in the table (regardless of\n\t\t *    filtering)\n\t\t *  @param {int} total Total number of rows in the data set, after filtering\n\t\t *  @param {string} pre The string that DataTables has formatted using it's\n\t\t *    own rules\n\t\t *  @returns {string} The string to be displayed in the information element.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.infoCallback\n\t\t *\n\t\t *  @example\n\t\t *    $('#example').dataTable( {\n\t\t *      \"infoCallback\": function( settings, start, end, max, total, pre ) {\n\t\t *        return start +\" to \"+ end;\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} json The JSON object request from the server - only\n\t\t *    present if client-side Ajax sourced data is used\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.initComplete\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"initComplete\": function(settings, json) {\n\t\t *          alert( 'DataTables has finished its initialisation.' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t\t *    return) will allow it to complete.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.preDrawCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"preDrawCallback\": function( settings ) {\n\t\t *          if ( $('#test').val() == 1 ) {\n\t\t *            return false;\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t *  @type function\n\t\t *  @param {node} row \"TR\" element for the current row\n\t\t *  @param {array} data Raw data array for this row\n\t\t *  @param {int} displayIndex The display index for the current table draw\n\t\t *  @param {int} displayIndexFull The index of the data in the full list of\n\t\t *    rows (after filtering)\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.rowCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"rowCallback\": function( row, data, displayIndex, displayIndexFull ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( data[4] == \"A\" ) {\n\t\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server so something more suitable for your application.\n\t\t * For example you could use POST data, or pull information from a Gears or\n\t\t * AIR database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {string} source HTTP source to obtain the data from (`ajax`)\n\t\t *  @param {array} data A key/value pair object containing the data to send\n\t\t *    to the server\n\t\t *  @param {function} callback to be called on completion of the data get\n\t\t *    process that will draw the data on the page.\n\t\t *  @param {object} settings DataTables settings object\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverData\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t *  It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t *  @type function\n\t\t *  @param {array} data Data array (array of objects which are name/value\n\t\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t\t *    server. In the case of Ajax sourced data with server-side processing\n\t\t *    this will be an empty array, for server-side processing there will be a\n\t\t *    significant number of parameters!\n\t\t *  @returns {undefined} Ensure that you modify the data array passed in,\n\t\t *    as this is passed by reference.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverParams\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} callback Callback that can be executed when done. It\n\t\t *    should be passed the loaded state object.\n\t\t *  @return {object} The DataTables state object to be loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoadCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadCallback\": function (settings, callback) {\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_load\",\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"success\": function (json) {\n\t\t *              callback( json );\n\t\t *            }\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadCallback\": function ( settings ) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(\n\t\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(\n\t\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for\n\t\t * plug-in authors, you should use the `stateLoadParams` event to load parameters for\n\t\t * a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object that is to be loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoadParams\n\t\t *\n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never loaded\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadParams\": function (settings, data) {\n\t\t *          data.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Disallow state loading by returning false\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadParams\": function (settings, data) {\n\t\t *          return false;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object that was loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoaded\n\t\t *\n\t\t *  @example\n\t\t *    // Show an alert with the filtering value that was saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoaded\": function (settings, data) {\n\t\t *          alert( 'Saved filter was: '+data.oSearch.sSearch );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored By default DataTables will use `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object to be saved\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateSaveCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateSaveCallback\": function (settings, data) {\n\t\t *          // Send an Ajax request to the server with the state object\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_save\",\n\t\t *            \"data\": data,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"method\": \"POST\"\n\t\t *            \"success\": function () {}\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveCallback\": function ( settings, data ) {\n\t\t\ttry {\n\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(\n\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname,\n\t\t\t\t\tJSON.stringify( data )\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table\n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or\n\t\t * other state properties or modification. Note that for plug-in authors, you should\n\t\t * use the `stateSaveParams` event to save parameters for a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object to be saved\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateSaveParams\n\t\t *\n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateSaveParams\": function (settings, data) {\n\t\t *          data.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration for which the saved state information is considered valid. After this period\n\t\t * has elapsed the state will be returned to the default.\n\t\t * Value is given in seconds.\n\t\t *  @type int\n\t\t *  @default 7200 <i>(2 hours)</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.stateDuration\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateDuration\": 60*60*24; // 1 day\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iStateDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. `deferLoading`\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t *  @type int | array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.deferLoading\n\t\t *\n\t\t *  @example\n\t\t *    // 57 records available in the table, no filtering applied\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"scripts/server_processing.php\",\n\t\t *        \"deferLoading\": 57\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"scripts/server_processing.php\",\n\t\t *        \"deferLoading\": [ 57, 100 ],\n\t\t *        \"search\": {\n\t\t *          \"search\": \"my_filter\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (`lengthChange`) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.pageLength\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"pageLength\": 50\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.displayStart\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"displayStart\": 20\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a `tabindex` attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.tabIndex\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"tabIndex\": 1\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Classes that DataTables assigns to the various components and features\n\t\t * that it adds to the HTML table. This allows classes to be configured\n\t\t * during initialisation in addition to through the static\n\t\t * {@link DataTable.ext.oStdClasses} object).\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.classes\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.language\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t *  @namespace\n\t\t\t *  @name DataTable.defaults.language.aria\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.aria.sortAscending\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"aria\": {\n\t\t\t\t *            \"sortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.aria.sortDescending\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"aria\": {\n\t\t\t\t *            \"sortDescending\": \" - click/return to sort descending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the built-in pagination\n\t\t\t * control types.\n\t\t\t *  @namespace\n\t\t\t *  @name DataTable.defaults.language.paginate\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default First\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.first\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"first\": \"First page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Last\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.last\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"last\": \"Last page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the\n\t\t\t\t * next page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Next\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.next\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"next\": \"Next page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to\n\t\t\t\t * the previous page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Previous\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.previous\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"previous\": \"Previous page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to `zeroRecords` when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of `zeroRecords` will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t *  @type string\n\t\t\t *  @default No data available in table\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.emptyTable\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"emptyTable\": \"No data available in table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information\n\t\t\t * that is current on display on the page. The following tokens can be\n\t\t\t * used in the string and will be dynamically replaced as the table\n\t\t\t * display updates. This tokens can be placed anywhere in the string, or\n\t\t\t * removed as needed by the language requires:\n\t\t\t *\n\t\t\t * * `\\_START\\_` - Display index of the first record on the current page\n\t\t\t * * `\\_END\\_` - Display index of the last record on the current page\n\t\t\t * * `\\_TOTAL\\_` - Number of records in the table after filtering\n\t\t\t * * `\\_MAX\\_` - Number of records in the table without filtering\n\t\t\t * * `\\_PAGE\\_` - Current page number\n\t\t\t * * `\\_PAGES\\_` - Total number of pages of data in the table\n\t\t\t *\n\t\t\t *  @type string\n\t\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.info\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"info\": \"Showing page _PAGE_ of _PAGES_\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the\n\t\t\t * format of this string should match `info`.\n\t\t\t *  @type string\n\t\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoEmpty\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoEmpty\": \"No entries to show\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended\n\t\t\t * to the information (`info`) to give an idea of how strong the filtering\n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t *  @type string\n\t\t\t *  @default (filtered from _MAX_ total entries)\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoFiltered\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string</i>\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoPostFix\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This decimal place operator is a little different from the other\n\t\t\t * language options since DataTables doesn't output floating point\n\t\t\t * numbers, so it won't ever use this for display of a number. Rather,\n\t\t\t * what this parameter does is modify the sort methods of the table so\n\t\t\t * that numbers which are in a format which has a character other than\n\t\t\t * a period (`.`) as a decimal place will be sorted numerically.\n\t\t\t *\n\t\t\t * Note that numbers with different decimal places cannot be shown in\n\t\t\t * the same table and still be sortable, the table must be consistent.\n\t\t\t * However, multiple different tables on the page can use different\n\t\t\t * decimal place characters.\n\t\t\t *  @type string\n\t\t\t *  @default \n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.decimal\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"decimal\": \",\"\n\t\t\t *          \"thousands\": \".\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sDecimal\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (`formatNumber`) which is\n\t\t\t * used to format large numbers that are used in the table information.\n\t\t\t * By default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t *  @type string\n\t\t\t *  @default ,\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.thousands\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"thousands\": \"'\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sThousands\": \",\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t *  @type string\n\t\t\t *  @default Show _MENU_ entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.lengthMenu\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Language change only\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"lengthMenu\": \"Display _MENU_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Language and options change\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"lengthMenu\": 'Display <select>'+\n\t\t\t *            '<option value=\"10\">10</option>'+\n\t\t\t *            '<option value=\"20\">20</option>'+\n\t\t\t *            '<option value=\"30\">30</option>'+\n\t\t\t *            '<option value=\"40\">40</option>'+\n\t\t\t *            '<option value=\"50\">50</option>'+\n\t\t\t *            '<option value=\"-1\">All</option>'+\n\t\t\t *            '</select> records'\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t *  @type string\n\t\t\t *  @default Loading...\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.loadingRecords\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"loadingRecords\": \"Please wait - loading...\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t *  @type string\n\t\t\t *  @default Processing...\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.processing\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"processing\": \"DataTables is currently busy\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t *  @type string\n\t\t\t *  @default Search:\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.search\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Input text box will be appended at the end automatically\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"search\": \"Filter records:\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Specify where the filter should appear\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"search\": \"Apply filter _INPUT_ to table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Assign a `placeholder` attribute to the search `input` element\n\t\t\t *  @type string\n\t\t\t *  @default \n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.searchPlaceholder\n\t\t\t */\n\t\t\t\"sSearchPlaceholder\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.url\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"url\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. `emptyTable` is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t *  @type string\n\t\t\t *  @default No matching records found\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.zeroRecords\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"zeroRecords\": \"No records to display\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the `search` parameter must be\n\t\t * defined, but all other parameters are optional. When `regex` is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When `smart`\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.search\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"search\": {\"search\": \"Initial search\"}\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * By default DataTables will look for the property `data` (or `aaData` for\n\t\t * compatibility with DataTables 1.9-) when obtaining data from an Ajax\n\t\t * source or for server-side processing - this parameter allows that\n\t\t * property to be changed. You can use Javascript dotted object notation to\n\t\t * get a data source for multiple levels of nesting.\n\t\t *  @type string\n\t\t *  @default data\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.ajaxDataProp\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxDataProp\": \"data\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * You can instruct DataTables to load data from an external\n\t\t * source using this parameter (use aData if you want to pass data in you\n\t\t * already have). Simply provide a url a JSON object can be obtained from.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.ajaxSource\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *   <ul>\n\t\t *     <li>The following options are allowed:\n\t\t *       <ul>\n\t\t *         <li>'l' - Length changing</li>\n\t\t *         <li>'f' - Filtering input</li>\n\t\t *         <li>'t' - The table!</li>\n\t\t *         <li>'i' - Information</li>\n\t\t *         <li>'p' - Pagination</li>\n\t\t *         <li>'r' - pRocessing</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following constants are allowed:\n\t\t *       <ul>\n\t\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following syntax is expected:\n\t\t *       <ul>\n\t\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>Examples:\n\t\t *       <ul>\n\t\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *   </ul>\n\t\t *  @type string\n\t\t *  @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>\n\t\t *    <\"H\"lfr>t<\"F\"ip> <i>(when `jQueryUI` is true)</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.dom\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"dom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * Search delay option. This will throttle full table searches that use the\n\t\t * DataTables provided search input element (it does not effect calls to\n\t\t * `dt-api search()`, providing a delay before the search is made.\n\t\t *  @type integer\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.searchDelay\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searchDelay\": 200\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\n\t\t/**\n\t\t * DataTables features six different built-in options for the buttons to\n\t\t * display for pagination control:\n\t\t *\n\t\t * * `numbers` - Page number buttons only\n\t\t * * `simple` - 'Previous' and 'Next' buttons only\n\t\t * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers\n\t\t * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons\n\t\t * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers\n\t\t * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers\n\t\t *  \n\t\t * Further methods can be added using {@link DataTable.ext.oPagination}.\n\t\t *  @type string\n\t\t *  @default simple_numbers\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.pagingType\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"pagingType\": \"full_numbers\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sPaginationType\": \"simple_numbers\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a\n\t\t * certain layout, or you have a large number of columns in the table, you\n\t\t * can enable x-scrolling to show the table in a viewport, which can be\n\t\t * scrolled. This property can be `true` which will allow the table to\n\t\t * scroll horizontally when needed, or any CSS unit, or a number (in which\n\t\t * case it will be treated as a pixel measurement). Setting as simply `true`\n\t\t * is recommended.\n\t\t *  @type boolean|string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.scrollX\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollX\": true,\n\t\t *        \"scrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.scrollXInner\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollX\": \"100%\",\n\t\t *        \"scrollXInner\": \"110%\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.scrollY\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200px\",\n\t\t *        \"paginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t *  @type string\n\t\t *  @default GET\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverMethod\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sServerMethod\": \"GET\",\n\t\n\t\n\t\t/**\n\t\t * DataTables makes use of renderers when displaying HTML elements for\n\t\t * a table. These renderers can be added or modified by plug-ins to\n\t\t * generate suitable mark-up for a site. For example the Bootstrap\n\t\t * integration plug-in for DataTables uses a paging button renderer to\n\t\t * display pagination buttons in the mark-up required by Bootstrap.\n\t\t *\n\t\t * For further information about the renderers available see\n\t\t * DataTable.ext.renderer\n\t\t *  @type string|object\n\t\t *  @default null\n\t\t *\n\t\t *  @name DataTable.defaults.renderer\n\t\t *\n\t\t */\n\t\t\"renderer\": null,\n\t\n\t\n\t\t/**\n\t\t * Set the data property name that DataTables should use to get a row's id\n\t\t * to set as the `id` property in the node.\n\t\t *  @type string\n\t\t *  @default DT_RowId\n\t\t *\n\t\t *  @name DataTable.defaults.rowId\n\t\t */\n\t\t\"rowId\": \"DT_RowId\"\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults );\n\t\n\t\n\t\n\t/*\n\t * Developer note - See note in model.defaults.js about the use of Hungarian\n\t * notation and camel case.\n\t */\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t *  @namespace\n\t */\n\tDataTable.defaults.column = {\n\t\t/**\n\t\t * Define which column(s) an order will occur on for this column. This\n\t\t * allows a column's ordering to take multiple columns into account when\n\t\t * doing a sort or use the data from a different column. For example first\n\t\t * name / last name columns make sense to do a multi-column sort over the\n\t\t * two columns.\n\t\t *  @type array|int\n\t\t *  @default null <i>Takes the value of the column index automatically</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderData\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderData\": [ 0, 1 ], \"targets\": [ 0 ] },\n\t\t *          { \"orderData\": [ 1, 0 ], \"targets\": [ 1 ] },\n\t\t *          { \"orderData\": 2, \"targets\": [ 2 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"orderData\": [ 0, 1 ] },\n\t\t *          { \"orderData\": [ 1, 0 ] },\n\t\t *          { \"orderData\": 2 },\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * You can control the default ordering direction, and even alter the\n\t\t * behaviour of the sort handler (i.e. only allow ascending ordering etc)\n\t\t * using this parameter.\n\t\t *  @type array\n\t\t *  @default [ 'asc', 'desc' ]\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderSequence\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderSequence\": [ \"asc\" ], \"targets\": [ 1 ] },\n\t\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ], \"targets\": [ 2 ] },\n\t\t *          { \"orderSequence\": [ \"desc\" ], \"targets\": [ 3 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          { \"orderSequence\": [ \"asc\" ] },\n\t\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t *          { \"orderSequence\": [ \"desc\" ] },\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.searchable\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"searchable\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"searchable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable ordering on this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderable\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderable\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"orderable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.visible\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"visible\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"visible\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} td The TD node that has been created\n\t\t *  @param {*} cellData The Data for the cell\n\t\t *  @param {array|object} rowData The data for the whole row\n\t\t *  @param {int} row The row index for the aoData data store\n\t\t *  @param {int} col The column index for aoColumns\n\t\t *\n\t\t *  @name DataTable.defaults.column.createdCell\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [3],\n\t\t *          \"createdCell\": function (td, cellData, rowData, row, col) {\n\t\t *            if ( cellData == \"1.7\" ) {\n\t\t *              $(td).css('color', 'blue')\n\t\t *            }\n\t\t *          }\n\t\t *        } ]\n\t\t *      });\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by `data` in DataTables to ensure naming\n\t\t * consistency. `dataProp` can still be used, as there is backwards\n\t\t * compatibility in DataTables for this option, but it is strongly\n\t\t * recommended that you use `data` in preference to `dataProp`.\n\t\t *  @name DataTable.defaults.column.dataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any data source property,\n\t\t * including deeply nested objects / properties. `data` can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t *   default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t *   three 'special' options that can be used in the string to alter how\n\t\t *   DataTables reads the data from the source object:\n\t\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t *      Javascript to read from nested objects, so to can the options\n\t\t *      specified in `data`. For example: `browser.version` or\n\t\t *      `browser.name`. If your object parameter name contains a period, use\n\t\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t\t *      from and array source, joining the data with the characters provided\n\t\t *      between the two brackets. For example: `name[, ]` would provide a\n\t\t *      comma-space separated list from the source array. If no characters\n\t\t *      are provided between the brackets, the original array source is\n\t\t *      returned.\n\t\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t *      execute a function of the name given. For example: `browser()` for a\n\t\t *      simple function on the data source, `browser.version()` for a\n\t\t *      function in a nested property or even `browser().version` to get an\n\t\t *      object property if the function called returns an object. Note that\n\t\t *      function notation is recommended for use in `render` rather than\n\t\t *      `data` as it is much simpler to use as a renderer.\n\t\t * * `null` - use the original data source for the row rather than plucking\n\t\t *   data directly from it. This action has effects on two other\n\t\t *   initialisation options:\n\t\t *    * `defaultContent` - When null is given as the `data` option and\n\t\t *      `defaultContent` is specified for the column, the value defined by\n\t\t *      `defaultContent` will be used for the cell.\n\t\t *    * `render` - When null is used for the `data` option and the `render`\n\t\t *      option is specified for the column, the whole data source for the\n\t\t *      row is used for the renderer.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t *   needs to set or get the data for a cell in the column. The function\n\t\t *   takes three parameters:\n\t\t *    * Parameters:\n\t\t *      * `{array|object}` The data source for the row\n\t\t *      * `{string}` The type call data requested - this will be 'set' when\n\t\t *        setting data or 'filter', 'display', 'type', 'sort' or undefined\n\t\t *        when gathering data. Note that when `undefined` is given for the\n\t\t *        type DataTables expects to get the raw data for the object back<\n\t\t *      * `{*}` Data to set when the second parameter is 'set'.\n\t\t *    * Return:\n\t\t *      * The return value from the function is not required when 'set' is\n\t\t *        the type of call, but otherwise the return is what will be used\n\t\t *        for the data requested.\n\t\t *\n\t\t * Note that `data` is a getter and setter option. If you just require\n\t\t * formatting of data for output, you will likely want to use `render` which\n\t\t * is simply a getter and thus simpler to use.\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The\n\t\t * name change reflects the flexibility of this property and is consistent\n\t\t * with the naming of mRender. If 'mDataProp' is given, then it will still\n\t\t * be used by DataTables, as it automatically maps the old name to the new\n\t\t * if required.\n\t\t *\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use automatically calculated column index</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.data\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Read table data from objects\n\t\t *    // JSON structure for each row:\n\t\t *    //   {\n\t\t *    //      \"engine\": {value},\n\t\t *    //      \"browser\": {value},\n\t\t *    //      \"platform\": {value},\n\t\t *    //      \"version\": {value},\n\t\t *    //      \"grade\": {value}\n\t\t *    //   }\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/objects.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          { \"data\": \"platform\" },\n\t\t *          { \"data\": \"version\" },\n\t\t *          { \"data\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Read information from deeply nested objects\n\t\t *    // JSON structure for each row:\n\t\t *    //   {\n\t\t *    //      \"engine\": {value},\n\t\t *    //      \"browser\": {value},\n\t\t *    //      \"platform\": {\n\t\t *    //         \"inner\": {value}\n\t\t *    //      },\n\t\t *    //      \"details\": [\n\t\t *    //         {value}, {value}\n\t\t *    //      ]\n\t\t *    //   }\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          { \"data\": \"platform.inner\" },\n\t\t *          { \"data\": \"platform.details.0\" },\n\t\t *          { \"data\": \"platform.details.1\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `data` as a function to provide different information for\n\t\t *    // sorting, filtering and display. In this case, currency (price)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": function ( source, type, val ) {\n\t\t *            if (type === 'set') {\n\t\t *              source.price = val;\n\t\t *              // Store the computed dislay and filter values for efficiency\n\t\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t *              return;\n\t\t *            }\n\t\t *            else if (type === 'display') {\n\t\t *              return source.price_display;\n\t\t *            }\n\t\t *            else if (type === 'filter') {\n\t\t *              return source.price_filter;\n\t\t *            }\n\t\t *            // 'sort', 'type' and undefined all just use the integer\n\t\t *            return source.price;\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using default content\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null,\n\t\t *          \"defaultContent\": \"Click to edit\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using array notation - outputting a list from an array\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": \"name[, ]\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to `data` and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering,\n\t\t * sorting etc) without altering the underlying data for the table, use this\n\t\t * property. `render` can be considered to be the the read only companion to\n\t\t * `data` which is read / write (then as such more complex). Like `data`\n\t\t * this option can be given in a number of different ways to effect its\n\t\t * behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t *   default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t *   three 'special' options that can be used in the string to alter how\n\t\t *   DataTables reads the data from the source object:\n\t\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t *      Javascript to read from nested objects, so to can the options\n\t\t *      specified in `data`. For example: `browser.version` or\n\t\t *      `browser.name`. If your object parameter name contains a period, use\n\t\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t\t *      from and array source, joining the data with the characters provided\n\t\t *      between the two brackets. For example: `name[, ]` would provide a\n\t\t *      comma-space separated list from the source array. If no characters\n\t\t *      are provided between the brackets, the original array source is\n\t\t *      returned.\n\t\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t *      execute a function of the name given. For example: `browser()` for a\n\t\t *      simple function on the data source, `browser.version()` for a\n\t\t *      function in a nested property or even `browser().version` to get an\n\t\t *      object property if the function called returns an object.\n\t\t * * `object` - use different data for the different data types requested by\n\t\t *   DataTables ('filter', 'display', 'type' or 'sort'). The property names\n\t\t *   of the object is the data type the property refers to and the value can\n\t\t *   defined using an integer, string or function using the same rules as\n\t\t *   `render` normally does. Note that an `_` option _must_ be specified.\n\t\t *   This is the default value to use if you haven't specified a value for\n\t\t *   the data type requested by DataTables.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t *   needs to set or get the data for a cell in the column. The function\n\t\t *   takes three parameters:\n\t\t *    * Parameters:\n\t\t *      * {array|object} The data source for the row (based on `data`)\n\t\t *      * {string} The type call data requested - this will be 'filter',\n\t\t *        'display', 'type' or 'sort'.\n\t\t *      * {array|object} The full data source for the row (not based on\n\t\t *        `data`)\n\t\t *    * Return:\n\t\t *      * The return value from the function is what will be used for the\n\t\t *        data requested.\n\t\t *\n\t\t *  @type string|int|function|object|null\n\t\t *  @default null Use the data source value.\n\t\t *\n\t\t *  @name DataTable.defaults.column.render\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Create a comma separated list from an array of objects\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          {\n\t\t *            \"data\": \"platform\",\n\t\t *            \"render\": \"[, ].name\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Execute a function to obtain data\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t\t *          \"render\": \"browserName()\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // As an object, extracting different data for the different types\n\t\t *    // This would be used with a data source such as:\n\t\t *    //   { \"phone\": 5552368, \"phone_filter\": \"5552368 555-2368\", \"phone_display\": \"555-2368\" }\n\t\t *    // Here the `phone` integer is used for sorting and type detection, while `phone_filter`\n\t\t *    // (which has both forms) is used for filtering for if a user inputs either format, while\n\t\t *    // the formatted phone number is the one that is shown in the table.\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t\t *          \"render\": {\n\t\t *            \"_\": \"phone\",\n\t\t *            \"filter\": \"phone_filter\",\n\t\t *            \"display\": \"phone_display\"\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Use as a function to create a link from the data source\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": \"download_link\",\n\t\t *          \"render\": function ( data, type, full ) {\n\t\t *            return '<a href=\"'+data+'\">Download</a>';\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t *  @type string\n\t\t *  @default td\n\t\t *\n\t\t *  @name DataTable.defaults.column.cellType\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Make the first column use TH cells\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"cellType\": \"th\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.class\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"class\": \"my_class\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"class\": \"my_class\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this!\n\t\t *  @type string\n\t\t *  @default <i>Empty string<i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.contentPadding\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"contentPadding\": \"mmm\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because `data`\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t *\n\t\t *  @name DataTable.defaults.column.defaultContent\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          {\n\t\t *            \"data\": null,\n\t\t *            \"defaultContent\": \"Edit\",\n\t\t *            \"targets\": [ -1 ]\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"data\": null,\n\t\t *            \"defaultContent\": \"Edit\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.name\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"name\": \"engine\", \"targets\": [ 0 ] },\n\t\t *          { \"name\": \"browser\", \"targets\": [ 1 ] },\n\t\t *          { \"name\": \"platform\", \"targets\": [ 2 ] },\n\t\t *          { \"name\": \"version\", \"targets\": [ 3 ] },\n\t\t *          { \"name\": \"grade\", \"targets\": [ 4 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"name\": \"engine\" },\n\t\t *          { \"name\": \"browser\" },\n\t\t *          { \"name\": \"platform\" },\n\t\t *          { \"name\": \"version\" },\n\t\t *          { \"name\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the ordering which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to ordering. This allows ordering to occur on user\n\t\t * editable elements such as form inputs.\n\t\t *  @type string\n\t\t *  @default std\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderDataType\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderDataType\": \"dom-text\", \"targets\": [ 2, 3 ] },\n\t\t *          { \"type\": \"numeric\", \"targets\": [ 3 ] },\n\t\t *          { \"orderDataType\": \"dom-select\", \"targets\": [ 4 ] },\n\t\t *          { \"orderDataType\": \"dom-checkbox\", \"targets\": [ 5 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          { \"orderDataType\": \"dom-text\" },\n\t\t *          { \"orderDataType\": \"dom-text\", \"type\": \"numeric\" },\n\t\t *          { \"orderDataType\": \"dom-select\" },\n\t\t *          { \"orderDataType\": \"dom-checkbox\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t *  @type string\n\t\t *  @default null <i>Derived from the 'TH' value for this column in the\n\t\t *    original HTML table.</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.title\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"title\": \"My column title\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"My column title\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be\n\t\t * ordered. Four types (string, numeric, date and html (which will strip\n\t\t * HTML tags before ordering)) are currently available. Note that only date\n\t\t * formats understood by Javascript's Date() object will be accepted as type\n\t\t * date. For example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string',\n\t\t * 'numeric', 'date' or 'html' (by default). Further types can be adding\n\t\t * through plug-ins.\n\t\t *  @type string\n\t\t *  @default null <i>Auto-detected from raw data</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.type\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"type\": \"html\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"type\": \"html\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t *  @type string\n\t\t *  @default null <i>Automatic</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.width\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"width\": \"20%\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"width\": \"20%\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults.column );\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a\n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults} but this\n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t *  @namespace\n\t *  @todo Really should attach the settings object to individual instances so we\n\t *    don't need to create new instances on each $().dataTable() call (if the\n\t *    table already exists). It would also save passing oSettings around and\n\t *    into every single function. However, this is a very significant\n\t *    architecture change for DataTables and will almost certainly break\n\t *    backwards compatibility with older installations. This is something that\n\t *    will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t *  @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\n\t\t\t/**\n\t\t\t * Multi-column sorting\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortMulti\": null,\n\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t *  @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t *  @type int\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is\n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t *  @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t *  @namespace\n\t\t *  @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See\n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t *  @type function\n\t\t\t *  @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t *  @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false,\n\t\n\t\t\t/**\n\t\t\t * Determine if the vertical scrollbar is on the right or left of the\n\t\t\t * scrolling container - needed for rtl language layout, although not\n\t\t\t * all browsers move the scrollbar (Safari).\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollbarLeft\": false,\n\t\n\t\t\t/**\n\t\t\t * Flag for if `getBoundingClientRect` is fully supported or not\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bBounding\": false,\n\t\n\t\t\t/**\n\t\t\t * Browser scrollbar width\n\t\t\t *  @type integer\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"barWidth\": 0\n\t\t},\n\t\n\t\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The\n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *   <ul>\n\t\t *     <li>'l' - Length changing</li>\n\t\t *     <li>'f' - Filtering input</li>\n\t\t *     <li>'t' - The table!</li>\n\t\t *     <li>'i' - Information</li>\n\t\t *     <li>'p' - Pagination</li>\n\t\t *     <li>'r' - pRocessing</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\n\t\t/**\n\t\t * Map of row ids to data indexes\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"aIds\": {},\n\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a\n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\n\t\t/**\n\t\t * Store the applied search for each column - see\n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t *   <li>Index 0 - column number</li>\n\t\t *   <li>Index 1 - current sorting direction</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of\n\t\t * false will be used to cancel the draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data\n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\n\t\t/**\n\t\t * Search delay (in mS)\n\t\t *  @type integer\n\t\t *  @default null\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\t/**\n\t\t * The state duration (for `stateSave`) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iStateDuration\": 0,\n\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an\n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the JSON string to save that has been thus far created. Returns\n\t\t *       a JSON string to be inserted into a json object\n\t\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an\n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the object stored. May return false to cancel state loading</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\n\t\t/**\n\t\t * State that was saved. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oSavedState\": null,\n\t\n\t\t/**\n\t\t * State that was loaded. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case\n\t\t * it is  assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering.\n\t\t * This can be used for working with the XHR information in one of the\n\t\t * callbacks\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\n\t\t/**\n\t\t * JSON returned from the server in the last Ajax request\n\t\t *  @type object\n\t\t *  @default undefined\n\t\t */\n\t\t\"json\": undefined,\n\t\n\t\t/**\n\t\t * Data submitted as part of the last Ajax request\n\t\t *  @type object\n\t\t *  @default undefined\n\t\t */\n\t\t\"oAjaxData\": undefined,\n\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra\n\t\t * parameters can easily be sent to the server\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if\n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t *  @type int\n\t\t *  @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\n\t\t/**\n\t\t * Paging display length\n\t\t *  @type int\n\t\t *  @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type boolean\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than\n\t\t * one unique cell per column, if the top one (true) or bottom one (false)\n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsTotal * 1 :\n\t\t\t\tthis.aiDisplayMaster.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsDisplay * 1 :\n\t\t\t\tthis.aiDisplay.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the display end point - aiDisplay index\n\t\t *  @type function\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tvar\n\t\t\t\tlen      = this._iDisplayLength,\n\t\t\t\tstart    = this._iDisplayStart,\n\t\t\t\tcalc     = start + len,\n\t\t\t\trecords  = this.aiDisplay.length,\n\t\t\t\tfeatures = this.oFeatures,\n\t\t\t\tpaginate = features.bPaginate;\n\t\n\t\t\tif ( features.bServerSide ) {\n\t\t\t\treturn paginate === false || len === -1 ?\n\t\t\t\t\tstart + records :\n\t\t\t\t\tMath.min( start+len, this._iRecordsDisplay );\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn ! paginate || calc>records || len===-1 ?\n\t\t\t\t\trecords :\n\t\t\t\t\tcalc;\n\t\t\t}\n\t\t},\n\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null,\n\t\n\t\t/**\n\t\t * Last applied sort\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLastSort\": [],\n\t\n\t\t/**\n\t\t * Stored plug-in instances\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oPlugins\": {},\n\t\n\t\t/**\n\t\t * Function used to get a row's id from the row's data\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"rowIdFn\": null,\n\t\n\t\t/**\n\t\t * Data location where to store a row's id\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"rowId\": null\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension\n\t * options.\n\t *\n\t * Note that the `DataTable.ext` object is available through\n\t * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is\n\t * also aliased to `jQuery.fn.dataTableExt` for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\t\n\t\n\t/**\n\t * DataTables extensions\n\t * \n\t * This namespace acts as a collection area for plug-ins that can be used to\n\t * extend DataTables capabilities. Indeed many of the build in methods\n\t * use this method to provide their own capabilities (sorting methods for\n\t * example).\n\t *\n\t * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy\n\t * reasons\n\t *\n\t *  @namespace\n\t */\n\tDataTable.ext = _ext = {\n\t\t/**\n\t\t * Buttons. For use with the Buttons extension for DataTables. This is\n\t\t * defined here so other extensions can define buttons regardless of load\n\t\t * order. It is _not_ used by DataTables core.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tbuttons: {},\n\t\n\t\n\t\t/**\n\t\t * Element class names\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tclasses: {},\n\t\n\t\n\t\t/**\n\t\t * DataTables build type (expanded by the download builder)\n\t\t *\n\t\t *  @type string\n\t\t */\n\t\tbuilder: \"-source-\",\n\t\n\t\n\t\t/**\n\t\t * Error reporting.\n\t\t * \n\t\t * How should DataTables report an error. Can take the value 'alert',\n\t\t * 'throw', 'none' or a function.\n\t\t *\n\t\t *  @type string|function\n\t\t *  @default alert\n\t\t */\n\t\terrMode: \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins.\n\t\t * \n\t\t * This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are then available for\n\t\t * use through the `dom` initialisation option.\n\t\t * \n\t\t * Each feature plug-in is described by an object which must have the\n\t\t * following properties:\n\t\t * \n\t\t * * `fnInit` - function that is used to initialise the plug-in,\n\t\t * * `cFeature` - a character so the feature can be enabled by the `dom`\n\t\t *   instillation option. This is case sensitive.\n\t\t *\n\t\t * The `fnInit` function has the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t *\n\t\t * And the following return is expected:\n\t\t * \n\t\t * * {node|null} The element which contains your feature. Note that the\n\t\t *   return may also be void if your plug-in does not require to inject any\n\t\t *   DOM elements into DataTables control (`dom`) - for example this might\n\t\t *   be useful when developing a plug-in which allows table control via\n\t\t *   keyboard entry\n\t\t *\n\t\t *  @type array\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTable.ext.features.push( {\n\t\t *      \"fnInit\": function( oSettings ) {\n\t\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t *      },\n\t\t *      \"cFeature\": \"T\"\n\t\t *    } );\n\t\t */\n\t\tfeature: [],\n\t\n\t\n\t\t/**\n\t\t * Row searching.\n\t\t * \n\t\t * This method of searching is complimentary to the default type based\n\t\t * searching, and a lot more comprehensive as it allows you complete control\n\t\t * over the searching logic. Each element in this array is a function\n\t\t * (parameters described below) that is called for every row in the table,\n\t\t * and your logic decides if it should be included in the searching data set\n\t\t * or not.\n\t\t *\n\t\t * Searching functions have the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t * 2. `{array|object}` Data for the row to be processed (same as the\n\t\t *    original format that was passed in as the data source, or an array\n\t\t *    from a DOM data source\n\t\t * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which\n\t\t *    can be useful to retrieve the `TR` element if you need DOM interaction.\n\t\t *\n\t\t * And the following return is expected:\n\t\t *\n\t\t * * {boolean} Include the row in the searched result set (true) or not\n\t\t *   (false)\n\t\t *\n\t\t * Note that as with the main search ability in DataTables, technically this\n\t\t * is \"filtering\", since it is subtractive. However, for consistency in\n\t\t * naming we call it searching here.\n\t\t *\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @example\n\t\t *    // The following example shows custom search being applied to the\n\t\t *    // fourth column (i.e. the data[3] index) based on two input values\n\t\t *    // from the end-user, matching the data in a certain range.\n\t\t *    $.fn.dataTable.ext.search.push(\n\t\t *      function( settings, data, dataIndex ) {\n\t\t *        var min = document.getElementById('min').value * 1;\n\t\t *        var max = document.getElementById('max').value * 1;\n\t\t *        var version = data[3] == \"-\" ? 0 : data[3]*1;\n\t\t *\n\t\t *        if ( min == \"\" && max == \"\" ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min == \"\" && version < max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min < version && \"\" == max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min < version && version < max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        return false;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\tsearch: [],\n\t\n\t\n\t\t/**\n\t\t * Selector extensions\n\t\t *\n\t\t * The `selector` option can be used to extend the options available for the\n\t\t * selector modifier options (`selector-modifier` object data type) that\n\t\t * each of the three built in selector types offer (row, column and cell +\n\t\t * their plural counterparts). For example the Select extension uses this\n\t\t * mechanism to provide an option to select only rows, columns and cells\n\t\t * that have been marked as selected by the end user (`{selected: true}`),\n\t\t * which can be used in conjunction with the existing built in selector\n\t\t * options.\n\t\t *\n\t\t * Each property is an array to which functions can be pushed. The functions\n\t\t * take three attributes:\n\t\t *\n\t\t * * Settings object for the host table\n\t\t * * Options object (`selector-modifier` object type)\n\t\t * * Array of selected item indexes\n\t\t *\n\t\t * The return is an array of the resulting item indexes after the custom\n\t\t * selector has been applied.\n\t\t *\n\t\t *  @type object\n\t\t */\n\t\tselector: {\n\t\t\tcell: [],\n\t\t\tcolumn: [],\n\t\t\trow: []\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Internal functions, exposed for used in plug-ins.\n\t\t * \n\t\t * Please note that you should not need to use the internal methods for\n\t\t * anything other than a plug-in (and even then, try to avoid if possible).\n\t\t * The internal function may change between releases.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tinternal: {},\n\t\n\t\n\t\t/**\n\t\t * Legacy configuration options. Enable and disable legacy options that\n\t\t * are available in DataTables.\n\t\t *\n\t\t *  @type object\n\t\t */\n\t\tlegacy: {\n\t\t\t/**\n\t\t\t * Enable / disable DataTables 1.9 compatible server-side processing\n\t\t\t * requests\n\t\t\t *\n\t\t\t *  @type boolean\n\t\t\t *  @default null\n\t\t\t */\n\t\t\tajax: null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods.\n\t\t * \n\t\t * Each entry in this object is a function and defines which buttons should\n\t\t * be shown by the pagination rendering method that is used for the table:\n\t\t * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the\n\t\t * buttons are displayed in the document, while the functions here tell it\n\t\t * what buttons to display. This is done by returning an array of button\n\t\t * descriptions (what each button will do).\n\t\t *\n\t\t * Pagination types (the four built in options and any additional plug-in\n\t\t * options defined here) can be used through the `paginationType`\n\t\t * initialisation parameter.\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{int} page` The current page index\n\t\t * 2. `{int} pages` The number of pages in the table\n\t\t *\n\t\t * Each function is expected to return an array where each element of the\n\t\t * array can be one of:\n\t\t *\n\t\t * * `first` - Jump to first page when activated\n\t\t * * `last` - Jump to last page when activated\n\t\t * * `previous` - Show previous page when activated\n\t\t * * `next` - Show next page when activated\n\t\t * * `{int}` - Show page of the index given\n\t\t * * `{array}` - A nested array containing the above elements to add a\n\t\t *   containing 'DIV' element (might be useful for styling).\n\t\t *\n\t\t * Note that DataTables v1.9- used this object slightly differently whereby\n\t\t * an object with two functions would be defined for each plug-in. That\n\t\t * ability is still supported by DataTables 1.10+ to provide backwards\n\t\t * compatibility, but this option of use is now decremented and no longer\n\t\t * documented in DataTables 1.10+.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Show previous, next and current page buttons only\n\t\t *    $.fn.dataTableExt.oPagination.current = function ( page, pages ) {\n\t\t *      return [ 'previous', page, 'next' ];\n\t\t *    };\n\t\t */\n\t\tpager: {},\n\t\n\t\n\t\trenderer: {\n\t\t\tpageButton: {},\n\t\t\theader: {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Ordering plug-ins - custom data source\n\t\t * \n\t\t * The extension options for ordering of data available here is complimentary\n\t\t * to the default type based ordering that DataTables typically uses. It\n\t\t * allows much greater control over the the data that is being used to\n\t\t * order a column, but is necessarily therefore more complex.\n\t\t * \n\t\t * This type of ordering is useful if you want to do ordering based on data\n\t\t * live from the DOM (for example the contents of an 'input' element) rather\n\t\t * than just the static string that DataTables knows of.\n\t\t * \n\t\t * The way these plug-ins work is that you create an array of the values you\n\t\t * wish to be ordering for the column in question and then return that\n\t\t * array. The data in the array much be in the index order of the rows in\n\t\t * the table (not the currently ordering order!). Which order data gathering\n\t\t * function is run here depends on the `dt-init columns.orderDataType`\n\t\t * parameter that is used for the column (if any).\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t * 2. `{int}` Target column index\n\t\t *\n\t\t * Each function is expected to return an array:\n\t\t *\n\t\t * * `{array}` Data for the column to be ordering upon\n\t\t *\n\t\t *  @type array\n\t\t *\n\t\t *  @example\n\t\t *    // Ordering using `input` node values\n\t\t *    $.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )\n\t\t *    {\n\t\t *      return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {\n\t\t *        return $('input', td).val();\n\t\t *      } );\n\t\t *    }\n\t\t */\n\t\torder: {},\n\t\n\t\n\t\t/**\n\t\t * Type based plug-ins.\n\t\t *\n\t\t * Each column in DataTables has a type assigned to it, either by automatic\n\t\t * detection or by direct assignment using the `type` option for the column.\n\t\t * The type of a column will effect how it is ordering and search (plug-ins\n\t\t * can also make use of the column type if required).\n\t\t *\n\t\t * @namespace\n\t\t */\n\t\ttype: {\n\t\t\t/**\n\t\t\t * Type detection functions.\n\t\t\t *\n\t\t\t * The functions defined in this object are used to automatically detect\n\t\t\t * a column's type, making initialisation of DataTables super easy, even\n\t\t\t * when complex data is in the table.\n\t\t\t *\n\t\t\t * The functions defined take two parameters:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be analysed\n\t\t     *  2. `{settings}` DataTables settings object. This can be used to\n\t\t     *     perform context specific type detection - for example detection\n\t\t     *     based on language settings such as using a comma for a decimal\n\t\t     *     place. Generally speaking the options from the settings will not\n\t\t     *     be required\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Data type detected, or null if unknown (and thus\n\t\t\t *   pass it on to the other type detection functions.\n\t\t\t *\n\t\t\t *  @type array\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Currency type detection plug-in:\n\t\t\t *    $.fn.dataTable.ext.type.detect.push(\n\t\t\t *      function ( data, settings ) {\n\t\t\t *        // Check the numeric part\n\t\t\t *        if ( ! $.isNumeric( data.substring(1) ) ) {\n\t\t\t *          return null;\n\t\t\t *        }\n\t\t\t *\n\t\t\t *        // Check prefixed by currency\n\t\t\t *        if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) {\n\t\t\t *          return 'currency';\n\t\t\t *        }\n\t\t\t *        return null;\n\t\t\t *      }\n\t\t\t *    );\n\t\t\t */\n\t\t\tdetect: [],\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based search formatting.\n\t\t\t *\n\t\t\t * The type based searching functions can be used to pre-format the\n\t\t\t * data to be search on. For example, it can be used to strip HTML\n\t\t\t * tags or to de-format telephone numbers for numeric only searching.\n\t\t\t *\n\t\t\t * Note that is a search is not defined for a column of a given type,\n\t\t\t * no search formatting will be performed.\n\t\t\t * \n\t\t\t * Pre-processing of searching data plug-ins - When you assign the sType\n\t\t\t * for a column (or have it automatically detected for you by DataTables\n\t\t\t * or a type detection plug-in), you will typically be using this for\n\t\t\t * custom sorting, but it can also be used to provide custom searching\n\t\t\t * by allowing you to pre-processing the data and returning the data in\n\t\t\t * the format that should be searched upon. This is done by adding\n\t\t\t * functions this object with a parameter name which matches the sType\n\t\t\t * for that target column. This is the corollary of <i>afnSortData</i>\n\t\t\t * for searching data.\n\t\t\t *\n\t\t\t * The functions defined take a single parameter:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be prepared for searching\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Formatted string that will be used for the searching.\n\t\t\t *\n\t\t\t *  @type object\n\t\t\t *  @default {}\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {\n\t\t\t *      return d.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t *    }\n\t\t\t */\n\t\t\tsearch: {},\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based ordering.\n\t\t\t *\n\t\t\t * The column type tells DataTables what ordering to apply to the table\n\t\t\t * when a column is sorted upon. The order for each type that is defined,\n\t\t\t * is defined by the functions available in this object.\n\t\t\t *\n\t\t\t * Each ordering option can be described by three properties added to\n\t\t\t * this object:\n\t\t\t *\n\t\t\t * * `{type}-pre` - Pre-formatting function\n\t\t\t * * `{type}-asc` - Ascending order function\n\t\t\t * * `{type}-desc` - Descending order function\n\t\t\t *\n\t\t\t * All three can be used together, only `{type}-pre` or only\n\t\t\t * `{type}-asc` and `{type}-desc` together. It is generally recommended\n\t\t\t * that only `{type}-pre` is used, as this provides the optimal\n\t\t\t * implementation in terms of speed, although the others are provided\n\t\t\t * for compatibility with existing Javascript sort functions.\n\t\t\t *\n\t\t\t * `{type}-pre`: Functions defined take a single parameter:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be prepared for ordering\n\t\t\t *\n\t\t\t * And return:\n\t\t\t *\n\t\t\t * * `{*}` Data to be sorted upon\n\t\t\t *\n\t\t\t * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort\n\t\t\t * functions, taking two parameters:\n\t\t\t *\n\t\t     *  1. `{*}` Data to compare to the second parameter\n\t\t     *  2. `{*}` Data to compare to the first parameter\n\t\t\t *\n\t\t\t * And returning:\n\t\t\t *\n\t\t\t * * `{*}` Ordering match: <0 if first parameter should be sorted lower\n\t\t\t *   than the second parameter, ===0 if the two parameters are equal and\n\t\t\t *   >0 if the first parameter should be sorted height than the second\n\t\t\t *   parameter.\n\t\t\t * \n\t\t\t *  @type object\n\t\t\t *  @default {}\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Numeric ordering of formatted numbers with a pre-formatter\n\t\t\t *    $.extend( $.fn.dataTable.ext.type.order, {\n\t\t\t *      \"string-pre\": function(x) {\n\t\t\t *        a = (a === \"-\" || a === \"\") ? 0 : a.replace( /[^\\d\\-\\.]/g, \"\" );\n\t\t\t *        return parseFloat( a );\n\t\t\t *      }\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Case-sensitive string ordering, with no pre-formatting method\n\t\t\t *    $.extend( $.fn.dataTable.ext.order, {\n\t\t\t *      \"string-case-asc\": function(x,y) {\n\t\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t\t *      },\n\t\t\t *      \"string-case-desc\": function(x,y) {\n\t\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t\t *      }\n\t\t\t *    } );\n\t\t\t */\n\t\t\torder: {}\n\t\t},\n\t\n\t\t/**\n\t\t * Unique DataTables instance counter\n\t\t *\n\t\t * @type int\n\t\t * @private\n\t\t */\n\t\t_unique: 0,\n\t\n\t\n\t\t//\n\t\t// Depreciated\n\t\t// The following properties are retained for backwards compatiblity only.\n\t\t// The should not be used in new projects and will be removed in a future\n\t\t// version\n\t\t//\n\t\n\t\t/**\n\t\t * Version check function.\n\t\t *  @type function\n\t\t *  @depreciated Since 1.10\n\t\t */\n\t\tfnVersionCheck: DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t *  @type int\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\tiApiIndex: 0,\n\t\n\t\n\t\t/**\n\t\t * jQuery UI class container\n\t\t *  @type object\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\toJUIClasses: {},\n\t\n\t\n\t\t/**\n\t\t * Software version\n\t\t *  @type string\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\tsVersion: DataTable.version\n\t};\n\t\n\t\n\t//\n\t// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts\n\t//\n\t$.extend( _ext, {\n\t\tafnFiltering: _ext.search,\n\t\taTypes:       _ext.type.detect,\n\t\tofnSearch:    _ext.type.search,\n\t\toSort:        _ext.type.order,\n\t\tafnSortData:  _ext.order,\n\t\taoFeatures:   _ext.feature,\n\t\toApi:         _ext.internal,\n\t\toStdClasses:  _ext.classes,\n\t\toPagination:  _ext.pager\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.classes, {\n\t\t\"sTable\": \"dataTable\",\n\t\t\"sNoFooter\": \"no-footer\",\n\t\n\t\t/* Paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"current\",\n\t\t\"sPageButtonDisabled\": \"disabled\",\n\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\n\t\t/* Filtering */\n\t\t\"sFilterInput\": \"\",\n\t\n\t\t/* Page length */\n\t\t\"sLengthSelect\": \"\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": \"\",\n\t\t\"sFooterTH\": \"\",\n\t\n\t\t// Deprecated\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\tvar extPagination = DataTable.ext.pager;\n\t\n\tfunction _numbers ( page, pages ) {\n\t\tvar\n\t\t\tnumbers = [],\n\t\t\tbuttons = extPagination.numbers_length,\n\t\t\thalf = Math.floor( buttons / 2 ),\n\t\t\ti = 1;\n\t\n\t\tif ( pages <= buttons ) {\n\t\t\tnumbers = _range( 0, pages );\n\t\t}\n\t\telse if ( page <= half ) {\n\t\t\tnumbers = _range( 0, buttons-2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t}\n\t\telse if ( page >= pages - 1 - half ) {\n\t\t\tnumbers = _range( pages-(buttons-2), pages );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\telse {\n\t\t\tnumbers = _range( page-half+2, page+half-1 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' );\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\n\t\tnumbers.DT_el = 'span';\n\t\treturn numbers;\n\t}\n\t\n\t\n\t$.extend( extPagination, {\n\t\tsimple: function ( page, pages ) {\n\t\t\treturn [ 'previous', 'next' ];\n\t\t},\n\t\n\t\tfull: function ( page, pages ) {\n\t\t\treturn [  'first', 'previous', 'next', 'last' ];\n\t\t},\n\t\n\t\tnumbers: function ( page, pages ) {\n\t\t\treturn [ _numbers(page, pages) ];\n\t\t},\n\t\n\t\tsimple_numbers: function ( page, pages ) {\n\t\t\treturn [ 'previous', _numbers(page, pages), 'next' ];\n\t\t},\n\t\n\t\tfull_numbers: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];\n\t\t},\n\t\t\n\t\tfirst_last_numbers: function (page, pages) {\n\t \t\treturn ['first', _numbers(page, pages), 'last'];\n\t \t},\n\t\n\t\t// For testing and plug-ins to use\n\t\t_numbers: _numbers,\n\t\n\t\t// Number of number buttons (including ellipsis) to show. _Must be odd!_\n\t\tnumbers_length: 7\n\t} );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\tpageButton: {\n\t\t\t_: function ( settings, host, idx, buttons, page, pages ) {\n\t\t\t\tvar classes = settings.oClasses;\n\t\t\t\tvar lang = settings.oLanguage.oPaginate;\n\t\t\t\tvar aria = settings.oLanguage.oAria.paginate || {};\n\t\t\t\tvar btnDisplay, btnClass, counter=0;\n\t\n\t\t\t\tvar attach = function( container, buttons ) {\n\t\t\t\t\tvar i, ien, node, button;\n\t\t\t\t\tvar clickHandler = function ( e ) {\n\t\t\t\t\t\t_fnPageChange( settings, e.data.action, true );\n\t\t\t\t\t};\n\t\n\t\t\t\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tbutton = buttons[i];\n\t\n\t\t\t\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\t\t\t\tvar inner = $( '<'+(button.DT_el || 'div')+'/>' )\n\t\t\t\t\t\t\t\t.appendTo( container );\n\t\t\t\t\t\t\tattach( inner, button );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbtnDisplay = null;\n\t\t\t\t\t\t\tbtnClass = '';\n\t\n\t\t\t\t\t\t\tswitch ( button ) {\n\t\t\t\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\t\t\t\tcontainer.append('<span class=\"ellipsis\">&#x2026;</span>');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'first':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'last':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t\t\t\tclasses.sPageButtonActive : '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif ( btnDisplay !== null ) {\n\t\t\t\t\t\t\t\tnode = $('<a>', {\n\t\t\t\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t\t\t\t.appendTo( container );\n\t\n\t\t\t\t\t\t\t\t_fnBindAction(\n\t\t\t\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t\t\t\t);\n\t\n\t\t\t\t\t\t\t\tcounter++;\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\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame. Try / catch the error. Not good for\n\t\t\t\t// accessibility, but neither are frames.\n\t\t\t\tvar activeEl;\n\t\n\t\t\t\ttry {\n\t\t\t\t\t// Because this approach is destroying and recreating the paging\n\t\t\t\t\t// elements, focus is lost on the select button which is bad for\n\t\t\t\t\t// accessibility. So we want to restore focus once the draw has\n\t\t\t\t\t// completed\n\t\t\t\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t\t\t\t}\n\t\t\t\tcatch (e) {}\n\t\n\t\t\t\tattach( $(host).empty(), buttons );\n\t\n\t\t\t\tif ( activeEl !== undefined ) {\n\t\t\t\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t\n\t// Built in type detection. See model.ext.aTypes for information about\n\t// what is required from this methods.\n\t$.extend( DataTable.ext.type.detect, [\n\t\t// Plain numbers - first since V8 detects some plain numbers as dates\n\t\t// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal ) ? 'num'+decimal : null;\n\t\t},\n\t\n\t\t// Dates (only those recognised by the browser's Date.parse)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\t// V8 tries _very_ hard to make a string passed into `Date.parse()`\n\t\t\t// valid, so we need to use a regex to restrict date formats. Use a\n\t\t\t// plug-in for anything other than ISO8601 style strings\n\t\t\tif ( d && !(d instanceof Date) && ! _re_date.test(d) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar parsed = Date.parse(d);\n\t\t\treturn (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;\n\t\t},\n\t\n\t\t// Formatted numbers\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric, formatted\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML (this is strict checking - there must be html)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\treturn _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?\n\t\t\t\t'html' : null;\n\t\t}\n\t] );\n\t\n\t\n\t\n\t// Filter formatting functions. See model.ext.ofnSearch for information about\n\t// what is required from these methods.\n\t// \n\t// Note that additional search methods are added for the html numbers and\n\t// html formatted numbers by `_addNumericSort()` when we know what the decimal\n\t// place is\n\t\n\t\n\t$.extend( DataTable.ext.type.search, {\n\t\thtml: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata\n\t\t\t\t\t\t.replace( _re_new_lines, \" \" )\n\t\t\t\t\t\t.replace( _re_html, \"\" ) :\n\t\t\t\t\t'';\n\t\t},\n\t\n\t\tstring: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata.replace( _re_new_lines, \" \" ) :\n\t\t\t\t\tdata;\n\t\t}\n\t} );\n\t\n\t\n\t\n\tvar __numericReplace = function ( d, decimalPlace, re1, re2 ) {\n\t\tif ( d !== 0 && (!d || d === '-') ) {\n\t\t\treturn -Infinity;\n\t\t}\n\t\n\t\t// If a decimal place other than `.` is used, it needs to be given to the\n\t\t// function so we can detect it and replace with a `.` which is the only\n\t\t// decimal place Javascript recognises - it is not locale aware.\n\t\tif ( decimalPlace ) {\n\t\t\td = _numToDecimal( d, decimalPlace );\n\t\t}\n\t\n\t\tif ( d.replace ) {\n\t\t\tif ( re1 ) {\n\t\t\t\td = d.replace( re1, '' );\n\t\t\t}\n\t\n\t\t\tif ( re2 ) {\n\t\t\t\td = d.replace( re2, '' );\n\t\t\t}\n\t\t}\n\t\n\t\treturn d * 1;\n\t};\n\t\n\t\n\t// Add the numeric 'deformatting' functions for sorting and search. This is done\n\t// in a function to provide an easy ability for the language options to add\n\t// additional methods if a non-period decimal place is used.\n\tfunction _addNumericSort ( decimalPlace ) {\n\t\t$.each(\n\t\t\t{\n\t\t\t\t// Plain numbers\n\t\t\t\t\"num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace );\n\t\t\t\t},\n\t\n\t\t\t\t// Formatted numbers\n\t\t\t\t\"num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_formatted_numeric );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric\n\t\t\t\t\"html-num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric, formatted\n\t\t\t\t\"html-num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction ( key, fn ) {\n\t\t\t\t// Add the ordering method\n\t\t\t\t_ext.type.order[ key+decimalPlace+'-pre' ] = fn;\n\t\n\t\t\t\t// For HTML types add a search formatter that will strip the HTML\n\t\t\t\tif ( key.match(/^html\\-/) ) {\n\t\t\t\t\t_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\t\n\t\n\t// Default sort methods\n\t$.extend( _ext.type.order, {\n\t\t// Dates\n\t\t\"date-pre\": function ( d ) {\n\t\t\treturn Date.parse( d ) || -Infinity;\n\t\t},\n\t\n\t\t// html\n\t\t\"html-pre\": function ( a ) {\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ta.replace ?\n\t\t\t\t\ta.replace( /<.*?>/g, \"\" ).toLowerCase() :\n\t\t\t\t\ta+'';\n\t\t},\n\t\n\t\t// string\n\t\t\"string-pre\": function ( a ) {\n\t\t\t// This is a little complex, but faster than always calling toString,\n\t\t\t// http://jsperf.com/tostring-v-check\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ttypeof a === 'string' ?\n\t\t\t\t\ta.toLowerCase() :\n\t\t\t\t\t! a.toString ?\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\ta.toString();\n\t\t},\n\t\n\t\t// string-asc and -desc are retained only for compatibility with the old\n\t\t// sort methods\n\t\t\"string-asc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\n\t\t\"string-desc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t}\n\t} );\n\t\n\t\n\t// Numeric sorting types - order doesn't matter here\n\t_addNumericSort( '' );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\theader: {\n\t\t\t_: function ( settings, cell, column, classes ) {\n\t\t\t\t// No additional mark-up required\n\t\t\t\t// Attach a sort listener to update on sort - note that using the\n\t\t\t\t// `DT` namespace will allow the event to be removed automatically\n\t\t\t\t// on destroy, while the `dt` namespaced event is the one we are\n\t\t\t\t// listening for\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) { // need to check this this is the host\n\t\t\t\t\t\treturn;               // table, not a nested one\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tcolumn.sSortingClass +' '+\n\t\t\t\t\t\t\tclasses.sSortAsc +' '+\n\t\t\t\t\t\t\tclasses.sSortDesc\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tjqueryui: function ( settings, cell, column, classes ) {\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.addClass( classes.sSortJUIWrapper )\n\t\t\t\t\t.append( cell.contents() )\n\t\t\t\t\t.append( $('<span/>')\n\t\t\t\t\t\t.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )\n\t\t\t\t\t)\n\t\t\t\t\t.appendTo( cell );\n\t\n\t\t\t\t// Attach a sort listener to update on sort\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tclasses.sSortJUIAsc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDesc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUI +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIAscAllowed +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDescAllowed\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortJUIAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortJUIDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClassJUI\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t/*\n\t * Public helper functions. These aren't used internally by DataTables, or\n\t * called by any of the options passed into DataTables, but they can be used\n\t * externally by developers working with DataTables. They are helper functions\n\t * to make working with DataTables a little bit easier.\n\t */\n\t\n\tvar __htmlEscapeEntities = function ( d ) {\n\t\treturn typeof d === 'string' ?\n\t\t\td.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;') :\n\t\t\td;\n\t};\n\t\n\t/**\n\t * Helpers for `columns.render`.\n\t *\n\t * The options defined here can be used with the `columns.render` initialisation\n\t * option to provide a display renderer. The following functions are defined:\n\t *\n\t * * `number` - Will format numeric data (defined by `columns.data`) for\n\t *   display, retaining the original unformatted data for sorting and filtering.\n\t *   It takes 5 parameters:\n\t *   * `string` - Thousands grouping separator\n\t *   * `string` - Decimal point indicator\n\t *   * `integer` - Number of decimal points to show\n\t *   * `string` (optional) - Prefix.\n\t *   * `string` (optional) - Postfix (/suffix).\n\t * * `text` - Escape HTML to help prevent XSS attacks. It has no optional\n\t *   parameters.\n\t *\n\t * @example\n\t *   // Column definition using the number renderer\n\t *   {\n\t *     data: \"salary\",\n\t *     render: $.fn.dataTable.render.number( '\\'', '.', 0, '$' )\n\t *   }\n\t *\n\t * @namespace\n\t */\n\tDataTable.render = {\n\t\tnumber: function ( thousands, decimal, precision, prefix, postfix ) {\n\t\t\treturn {\n\t\t\t\tdisplay: function ( d ) {\n\t\t\t\t\tif ( typeof d !== 'number' && typeof d !== 'string' ) {\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar negative = d < 0 ? '-' : '';\n\t\t\t\t\tvar flo = parseFloat( d );\n\t\n\t\t\t\t\t// If NaN then there isn't much formatting that we can do - just\n\t\t\t\t\t// return immediately, escaping any HTML (this was supposed to\n\t\t\t\t\t// be a number after all)\n\t\t\t\t\tif ( isNaN( flo ) ) {\n\t\t\t\t\t\treturn __htmlEscapeEntities( d );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tflo = flo.toFixed( precision );\n\t\t\t\t\td = Math.abs( flo );\n\t\n\t\t\t\t\tvar intPart = parseInt( d, 10 );\n\t\t\t\t\tvar floatPart = precision ?\n\t\t\t\t\t\tdecimal+(d - intPart).toFixed( precision ).substring( 2 ):\n\t\t\t\t\t\t'';\n\t\n\t\t\t\t\treturn negative + (prefix||'') +\n\t\t\t\t\t\tintPart.toString().replace(\n\t\t\t\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g, thousands\n\t\t\t\t\t\t) +\n\t\t\t\t\t\tfloatPart +\n\t\t\t\t\t\t(postfix||'');\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\n\t\ttext: function () {\n\t\t\treturn {\n\t\t\t\tdisplay: __htmlEscapeEntities\n\t\t\t};\n\t\t}\n\t};\n\t\n\t\n\t/*\n\t * This is really a good bit rubbish this method of exposing the internal methods\n\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t */\n\t\n\t\n\t/**\n\t * Create a wrapper function for exporting an internal functions to an external API.\n\t *  @param {string} fn API function name\n\t *  @returns {function} wrapped function\n\t *  @memberof DataTable#internal\n\t */\n\tfunction _fnExternApiFunc (fn)\n\t{\n\t\treturn function() {\n\t\t\tvar args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(\n\t\t\t\tArray.prototype.slice.call(arguments)\n\t\t\t);\n\t\t\treturn DataTable.ext.internal[fn].apply( this, args );\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Reference to internal functions for use by plug-in developers. Note that\n\t * these methods are references to internal functions and are considered to be\n\t * private. If you use these methods, be aware that they are liable to change\n\t * between versions.\n\t *  @namespace\n\t */\n\t$.extend( DataTable.ext.internal, {\n\t\t_fnExternApiFunc: _fnExternApiFunc,\n\t\t_fnBuildAjax: _fnBuildAjax,\n\t\t_fnAjaxUpdate: _fnAjaxUpdate,\n\t\t_fnAjaxParameters: _fnAjaxParameters,\n\t\t_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,\n\t\t_fnAjaxDataSrc: _fnAjaxDataSrc,\n\t\t_fnAddColumn: _fnAddColumn,\n\t\t_fnColumnOptions: _fnColumnOptions,\n\t\t_fnAdjustColumnSizing: _fnAdjustColumnSizing,\n\t\t_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,\n\t\t_fnColumnIndexToVisible: _fnColumnIndexToVisible,\n\t\t_fnVisbleColumns: _fnVisbleColumns,\n\t\t_fnGetColumns: _fnGetColumns,\n\t\t_fnColumnTypes: _fnColumnTypes,\n\t\t_fnApplyColumnDefs: _fnApplyColumnDefs,\n\t\t_fnHungarianMap: _fnHungarianMap,\n\t\t_fnCamelToHungarian: _fnCamelToHungarian,\n\t\t_fnLanguageCompat: _fnLanguageCompat,\n\t\t_fnBrowserDetect: _fnBrowserDetect,\n\t\t_fnAddData: _fnAddData,\n\t\t_fnAddTr: _fnAddTr,\n\t\t_fnNodeToDataIndex: _fnNodeToDataIndex,\n\t\t_fnNodeToColumnIndex: _fnNodeToColumnIndex,\n\t\t_fnGetCellData: _fnGetCellData,\n\t\t_fnSetCellData: _fnSetCellData,\n\t\t_fnSplitObjNotation: _fnSplitObjNotation,\n\t\t_fnGetObjectDataFn: _fnGetObjectDataFn,\n\t\t_fnSetObjectDataFn: _fnSetObjectDataFn,\n\t\t_fnGetDataMaster: _fnGetDataMaster,\n\t\t_fnClearTable: _fnClearTable,\n\t\t_fnDeleteIndex: _fnDeleteIndex,\n\t\t_fnInvalidate: _fnInvalidate,\n\t\t_fnGetRowElements: _fnGetRowElements,\n\t\t_fnCreateTr: _fnCreateTr,\n\t\t_fnBuildHead: _fnBuildHead,\n\t\t_fnDrawHead: _fnDrawHead,\n\t\t_fnDraw: _fnDraw,\n\t\t_fnReDraw: _fnReDraw,\n\t\t_fnAddOptionsHtml: _fnAddOptionsHtml,\n\t\t_fnDetectHeader: _fnDetectHeader,\n\t\t_fnGetUniqueThs: _fnGetUniqueThs,\n\t\t_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,\n\t\t_fnFilterComplete: _fnFilterComplete,\n\t\t_fnFilterCustom: _fnFilterCustom,\n\t\t_fnFilterColumn: _fnFilterColumn,\n\t\t_fnFilter: _fnFilter,\n\t\t_fnFilterCreateSearch: _fnFilterCreateSearch,\n\t\t_fnEscapeRegex: _fnEscapeRegex,\n\t\t_fnFilterData: _fnFilterData,\n\t\t_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,\n\t\t_fnUpdateInfo: _fnUpdateInfo,\n\t\t_fnInfoMacros: _fnInfoMacros,\n\t\t_fnInitialise: _fnInitialise,\n\t\t_fnInitComplete: _fnInitComplete,\n\t\t_fnLengthChange: _fnLengthChange,\n\t\t_fnFeatureHtmlLength: _fnFeatureHtmlLength,\n\t\t_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,\n\t\t_fnPageChange: _fnPageChange,\n\t\t_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,\n\t\t_fnProcessingDisplay: _fnProcessingDisplay,\n\t\t_fnFeatureHtmlTable: _fnFeatureHtmlTable,\n\t\t_fnScrollDraw: _fnScrollDraw,\n\t\t_fnApplyToChildren: _fnApplyToChildren,\n\t\t_fnCalculateColumnWidths: _fnCalculateColumnWidths,\n\t\t_fnThrottle: _fnThrottle,\n\t\t_fnConvertToWidth: _fnConvertToWidth,\n\t\t_fnGetWidestNode: _fnGetWidestNode,\n\t\t_fnGetMaxLenString: _fnGetMaxLenString,\n\t\t_fnStringToCss: _fnStringToCss,\n\t\t_fnSortFlatten: _fnSortFlatten,\n\t\t_fnSort: _fnSort,\n\t\t_fnSortAria: _fnSortAria,\n\t\t_fnSortListener: _fnSortListener,\n\t\t_fnSortAttachListener: _fnSortAttachListener,\n\t\t_fnSortingClasses: _fnSortingClasses,\n\t\t_fnSortData: _fnSortData,\n\t\t_fnSaveState: _fnSaveState,\n\t\t_fnLoadState: _fnLoadState,\n\t\t_fnSettingsFromNode: _fnSettingsFromNode,\n\t\t_fnLog: _fnLog,\n\t\t_fnMap: _fnMap,\n\t\t_fnBindAction: _fnBindAction,\n\t\t_fnCallbackReg: _fnCallbackReg,\n\t\t_fnCallbackFire: _fnCallbackFire,\n\t\t_fnLengthOverflow: _fnLengthOverflow,\n\t\t_fnRenderer: _fnRenderer,\n\t\t_fnDataSource: _fnDataSource,\n\t\t_fnRowAttributes: _fnRowAttributes,\n\t\t_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant\n\t\t                                // in 1.10, so this dead-end function is\n\t\t                                // added to prevent errors\n\t} );\n\t\n\n\t// jQuery access\n\t$.fn.dataTable = DataTable;\n\n\t// Provide access to the host jQuery object (circular reference)\n\tDataTable.$ = $;\n\n\t// Legacy aliases\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\t// With a capital `D` we return a DataTables API instance rather than a\n\t// jQuery object\n\t$.fn.DataTable = function ( opts ) {\n\t\treturn $(this).dataTable( opts ).api();\n\t};\n\n\t// All properties that are available to $.fn.dataTable should also be\n\t// available on $.fn.DataTable\n\t$.each( DataTable, function ( prop, val ) {\n\t\t$.fn.DataTable[ prop ] = val;\n\t} );\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same\n\t * point as fnDrawCallback. This may be useful for binding events or\n\t * performing calculations when the table is altered at all.\n\t *  @name DataTable#draw.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Search event, fired when the searching applied to the table (using the\n\t * built-in global search, or column filters) is altered.\n\t *  @name DataTable#search.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Order event, fired when the ordering applied to the table is altered.\n\t *  @name DataTable#order.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully\n\t * drawn, including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save\n\t * is required. This event allows modification of the state saving object\n\t * prior to actually doing the save, including addition or other state\n\t * properties (for plug-ins) or modification of a DataTables core property.\n\t *  @name DataTable#stateSaveParams.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored\n\t * data, but prior to the settings object being modified by the saved state\n\t * - allowing modification of the saved state is required or loading of\n\t * state for a plug-in.\n\t *  @name DataTable#stateLoadParams.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and\n\t * the settings object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing\n\t * (be it, order, searcg or anything else). It can be used to indicate to\n\t * the end user that there is something happening, or that something has\n\t * finished.\n\t *  @name DataTable#processing.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a\n\t * request to made to the server for new data. This event is called before\n\t * DataTables processed the returned data, so it can also be used to pre-\n\t * process the data returned from the server, if needed.\n\t *\n\t * Note that this trigger is called in `fnServerData`, if you override\n\t * `fnServerData` and which to use this event, you need to trigger it in you\n\t * success function.\n\t *  @name DataTable#xhr.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t *\n\t *  @example\n\t *     // Use a custom property returned from the server in another DOM element\n\t *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t *       $('#status').html( json.status );\n\t *     } );\n\t *\n\t *  @example\n\t *     // Pre-process the data returned from the server\n\t *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t *       for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {\n\t *         json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;\n\t *       }\n\t *       // Note no return - manipulate the data directly in the JSON object.\n\t *     } );\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy\n\t * or passing the bDestroy:true parameter in the initialisation object. This\n\t * can be used to remove bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page length change event, fired when number of records to show on each\n\t * page (the length) is changed.\n\t *  @name DataTable#length.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {integer} len New length\n\t */\n\n\t/**\n\t * Column sizing has changed.\n\t *  @name DataTable#column-sizing.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Column visibility has changed.\n\t *  @name DataTable#column-visibility.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {int} column Column index\n\t *  @param {bool} vis `false` if column now hidden, or `true` if visible\n\t */\n\n\treturn $.fn.dataTable;\n}));\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/datatables.css",
    "content": "/*\n * This combined file was created by the DataTables downloader builder:\n *   https://datatables.net/download\n *\n * To rebuild or modify this file with the latest versions of the included\n * software please visit:\n *   https://datatables.net/download/#bs4/dt-1.10.16\n *\n * Included libraries:\n *   DataTables 1.10.16\n */\n\ntable.dataTable {\n  clear: both;\n  margin-top: 6px !important;\n  margin-bottom: 6px !important;\n  max-width: none !important;\n  border-collapse: separate !important;\n}\ntable.dataTable td,\ntable.dataTable th {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ntable.dataTable td.dataTables_empty,\ntable.dataTable th.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable.nowrap th,\ntable.dataTable.nowrap td {\n  white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length label {\n  font-weight: normal;\n  text-align: left;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_length select {\n  width: 75px;\n  display: inline-block;\n}\ndiv.dataTables_wrapper div.dataTables_filter {\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_filter label {\n  font-weight: normal;\n  white-space: nowrap;\n  text-align: left;\n}\ndiv.dataTables_wrapper div.dataTables_filter input {\n  margin-left: 0.5em;\n  display: inline-block;\n  width: auto;\n}\ndiv.dataTables_wrapper div.dataTables_info {\n  padding-top: 0.85em;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_paginate {\n  margin: 0;\n  white-space: nowrap;\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_paginate ul.pagination {\n  margin: 2px 0;\n  white-space: nowrap;\n  justify-content: flex-end;\n}\ndiv.dataTables_wrapper div.dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 200px;\n  margin-left: -100px;\n  margin-top: -26px;\n  text-align: center;\n  padding: 1em 0;\n}\n\ntable.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,\ntable.dataTable thead > tr > td.sorting_asc,\ntable.dataTable thead > tr > td.sorting_desc,\ntable.dataTable thead > tr > td.sorting {\n  padding-right: 30px;\n}\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n  outline: none;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  cursor: pointer;\n  position: relative;\n}\ntable.dataTable thead .sorting:before, table.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  position: absolute;\n  bottom: 0.9em;\n  display: block;\n  opacity: 0.3;\n}\ntable.dataTable thead .sorting:before,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:before {\n  right: 1em;\n  content: \"\\2191\";\n}\ntable.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:after {\n  right: 0.5em;\n  content: \"\\2193\";\n}\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:after {\n  opacity: 1;\n}\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  opacity: 0;\n}\n\ndiv.dataTables_scrollHead table.dataTable {\n  margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n  border-top: none;\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\ndiv.dataTables_scrollBody table thead .sorting:after,\ndiv.dataTables_scrollBody table thead .sorting_asc:after,\ndiv.dataTables_scrollBody table thead .sorting_desc:after {\n  display: none;\n}\ndiv.dataTables_scrollBody table tbody tr:first-child th,\ndiv.dataTables_scrollBody table tbody tr:first-child td {\n  border-top: none;\n}\n\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner {\n  box-sizing: content-box;\n}\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner > table {\n  margin-top: 0 !important;\n  border-top: none;\n}\n\n@media screen and (max-width: 767px) {\n  div.dataTables_wrapper div.dataTables_length,\n  div.dataTables_wrapper div.dataTables_filter,\n  div.dataTables_wrapper div.dataTables_info,\n  div.dataTables_wrapper div.dataTables_paginate {\n    text-align: center;\n  }\n}\ntable.dataTable.table-sm > thead > tr > th {\n  padding-right: 20px;\n}\ntable.dataTable.table-sm .sorting:before,\ntable.dataTable.table-sm .sorting_asc:before,\ntable.dataTable.table-sm .sorting_desc:before {\n  top: 5px;\n  right: 0.85em;\n}\ntable.dataTable.table-sm .sorting:after,\ntable.dataTable.table-sm .sorting_asc:after,\ntable.dataTable.table-sm .sorting_desc:after {\n  top: 5px;\n}\n\ntable.table-bordered.dataTable th,\ntable.table-bordered.dataTable td {\n  border-left-width: 0;\n}\ntable.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,\ntable.table-bordered.dataTable td:last-child,\ntable.table-bordered.dataTable td:last-child {\n  border-right-width: 0;\n}\ntable.table-bordered.dataTable tbody th,\ntable.table-bordered.dataTable tbody td {\n  border-bottom-width: 0;\n}\n\ndiv.dataTables_scrollHead table.table-bordered {\n  border-bottom-width: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row {\n  margin: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:first-child {\n  padding-left: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:last-child {\n  padding-right: 0;\n}\n\n\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/DataTables/datatables.js",
    "content": "/*\n * This combined file was created by the DataTables downloader builder:\n *   https://datatables.net/download\n *\n * To rebuild or modify this file with the latest versions of the included\n * software please visit:\n *   https://datatables.net/download/#bs4/dt-1.10.16\n *\n * Included libraries:\n *   DataTables 1.10.16\n */\n\n/*! DataTables 1.10.16\n * ©2008-2017 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary     DataTables\n * @description Paginate, search and order HTML tables\n * @version     1.10.16\n * @file        jquery.dataTables.js\n * @author      SpryMedia Ltd\n * @contact     www.datatables.net\n * @copyright   Copyright 2008-2017 SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n *   MIT license - http://datatables.net/license\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/\n\n(function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\t// CommonJS environments without a window global must pass a\n\t\t\t\t// root. This will give an error otherwise\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ ) {\n\t\t\t\t$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window\n\t\t\t\t\trequire('jquery') :\n\t\t\t\t\trequire('jquery')( root );\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}\n(function( $, window, document, undefined ) {\n\t\"use strict\";\n\n\t/**\n\t * DataTables is a plug-in for the jQuery Javascript library. It is a highly\n\t * flexible tool, based upon the foundations of progressive enhancement,\n\t * which will add advanced interaction controls to any HTML table. For a\n\t * full list of features please refer to\n\t * [DataTables.net](href=\"http://datatables.net).\n\t *\n\t * Note that the `DataTable` object is not a global variable but is aliased\n\t * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may\n\t * be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [init={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.7+\n\t *\n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *\n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"paginate\": false,\n\t *        \"sort\": false\n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable = function ( options )\n\t{\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {object} jQuery object, filtered by the given selector.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Highlight every second row\n\t\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t *      oTable.fnFilter('');\n\t\t *    } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).$( sSelector, oOpts );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to\n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null\n\t\t *    entry in the array.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the data from the first row in the table\n\t\t *      var data = oTable._('tr:first');\n\t\t *\n\t\t *      // Do something useful with the data\n\t\t *      alert( \"First cell is: \"+data[0] );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to 'Webkit' and get all data for\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      var data = oTable._('tr', {\"search\": \"applied\"});\n\t\t *\n\t\t *      // Do something with the data\n\t\t *      alert( data.length+\" rows matched the search\" );\n\t\t *    } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).rows( sSelector, oOpts ).data();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a DataTables Api instance, with the currently selected tables for\n\t\t * the Api's context.\n\t\t * @param {boolean} [traditional=false] Set the API instance's context to be\n\t\t *   only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n\t\t *   used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n\t\t *   or if all tables captured in the jQuery object should be used.\n\t\t * @return {DataTables.Api}\n\t\t */\n\t\tthis.api = function ( traditional )\n\t\t{\n\t\t\treturn traditional ?\n\t\t\t\tnew _Api(\n\t\t\t\t\t_fnSettingsFromNode( this[ _ext.iApiIndex ] )\n\t\t\t\t) :\n\t\t\t\tnew _Api( this );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using\n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t *  @param {array|object} data The data to be added to the table. This can be:\n\t\t *    <ul>\n\t\t *      <li>1D array of data - add a single row with the data provided</li>\n\t\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t *      <li>object - data object when using <i>mData</i></li>\n\t\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t *    </ul>\n\t\t *  @param {bool} [redraw=true] redraw the table or not\n\t\t *  @returns {array} An array of integers, representing the list of indexes in\n\t\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to\n\t\t *    the table.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    // Global var for counter\n\t\t *    var giCount = 2;\n\t\t *\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example').dataTable();\n\t\t *    } );\n\t\t *\n\t\t *    function fnClickAddRow() {\n\t\t *      $('#example').dataTable().fnAddData( [\n\t\t *        giCount+\".1\",\n\t\t *        giCount+\".2\",\n\t\t *        giCount+\".3\",\n\t\t *        giCount+\".4\" ]\n\t\t *      );\n\t\t *\n\t\t *      giCount++;\n\t\t *    }\n\t\t */\n\t\tthis.fnAddData = function( data, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tvar rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?\n\t\t\t\tapi.rows.add( data ) :\n\t\t\t\tapi.row.add( data );\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn rows.flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data\n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n\t\t * through the sWidth parameter). This can be useful when the width of the table's\n\t\t * parent element changes (for example a window resize).\n\t\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *\n\t\t *      $(window).on('resize', function () {\n\t\t *        oTable.fnAdjustColumnSizing();\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).columns.adjust();\n\t\t\tvar settings = api.settings()[0];\n\t\t\tvar scroll = settings.oScroll;\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw( false );\n\t\t\t}\n\t\t\telse if ( scroll.sX !== \"\" || scroll.sY !== \"\" ) {\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t *      oTable.fnClearTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).clear();\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which\n\t\t * are currently 'open'.\n\t\t *  @param {node} nTr the table row to 'close'\n\t\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\tthis.api( true ).row( nTr ).child.hide();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t *  @param {mixed} target The index of the row from aoData to be deleted, or\n\t\t *    the TR element you want to delete\n\t\t *  @param {function|null} [callBack] Callback function\n\t\t *  @param {bool} [redraw=true] Redraw the table or not\n\t\t *  @returns {array} The row that was deleted\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Immediately remove the first row\n\t\t *      oTable.fnDeleteRow( 0 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnDeleteRow = function( target, callback, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar rows = api.rows( target );\n\t\t\tvar settings = rows.settings()[0];\n\t\t\tvar data = settings.aoData[ rows[0][0] ];\n\t\t\n\t\t\trows.remove();\n\t\t\n\t\t\tif ( callback ) {\n\t\t\t\tcallback.call( this, settings, data );\n\t\t\t}\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn data;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables\n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t *  @param {boolean} [remove=false] Completely remove the table from the DOM\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnDestroy();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDestroy = function ( remove )\n\t\t{\n\t\t\tthis.api( true ).destroy( remove );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t *  @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t *      oTable.fnDraw();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDraw = function( complete )\n\t\t{\n\t\t\t// Note that this isn't an exact match to the old call to _fnDraw - it takes\n\t\t\t// into account the new data, but can hold position.\n\t\t\tthis.api( true ).draw( complete );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t *  @param {string} sInput String to filter the table on\n\t\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sometime later - filter...\n\t\t *      oTable.fnFilter( 'test string' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === null || iColumn === undefined ) {\n\t\t\t\tapi.search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\n\t\t\tapi.draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the\n\t\t * provided parameters.\n\t\t *  @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n\t\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t\t *  @param {int} [col] Optional column index that you want the data of.\n\t\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t\t *    defined, only data for the designated cell is returned.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    // Row data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('tr').click( function () {\n\t\t *        var data = oTable.fnGetData( this );\n\t\t *        // ... do something with the array / object of data for the row\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Individual cell data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('td').click( function () {\n\t\t *        var sData = oTable.fnGetData( this );\n\t\t *        alert( 'The cell clicked on had the value of '+sData );\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetData = function( src, col )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( src !== undefined ) {\n\t\t\t\tvar type = src.nodeName ? src.nodeName.toLowerCase() : '';\n\t\t\n\t\t\t\treturn col !== undefined || type == 'td' || type == 'th' ?\n\t\t\t\t\tapi.cell( src, col ).data() :\n\t\t\t\t\tapi.row( src ).data() || null;\n\t\t\t}\n\t\t\n\t\t\treturn api.data().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will\n\t\t * typically want to use the '$' API method in preference to this as it is more\n\t\t * flexible.\n\t\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the nodes from the table\n\t\t *      var nNodes = oTable.fnGetNodes( );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\treturn iRow !== undefined ?\n\t\t\t\tapi.row( iRow ).node() :\n\t\t\t\tapi.rows().nodes().flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t *  @param {node} node this can either be a TR, TD or TH in the table's body\n\t\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t *    if given as a cell, an array of [row index, column index (visible),\n\t\t *    column index (all)] is given.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example tbody td').click( function () {\n\t\t *        // Get the position of the current data from the node\n\t\t *        var aPos = oTable.fnGetPosition( this );\n\t\t *\n\t\t *        // Get the data array for this row\n\t\t *        var aData = oTable.fnGetData( aPos[0] );\n\t\t *\n\t\t *        // Update the data array and return the value\n\t\t *        aData[ aPos[1] ] = 'clicked';\n\t\t *        this.innerHTML = 'clicked';\n\t\t *      } );\n\t\t *\n\t\t *      // Init DataTables\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetPosition = function( node )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar nodeName = node.nodeName.toUpperCase();\n\t\t\n\t\t\tif ( nodeName == 'TR' ) {\n\t\t\t\treturn api.row( node ).index();\n\t\t\t}\n\t\t\telse if ( nodeName == 'TD' || nodeName == 'TH' ) {\n\t\t\t\tvar cell = api.cell( node ).index();\n\t\t\n\t\t\t\treturn [\n\t\t\t\t\tcell.row,\n\t\t\t\t\tcell.columnVisible,\n\t\t\t\t\tcell.column\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t *  @param {node} nTr the table row to check\n\t\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\treturn this.api( true ).row( nTr ).child.isShown();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently\n\t\t * on display on the page, with the HTML contents that is passed into the\n\t\t * function. This can be used, for example, to ask for confirmation that a\n\t\t * particular record should be deleted.\n\t\t *  @param {node} nTr The table row to 'open'\n\t\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t *  @param {string} sClass Class to give the new TD cell\n\t\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t\t *    first parameter, is not found in the table, this method will silently\n\t\t *    return.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\treturn this.api( true )\n\t\t\t\t.row( nTr )\n\t\t\t\t.child( mHtml, sClass )\n\t\t\t\t.show()\n\t\t\t\t.child()[0];\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API\n\t\t * function. With this function you can have a DataTables table go to the next,\n\t\t * previous, first or last pages.\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnPageChange( 'next' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).page( mAction );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw(false);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t *  @param {int} iCol The column whose display should be changed\n\t\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Hide the second column after initialisation\n\t\t *      oTable.fnSetColumnVis( 1, false );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).column( iCol ).visible( bShow );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.columns.adjust().draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t *  @returns {object} DataTables settings object. See\n\t\t *    {@link DataTable.models.oSettings}\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      var oSettings = oTable.fnSettings();\n\t\t *\n\t\t *      // Show an example parameter from the settings\n\t\t *      alert( oSettings._iDisplayStart );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[_ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t *  @param {int} iCol the data index to sort on. Note that this will not match the\n\t\t *    'display index' if you have hidden data entries\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sort immediately with columns 0 and 1\n\t\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tthis.api( true ).order( aaSort ).draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t *  @param {node} nNode the element to attach the sort listener to\n\t\t *  @param {int} iColumn the column that a click on this node will sort on\n\t\t *  @param {function} [fnCallback] callback function when sort is run\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sort on column 1, when 'sorter' is clicked on\n\t\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\tthis.api( true ).order.listener( nNode, iColumn, fnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t *  @param {object|array|string} mData Data to update the cell/row with\n\t\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t\t *  @param {int} [iColumn] The column to update, give as null or undefined to\n\t\t *    update a whole row.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t *  @returns {int} 0 on success, 1 on error\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n\t\t *    } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null ) {\n\t\t\t\tapi.row( mRow ).data( mData );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.cell( mRow, iColumn ).data( mData );\n\t\t\t}\n\t\t\n\t\t\tif ( bAction === undefined || bAction ) {\n\t\t\t\tapi.columns.adjust();\n\t\t\t}\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t *    version, or false if this version of DataTales is not suitable\n\t\t *  @method\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\tthis.fnVersionCheck = _ext.fnVersionCheck;\n\t\t\n\n\t\tvar _that = this;\n\t\tvar emptyInit = options === undefined;\n\t\tvar len = this.length;\n\n\t\tif ( emptyInit ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.oApi = this.internal = _ext.internal;\n\n\t\t// Extend with old style plug-in API methods\n\t\tfor ( var fn in DataTable.ext.internal ) {\n\t\t\tif ( fn ) {\n\t\t\t\tthis[fn] = _fnExternApiFunc(fn);\n\t\t\t}\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// For each initialisation we want to give it a clean initialisation\n\t\t\t// object that can be bashed around\n\t\t\tvar o = {};\n\t\t\tvar oInit = len > 1 ? // optimisation for single table case\n\t\t\t\t_fnExtend( o, options, true ) :\n\t\t\t\toptions;\n\n\t\t\t/*global oInit,_that,emptyInit*/\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar defaults = DataTable.defaults;\n\t\t\tvar $this = $(this);\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Backwards compatibility for the defaults */\n\t\t\t_fnCompatOpts( defaults );\n\t\t\t_fnCompatCols( defaults.column );\n\t\t\t\n\t\t\t/* Convert the camel-case defaults to Hungarian */\n\t\t\t_fnCamelToHungarian( defaults, defaults, true );\n\t\t\t_fnCamelToHungarian( defaults.column, defaults.column, true );\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\t_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) );\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tvar allSettings = DataTable.settings;\n\t\t\tfor ( i=0, iLen=allSettings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar s = allSettings[i];\n\t\t\t\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) )\n\t\t\t\t{\n\t\t\t\t\tvar bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;\n\t\t\t\t\tvar bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;\n\t\t\t\n\t\t\t\t\tif ( emptyInit || bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn s.oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\ts.oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\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_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( s.sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tallSettings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._unique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"sDestroyWidth\": $this[0].style.width,\n\t\t\t\t\"sInstance\":     sId,\n\t\t\t\t\"sTableId\":      sId\n\t\t\t} );\n\t\t\toSettings.nTable = this;\n\t\t\toSettings.oApi   = _that.internal;\n\t\t\toSettings.oInit  = oInit;\n\t\t\t\n\t\t\tallSettings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\t_fnCompatOpts( oInit );\n\t\t\t\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t// If the length menu is given, but the init display length is not, use the length menu\n\t\t\tif ( oInit.aLengthMenu && ! oInit.iDisplayLength )\n\t\t\t{\n\t\t\t\toInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?\n\t\t\t\t\toInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];\n\t\t\t}\n\t\t\t\n\t\t\t// Apply the defaults and init options to make a single init object will all\n\t\t\t// options defined from defaults and instance options.\n\t\t\toInit = _fnExtend( $.extend( true, {}, defaults ), oInit );\n\t\t\t\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, [\n\t\t\t\t\"bPaginate\",\n\t\t\t\t\"bLengthChange\",\n\t\t\t\t\"bFilter\",\n\t\t\t\t\"bSort\",\n\t\t\t\t\"bSortMulti\",\n\t\t\t\t\"bInfo\",\n\t\t\t\t\"bProcessing\",\n\t\t\t\t\"bAutoWidth\",\n\t\t\t\t\"bSortClasses\",\n\t\t\t\t\"bServerSide\",\n\t\t\t\t\"bDeferRender\"\n\t\t\t] );\n\t\t\t_fnMap( oSettings, oInit, [\n\t\t\t\t\"asStripeClasses\",\n\t\t\t\t\"ajax\",\n\t\t\t\t\"fnServerData\",\n\t\t\t\t\"fnFormatNumber\",\n\t\t\t\t\"sServerMethod\",\n\t\t\t\t\"aaSorting\",\n\t\t\t\t\"aaSortingFixed\",\n\t\t\t\t\"aLengthMenu\",\n\t\t\t\t\"sPaginationType\",\n\t\t\t\t\"sAjaxSource\",\n\t\t\t\t\"sAjaxDataProp\",\n\t\t\t\t\"iStateDuration\",\n\t\t\t\t\"sDom\",\n\t\t\t\t\"bSortCellsTop\",\n\t\t\t\t\"iTabIndex\",\n\t\t\t\t\"fnStateLoadCallback\",\n\t\t\t\t\"fnStateSaveCallback\",\n\t\t\t\t\"renderer\",\n\t\t\t\t\"searchDelay\",\n\t\t\t\t\"rowId\",\n\t\t\t\t[ \"iCookieDuration\", \"iStateDuration\" ], // backwards compat\n\t\t\t\t[ \"oSearch\", \"oPreviousSearch\" ],\n\t\t\t\t[ \"aoSearchCols\", \"aoPreSearchCols\" ],\n\t\t\t\t[ \"iDisplayLength\", \"_iDisplayLength\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oScroll, oInit, [\n\t\t\t\t[ \"sScrollX\", \"sX\" ],\n\t\t\t\t[ \"sScrollXInner\", \"sXInner\" ],\n\t\t\t\t[ \"sScrollY\", \"sY\" ],\n\t\t\t\t[ \"bScrollCollapse\", \"bCollapse\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\t\n\t\t\toSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\t$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );\n\t\t\t$this.addClass( oClasses.sTable );\n\t\t\t\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tvar oLanguage = oSettings.oLanguage;\n\t\t\t$.extend( true, oLanguage, oInit.oLanguage );\n\t\t\t\n\t\t\tif ( oLanguage.sUrl )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that\n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\t$.ajax( {\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\turl: oLanguage.sUrl,\n\t\t\t\t\tsuccess: function ( json ) {\n\t\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t\t_fnCamelToHungarian( defaults.oLanguage, json );\n\t\t\t\t\t\t$.extend( true, oLanguage, json );\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t},\n\t\t\t\t\terror: function () {\n\t\t\t\t\t\t// Error occurred loading language file, continue on as best we can\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toClasses.sStripeOdd,\n\t\t\t\t\toClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tvar stripeClasses = oSettings.asStripeClasses;\n\t\t\tvar rowOne = $this.children('tbody').find('tr').eq(0);\n\t\t\tif ( $.inArray( true, $.map( stripeClasses, function(el, i) {\n\t\t\t\treturn rowOne.hasClass(el);\n\t\t\t} ) ) !== -1 ) {\n\t\t\t\t$('tbody tr', this).removeClass( stripeClasses.join(' ') );\n\t\t\t\toSettings.asDestroyStripes = stripeClasses.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t/* HTML5 attribute detection - build an mData object automatically if the\n\t\t\t * attributes are found\n\t\t\t */\n\t\t\tif ( rowOne.length ) {\n\t\t\t\tvar a = function ( cell, name ) {\n\t\t\t\t\treturn cell.getAttribute( 'data-'+name ) !== null ? name : null;\n\t\t\t\t};\n\t\t\t\n\t\t\t\t$( rowOne[0] ).children('th, td').each( function (i, cell) {\n\t\t\t\t\tvar col = oSettings.aoColumns[i];\n\t\t\t\n\t\t\t\t\tif ( col.mData === i ) {\n\t\t\t\t\t\tvar sort = a( cell, 'sort' ) || a( cell, 'order' );\n\t\t\t\t\t\tvar filter = a( cell, 'filter' ) || a( cell, 'search' );\n\t\t\t\n\t\t\t\t\t\tif ( sort !== null || filter !== null ) {\n\t\t\t\t\t\t\tcol.mData = {\n\t\t\t\t\t\t\t\t_:      i+'.display',\n\t\t\t\t\t\t\t\tsort:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\t\ttype:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\t\tfilter: filter !== null ? i+'.@data-'+filter : undefined\n\t\t\t\t\t\t\t};\n\t\t\t\n\t\t\t\t\t\t\t_fnColumnOptions( oSettings, i );\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\t\n\t\t\tvar features = oSettings.oFeatures;\n\t\t\tvar loadedInit = function () {\n\t\t\t\t/*\n\t\t\t\t * Sorting\n\t\t\t\t * @todo For modularisation (1.11) this needs to do into a sort start up handler\n\t\t\t\t */\n\t\t\t\n\t\t\t\t// If aaSorting is not defined, then we use the first indicator in asSorting\n\t\t\t\t// in case that has been altered, so the default sort reflects that option\n\t\t\t\tif ( oInit.aaSorting === undefined ) {\n\t\t\t\t\tvar sorting = oSettings.aaSorting;\n\t\t\t\t\tfor ( i=0, iLen=sorting.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\tsorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t\t */\n\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t\tif ( features.bSort ) {\n\t\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\t\tif ( oSettings.bSorted ) {\n\t\t\t\t\t\t\tvar aSort = _fnSortFlatten( oSettings );\n\t\t\t\t\t\t\tvar sortedColumns = {};\n\t\t\t\n\t\t\t\t\t\t\t$.each( aSort, function (i, val) {\n\t\t\t\t\t\t\t\tsortedColumns[ val.src ] = val.dir;\n\t\t\t\t\t\t\t} );\n\t\t\t\n\t\t\t\t\t\t\t_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );\n\t\t\t\t\t\t\t_fnSortAria( oSettings );\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\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\tif ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {\n\t\t\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\t\t}\n\t\t\t\t}, 'sc' );\n\t\t\t\n\t\t\t\n\t\t\t\t/*\n\t\t\t\t * Final init\n\t\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t\t */\n\t\t\t\n\t\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\t\tvar captions = $this.children('caption').each( function () {\n\t\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t\t} );\n\t\t\t\n\t\t\t\tvar thead = $this.children('thead');\n\t\t\t\tif ( thead.length === 0 ) {\n\t\t\t\t\tthead = $('<thead/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\t\tvar tbody = $this.children('tbody');\n\t\t\t\tif ( tbody.length === 0 ) {\n\t\t\t\t\ttbody = $('<tbody/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\toSettings.nTBody = tbody[0];\n\t\t\t\n\t\t\t\tvar tfoot = $this.children('tfoot');\n\t\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") ) {\n\t\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\t\ttfoot = $('<tfoot/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif ( tfoot.length === 0 || tfoot.children().length === 0 ) {\n\t\t\t\t\t$this.addClass( oClasses.sNoFooter );\n\t\t\t\t}\n\t\t\t\telse if ( tfoot.length > 0 ) {\n\t\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Check if there is data passing into the constructor */\n\t\t\t\tif ( oInit.aaData ) {\n\t\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) {\n\t\t\t\t\t/* Grab the data from the page - only do this when deferred loading or no Ajax\n\t\t\t\t\t * source since there is no point in reading the DOM data if we are then going\n\t\t\t\t\t * to replace it with Ajax data\n\t\t\t\t\t */\n\t\t\t\t\t_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Copy the data index array */\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t\t * language processor)\n\t\t\t\t */\n\t\t\t\tif ( bInitHandedOff === false ) {\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by the state saving! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\tfeatures.bStateSave = true;\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t\t_fnLoadState( oSettings, oInit, loadedInit );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tloadedInit();\n\t\t\t}\n\t\t\t\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t/*\n\t * It is useful to have variables which are scoped locally so only the\n\t * DataTables functions can access them and they don't leak into global space.\n\t * At the same time these functions are often useful over multiple files in the\n\t * core and API, so we list, or at least document, all variables which are used\n\t * by DataTables as private variables here. This also ensures that there is no\n\t * clashing of variable names and that they can easily referenced for reuse.\n\t */\n\t\n\t\n\t// Defined else where\n\t//  _selector_run\n\t//  _selector_opts\n\t//  _selector_first\n\t//  _selector_row_indexes\n\t\n\tvar _ext; // DataTable.ext\n\tvar _Api; // DataTable.Api\n\tvar _api_register; // DataTable.Api.register\n\tvar _api_registerPlural; // DataTable.Api.registerPlural\n\t\n\tvar _re_dic = {};\n\tvar _re_new_lines = /[\\r\\n]/g;\n\tvar _re_html = /<.*?>/g;\n\t\n\t// This is not strict ISO8601 - Date.parse() is quite lax, although\n\t// implementations differ between browsers.\n\tvar _re_date = /^\\d{2,4}[\\.\\/\\-]\\d{1,2}[\\.\\/\\-]\\d{1,2}([T ]{1}\\d{1,2}[:\\.]\\d{2}([\\.:]\\d{2})?)?$/;\n\t\n\t// Escape regular expression special characters\n\tvar _re_escape_regex = new RegExp( '(\\\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ].join('|\\\\') + ')', 'g' );\n\t\n\t// http://en.wikipedia.org/wiki/Foreign_exchange_market\n\t// - \\u20BD - Russian ruble.\n\t// - \\u20a9 - South Korean Won\n\t// - \\u20BA - Turkish Lira\n\t// - \\u20B9 - Indian Rupee\n\t// - R - Brazil (R$) and South Africa\n\t// - fr - Swiss Franc\n\t// - kr - Swedish krona, Norwegian krone and Danish krone\n\t// - \\u2009 is thin space and \\u202F is narrow no-break space, both used in many\n\t//   standards as thousands separators.\n\tvar _re_formatted_numeric = /[',$£€¥%\\u2009\\u202F\\u20BD\\u20a9\\u20BArfk]/gi;\n\t\n\t\n\tvar _empty = function ( d ) {\n\t\treturn !d || d === true || d === '-' ? true : false;\n\t};\n\t\n\t\n\tvar _intVal = function ( s ) {\n\t\tvar integer = parseInt( s, 10 );\n\t\treturn !isNaN(integer) && isFinite(s) ? integer : null;\n\t};\n\t\n\t// Convert from a formatted number with characters other than `.` as the\n\t// decimal place, to a Javascript number\n\tvar _numToDecimal = function ( num, decimalPoint ) {\n\t\t// Cache created regular expressions for speed as this function is called often\n\t\tif ( ! _re_dic[ decimalPoint ] ) {\n\t\t\t_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );\n\t\t}\n\t\treturn typeof num === 'string' && decimalPoint !== '.' ?\n\t\t\tnum.replace( /\\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :\n\t\t\tnum;\n\t};\n\t\n\t\n\tvar _isNumber = function ( d, decimalPoint, formatted ) {\n\t\tvar strType = typeof d === 'string';\n\t\n\t\t// If empty return immediately so there must be a number if it is a\n\t\t// formatted string (this stops the string \"k\", or \"kr\", etc being detected\n\t\t// as a formatted number for currency\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tif ( decimalPoint && strType ) {\n\t\t\td = _numToDecimal( d, decimalPoint );\n\t\t}\n\t\n\t\tif ( formatted && strType ) {\n\t\t\td = d.replace( _re_formatted_numeric, '' );\n\t\t}\n\t\n\t\treturn !isNaN( parseFloat(d) ) && isFinite( d );\n\t};\n\t\n\t\n\t// A string without HTML in it can be considered to be HTML still\n\tvar _isHtml = function ( d ) {\n\t\treturn _empty( d ) || typeof d === 'string';\n\t};\n\t\n\t\n\tvar _htmlNumeric = function ( d, decimalPoint, formatted ) {\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar html = _isHtml( d );\n\t\treturn ! html ?\n\t\t\tnull :\n\t\t\t_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?\n\t\t\t\ttrue :\n\t\t\t\tnull;\n\t};\n\t\n\t\n\tvar _pluck = function ( a, prop, prop2 ) {\n\t\tvar out = [];\n\t\tvar i=0, ien=a.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] && a[i][ prop ] ) {\n\t\t\t\t\tout.push( a[i][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] ) {\n\t\t\t\t\tout.push( a[i][ prop ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t// Basically the same as _pluck, but rather than looping over `a` we use `order`\n\t// as the indexes to pick from `a`\n\tvar _pluck_order = function ( a, order, prop, prop2 )\n\t{\n\t\tvar out = [];\n\t\tvar i=0, ien=order.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[ order[i] ][ prop ] ) {\n\t\t\t\t\tout.push( a[ order[i] ][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tout.push( a[ order[i] ][ prop ] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _range = function ( len, start )\n\t{\n\t\tvar out = [];\n\t\tvar end;\n\t\n\t\tif ( start === undefined ) {\n\t\t\tstart = 0;\n\t\t\tend = len;\n\t\t}\n\t\telse {\n\t\t\tend = start;\n\t\t\tstart = len;\n\t\t}\n\t\n\t\tfor ( var i=start ; i<end ; i++ ) {\n\t\t\tout.push( i );\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _removeEmpty = function ( a )\n\t{\n\t\tvar out = [];\n\t\n\t\tfor ( var i=0, ien=a.length ; i<ien ; i++ ) {\n\t\t\tif ( a[i] ) { // careful - will remove all falsy values!\n\t\t\t\tout.push( a[i] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _stripHtml = function ( d ) {\n\t\treturn d.replace( _re_html, '' );\n\t};\n\t\n\t\n\t/**\n\t * Determine if all values in the array are unique. This means we can short\n\t * cut the _unique method at the cost of a single loop. A sorted array is used\n\t * to easily check the values.\n\t *\n\t * @param  {array} src Source array\n\t * @return {boolean} true if all unique, false otherwise\n\t * @ignore\n\t */\n\tvar _areAllUnique = function ( src ) {\n\t\tif ( src.length < 2 ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar sorted = src.slice().sort();\n\t\tvar last = sorted[0];\n\t\n\t\tfor ( var i=1, ien=sorted.length ; i<ien ; i++ ) {\n\t\t\tif ( sorted[i] === last ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tlast = sorted[i];\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Find the unique elements in a source array.\n\t *\n\t * @param  {array} src Source array\n\t * @return {array} Array of unique items\n\t * @ignore\n\t */\n\tvar _unique = function ( src )\n\t{\n\t\tif ( _areAllUnique( src ) ) {\n\t\t\treturn src.slice();\n\t\t}\n\t\n\t\t// A faster unique method is to use object keys to identify used values,\n\t\t// but this doesn't work with arrays or objects, which we must also\n\t\t// consider. See jsperf.com/compare-array-unique-versions/4 for more\n\t\t// information.\n\t\tvar\n\t\t\tout = [],\n\t\t\tval,\n\t\t\ti, ien=src.length,\n\t\t\tj, k=0;\n\t\n\t\tagain: for ( i=0 ; i<ien ; i++ ) {\n\t\t\tval = src[i];\n\t\n\t\t\tfor ( j=0 ; j<k ; j++ ) {\n\t\t\t\tif ( out[j] === val ) {\n\t\t\t\t\tcontinue again;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tout.push( val );\n\t\t\tk++;\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t/**\n\t * DataTables utility methods\n\t * \n\t * This namespace provides helper methods that DataTables uses internally to\n\t * create a DataTable, but which are not exclusively used only for DataTables.\n\t * These methods can be used by extension authors to save the duplication of\n\t * code.\n\t *\n\t *  @namespace\n\t */\n\tDataTable.util = {\n\t\t/**\n\t\t * Throttle the calls to a function. Arguments and context are maintained\n\t\t * for the throttled function.\n\t\t *\n\t\t * @param {function} fn Function to be called\n\t\t * @param {integer} freq Call frequency in mS\n\t\t * @return {function} Wrapped function\n\t\t */\n\t\tthrottle: function ( fn, freq ) {\n\t\t\tvar\n\t\t\t\tfrequency = freq !== undefined ? freq : 200,\n\t\t\t\tlast,\n\t\t\t\ttimer;\n\t\n\t\t\treturn function () {\n\t\t\t\tvar\n\t\t\t\t\tthat = this,\n\t\t\t\t\tnow  = +new Date(),\n\t\t\t\t\targs = arguments;\n\t\n\t\t\t\tif ( last && now < last + frequency ) {\n\t\t\t\t\tclearTimeout( timer );\n\t\n\t\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\t\tlast = undefined;\n\t\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t\t}, frequency );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlast = now;\n\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Escape a string such that it can be used in a regular expression\n\t\t *\n\t\t *  @param {string} val string to escape\n\t\t *  @returns {string} escaped string\n\t\t */\n\t\tescapeRegex: function ( val ) {\n\t\t\treturn val.replace( _re_escape_regex, '\\\\$1' );\n\t\t}\n\t};\n\t\n\t\n\t\n\t/**\n\t * Create a mapping object that allows camel case parameters to be looked up\n\t * for their Hungarian counterparts. The mapping is stored in a private\n\t * parameter called `_hungarianMap` which can be accessed on the source object.\n\t *  @param {object} o\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnHungarianMap ( o )\n\t{\n\t\tvar\n\t\t\thungarian = 'a aa ai ao as b fn i m o s ',\n\t\t\tmatch,\n\t\t\tnewKey,\n\t\t\tmap = {};\n\t\n\t\t$.each( o, function (key, val) {\n\t\t\tmatch = key.match(/^([^A-Z]+?)([A-Z])/);\n\t\n\t\t\tif ( match && hungarian.indexOf(match[1]+' ') !== -1 )\n\t\t\t{\n\t\t\t\tnewKey = key.replace( match[0], match[2].toLowerCase() );\n\t\t\t\tmap[ newKey ] = key;\n\t\n\t\t\t\tif ( match[1] === 'o' )\n\t\t\t\t{\n\t\t\t\t\t_fnHungarianMap( o[key] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\n\t\to._hungarianMap = map;\n\t}\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian, based on a Hungarian map\n\t * created by _fnHungarianMap.\n\t *  @param {object} src The model object which holds all parameters that can be\n\t *    mapped.\n\t *  @param {object} user The object to convert from camel case to Hungarian.\n\t *  @param {boolean} force When set to `true`, properties which already have a\n\t *    Hungarian value in the `user` object will be overwritten. Otherwise they\n\t *    won't be.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCamelToHungarian ( src, user, force )\n\t{\n\t\tif ( ! src._hungarianMap ) {\n\t\t\t_fnHungarianMap( src );\n\t\t}\n\t\n\t\tvar hungarianKey;\n\t\n\t\t$.each( user, function (key, val) {\n\t\t\thungarianKey = src._hungarianMap[ key ];\n\t\n\t\t\tif ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )\n\t\t\t{\n\t\t\t\t// For objects, we need to buzz down into the object to copy parameters\n\t\t\t\tif ( hungarianKey.charAt(0) === 'o' )\n\t\t\t\t{\n\t\t\t\t\t// Copy the camelCase options over to the hungarian\n\t\t\t\t\tif ( ! user[ hungarianKey ] ) {\n\t\t\t\t\t\tuser[ hungarianKey ] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, user[hungarianKey], user[key] );\n\t\n\t\t\t\t\t_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser[hungarianKey] = user[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Language compatibility - when certain options are given, and others aren't, we\n\t * need to duplicate the values over, in order to provide backwards compatibility\n\t * with older language files.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLanguageCompat( lang )\n\t{\n\t\tvar defaults = DataTable.defaults.oLanguage;\n\t\tvar zeroRecords = lang.sZeroRecords;\n\t\n\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t * sZeroRecords - assuming that is given.\n\t\t */\n\t\tif ( ! lang.sEmptyTable && zeroRecords &&\n\t\t\tdefaults.sEmptyTable === \"No data available in table\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );\n\t\t}\n\t\n\t\t/* Likewise with loading records */\n\t\tif ( ! lang.sLoadingRecords && zeroRecords &&\n\t\t\tdefaults.sLoadingRecords === \"Loading...\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );\n\t\t}\n\t\n\t\t// Old parameter name of the thousands separator mapped onto the new\n\t\tif ( lang.sInfoThousands ) {\n\t\t\tlang.sThousands = lang.sInfoThousands;\n\t\t}\n\t\n\t\tvar decimal = lang.sDecimal;\n\t\tif ( decimal ) {\n\t\t\t_addNumericSort( decimal );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Map one parameter onto another\n\t *  @param {object} o Object to map\n\t *  @param {*} knew The new parameter name\n\t *  @param {*} old The old parameter name\n\t */\n\tvar _fnCompatMap = function ( o, knew, old ) {\n\t\tif ( o[ knew ] !== undefined ) {\n\t\t\to[ old ] = o[ knew ];\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for the main DT options. Note that the new\n\t * options are mapped onto the old parameters, so this is an external interface\n\t * change only.\n\t *  @param {object} init Object to map\n\t */\n\tfunction _fnCompatOpts ( init )\n\t{\n\t\t_fnCompatMap( init, 'ordering',      'bSort' );\n\t\t_fnCompatMap( init, 'orderMulti',    'bSortMulti' );\n\t\t_fnCompatMap( init, 'orderClasses',  'bSortClasses' );\n\t\t_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );\n\t\t_fnCompatMap( init, 'order',         'aaSorting' );\n\t\t_fnCompatMap( init, 'orderFixed',    'aaSortingFixed' );\n\t\t_fnCompatMap( init, 'paging',        'bPaginate' );\n\t\t_fnCompatMap( init, 'pagingType',    'sPaginationType' );\n\t\t_fnCompatMap( init, 'pageLength',    'iDisplayLength' );\n\t\t_fnCompatMap( init, 'searching',     'bFilter' );\n\t\n\t\t// Boolean initialisation of x-scrolling\n\t\tif ( typeof init.sScrollX === 'boolean' ) {\n\t\t\tinit.sScrollX = init.sScrollX ? '100%' : '';\n\t\t}\n\t\tif ( typeof init.scrollX === 'boolean' ) {\n\t\t\tinit.scrollX = init.scrollX ? '100%' : '';\n\t\t}\n\t\n\t\t// Column search objects are in an array, so it needs to be converted\n\t\t// element by element\n\t\tvar searchCols = init.aoSearchCols;\n\t\n\t\tif ( searchCols ) {\n\t\t\tfor ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {\n\t\t\t\tif ( searchCols[i] ) {\n\t\t\t\t\t_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for column options. Note that the new options\n\t * are mapped onto the old parameters, so this is an external interface change\n\t * only.\n\t *  @param {object} init Object to map\n\t */\n\tfunction _fnCompatCols ( init )\n\t{\n\t\t_fnCompatMap( init, 'orderable',     'bSortable' );\n\t\t_fnCompatMap( init, 'orderData',     'aDataSort' );\n\t\t_fnCompatMap( init, 'orderSequence', 'asSorting' );\n\t\t_fnCompatMap( init, 'orderDataType', 'sortDataType' );\n\t\n\t\t// orderData can be given as an integer\n\t\tvar dataSort = init.aDataSort;\n\t\tif ( typeof dataSort === 'number' && ! $.isArray( dataSort ) ) {\n\t\t\tinit.aDataSort = [ dataSort ];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Browser feature detection for capabilities, quirks\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBrowserDetect( settings )\n\t{\n\t\t// We don't need to do this every time DataTables is constructed, the values\n\t\t// calculated are specific to the browser and OS configuration which we\n\t\t// don't expect to change between initialisations\n\t\tif ( ! DataTable.__browser ) {\n\t\t\tvar browser = {};\n\t\t\tDataTable.__browser = browser;\n\t\n\t\t\t// Scrolling feature / quirks detection\n\t\t\tvar n = $('<div/>')\n\t\t\t\t.css( {\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: $(window).scrollLeft()*-1, // allow for scrolling\n\t\t\t\t\theight: 1,\n\t\t\t\t\twidth: 1,\n\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t} )\n\t\t\t\t.append(\n\t\t\t\t\t$('<div/>')\n\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\ttop: 1,\n\t\t\t\t\t\t\tleft: 1,\n\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\toverflow: 'scroll'\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t$('<div/>')\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\theight: 10\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.appendTo( 'body' );\n\t\n\t\t\tvar outer = n.children();\n\t\t\tvar inner = outer.children();\n\t\n\t\t\t// Numbers below, in order, are:\n\t\t\t// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth\n\t\t\t//\n\t\t\t// IE6 XP:                           100 100 100  83\n\t\t\t// IE7 Vista:                        100 100 100  83\n\t\t\t// IE 8+ Windows:                     83  83 100  83\n\t\t\t// Evergreen Windows:                 83  83 100  83\n\t\t\t// Evergreen Mac with scrollbars:     85  85 100  85\n\t\t\t// Evergreen Mac without scrollbars: 100 100 100 100\n\t\n\t\t\t// Get scrollbar width\n\t\t\tbrowser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;\n\t\n\t\t\t// IE6/7 will oversize a width 100% element inside a scrolling element, to\n\t\t\t// include the width of the scrollbar, while other browsers ensure the inner\n\t\t\t// element is contained without forcing scrolling\n\t\t\tbrowser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;\n\t\n\t\t\t// In rtl text layout, some browsers (most, but not all) will place the\n\t\t\t// scrollbar on the left, rather than the right.\n\t\t\tbrowser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;\n\t\n\t\t\t// IE8- don't provide height and width for getBoundingClientRect\n\t\t\tbrowser.bBounding = n[0].getBoundingClientRect().width ? true : false;\n\t\n\t\t\tn.remove();\n\t\t}\n\t\n\t\t$.extend( settings.oBrowser, DataTable.__browser );\n\t\tsettings.oScroll.iBarWidth = DataTable.__browser.barWidth;\n\t}\n\t\n\t\n\t/**\n\t * Array.prototype reduce[Right] method, used for browsers which don't support\n\t * JS 1.6. Done this way to reduce code size, since we iterate either way\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnReduce ( that, fn, init, start, end, inc )\n\t{\n\t\tvar\n\t\t\ti = start,\n\t\t\tvalue,\n\t\t\tisSet = false;\n\t\n\t\tif ( init !== undefined ) {\n\t\t\tvalue = init;\n\t\t\tisSet = true;\n\t\t}\n\t\n\t\twhile ( i !== end ) {\n\t\t\tif ( ! that.hasOwnProperty(i) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tvalue = isSet ?\n\t\t\t\tfn( value, that[i], i, that ) :\n\t\t\t\tthat[i];\n\t\n\t\t\tisSet = true;\n\t\t\ti += inc;\n\t\t}\n\t\n\t\treturn value;\n\t}\n\t\n\t/**\n\t * Add a column to the list used for the table with default values\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} nTh The th element for this column\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddColumn( oSettings, nTh )\n\t{\n\t\t// Add column to aoColumns array\n\t\tvar oDefaults = DataTable.defaults.column;\n\t\tvar iCol = oSettings.aoColumns.length;\n\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n\t\t\tidx: iCol\n\t\t} );\n\t\toSettings.aoColumns.push( oCol );\n\t\n\t\t// Add search object for column specific search. Note that the `searchCols[ iCol ]`\n\t\t// passed into extend can be undefined. This allows the user to give a default\n\t\t// with only some of the parameters defined, and also not give a default\n\t\tvar searchCols = oSettings.aoPreSearchCols;\n\t\tsearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );\n\t\n\t\t// Use the default column options function to initialise classes etc\n\t\t_fnColumnOptions( oSettings, iCol, $(nTh).data() );\n\t}\n\t\n\t\n\t/**\n\t * Apply options for a column\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iCol column index to consider\n\t *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t{\n\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\tvar oClasses = oSettings.oClasses;\n\t\tvar th = $(oCol.nTh);\n\t\n\t\t// Try to get width information from the DOM. We can't get it from CSS\n\t\t// as we'd need to parse the CSS stylesheet. `width` option can override\n\t\tif ( ! oCol.sWidthOrig ) {\n\t\t\t// Width attribute\n\t\t\toCol.sWidthOrig = th.attr('width') || null;\n\t\n\t\t\t// Style attribute\n\t\t\tvar t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\t\t\tif ( t ) {\n\t\t\t\toCol.sWidthOrig = t[1];\n\t\t\t}\n\t\t}\n\t\n\t\t/* User specified column options */\n\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t{\n\t\t\t// Backwards compatibility\n\t\t\t_fnCompatCols( oOptions );\n\t\n\t\t\t// Map camel case parameters to their Hungarian counterparts\n\t\t\t_fnCamelToHungarian( DataTable.defaults.column, oOptions );\n\t\n\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\tif ( oOptions.mDataProp !== undefined && !oOptions.mData )\n\t\t\t{\n\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t}\n\t\n\t\t\tif ( oOptions.sType )\n\t\t\t{\n\t\t\t\toCol._sManualType = oOptions.sType;\n\t\t\t}\n\t\n\t\t\t// `class` is a reserved word in Javascript, so we need to provide\n\t\t\t// the ability to use a valid name for the camel case input\n\t\t\tif ( oOptions.className && ! oOptions.sClass )\n\t\t\t{\n\t\t\t\toOptions.sClass = oOptions.className;\n\t\t\t}\n\t\t\tif ( oOptions.sClass ) {\n\t\t\t\tth.addClass( oOptions.sClass );\n\t\t\t}\n\t\n\t\t\t$.extend( oCol, oOptions );\n\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\n\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t * priority if defined\n\t\t\t */\n\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t{\n\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t}\n\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t}\n\t\n\t\t/* Cache the data get and set functions for speed */\n\t\tvar mDataSrc = oCol.mData;\n\t\tvar mData = _fnGetObjectDataFn( mDataSrc );\n\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\n\t\tvar attrTest = function( src ) {\n\t\t\treturn typeof src === 'string' && src.indexOf('@') !== -1;\n\t\t};\n\t\toCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (\n\t\t\tattrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)\n\t\t);\n\t\toCol._setter = null;\n\t\n\t\toCol.fnGetData = function (rowData, type, meta) {\n\t\t\tvar innerData = mData( rowData, type, undefined, meta );\n\t\n\t\t\treturn mRender && type ?\n\t\t\t\tmRender( innerData, type, rowData, meta ) :\n\t\t\t\tinnerData;\n\t\t};\n\t\toCol.fnSetData = function ( rowData, val, meta ) {\n\t\t\treturn _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );\n\t\t};\n\t\n\t\t// Indicate if DataTables should read DOM data as an object or array\n\t\t// Used in _fnGetRowElements\n\t\tif ( typeof mDataSrc !== 'number' ) {\n\t\t\toSettings._rowReadObject = true;\n\t\t}\n\t\n\t\t/* Feature sorting overrides column specific when off */\n\t\tif ( !oSettings.oFeatures.bSort )\n\t\t{\n\t\t\toCol.bSortable = false;\n\t\t\tth.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called\n\t\t}\n\t\n\t\t/* Check that the class assignment is correct for sorting */\n\t\tvar bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n\t\tvar bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\t\tif ( !oCol.bSortable || (!bAsc && !bDesc) )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableNone;\n\t\t\toCol.sSortingClassJUI = \"\";\n\t\t}\n\t\telse if ( bAsc && !bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableAsc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n\t\t}\n\t\telse if ( !bAsc && bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableDesc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortable;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUI;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Adjust the table column widths for new data. Note: you would probably want to\n\t * do a redraw after calling this function!\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAdjustColumnSizing ( settings )\n\t{\n\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\tif ( settings.oFeatures.bAutoWidth !== false )\n\t\t{\n\t\t\tvar columns = settings.aoColumns;\n\t\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t\tfor ( var i=0 , iLen=columns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tcolumns[i].nTh.style.width = columns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\n\t\tvar scroll = settings.oScroll;\n\t\tif ( scroll.sY !== '' || scroll.sX !== '')\n\t\t{\n\t\t\t_fnScrollDraw( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'column-sizing', [settings] );\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of a visible column to the index in the data array (take account\n\t * of hidden columns)\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iMatch Visible column index to lookup\n\t *  @returns {int} i the data index\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\n\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\taiVis[iMatch] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of an index in the data array and convert it to the visible\n\t *   column index (take account of hidden columns)\n\t *  @param {int} iMatch Column index to lookup\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {int} i the data index\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\n\t\treturn iPos !== -1 ? iPos : null;\n\t}\n\t\n\t\n\t/**\n\t * Get the number of visible columns\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {int} i the number of visible columns\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnVisbleColumns( oSettings )\n\t{\n\t\tvar vis = 0;\n\t\n\t\t// No reduce in IE8, use a loop for now\n\t\t$.each( oSettings.aoColumns, function ( i, col ) {\n\t\t\tif ( col.bVisible && $(col.nTh).css('display') !== 'none' ) {\n\t\t\t\tvis++;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn vis;\n\t}\n\t\n\t\n\t/**\n\t * Get an array of column indexes that match a given property\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sParam Parameter in aoColumns to look for - typically\n\t *    bVisible or bSearchable\n\t *  @returns {array} Array of indexes with matched properties\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetColumns( oSettings, sParam )\n\t{\n\t\tvar a = [];\n\t\n\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\tif ( val[sParam] ) {\n\t\t\t\ta.push( i );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn a;\n\t}\n\t\n\t\n\t/**\n\t * Calculate the 'type' of a column\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnTypes ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar data = settings.aoData;\n\t\tvar types = DataTable.ext.type.detect;\n\t\tvar i, ien, j, jen, k, ken;\n\t\tvar col, cell, detectedType, cache;\n\t\n\t\t// For each column, spin over the \n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcol = columns[i];\n\t\t\tcache = [];\n\t\n\t\t\tif ( ! col.sType && col._sManualType ) {\n\t\t\t\tcol.sType = col._sManualType;\n\t\t\t}\n\t\t\telse if ( ! col.sType ) {\n\t\t\t\tfor ( j=0, jen=types.length ; j<jen ; j++ ) {\n\t\t\t\t\tfor ( k=0, ken=data.length ; k<ken ; k++ ) {\n\t\t\t\t\t\t// Use a cache array so we only need to get the type data\n\t\t\t\t\t\t// from the formatter once (when using multiple detectors)\n\t\t\t\t\t\tif ( cache[k] === undefined ) {\n\t\t\t\t\t\t\tcache[k] = _fnGetCellData( settings, k, i, 'type' );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tdetectedType = types[j]( cache[k], settings );\n\t\n\t\t\t\t\t\t// If null, then this type can't apply to this column, so\n\t\t\t\t\t\t// rather than testing all cells, break out. There is an\n\t\t\t\t\t\t// exception for the last type which is `html`. We need to\n\t\t\t\t\t\t// scan all rows since it is possible to mix string and HTML\n\t\t\t\t\t\t// types\n\t\t\t\t\t\tif ( ! detectedType && j !== types.length-1 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Only a single match is needed for html type since it is\n\t\t\t\t\t\t// bottom of the pile and very similar to string\n\t\t\t\t\t\tif ( detectedType === 'html' ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Type is valid for all data points in the column - use this\n\t\t\t\t\t// type\n\t\t\t\t\tif ( detectedType ) {\n\t\t\t\t\t\tcol.sType = detectedType;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Fall back - if no type was detected, always use string\n\t\t\t\tif ( ! col.sType ) {\n\t\t\t\t\tcol.sType = 'string';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Take the column definitions and static columns arrays and calculate how\n\t * they relate to column indexes. The callback function will then apply the\n\t * definition found for a column to a suitable configuration object.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t *  @param {array} aoCols The aoColumns array that defines columns individually\n\t *  @param {function} fn Callback function - takes two parameters, the calculated\n\t *    column index and the definition for that column.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, def;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Column definitions with aTargets\n\t\tif ( aoColDefs )\n\t\t{\n\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tdef = aoColDefs[i];\n\t\n\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\tvar aTargets = def.targets !== undefined ?\n\t\t\t\t\tdef.targets :\n\t\t\t\t\tdef.aTargets;\n\t\n\t\t\t\tif ( ! $.isArray( aTargets ) )\n\t\t\t\t{\n\t\t\t\t\taTargets = [ aTargets ];\n\t\t\t\t}\n\t\n\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\twhile( columns.length <= aTargets[j] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\tfn( aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\tfn( columns.length+aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\tfor ( k=0, kLen=columns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t     $(columns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfn( k, def );\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\t\n\t\t// Statically defined columns array\n\t\tif ( aoCols )\n\t\t{\n\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfn( i, aoCols[i] );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Add a data array to the table, creating DOM node etc. This is the parallel to\n\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t * DOM source.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {array} aData data array to be added\n\t *  @param {node} [nTr] TR element to add to the table - optional. If not given,\n\t *    DataTables will create a row automatically\n\t *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t *    if nTr is.\n\t *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddData ( oSettings, aDataIn, nTr, anTds )\n\t{\n\t\t/* Create the object for storing information about this new row */\n\t\tvar iRow = oSettings.aoData.length;\n\t\tvar oData = $.extend( true, {}, DataTable.models.oRow, {\n\t\t\tsrc: nTr ? 'dom' : 'data',\n\t\t\tidx: iRow\n\t\t} );\n\t\n\t\toData._aData = aDataIn;\n\t\toSettings.aoData.push( oData );\n\t\n\t\t/* Create the cells */\n\t\tvar nTd, sThisType;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Invalidate the column types as the new data needs to be revalidated\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tcolumns[i].sType = null;\n\t\t}\n\t\n\t\t/* Add to the display array */\n\t\toSettings.aiDisplayMaster.push( iRow );\n\t\n\t\tvar id = oSettings.rowIdFn( aDataIn );\n\t\tif ( id !== undefined ) {\n\t\t\toSettings.aIds[ id ] = oData;\n\t\t}\n\t\n\t\t/* Create the DOM information, or register it if already present */\n\t\tif ( nTr || ! oSettings.oFeatures.bDeferRender )\n\t\t{\n\t\t\t_fnCreateTr( oSettings, iRow, nTr, anTds );\n\t\t}\n\t\n\t\treturn iRow;\n\t}\n\t\n\t\n\t/**\n\t * Add one or more TR elements to the table. Generally we'd expect to\n\t * use this for reading data from a DOM sourced table, but it could be\n\t * used for an TR element. Note that if a TR is given, it is used (i.e.\n\t * it is not cloned).\n\t *  @param {object} settings dataTables settings object\n\t *  @param {array|node|jQuery} trs The TR element(s) to add to the table\n\t *  @returns {array} Array of indexes for the added rows\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddTr( settings, trs )\n\t{\n\t\tvar row;\n\t\n\t\t// Allow an individual node to be passed in\n\t\tif ( ! (trs instanceof $) ) {\n\t\t\ttrs = $(trs);\n\t\t}\n\t\n\t\treturn trs.map( function (i, el) {\n\t\t\trow = _fnGetRowElements( settings, el );\n\t\t\treturn _fnAddData( settings, row.data, el, row.cells );\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Take a TR element and convert it to an index in aoData\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} n the TR element to find\n\t *  @returns {int} index if the node is found, null if not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToDataIndex( oSettings, n )\n\t{\n\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t}\n\t\n\t\n\t/**\n\t * Take a TD element and convert it into a column data index (not the visible index)\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iRow The row number the TD/TH can be found in\n\t *  @param {node} n The TD/TH element to find\n\t *  @returns {int} index if the node is found, -1 if not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t{\n\t\treturn $.inArray( n, oSettings.aoData[ iRow ].anCells );\n\t}\n\t\n\t\n\t/**\n\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} rowIdx aoData row id\n\t *  @param {int} colIdx Column index\n\t *  @param {string} type data get type ('display', 'type' 'filter' 'sort')\n\t *  @returns {*} Cell data\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetCellData( settings, rowIdx, colIdx, type )\n\t{\n\t\tvar draw           = settings.iDraw;\n\t\tvar col            = settings.aoColumns[colIdx];\n\t\tvar rowData        = settings.aoData[rowIdx]._aData;\n\t\tvar defaultContent = col.sDefaultContent;\n\t\tvar cellData       = col.fnGetData( rowData, type, {\n\t\t\tsettings: settings,\n\t\t\trow:      rowIdx,\n\t\t\tcol:      colIdx\n\t\t} );\n\t\n\t\tif ( cellData === undefined ) {\n\t\t\tif ( settings.iDrawError != draw && defaultContent === null ) {\n\t\t\t\t_fnLog( settings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t(typeof col.mData=='function' ? '{function}' : \"'\"+col.mData+\"'\")+\n\t\t\t\t\t\" for row \"+rowIdx+\", column \"+colIdx, 4 );\n\t\t\t\tsettings.iDrawError = draw;\n\t\t\t}\n\t\t\treturn defaultContent;\n\t\t}\n\t\n\t\t// When the data source is null and a specific data type is requested (i.e.\n\t\t// not the original data), we can use default column data\n\t\tif ( (cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined ) {\n\t\t\tcellData = defaultContent;\n\t\t}\n\t\telse if ( typeof cellData === 'function' ) {\n\t\t\t// If the data source is a function, then we run it and use the return,\n\t\t\t// executing in the scope of the data object (for instances)\n\t\t\treturn cellData.call( rowData );\n\t\t}\n\t\n\t\tif ( cellData === null && type == 'display' ) {\n\t\t\treturn '';\n\t\t}\n\t\treturn cellData;\n\t}\n\t\n\t\n\t/**\n\t * Set the value for a specific cell, into the internal data cache\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} rowIdx aoData row id\n\t *  @param {int} colIdx Column index\n\t *  @param {*} val Value to set\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSetCellData( settings, rowIdx, colIdx, val )\n\t{\n\t\tvar col     = settings.aoColumns[colIdx];\n\t\tvar rowData = settings.aoData[rowIdx]._aData;\n\t\n\t\tcol.fnSetData( rowData, val, {\n\t\t\tsettings: settings,\n\t\t\trow:      rowIdx,\n\t\t\tcol:      colIdx\n\t\t}  );\n\t}\n\t\n\t\n\t// Private variable that is used to match action syntax in the data property object\n\tvar __reArray = /\\[.*?\\]$/;\n\tvar __reFn = /\\(\\)$/;\n\t\n\t/**\n\t * Split string on periods, taking into account escaped periods\n\t * @param  {string} str String to split\n\t * @return {array} Split string\n\t */\n\tfunction _fnSplitObjNotation( str )\n\t{\n\t\treturn $.map( str.match(/(\\\\.|[^\\.])+/g) || [''], function ( s ) {\n\t\t\treturn s.replace(/\\\\\\./g, '.');\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to get data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t *  @param {string|int|function} mSource The data source for the object\n\t *  @returns {function} Data get function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Build an object of get functions, and wrap them in a single call */\n\t\t\tvar o = {};\n\t\t\t$.each( mSource, function (key, val) {\n\t\t\t\tif ( val ) {\n\t\t\t\t\to[key] = _fnGetObjectDataFn( val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\tvar t = o[type] || o._;\n\t\t\t\treturn t !== undefined ?\n\t\t\t\t\tt(data, type, row, meta) :\n\t\t\t\t\tdata;\n\t\t\t};\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\treturn function (data) { // type, row and meta also passed, but not used\n\t\t\t\treturn data;\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\treturn mSource( data, type, row, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* If there is a . in the source string then the data source is in a\n\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t * be used if defined, rather than throwing an error\n\t\t\t */\n\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\tvar arrayNotation, funcNotation, out, innerSrc;\n\t\n\t\t\t\tif ( src !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar a = _fnSplitObjNotation( src );\n\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with special notation\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Array notation\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\n\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tout = [];\n\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\n\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\tif ( $.isArray( data ) ) {\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\n\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Function call\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\t\tdata = data[ a[i] ]();\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn data;\n\t\t\t};\n\t\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn data[mSource];\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to set data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t *  @param {string|int|function} mSource The data source for the object\n\t *  @returns {function} Data set function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Unlike get, only the underscore (global) option is used for for\n\t\t\t * setting data since we don't know the type here. This is why an object\n\t\t\t * option is not documented for `mData` (which is read/write), but it is\n\t\t\t * for `mRender` which is read only.\n\t\t\t */\n\t\t\treturn _fnSetObjectDataFn( mSource._ );\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Nothing to do when the data source is null */\n\t\t\treturn function () {};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, val, meta) {\n\t\t\t\tmSource( data, 'set', val, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\tvar setData = function (data, val, src) {\n\t\t\t\tvar a = _fnSplitObjNotation( src ), b;\n\t\t\t\tvar aLast = a[a.length-1];\n\t\t\t\tvar arrayNotation, funcNotation, o, innerSrc;\n\t\n\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\n\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\n\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\tif ( $.isArray( val ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t}\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\t// We've been asked to save data to an array, but it\n\t\t\t\t\t\t\t// isn't array data to be saved. Best that can be done\n\t\t\t\t\t\t\t// is to just save the value.\n\t\t\t\t\t\t\tdata[ a[i] ] = val;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Function call\n\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\tdata = data[ a[i] ]( val );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t}\n\t\n\t\t\t\t// Last item in the input - i.e, the actual set\n\t\t\t\tif ( aLast.match(__reFn ) )\n\t\t\t\t{\n\t\t\t\t\t// Function call\n\t\t\t\t\tdata = data[ aLast.replace(__reFn, '') ]( val );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ aLast.replace(__reArray, '') ] = val;\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\treturn setData( data, val, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\tdata[mSource] = val;\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return an array with the full table data\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns array {array} aData Master data array\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetDataMaster ( settings )\n\t{\n\t\treturn _pluck( settings.aoData, '_aData' );\n\t}\n\t\n\t\n\t/**\n\t * Nuke the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnClearTable( settings )\n\t{\n\t\tsettings.aoData.length = 0;\n\t\tsettings.aiDisplayMaster.length = 0;\n\t\tsettings.aiDisplay.length = 0;\n\t\tsettings.aIds = {};\n\t}\n\t\n\t\n\t /**\n\t * Take an array of integers (index array) and remove a target integer (value - not\n\t * the key!)\n\t *  @param {array} a Index array to target\n\t *  @param {int} iTarget value to find\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDeleteIndex( a, iTarget, splice )\n\t{\n\t\tvar iTargetIndex = -1;\n\t\n\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( a[i] == iTarget )\n\t\t\t{\n\t\t\t\tiTargetIndex = i;\n\t\t\t}\n\t\t\telse if ( a[i] > iTarget )\n\t\t\t{\n\t\t\t\ta[i]--;\n\t\t\t}\n\t\t}\n\t\n\t\tif ( iTargetIndex != -1 && splice === undefined )\n\t\t{\n\t\t\ta.splice( iTargetIndex, 1 );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Mark cached data as invalid such that a re-read of the data will occur when\n\t * the cached data is next requested. Also update from the data source object.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {int}    rowIdx   Row index to invalidate\n\t * @param {string} [src]    Source to invalidate from: undefined, 'auto', 'dom'\n\t *     or 'data'\n\t * @param {int}    [colIdx] Column index to invalidate. If undefined the whole\n\t *     row will be invalidated\n\t * @memberof DataTable#oApi\n\t *\n\t * @todo For the modularisation of v1.11 this will need to become a callback, so\n\t *   the sort and filter methods can subscribe to it. That will required\n\t *   initialisation options for sorting, which is why it is not already baked in\n\t */\n\tfunction _fnInvalidate( settings, rowIdx, src, colIdx )\n\t{\n\t\tvar row = settings.aoData[ rowIdx ];\n\t\tvar i, ien;\n\t\tvar cellWrite = function ( cell, col ) {\n\t\t\t// This is very frustrating, but in IE if you just write directly\n\t\t\t// to innerHTML, and elements that are overwritten are GC'ed,\n\t\t\t// even if there is a reference to them elsewhere\n\t\t\twhile ( cell.childNodes.length ) {\n\t\t\t\tcell.removeChild( cell.firstChild );\n\t\t\t}\n\t\n\t\t\tcell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );\n\t\t};\n\t\n\t\t// Are we reading last data from DOM or the data object?\n\t\tif ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {\n\t\t\t// Read the data from the DOM\n\t\t\trow._aData = _fnGetRowElements(\n\t\t\t\t\tsettings, row, colIdx, colIdx === undefined ? undefined : row._aData\n\t\t\t\t)\n\t\t\t\t.data;\n\t\t}\n\t\telse {\n\t\t\t// Reading from data object, update the DOM\n\t\t\tvar cells = row.anCells;\n\t\n\t\t\tif ( cells ) {\n\t\t\t\tif ( colIdx !== undefined ) {\n\t\t\t\t\tcellWrite( cells[colIdx], colIdx );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tcellWrite( cells[i], i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// For both row and cell invalidation, the cached data for sorting and\n\t\t// filtering is nulled out\n\t\trow._aSortData = null;\n\t\trow._aFilterData = null;\n\t\n\t\t// Invalidate the type for a specific column (if given) or all columns since\n\t\t// the data might have changed\n\t\tvar cols = settings.aoColumns;\n\t\tif ( colIdx !== undefined ) {\n\t\t\tcols[ colIdx ].sType = null;\n\t\t}\n\t\telse {\n\t\t\tfor ( i=0, ien=cols.length ; i<ien ; i++ ) {\n\t\t\t\tcols[i].sType = null;\n\t\t\t}\n\t\n\t\t\t// Update DataTables special `DT_*` attributes for the row\n\t\t\t_fnRowAttributes( settings, row );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a data source object from an HTML row, reading the contents of the\n\t * cells that are in the row.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {node|object} TR element from which to read data or existing row\n\t *   object from which to re-read the data from the cells\n\t * @param {int} [colIdx] Optional column index\n\t * @param {array|object} [d] Data source object. If `colIdx` is given then this\n\t *   parameter should also be given and will be used to write the data into.\n\t *   Only the column in question will be written\n\t * @returns {object} Object with two parameters: `data` the data read, in\n\t *   document order, and `cells` and array of nodes (they can be useful to the\n\t *   caller, so rather than needing a second traversal to get them, just return\n\t *   them from here).\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetRowElements( settings, row, colIdx, d )\n\t{\n\t\tvar\n\t\t\ttds = [],\n\t\t\ttd = row.firstChild,\n\t\t\tname, col, o, i=0, contents,\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tobjectRead = settings._rowReadObject;\n\t\n\t\t// Allow the data object to be passed in, or construct\n\t\td = d !== undefined ?\n\t\t\td :\n\t\t\tobjectRead ?\n\t\t\t\t{} :\n\t\t\t\t[];\n\t\n\t\tvar attr = function ( str, td  ) {\n\t\t\tif ( typeof str === 'string' ) {\n\t\t\t\tvar idx = str.indexOf('@');\n\t\n\t\t\t\tif ( idx !== -1 ) {\n\t\t\t\t\tvar attr = str.substring( idx+1 );\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( str );\n\t\t\t\t\tsetter( d, td.getAttribute( attr ) );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\t// Read data from a cell and store into the data object\n\t\tvar cellProcess = function ( cell ) {\n\t\t\tif ( colIdx === undefined || colIdx === i ) {\n\t\t\t\tcol = columns[i];\n\t\t\t\tcontents = $.trim(cell.innerHTML);\n\t\n\t\t\t\tif ( col && col._bAttrSrc ) {\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( col.mData._ );\n\t\t\t\t\tsetter( d, contents );\n\t\n\t\t\t\t\tattr( col.mData.sort, cell );\n\t\t\t\t\tattr( col.mData.type, cell );\n\t\t\t\t\tattr( col.mData.filter, cell );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Depending on the `data` option for the columns the data can\n\t\t\t\t\t// be read to either an object or an array.\n\t\t\t\t\tif ( objectRead ) {\n\t\t\t\t\t\tif ( ! col._setter ) {\n\t\t\t\t\t\t\t// Cache the setter function\n\t\t\t\t\t\t\tcol._setter = _fnSetObjectDataFn( col.mData );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcol._setter( d, contents );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\td[i] = contents;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t};\n\t\n\t\tif ( td ) {\n\t\t\t// `tr` element was passed in\n\t\t\twhile ( td ) {\n\t\t\t\tname = td.nodeName.toUpperCase();\n\t\n\t\t\t\tif ( name == \"TD\" || name == \"TH\" ) {\n\t\t\t\t\tcellProcess( td );\n\t\t\t\t\ttds.push( td );\n\t\t\t\t}\n\t\n\t\t\t\ttd = td.nextSibling;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Existing row object passed in\n\t\t\ttds = row.anCells;\n\t\n\t\t\tfor ( var j=0, jen=tds.length ; j<jen ; j++ ) {\n\t\t\t\tcellProcess( tds[j] );\n\t\t\t}\n\t\t}\n\t\n\t\t// Read the ID from the DOM if present\n\t\tvar rowNode = row.firstChild ? row : row.nTr;\n\t\n\t\tif ( rowNode ) {\n\t\t\tvar id = rowNode.getAttribute( 'id' );\n\t\n\t\t\tif ( id ) {\n\t\t\t\t_fnSetObjectDataFn( settings.rowId )( d, id );\n\t\t\t}\n\t\t}\n\t\n\t\treturn {\n\t\t\tdata: d,\n\t\t\tcells: tds\n\t\t};\n\t}\n\t/**\n\t * Create a new TR element (and it's TD children) for a row\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iRow Row to consider\n\t *  @param {node} [nTrIn] TR element to add to the table - optional. If not given,\n\t *    DataTables will create a row automatically\n\t *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t *    if nTr is.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCreateTr ( oSettings, iRow, nTrIn, anTds )\n\t{\n\t\tvar\n\t\t\trow = oSettings.aoData[iRow],\n\t\t\trowData = row._aData,\n\t\t\tcells = [],\n\t\t\tnTr, nTd, oCol,\n\t\t\ti, iLen;\n\t\n\t\tif ( row.nTr === null )\n\t\t{\n\t\t\tnTr = nTrIn || document.createElement('tr');\n\t\n\t\t\trow.nTr = nTr;\n\t\t\trow.anCells = cells;\n\t\n\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t * to the aoData array for fast look up\n\t\t\t */\n\t\t\tnTr._DT_RowIndex = iRow;\n\t\n\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t_fnRowAttributes( oSettings, row );\n\t\n\t\t\t/* Process each column */\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\n\t\t\t\tnTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType );\n\t\t\t\tnTd._DT_CellIndex = {\n\t\t\t\t\trow: iRow,\n\t\t\t\t\tcolumn: i\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tcells.push( nTd );\n\t\n\t\t\t\t// Need to create the HTML if new, or if a rendering function is defined\n\t\t\t\tif ( (!nTrIn || oCol.mRender || oCol.mData !== i) &&\n\t\t\t\t\t (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i+'.display')\n\t\t\t\t) {\n\t\t\t\t\tnTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t}\n\t\n\t\t\t\t/* Add user defined class */\n\t\t\t\tif ( oCol.sClass )\n\t\t\t\t{\n\t\t\t\t\tnTd.className += ' '+oCol.sClass;\n\t\t\t\t}\n\t\n\t\t\t\t// Visibility - add or remove as required\n\t\t\t\tif ( oCol.bVisible && ! nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t}\n\t\t\t\telse if ( ! oCol.bVisible && nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t}\n\t\n\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t{\n\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] );\n\t\t}\n\t\n\t\t// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved\n\t\t// and deployed\n\t\trow.nTr.setAttribute( 'role', 'row' );\n\t}\n\t\n\t\n\t/**\n\t * Add attributes to a row based on the special `DT_*` parameters in a data\n\t * source object.\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} DataTables row object for the row to be modified\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnRowAttributes( settings, row )\n\t{\n\t\tvar tr = row.nTr;\n\t\tvar data = row._aData;\n\t\n\t\tif ( tr ) {\n\t\t\tvar id = settings.rowIdFn( data );\n\t\n\t\t\tif ( id ) {\n\t\t\t\ttr.id = id;\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowClass ) {\n\t\t\t\t// Remove any classes added by DT_RowClass before\n\t\t\t\tvar a = data.DT_RowClass.split(' ');\n\t\t\t\trow.__rowc = row.__rowc ?\n\t\t\t\t\t_unique( row.__rowc.concat( a ) ) :\n\t\t\t\t\ta;\n\t\n\t\t\t\t$(tr)\n\t\t\t\t\t.removeClass( row.__rowc.join(' ') )\n\t\t\t\t\t.addClass( data.DT_RowClass );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowAttr ) {\n\t\t\t\t$(tr).attr( data.DT_RowAttr );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowData ) {\n\t\t\t\t$(tr).data( data.DT_RowData );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Create the HTML header for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBuildHead( oSettings )\n\t{\n\t\tvar i, ien, cell, row, column;\n\t\tvar thead = oSettings.nTHead;\n\t\tvar tfoot = oSettings.nTFoot;\n\t\tvar createHeader = $('th, td', thead).length === 0;\n\t\tvar classes = oSettings.oClasses;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\tif ( createHeader ) {\n\t\t\trow = $('<tr/>').appendTo( thead );\n\t\t}\n\t\n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcell = $( column.nTh ).addClass( column.sClass );\n\t\n\t\t\tif ( createHeader ) {\n\t\t\t\tcell.appendTo( row );\n\t\t\t}\n\t\n\t\t\t// 1.11 move into sorting\n\t\t\tif ( oSettings.oFeatures.bSort ) {\n\t\t\t\tcell.addClass( column.sSortingClass );\n\t\n\t\t\t\tif ( column.bSortable !== false ) {\n\t\t\t\t\tcell\n\t\t\t\t\t\t.attr( 'tabindex', oSettings.iTabIndex )\n\t\t\t\t\t\t.attr( 'aria-controls', oSettings.sTableId );\n\t\n\t\t\t\t\t_fnSortAttachListener( oSettings, column.nTh, i );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( column.sTitle != cell[0].innerHTML ) {\n\t\t\t\tcell.html( column.sTitle );\n\t\t\t}\n\t\n\t\t\t_fnRenderer( oSettings, 'header' )(\n\t\t\t\toSettings, cell, column, classes\n\t\t\t);\n\t\t}\n\t\n\t\tif ( createHeader ) {\n\t\t\t_fnDetectHeader( oSettings.aoHeader, thead );\n\t\t}\n\t\t\n\t\t/* ARIA role for the rows */\n\t \t$(thead).find('>tr').attr('role', 'row');\n\t\n\t\t/* Deal with the footer - add classes if required */\n\t\t$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );\n\t\t$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );\n\t\n\t\t// Cache the footer cells. Note that we only take the cells from the first\n\t\t// row in the footer. If there is more than one row the user wants to\n\t\t// interact with, they need to use the table().foot() method. Note also this\n\t\t// allows cells to be used for multiple columns using colspan\n\t\tif ( tfoot !== null ) {\n\t\t\tvar cells = oSettings.aoFooter[0];\n\t\n\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\tcolumn = columns[i];\n\t\t\t\tcolumn.nTf = cells[i].cell;\n\t\n\t\t\t\tif ( column.sClass ) {\n\t\t\t\t\t$(column.nTf).addClass( column.sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the header (or footer) element based on the column visibility states. The\n\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t * traversed over cell at a time in a rows x columns grid fashion, although each\n\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t * already a cell in that position.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param array {objects} aoSource Layout array from _fnDetectHeader\n\t *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\tvar aoLocal = [];\n\t\tvar aApplied = [];\n\t\tvar iColumns = oSettings.aoColumns.length;\n\t\tvar iRowspan, iColspan;\n\t\n\t\tif ( ! aoSource )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif (  bIncludeHidden === undefined )\n\t\t{\n\t\t\tbIncludeHidden = false;\n\t\t}\n\t\n\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\n\t\t\t/* Remove any columns which are currently hidden */\n\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t{\n\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\taApplied.push( [] );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\n\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\tif ( nLocalTr )\n\t\t\t{\n\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tiRowspan = 1;\n\t\t\t\tiColspan = 1;\n\t\n\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t */\n\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\taApplied[i][j] = 1;\n\t\n\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t$(aoLocal[i][j].cell)\n\t\t\t\t\t\t.attr('rowspan', iRowspan)\n\t\t\t\t\t\t.attr('colspan', iColspan);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Insert the required TR nodes into the table for display\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDraw( oSettings )\n\t{\n\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t{\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar i, iLen, n;\n\t\tvar anRows = [];\n\t\tvar iRowCount = 0;\n\t\tvar asStripeClasses = oSettings.asStripeClasses;\n\t\tvar iStripes = asStripeClasses.length;\n\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\tvar oLang = oSettings.oLanguage;\n\t\tvar iInitDisplayStart = oSettings.iInitDisplayStart;\n\t\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\n\t\toSettings.bDrawing = true;\n\t\n\t\t/* Check and see if we have an initial draw position from state saving */\n\t\tif ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )\n\t\t{\n\t\t\toSettings._iDisplayStart = bServerSide ?\n\t\t\t\tiInitDisplayStart :\n\t\t\t\tiInitDisplayStart >= oSettings.fnRecordsDisplay() ?\n\t\t\t\t\t0 :\n\t\t\t\t\tiInitDisplayStart;\n\t\n\t\t\toSettings.iInitDisplayStart = -1;\n\t\t}\n\t\n\t\tvar iDisplayStart = oSettings._iDisplayStart;\n\t\tvar iDisplayEnd = oSettings.fnDisplayEnd();\n\t\n\t\t/* Server-side processing draw intercept */\n\t\tif ( oSettings.bDeferLoading )\n\t\t{\n\t\t\toSettings.bDeferLoading = false;\n\t\t\toSettings.iDraw++;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\telse if ( !bServerSide )\n\t\t{\n\t\t\toSettings.iDraw++;\n\t\t}\n\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( aiDisplay.length !== 0 )\n\t\t{\n\t\t\tvar iStart = bServerSide ? 0 : iDisplayStart;\n\t\t\tvar iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;\n\t\n\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t{\n\t\t\t\tvar iDataIndex = aiDisplay[j];\n\t\t\t\tvar aoData = oSettings.aoData[ iDataIndex ];\n\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t{\n\t\t\t\t\t_fnCreateTr( oSettings, iDataIndex );\n\t\t\t\t}\n\t\n\t\t\t\tvar nRow = aoData.nTr;\n\t\n\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t{\n\t\t\t\t\tvar sStripe = asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Row callback functions - might want to manipulate the row\n\t\t\t\t// iRowCount and j are not currently documented. Are they at all\n\t\t\t\t// useful?\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null,\n\t\t\t\t\t[nRow, aoData._aData, iRowCount, j] );\n\t\n\t\t\t\tanRows.push( nRow );\n\t\t\t\tiRowCount++;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\tif ( oSettings.iDraw == 1 &&  _fnDataSource( oSettings ) == 'ajax' )\n\t\t\t{\n\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t}\n\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t{\n\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t}\n\t\n\t\t\tanRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )\n\t\t\t\t.append( $('<td />', {\n\t\t\t\t\t'valign':  'top',\n\t\t\t\t\t'colSpan': _fnVisbleColumns( oSettings ),\n\t\t\t\t\t'class':   oSettings.oClasses.sRowEmpty\n\t\t\t\t} ).html( sZero ) )[0];\n\t\t}\n\t\n\t\t/* Header and footer callbacks */\n\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\tvar body = $(oSettings.nTBody);\n\t\n\t\tbody.children().detach();\n\t\tbody.append( $(anRows) );\n\t\n\t\t/* Call all required callback functions for the end of a draw */\n\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\toSettings.bSorted = false;\n\t\toSettings.bFiltered = false;\n\t\toSettings.bDrawing = false;\n\t}\n\t\n\t\n\t/**\n\t * Redraw the table - taking account of the various features which are enabled\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {boolean} [holdPosition] Keep the current paging position. By default\n\t *    the paging is reset to the first page\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnReDraw( settings, holdPosition )\n\t{\n\t\tvar\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tsort     = features.bSort,\n\t\t\tfilter   = features.bFilter;\n\t\n\t\tif ( sort ) {\n\t\t\t_fnSort( settings );\n\t\t}\n\t\n\t\tif ( filter ) {\n\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch );\n\t\t}\n\t\telse {\n\t\t\t// No filtering, so we want to just use the display master\n\t\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\t}\n\t\n\t\tif ( holdPosition !== true ) {\n\t\t\tsettings._iDisplayStart = 0;\n\t\t}\n\t\n\t\t// Let any modules know about the draw hold position state (used by\n\t\t// scrolling internally)\n\t\tsettings._drawHold = holdPosition;\n\t\n\t\t_fnDraw( settings );\n\t\n\t\tsettings._drawHold = false;\n\t}\n\t\n\t\n\t/**\n\t * Add the options to the page HTML for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddOptionsHtml ( oSettings )\n\t{\n\t\tvar classes = oSettings.oClasses;\n\t\tvar table = $(oSettings.nTable);\n\t\tvar holding = $('<div/>').insertBefore( table ); // Holding element for speed\n\t\tvar features = oSettings.oFeatures;\n\t\n\t\t// All DataTables are wrapped in a div\n\t\tvar insert = $('<div/>', {\n\t\t\tid:      oSettings.sTableId+'_wrapper',\n\t\t\t'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)\n\t\t} );\n\t\n\t\toSettings.nHolding = holding[0];\n\t\toSettings.nTableWrapper = insert[0];\n\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\n\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\tvar aDom = oSettings.sDom.split('');\n\t\tvar featureNode, cOption, nNewNode, cNext, sAttr, j;\n\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t{\n\t\t\tfeatureNode = null;\n\t\t\tcOption = aDom[i];\n\t\n\t\t\tif ( cOption == '<' )\n\t\t\t{\n\t\t\t\t/* New container div */\n\t\t\t\tnNewNode = $('<div/>')[0];\n\t\n\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\tcNext = aDom[i+1];\n\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t{\n\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\tj = 2;\n\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\tj++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Replace jQuery UI constants @todo depreciated */\n\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIHeader;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIFooter;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t */\n\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t}\n\t\n\t\t\t\tinsert.append( nNewNode );\n\t\t\t\tinsert = $(nNewNode);\n\t\t\t}\n\t\t\telse if ( cOption == '>' )\n\t\t\t{\n\t\t\t\t/* End container div */\n\t\t\t\tinsert = insert.parent();\n\t\t\t}\n\t\t\t// @todo Move options into their own plugins?\n\t\t\telse if ( cOption == 'l' && features.bPaginate && features.bLengthChange )\n\t\t\t{\n\t\t\t\t/* Length */\n\t\t\t\tfeatureNode = _fnFeatureHtmlLength( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'f' && features.bFilter )\n\t\t\t{\n\t\t\t\t/* Filter */\n\t\t\t\tfeatureNode = _fnFeatureHtmlFilter( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'r' && features.bProcessing )\n\t\t\t{\n\t\t\t\t/* pRocessing */\n\t\t\t\tfeatureNode = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 't' )\n\t\t\t{\n\t\t\t\t/* Table */\n\t\t\t\tfeatureNode = _fnFeatureHtmlTable( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption ==  'i' && features.bInfo )\n\t\t\t{\n\t\t\t\t/* Info */\n\t\t\t\tfeatureNode = _fnFeatureHtmlInfo( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'p' && features.bPaginate )\n\t\t\t{\n\t\t\t\t/* Pagination */\n\t\t\t\tfeatureNode = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t}\n\t\t\telse if ( DataTable.ext.feature.length !== 0 )\n\t\t\t{\n\t\t\t\t/* Plug-in features */\n\t\t\t\tvar aoFeatures = DataTable.ext.feature;\n\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t{\n\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t{\n\t\t\t\t\t\tfeatureNode = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Add to the 2D features array */\n\t\t\tif ( featureNode )\n\t\t\t{\n\t\t\t\tvar aanFeatures = oSettings.aanFeatures;\n\t\n\t\t\t\tif ( ! aanFeatures[cOption] )\n\t\t\t\t{\n\t\t\t\t\taanFeatures[cOption] = [];\n\t\t\t\t}\n\t\n\t\t\t\taanFeatures[cOption].push( featureNode );\n\t\t\t\tinsert.append( featureNode );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\tholding.replaceWith( insert );\n\t\toSettings.nHolding = null;\n\t}\n\t\n\t\n\t/**\n\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t * create a layout grid (array) of rows x columns, which contains a reference\n\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t * any column / row could be removed and the new grid constructed\n\t *  @param array {object} aLayout Array to store the calculated layout in\n\t *  @param {node} nThead The header/footer element for the table\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDetectHeader ( aLayout, nThead )\n\t{\n\t\tvar nTrs = $(nThead).children('tr');\n\t\tvar nTr, nCell;\n\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\tvar bUnique;\n\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\tvar k = a[i];\n\t                while ( k[j] ) {\n\t\t\t\tj++;\n\t\t\t}\n\t\t\treturn j;\n\t\t};\n\t\n\t\taLayout.splice( 0, aLayout.length );\n\t\n\t\t/* We know how many rows there are in the layout - so prep it */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taLayout.push( [] );\n\t\t}\n\t\n\t\t/* Calculate a layout array */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTr = nTrs[i];\n\t\t\tiColumn = 0;\n\t\n\t\t\t/* For every cell in the row... */\n\t\t\tnCell = nTr.firstChild;\n\t\t\twhile ( nCell ) {\n\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t{\n\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\n\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target\n\t\t\t\t\t * accordingly\n\t\t\t\t\t */\n\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\n\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\n\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Get an array of unique th elements, one for each column\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} nHeader automatically detect the layout from this node - optional\n\t *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t *  @returns array {node} aReturn list of unique th's\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t{\n\t\tvar aReturn = [];\n\t\tif ( !aLayout )\n\t\t{\n\t\t\taLayout = oSettings.aoHeader;\n\t\t\tif ( nHeader )\n\t\t\t{\n\t\t\t\taLayout = [];\n\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t}\n\t\t}\n\t\n\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( aLayout[i][j].unique &&\n\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t{\n\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn aReturn;\n\t}\n\t\n\t/**\n\t * Create an Ajax call based on the table's settings, taking into account that\n\t * parameters can have multiple forms, and backwards compatibility.\n\t *\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} data Data to send to the server, required by\n\t *     DataTables - may be augmented by developer callbacks\n\t * @param {function} fn Callback function to run when data is obtained\n\t */\n\tfunction _fnBuildAjax( oSettings, data, fn )\n\t{\n\t\t// Compatibility with 1.9-, allow fnServerData and event to manipulate\n\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );\n\t\n\t\t// Convert to object based for 1.10+ if using the old array scheme which can\n\t\t// come from server-side processing or serverParams\n\t\tif ( data && $.isArray(data) ) {\n\t\t\tvar tmp = {};\n\t\t\tvar rbracket = /(.*?)\\[\\]$/;\n\t\n\t\t\t$.each( data, function (key, val) {\n\t\t\t\tvar match = val.name.match(rbracket);\n\t\n\t\t\t\tif ( match ) {\n\t\t\t\t\t// Support for arrays\n\t\t\t\t\tvar name = match[0];\n\t\n\t\t\t\t\tif ( ! tmp[ name ] ) {\n\t\t\t\t\t\ttmp[ name ] = [];\n\t\t\t\t\t}\n\t\t\t\t\ttmp[ name ].push( val.value );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttmp[val.name] = val.value;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdata = tmp;\n\t\t}\n\t\n\t\tvar ajaxData;\n\t\tvar ajax = oSettings.ajax;\n\t\tvar instance = oSettings.oInstance;\n\t\tvar callback = function ( json ) {\n\t\t\t_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );\n\t\t\tfn( json );\n\t\t};\n\t\n\t\tif ( $.isPlainObject( ajax ) && ajax.data )\n\t\t{\n\t\t\tajaxData = ajax.data;\n\t\n\t\t\tvar newData = $.isFunction( ajaxData ) ?\n\t\t\t\tajaxData( data, oSettings ) :  // fn can manipulate data or return\n\t\t\t\tajaxData;                      // an object object or array to merge\n\t\n\t\t\t// If the function returned something, use that alone\n\t\t\tdata = $.isFunction( ajaxData ) && newData ?\n\t\t\t\tnewData :\n\t\t\t\t$.extend( true, data, newData );\n\t\n\t\t\t// Remove the data property as we've resolved it already and don't want\n\t\t\t// jQuery to do it again (it is restored at the end of the function)\n\t\t\tdelete ajax.data;\n\t\t}\n\t\n\t\tvar baseAjax = {\n\t\t\t\"data\": data,\n\t\t\t\"success\": function (json) {\n\t\t\t\tvar error = json.error || json.sError;\n\t\t\t\tif ( error ) {\n\t\t\t\t\t_fnLog( oSettings, 0, error );\n\t\t\t\t}\n\t\n\t\t\t\toSettings.json = json;\n\t\t\t\tcallback( json );\n\t\t\t},\n\t\t\t\"dataType\": \"json\",\n\t\t\t\"cache\": false,\n\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\tvar ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );\n\t\n\t\t\t\tif ( $.inArray( true, ret ) === -1 ) {\n\t\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t\t_fnLog( oSettings, 0, 'Invalid JSON response', 1 );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t_fnLog( oSettings, 0, 'Ajax error', 7 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t}\n\t\t};\n\t\n\t\t// Store the data submitted for the API\n\t\toSettings.oAjaxData = data;\n\t\n\t\t// Allow plug-ins and external processes to modify the data\n\t\t_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );\n\t\n\t\tif ( oSettings.fnServerData )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.fnServerData.call( instance,\n\t\t\t\toSettings.sAjaxSource,\n\t\t\t\t$.map( data, function (val, key) { // Need to convert back to 1.9 trad format\n\t\t\t\t\treturn { name: key, value: val };\n\t\t\t\t} ),\n\t\t\t\tcallback,\n\t\t\t\toSettings\n\t\t\t);\n\t\t}\n\t\telse if ( oSettings.sAjaxSource || typeof ajax === 'string' )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, {\n\t\t\t\turl: ajax || oSettings.sAjaxSource\n\t\t\t} ) );\n\t\t}\n\t\telse if ( $.isFunction( ajax ) )\n\t\t{\n\t\t\t// Is a function - let the caller define what needs to be done\n\t\t\toSettings.jqXHR = ajax.call( instance, data, callback, oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Object to extend the base settings\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );\n\t\n\t\t\t// Restore for next time around\n\t\t\tajax.data = ajaxData;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Update the table using an Ajax call\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {boolean} Block the table drawing or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdate( settings )\n\t{\n\t\tif ( settings.bAjaxDataGet ) {\n\t\t\tsettings.iDraw++;\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t_fnBuildAjax(\n\t\t\t\tsettings,\n\t\t\t\t_fnAjaxParameters( settings ),\n\t\t\t\tfunction(json) {\n\t\t\t\t\t_fnAjaxUpdateDraw( settings, json );\n\t\t\t\t}\n\t\t\t);\n\t\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\t\n\t/**\n\t * Build up the parameters in an object needed for a server-side processing\n\t * request. Note that this is basically done twice, is different ways - a modern\n\t * method which is used by default in DataTables 1.10 which uses objects and\n\t * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if\n\t * the sAjaxSource option is used in the initialisation, or the legacyAjax\n\t * option is set.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {bool} block the table drawing or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxParameters( settings )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tcolumnCount = columns.length,\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tpreSearch = settings.oPreviousSearch,\n\t\t\tpreColSearch = settings.aoPreSearchCols,\n\t\t\ti, data = [], dataProp, column, columnSearch,\n\t\t\tsort = _fnSortFlatten( settings ),\n\t\t\tdisplayStart = settings._iDisplayStart,\n\t\t\tdisplayLength = features.bPaginate !== false ?\n\t\t\t\tsettings._iDisplayLength :\n\t\t\t\t-1;\n\t\n\t\tvar param = function ( name, value ) {\n\t\t\tdata.push( { 'name': name, 'value': value } );\n\t\t};\n\t\n\t\t// DataTables 1.9- compatible method\n\t\tparam( 'sEcho',          settings.iDraw );\n\t\tparam( 'iColumns',       columnCount );\n\t\tparam( 'sColumns',       _pluck( columns, 'sName' ).join(',') );\n\t\tparam( 'iDisplayStart',  displayStart );\n\t\tparam( 'iDisplayLength', displayLength );\n\t\n\t\t// DataTables 1.10+ method\n\t\tvar d = {\n\t\t\tdraw:    settings.iDraw,\n\t\t\tcolumns: [],\n\t\t\torder:   [],\n\t\t\tstart:   displayStart,\n\t\t\tlength:  displayLength,\n\t\t\tsearch:  {\n\t\t\t\tvalue: preSearch.sSearch,\n\t\t\t\tregex: preSearch.bRegex\n\t\t\t}\n\t\t};\n\t\n\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcolumnSearch = preColSearch[i];\n\t\t\tdataProp = typeof column.mData==\"function\" ? 'function' : column.mData ;\n\t\n\t\t\td.columns.push( {\n\t\t\t\tdata:       dataProp,\n\t\t\t\tname:       column.sName,\n\t\t\t\tsearchable: column.bSearchable,\n\t\t\t\torderable:  column.bSortable,\n\t\t\t\tsearch:     {\n\t\t\t\t\tvalue: columnSearch.sSearch,\n\t\t\t\t\tregex: columnSearch.bRegex\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\tparam( \"mDataProp_\"+i, dataProp );\n\t\n\t\t\tif ( features.bFilter ) {\n\t\t\t\tparam( 'sSearch_'+i,     columnSearch.sSearch );\n\t\t\t\tparam( 'bRegex_'+i,      columnSearch.bRegex );\n\t\t\t\tparam( 'bSearchable_'+i, column.bSearchable );\n\t\t\t}\n\t\n\t\t\tif ( features.bSort ) {\n\t\t\t\tparam( 'bSortable_'+i, column.bSortable );\n\t\t\t}\n\t\t}\n\t\n\t\tif ( features.bFilter ) {\n\t\t\tparam( 'sSearch', preSearch.sSearch );\n\t\t\tparam( 'bRegex', preSearch.bRegex );\n\t\t}\n\t\n\t\tif ( features.bSort ) {\n\t\t\t$.each( sort, function ( i, val ) {\n\t\t\t\td.order.push( { column: val.col, dir: val.dir } );\n\t\n\t\t\t\tparam( 'iSortCol_'+i, val.col );\n\t\t\t\tparam( 'sSortDir_'+i, val.dir );\n\t\t\t} );\n\t\n\t\t\tparam( 'iSortingCols', sort.length );\n\t\t}\n\t\n\t\t// If the legacy.ajax parameter is null, then we automatically decide which\n\t\t// form to use, based on sAjaxSource\n\t\tvar legacy = DataTable.ext.legacy.ajax;\n\t\tif ( legacy === null ) {\n\t\t\treturn settings.sAjaxSource ? data : d;\n\t\t}\n\t\n\t\t// Otherwise, if legacy has been specified then we use that to decide on the\n\t\t// form\n\t\treturn legacy ? data : d;\n\t}\n\t\n\t\n\t/**\n\t * Data the data from the server (nuking the old) and redraw the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} json json data return from the server.\n\t *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t *  @param {array} json.aaData The data to display on this page\n\t *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdateDraw ( settings, json )\n\t{\n\t\t// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.\n\t\t// Support both\n\t\tvar compat = function ( old, modern ) {\n\t\t\treturn json[old] !== undefined ? json[old] : json[modern];\n\t\t};\n\t\n\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\tvar draw            = compat( 'sEcho',                'draw' );\n\t\tvar recordsTotal    = compat( 'iTotalRecords',        'recordsTotal' );\n\t\tvar recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );\n\t\n\t\tif ( draw ) {\n\t\t\t// Protect against out of sequence returns\n\t\t\tif ( draw*1 < settings.iDraw ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettings.iDraw = draw * 1;\n\t\t}\n\t\n\t\t_fnClearTable( settings );\n\t\tsettings._iRecordsTotal   = parseInt(recordsTotal, 10);\n\t\tsettings._iRecordsDisplay = parseInt(recordsFiltered, 10);\n\t\n\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t_fnAddData( settings, data[i] );\n\t\t}\n\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\n\t\tsettings.bAjaxDataGet = false;\n\t\t_fnDraw( settings );\n\t\n\t\tif ( ! settings._bInitComplete ) {\n\t\t\t_fnInitComplete( settings, json );\n\t\t}\n\t\n\t\tsettings.bAjaxDataGet = true;\n\t\t_fnProcessingDisplay( settings, false );\n\t}\n\t\n\t\n\t/**\n\t * Get the data from the JSON data source to use for drawing a table. Using\n\t * `_fnGetObjectDataFn` allows the data to be sourced from a property of the\n\t * source object, or from a processing function.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param  {object} json Data source object / array from the server\n\t *  @return {array} Array of data to use\n\t */\n\tfunction _fnAjaxDataSrc ( oSettings, json )\n\t{\n\t\tvar dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?\n\t\t\toSettings.ajax.dataSrc :\n\t\t\toSettings.sAjaxDataProp; // Compatibility with 1.9-.\n\t\n\t\t// Compatibility with 1.9-. In order to read from aaData, check if the\n\t\t// default has been changed, if not, check for aaData\n\t\tif ( dataSrc === 'data' ) {\n\t\t\treturn json.aaData || json[dataSrc];\n\t\t}\n\t\n\t\treturn dataSrc !== \"\" ?\n\t\t\t_fnGetObjectDataFn( dataSrc )( json ) :\n\t\t\tjson;\n\t}\n\t\n\t/**\n\t * Generate the node required for filtering text\n\t *  @returns {node} Filter control element\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlFilter ( settings )\n\t{\n\t\tvar classes = settings.oClasses;\n\t\tvar tableId = settings.sTableId;\n\t\tvar language = settings.oLanguage;\n\t\tvar previousSearch = settings.oPreviousSearch;\n\t\tvar features = settings.aanFeatures;\n\t\tvar input = '<input type=\"search\" class=\"'+classes.sFilterInput+'\"/>';\n\t\n\t\tvar str = language.sSearch;\n\t\tstr = str.match(/_INPUT_/) ?\n\t\t\tstr.replace('_INPUT_', input) :\n\t\t\tstr+input;\n\t\n\t\tvar filter = $('<div/>', {\n\t\t\t\t'id': ! features.f ? tableId+'_filter' : null,\n\t\t\t\t'class': classes.sFilter\n\t\t\t} )\n\t\t\t.append( $('<label/>' ).append( str ) );\n\t\n\t\tvar searchFn = function() {\n\t\t\t/* Update all other filter input elements for the new display */\n\t\t\tvar n = features.f;\n\t\t\tvar val = !this.value ? \"\" : this.value; // mental IE8 fix :-(\n\t\n\t\t\t/* Now do the filter */\n\t\t\tif ( val != previousSearch.sSearch ) {\n\t\t\t\t_fnFilterComplete( settings, {\n\t\t\t\t\t\"sSearch\": val,\n\t\t\t\t\t\"bRegex\": previousSearch.bRegex,\n\t\t\t\t\t\"bSmart\": previousSearch.bSmart ,\n\t\t\t\t\t\"bCaseInsensitive\": previousSearch.bCaseInsensitive\n\t\t\t\t} );\n\t\n\t\t\t\t// Need to redraw, without resorting\n\t\t\t\tsettings._iDisplayStart = 0;\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t};\n\t\n\t\tvar searchDelay = settings.searchDelay !== null ?\n\t\t\tsettings.searchDelay :\n\t\t\t_fnDataSource( settings ) === 'ssp' ?\n\t\t\t\t400 :\n\t\t\t\t0;\n\t\n\t\tvar jqFilter = $('input', filter)\n\t\t\t.val( previousSearch.sSearch )\n\t\t\t.attr( 'placeholder', language.sSearchPlaceholder )\n\t\t\t.on(\n\t\t\t\t'keyup.DT search.DT input.DT paste.DT cut.DT',\n\t\t\t\tsearchDelay ?\n\t\t\t\t\t_fnThrottle( searchFn, searchDelay ) :\n\t\t\t\t\tsearchFn\n\t\t\t)\n\t\t\t.on( 'keypress.DT', function(e) {\n\t\t\t\t/* Prevent form submission */\n\t\t\t\tif ( e.keyCode == 13 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attr('aria-controls', tableId);\n\t\n\t\t// Update the input elements whenever the table is filtered\n\t\t$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame...\n\t\t\t\ttry {\n\t\t\t\t\tif ( jqFilter[0] !== document.activeElement ) {\n\t\t\t\t\t\tjqFilter.val( previousSearch.sSearch );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {}\n\t\t\t}\n\t\t} );\n\t\n\t\treturn filter[0];\n\t}\n\t\n\t\n\t/**\n\t * Filter the table using both the global filter and column based filtering\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} oSearch search information\n\t *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t{\n\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t/* Save the filtering values */\n\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t};\n\t\tvar fnRegex = function ( o ) {\n\t\t\t// Backwards compatibility with the bEscapeRegex option\n\t\t\treturn o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;\n\t\t};\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo As per sort - can this be moved into an event handler?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' )\n\t\t{\n\t\t\t/* Global filter */\n\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\tfnSaveFilter( oInput );\n\t\n\t\t\t/* Now do the individual column filter */\n\t\t\tfor ( var i=0 ; i<aoPrevSearch.length ; i++ )\n\t\t\t{\n\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),\n\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t}\n\t\n\t\t\t/* Custom filtering */\n\t\t\t_fnFilterCustom( oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfnSaveFilter( oInput );\n\t\t}\n\t\n\t\t/* Tell the draw function we have been filtering */\n\t\toSettings.bFiltered = true;\n\t\t_fnCallbackFire( oSettings, null, 'search', [oSettings] );\n\t}\n\t\n\t\n\t/**\n\t * Apply custom filtering functions\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCustom( settings )\n\t{\n\t\tvar filters = DataTable.ext.search;\n\t\tvar displayRows = settings.aiDisplay;\n\t\tvar row, rowIdx;\n\t\n\t\tfor ( var i=0, ien=filters.length ; i<ien ; i++ ) {\n\t\t\tvar rows = [];\n\t\n\t\t\t// Loop over each row and see if it should be included\n\t\t\tfor ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {\n\t\t\t\trowIdx = displayRows[ j ];\n\t\t\t\trow = settings.aoData[ rowIdx ];\n\t\n\t\t\t\tif ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {\n\t\t\t\t\trows.push( rowIdx );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// So the array reference doesn't break set the results into the\n\t\t\t// existing array\n\t\t\tdisplayRows.length = 0;\n\t\t\t$.merge( displayRows, rows );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Filter the table on a per-column basis\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sInput string to filter on\n\t *  @param {int} iColumn column to filter\n\t *  @param {bool} bRegex treat search string as a regular expression or not\n\t *  @param {bool} bSmart use smart filtering or not\n\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )\n\t{\n\t\tif ( searchStr === '' ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar data;\n\t\tvar out = [];\n\t\tvar display = settings.aiDisplay;\n\t\tvar rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );\n\t\n\t\tfor ( var i=0 ; i<display.length ; i++ ) {\n\t\t\tdata = settings.aoData[ display[i] ]._aFilterData[ colIdx ];\n\t\n\t\t\tif ( rpSearch.test( data ) ) {\n\t\t\t\tout.push( display[i] );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aiDisplay = out;\n\t}\n\t\n\t\n\t/**\n\t * Filter the data table based on user input and draw the table\n\t *  @param {object} settings dataTables settings object\n\t *  @param {string} input string to filter on\n\t *  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)\n\t *  @param {bool} regex treat as a regular expression or not\n\t *  @param {bool} smart perform smart filtering or not\n\t *  @param {bool} caseInsensitive Do case insenstive matching or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilter( settings, input, force, regex, smart, caseInsensitive )\n\t{\n\t\tvar rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );\n\t\tvar prevSearch = settings.oPreviousSearch.sSearch;\n\t\tvar displayMaster = settings.aiDisplayMaster;\n\t\tvar display, invalidated, i;\n\t\tvar filtered = [];\n\t\n\t\t// Need to take account of custom filtering functions - always filter\n\t\tif ( DataTable.ext.search.length !== 0 ) {\n\t\t\tforce = true;\n\t\t}\n\t\n\t\t// Check if any of the rows were invalidated\n\t\tinvalidated = _fnFilterData( settings );\n\t\n\t\t// If the input is blank - we just want the full data set\n\t\tif ( input.length <= 0 ) {\n\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t}\n\t\telse {\n\t\t\t// New search - start from the master array\n\t\t\tif ( invalidated ||\n\t\t\t\t force ||\n\t\t\t\t prevSearch.length > input.length ||\n\t\t\t\t input.indexOf(prevSearch) !== 0 ||\n\t\t\t\t settings.bSorted // On resort, the display master needs to be\n\t\t\t\t                  // re-filtered since indexes will have changed\n\t\t\t) {\n\t\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t\t}\n\t\n\t\t\t// Search the display array\n\t\t\tdisplay = settings.aiDisplay;\n\t\n\t\t\tfor ( i=0 ; i<display.length ; i++ ) {\n\t\t\t\tif ( rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {\n\t\t\t\t\tfiltered.push( display[i] );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tsettings.aiDisplay = filtered;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a regular expression object suitable for searching a table\n\t *  @param {string} sSearch string to search for\n\t *  @param {bool} bRegex treat as a regular expression or not\n\t *  @param {bool} bSmart perform smart filtering or not\n\t *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t *  @returns {RegExp} constructed object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCreateSearch( search, regex, smart, caseInsensitive )\n\t{\n\t\tsearch = regex ?\n\t\t\tsearch :\n\t\t\t_fnEscapeRegex( search );\n\t\t\n\t\tif ( smart ) {\n\t\t\t/* For smart filtering we want to allow the search to work regardless of\n\t\t\t * word order. We also want double quoted text to be preserved, so word\n\t\t\t * order is important - a la google. So this is what we want to\n\t\t\t * generate:\n\t\t\t * \n\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo three\\b)(?=.*?\\bfour\\b).*$\n\t\t\t */\n\t\t\tvar a = $.map( search.match( /\"[^\"]+\"|[^ ]+/g ) || [''], function ( word ) {\n\t\t\t\tif ( word.charAt(0) === '\"' ) {\n\t\t\t\t\tvar m = word.match( /^\"(.*)\"$/ );\n\t\t\t\t\tword = m ? m[1] : word;\n\t\t\t\t}\n\t\n\t\t\t\treturn word.replace('\"', '');\n\t\t\t} );\n\t\n\t\t\tsearch = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';\n\t\t}\n\t\n\t\treturn new RegExp( search, caseInsensitive ? 'i' : '' );\n\t}\n\t\n\t\n\t/**\n\t * Escape a string such that it can be used in a regular expression\n\t *  @param {string} sVal string to escape\n\t *  @returns {string} escaped string\n\t *  @memberof DataTable#oApi\n\t */\n\tvar _fnEscapeRegex = DataTable.util.escapeRegex;\n\t\n\tvar __filter_div = $('<div>')[0];\n\tvar __filter_div_textContent = __filter_div.textContent !== undefined;\n\t\n\t// Update the filtering data for each row if needed (by invalidation or first run)\n\tfunction _fnFilterData ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar column;\n\t\tvar i, j, ien, jen, filterData, cellData, row;\n\t\tvar fomatters = DataTable.ext.type.search;\n\t\tvar wasInvalidated = false;\n\t\n\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aFilterData ) {\n\t\t\t\tfilterData = [];\n\t\n\t\t\t\tfor ( j=0, jen=columns.length ; j<jen ; j++ ) {\n\t\t\t\t\tcolumn = columns[j];\n\t\n\t\t\t\t\tif ( column.bSearchable ) {\n\t\t\t\t\t\tcellData = _fnGetCellData( settings, i, j, 'filter' );\n\t\n\t\t\t\t\t\tif ( fomatters[ column.sType ] ) {\n\t\t\t\t\t\t\tcellData = fomatters[ column.sType ]( cellData );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Search in DataTables 1.10 is string based. In 1.11 this\n\t\t\t\t\t\t// should be altered to also allow strict type checking.\n\t\t\t\t\t\tif ( cellData === null ) {\n\t\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( typeof cellData !== 'string' && cellData.toString ) {\n\t\t\t\t\t\t\tcellData = cellData.toString();\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\tcellData = '';\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If it looks like there is an HTML entity in the string,\n\t\t\t\t\t// attempt to decode it so sorting works as expected. Note that\n\t\t\t\t\t// we could use a single line of jQuery to do this, but the DOM\n\t\t\t\t\t// method used here is much faster http://jsperf.com/html-decode\n\t\t\t\t\tif ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {\n\t\t\t\t\t\t__filter_div.innerHTML = cellData;\n\t\t\t\t\t\tcellData = __filter_div_textContent ?\n\t\t\t\t\t\t\t__filter_div.textContent :\n\t\t\t\t\t\t\t__filter_div.innerText;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif ( cellData.replace ) {\n\t\t\t\t\t\tcellData = cellData.replace(/[\\r\\n]/g, '');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfilterData.push( cellData );\n\t\t\t\t}\n\t\n\t\t\t\trow._aFilterData = filterData;\n\t\t\t\trow._sFilterRow = filterData.join('  ');\n\t\t\t\twasInvalidated = true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn wasInvalidated;\n\t}\n\t\n\t\n\t/**\n\t * Convert from the internal Hungarian notation to camelCase for external\n\t * interaction\n\t *  @param {object} obj Object to convert\n\t *  @returns {object} Inverted object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToCamel ( obj )\n\t{\n\t\treturn {\n\t\t\tsearch:          obj.sSearch,\n\t\t\tsmart:           obj.bSmart,\n\t\t\tregex:           obj.bRegex,\n\t\t\tcaseInsensitive: obj.bCaseInsensitive\n\t\t};\n\t}\n\t\n\t\n\t\n\t/**\n\t * Convert from camelCase notation to the internal Hungarian. We could use the\n\t * Hungarian convert function here, but this is cleaner\n\t *  @param {object} obj Object to convert\n\t *  @returns {object} Inverted object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToHung ( obj )\n\t{\n\t\treturn {\n\t\t\tsSearch:          obj.search,\n\t\t\tbSmart:           obj.smart,\n\t\t\tbRegex:           obj.regex,\n\t\t\tbCaseInsensitive: obj.caseInsensitive\n\t\t};\n\t}\n\t\n\t/**\n\t * Generate the node required for the info display\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {node} Information element\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlInfo ( settings )\n\t{\n\t\tvar\n\t\t\ttid = settings.sTableId,\n\t\t\tnodes = settings.aanFeatures.i,\n\t\t\tn = $('<div/>', {\n\t\t\t\t'class': settings.oClasses.sInfo,\n\t\t\t\t'id': ! nodes ? tid+'_info' : null\n\t\t\t} );\n\t\n\t\tif ( ! nodes ) {\n\t\t\t// Update display on each draw\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\"sName\": \"information\"\n\t\t\t} );\n\t\n\t\t\tn\n\t\t\t\t.attr( 'role', 'status' )\n\t\t\t\t.attr( 'aria-live', 'polite' );\n\t\n\t\t\t// Table is described by our info div\n\t\t\t$(settings.nTable).attr( 'aria-describedby', tid+'_info' );\n\t\t}\n\t\n\t\treturn n[0];\n\t}\n\t\n\t\n\t/**\n\t * Update the information elements in the display\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnUpdateInfo ( settings )\n\t{\n\t\t/* Show information about the table */\n\t\tvar nodes = settings.aanFeatures.i;\n\t\tif ( nodes.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\tlang  = settings.oLanguage,\n\t\t\tstart = settings._iDisplayStart+1,\n\t\t\tend   = settings.fnDisplayEnd(),\n\t\t\tmax   = settings.fnRecordsTotal(),\n\t\t\ttotal = settings.fnRecordsDisplay(),\n\t\t\tout   = total ?\n\t\t\t\tlang.sInfo :\n\t\t\t\tlang.sInfoEmpty;\n\t\n\t\tif ( total !== max ) {\n\t\t\t/* Record set after filtering */\n\t\t\tout += ' ' + lang.sInfoFiltered;\n\t\t}\n\t\n\t\t// Convert the macros\n\t\tout += lang.sInfoPostFix;\n\t\tout = _fnInfoMacros( settings, out );\n\t\n\t\tvar callback = lang.fnInfoCallback;\n\t\tif ( callback !== null ) {\n\t\t\tout = callback.call( settings.oInstance,\n\t\t\t\tsettings, start, end, max, total, out\n\t\t\t);\n\t\t}\n\t\n\t\t$(nodes).html( out );\n\t}\n\t\n\t\n\tfunction _fnInfoMacros ( settings, str )\n\t{\n\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t// internally\n\t\tvar\n\t\t\tformatter  = settings.fnFormatNumber,\n\t\t\tstart      = settings._iDisplayStart+1,\n\t\t\tlen        = settings._iDisplayLength,\n\t\t\tvis        = settings.fnRecordsDisplay(),\n\t\t\tall        = len === -1;\n\t\n\t\treturn str.\n\t\t\treplace(/_START_/g, formatter.call( settings, start ) ).\n\t\t\treplace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).\n\t\t\treplace(/_MAX_/g,   formatter.call( settings, settings.fnRecordsTotal() ) ).\n\t\t\treplace(/_TOTAL_/g, formatter.call( settings, vis ) ).\n\t\t\treplace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).\n\t\t\treplace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );\n\t}\n\t\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnInitialise ( settings )\n\t{\n\t\tvar i, iLen, iAjaxStart=settings.iInitDisplayStart;\n\t\tvar columns = settings.aoColumns, column;\n\t\tvar features = settings.oFeatures;\n\t\tvar deferLoading = settings.bDeferLoading; // value modified by the draw\n\t\n\t\t/* Ensure that the table data is fully initialised */\n\t\tif ( ! settings.bInitialised ) {\n\t\t\tsetTimeout( function(){ _fnInitialise( settings ); }, 200 );\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Show the display HTML options */\n\t\t_fnAddOptionsHtml( settings );\n\t\n\t\t/* Build and draw the header / footer for the table */\n\t\t_fnBuildHead( settings );\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t/* Okay to show that something is going on now */\n\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t/* Calculate sizes for columns */\n\t\tif ( features.bAutoWidth ) {\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=columns.length ; i<iLen ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\n\t\t\tif ( column.sWidth ) {\n\t\t\t\tcolumn.nTh.style.width = _fnStringToCss( column.sWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'preInit', [settings] );\n\t\n\t\t// If there is default sorting required - let's do it. The sort function\n\t\t// will do the drawing for us. Otherwise we draw the table regardless of the\n\t\t// Ajax source - this allows the table to look initialised for Ajax sourcing\n\t\t// data (show 'loading' message possibly)\n\t\t_fnReDraw( settings );\n\t\n\t\t// Server-side processing init complete is done by _fnAjaxUpdateDraw\n\t\tvar dataSrc = _fnDataSource( settings );\n\t\tif ( dataSrc != 'ssp' || deferLoading ) {\n\t\t\t// if there is an ajax source load the data\n\t\t\tif ( dataSrc == 'ajax' ) {\n\t\t\t\t_fnBuildAjax( settings, [], function(json) {\n\t\t\t\t\tvar aData = _fnAjaxDataSrc( settings, json );\n\t\n\t\t\t\t\t// Got the data - add it to the table\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( settings, aData[i] );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Reset the init display for cookie saving. We've already done\n\t\t\t\t\t// a filter, and therefore cleared it before. So we need to make\n\t\t\t\t\t// it appear 'fresh'\n\t\t\t\t\tsettings.iInitDisplayStart = iAjaxStart;\n\t\n\t\t\t\t\t_fnReDraw( settings );\n\t\n\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t_fnInitComplete( settings, json );\n\t\t\t\t}, settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t_fnInitComplete( settings );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t *    with client-side processing (optional)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnInitComplete ( settings, json )\n\t{\n\t\tsettings._bInitComplete = true;\n\t\n\t\t// When data was added after the initialisation (data or Ajax) we need to\n\t\t// calculate the column sizing\n\t\tif ( json || settings.oInit.aaData ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'plugin-init', [settings, json] );\n\t\t_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );\n\t}\n\t\n\t\n\tfunction _fnLengthChange ( settings, val )\n\t{\n\t\tvar len = parseInt( val, 10 );\n\t\tsettings._iDisplayLength = len;\n\t\n\t\t_fnLengthOverflow( settings );\n\t\n\t\t// Fire length change event\n\t\t_fnCallbackFire( settings, null, 'length', [settings, len] );\n\t}\n\t\n\t\n\t/**\n\t * Generate the node required for user display length changing\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Display length feature node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlLength ( settings )\n\t{\n\t\tvar\n\t\t\tclasses  = settings.oClasses,\n\t\t\ttableId  = settings.sTableId,\n\t\t\tmenu     = settings.aLengthMenu,\n\t\t\td2       = $.isArray( menu[0] ),\n\t\t\tlengths  = d2 ? menu[0] : menu,\n\t\t\tlanguage = d2 ? menu[1] : menu;\n\t\n\t\tvar select = $('<select/>', {\n\t\t\t'name':          tableId+'_length',\n\t\t\t'aria-controls': tableId,\n\t\t\t'class':         classes.sLengthSelect\n\t\t} );\n\t\n\t\tfor ( var i=0, ien=lengths.length ; i<ien ; i++ ) {\n\t\t\tselect[0][ i ] = new Option(\n\t\t\t\ttypeof language[i] === 'number' ?\n\t\t\t\t\tsettings.fnFormatNumber( language[i] ) :\n\t\t\t\t\tlanguage[i],\n\t\t\t\tlengths[i]\n\t\t\t);\n\t\t}\n\t\n\t\tvar div = $('<div><label/></div>').addClass( classes.sLength );\n\t\tif ( ! settings.aanFeatures.l ) {\n\t\t\tdiv[0].id = tableId+'_length';\n\t\t}\n\t\n\t\tdiv.children().append(\n\t\t\tsettings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )\n\t\t);\n\t\n\t\t// Can't use `select` variable as user might provide their own and the\n\t\t// reference is broken by the use of outerHTML\n\t\t$('select', div)\n\t\t\t.val( settings._iDisplayLength )\n\t\t\t.on( 'change.DT', function(e) {\n\t\t\t\t_fnLengthChange( settings, $(this).val() );\n\t\t\t\t_fnDraw( settings );\n\t\t\t} );\n\t\n\t\t// Update node value whenever anything changes the table's length\n\t\t$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t$('select', div).val( len );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn div[0];\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Note that most of the paging logic is done in\n\t * DataTable.ext.pager\n\t */\n\t\n\t/**\n\t * Generate the node required for default pagination\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {node} Pagination feature node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlPaginate ( settings )\n\t{\n\t\tvar\n\t\t\ttype   = settings.sPaginationType,\n\t\t\tplugin = DataTable.ext.pager[ type ],\n\t\t\tmodern = typeof plugin === 'function',\n\t\t\tredraw = function( settings ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t},\n\t\t\tnode = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],\n\t\t\tfeatures = settings.aanFeatures;\n\t\n\t\tif ( ! modern ) {\n\t\t\tplugin.fnInit( settings, node, redraw );\n\t\t}\n\t\n\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\tif ( ! features.p )\n\t\t{\n\t\t\tnode.id = settings.sTableId+'_paginate';\n\t\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": function( settings ) {\n\t\t\t\t\tif ( modern ) {\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\tstart      = settings._iDisplayStart,\n\t\t\t\t\t\t\tlen        = settings._iDisplayLength,\n\t\t\t\t\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\t\t\t\t\tall        = len === -1,\n\t\t\t\t\t\t\tpage = all ? 0 : Math.ceil( start / len ),\n\t\t\t\t\t\t\tpages = all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\t\t\t\tbuttons = plugin(page, pages),\n\t\t\t\t\t\t\ti, ien;\n\t\n\t\t\t\t\t\tfor ( i=0, ien=features.p.length ; i<ien ; i++ ) {\n\t\t\t\t\t\t\t_fnRenderer( settings, 'pageButton' )(\n\t\t\t\t\t\t\t\tsettings, features.p[i], i, buttons, page, pages\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\tplugin.fnUpdate( settings, redraw );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"sName\": \"pagination\"\n\t\t\t} );\n\t\t}\n\t\n\t\treturn node;\n\t}\n\t\n\t\n\t/**\n\t * Alter the display settings to change the page\n\t *  @param {object} settings DataTables settings object\n\t *  @param {string|int} action Paging action to take: \"first\", \"previous\",\n\t *    \"next\" or \"last\" or page number to jump to (integer)\n\t *  @param [bool] redraw Automatically draw the update or not\n\t *  @returns {bool} true page has changed, false - no change\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnPageChange ( settings, action, redraw )\n\t{\n\t\tvar\n\t\t\tstart     = settings._iDisplayStart,\n\t\t\tlen       = settings._iDisplayLength,\n\t\t\trecords   = settings.fnRecordsDisplay();\n\t\n\t\tif ( records === 0 || len === -1 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( typeof action === \"number\" )\n\t\t{\n\t\t\tstart = action * len;\n\t\n\t\t\tif ( start > records )\n\t\t\t{\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"first\" )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( action == \"previous\" )\n\t\t{\n\t\t\tstart = len >= 0 ?\n\t\t\t\tstart - len :\n\t\t\t\t0;\n\t\n\t\t\tif ( start < 0 )\n\t\t\t{\n\t\t\t  start = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"next\" )\n\t\t{\n\t\t\tif ( start + len < records )\n\t\t\t{\n\t\t\t\tstart += len;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"last\" )\n\t\t{\n\t\t\tstart = Math.floor( (records-1) / len) * len;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( settings, 0, \"Unknown paging action: \"+action, 5 );\n\t\t}\n\t\n\t\tvar changed = settings._iDisplayStart !== start;\n\t\tsettings._iDisplayStart = start;\n\t\n\t\tif ( changed ) {\n\t\t\t_fnCallbackFire( settings, null, 'page', [settings] );\n\t\n\t\t\tif ( redraw ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\treturn changed;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Generate the node required for the processing node\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Processing element\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlProcessing ( settings )\n\t{\n\t\treturn $('<div/>', {\n\t\t\t\t'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,\n\t\t\t\t'class': settings.oClasses.sProcessing\n\t\t\t} )\n\t\t\t.html( settings.oLanguage.sProcessing )\n\t\t\t.insertBefore( settings.nTable )[0];\n\t}\n\t\n\t\n\t/**\n\t * Display or hide the processing indicator\n\t *  @param {object} settings dataTables settings object\n\t *  @param {bool} show Show the processing indicator (true) or not (false)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnProcessingDisplay ( settings, show )\n\t{\n\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'processing', [settings, show] );\n\t}\n\t\n\t/**\n\t * Add any control elements for the table - specifically scrolling\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Node to add to the DOM\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlTable ( settings )\n\t{\n\t\tvar table = $(settings.nTable);\n\t\n\t\t// Add the ARIA grid role to the table\n\t\ttable.attr( 'role', 'grid' );\n\t\n\t\t// Scrolling from here on in\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX === '' && scroll.sY === '' ) {\n\t\t\treturn settings.nTable;\n\t\t}\n\t\n\t\tvar scrollX = scroll.sX;\n\t\tvar scrollY = scroll.sY;\n\t\tvar classes = settings.oClasses;\n\t\tvar caption = table.children('caption');\n\t\tvar captionSide = caption.length ? caption[0]._captionSide : null;\n\t\tvar headerClone = $( table[0].cloneNode(false) );\n\t\tvar footerClone = $( table[0].cloneNode(false) );\n\t\tvar footer = table.children('tfoot');\n\t\tvar _div = '<div/>';\n\t\tvar size = function ( s ) {\n\t\t\treturn !s ? null : _fnStringToCss( s );\n\t\t};\n\t\n\t\tif ( ! footer.length ) {\n\t\t\tfooter = null;\n\t\t}\n\t\n\t\t/*\n\t\t * The HTML structure that we want to generate in this function is:\n\t\t *  div - scroller\n\t\t *    div - scroll head\n\t\t *      div - scroll head inner\n\t\t *        table - scroll head table\n\t\t *          thead - thead\n\t\t *    div - scroll body\n\t\t *      table - table (master table)\n\t\t *        thead - thead clone for sizing\n\t\t *        tbody - tbody\n\t\t *    div - scroll foot\n\t\t *      div - scroll foot inner\n\t\t *        table - scroll foot table\n\t\t *          tfoot - tfoot\n\t\t */\n\t\tvar scroller = $( _div, { 'class': classes.sScrollWrapper } )\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollHead } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollHeadInner } )\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t'box-sizing': 'content-box',\n\t\t\t\t\t\t\t\twidth: scroll.sXInner || '100%'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\theaderClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'top' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('thead')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollBody } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\twidth: size( scrollX )\n\t\t\t\t\t} )\n\t\t\t\t\t.append( table )\n\t\t\t);\n\t\n\t\tif ( footer ) {\n\t\t\tscroller.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollFoot } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollFootInner } )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\tfooterClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'bottom' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('tfoot')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\n\t\tvar children = scroller.children();\n\t\tvar scrollHead = children[0];\n\t\tvar scrollBody = children[1];\n\t\tvar scrollFoot = footer ? children[2] : null;\n\t\n\t\t// When the body is scrolled, then we also want to scroll the headers\n\t\tif ( scrollX ) {\n\t\t\t$(scrollBody).on( 'scroll.DT', function (e) {\n\t\t\t\tvar scrollLeft = this.scrollLeft;\n\t\n\t\t\t\tscrollHead.scrollLeft = scrollLeft;\n\t\n\t\t\t\tif ( footer ) {\n\t\t\t\t\tscrollFoot.scrollLeft = scrollLeft;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\n\t\t$(scrollBody).css(\n\t\t\tscrollY && scroll.bCollapse ? 'max-height' : 'height', \n\t\t\tscrollY\n\t\t);\n\t\n\t\tsettings.nScrollHead = scrollHead;\n\t\tsettings.nScrollBody = scrollBody;\n\t\tsettings.nScrollFoot = scrollFoot;\n\t\n\t\t// On redraw - align columns\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\"sName\": \"scrolling\"\n\t\t} );\n\t\n\t\treturn scroller[0];\n\t}\n\t\n\t\n\t\n\t/**\n\t * Update the header, footer and body tables for resizing - i.e. column\n\t * alignment.\n\t *\n\t * Welcome to the most horrible function DataTables. The process that this\n\t * function follows is basically:\n\t *   1. Re-create the table inside the scrolling div\n\t *   2. Take live measurements from the DOM\n\t *   3. Apply the measurements to align the columns\n\t *   4. Clean up\n\t *\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollDraw ( settings )\n\t{\n\t\t// Given that this is such a monster function, a lot of variables are use\n\t\t// to try and keep the minimised size as small as possible\n\t\tvar\n\t\t\tscroll         = settings.oScroll,\n\t\t\tscrollX        = scroll.sX,\n\t\t\tscrollXInner   = scroll.sXInner,\n\t\t\tscrollY        = scroll.sY,\n\t\t\tbarWidth       = scroll.iBarWidth,\n\t\t\tdivHeader      = $(settings.nScrollHead),\n\t\t\tdivHeaderStyle = divHeader[0].style,\n\t\t\tdivHeaderInner = divHeader.children('div'),\n\t\t\tdivHeaderInnerStyle = divHeaderInner[0].style,\n\t\t\tdivHeaderTable = divHeaderInner.children('table'),\n\t\t\tdivBodyEl      = settings.nScrollBody,\n\t\t\tdivBody        = $(divBodyEl),\n\t\t\tdivBodyStyle   = divBodyEl.style,\n\t\t\tdivFooter      = $(settings.nScrollFoot),\n\t\t\tdivFooterInner = divFooter.children('div'),\n\t\t\tdivFooterTable = divFooterInner.children('table'),\n\t\t\theader         = $(settings.nTHead),\n\t\t\ttable          = $(settings.nTable),\n\t\t\ttableEl        = table[0],\n\t\t\ttableStyle     = tableEl.style,\n\t\t\tfooter         = settings.nTFoot ? $(settings.nTFoot) : null,\n\t\t\tbrowser        = settings.oBrowser,\n\t\t\tie67           = browser.bScrollOversize,\n\t\t\tdtHeaderCells  = _pluck( settings.aoColumns, 'nTh' ),\n\t\t\theaderTrgEls, footerTrgEls,\n\t\t\theaderSrcEls, footerSrcEls,\n\t\t\theaderCopy, footerCopy,\n\t\t\theaderWidths=[], footerWidths=[],\n\t\t\theaderContent=[], footerContent=[],\n\t\t\tidx, correction, sanityWidth,\n\t\t\tzeroOut = function(nSizer) {\n\t\t\t\tvar style = nSizer.style;\n\t\t\t\tstyle.paddingTop = \"0\";\n\t\t\t\tstyle.paddingBottom = \"0\";\n\t\t\t\tstyle.borderTopWidth = \"0\";\n\t\t\t\tstyle.borderBottomWidth = \"0\";\n\t\t\t\tstyle.height = 0;\n\t\t\t};\n\t\n\t\t// If the scrollbar visibility has changed from the last draw, we need to\n\t\t// adjust the column sizes as the table width will have changed to account\n\t\t// for the scrollbar\n\t\tvar scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;\n\t\t\n\t\tif ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t\treturn; // adjust column sizing will call this function again\n\t\t}\n\t\telse {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t}\n\t\n\t\t/*\n\t\t * 1. Re-create the table inside the scrolling div\n\t\t */\n\t\n\t\t// Remove the old minimised thead and tfoot elements in the inner table\n\t\ttable.children('thead, tfoot').remove();\n\t\n\t\tif ( footer ) {\n\t\t\tfooterCopy = footer.clone().prependTo( table );\n\t\t\tfooterTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized\n\t\t\tfooterSrcEls = footerCopy.find('tr');\n\t\t}\n\t\n\t\t// Clone the current header and footer elements and then place it into the inner table\n\t\theaderCopy = header.clone().prependTo( table );\n\t\theaderTrgEls = header.find('tr'); // original header is in its own table\n\t\theaderSrcEls = headerCopy.find('tr');\n\t\theaderCopy.find('th, td').removeAttr('tabindex');\n\t\n\t\n\t\t/*\n\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t */\n\t\n\t\t// Remove old sizing and apply the calculated column widths\n\t\t// Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t// calculated sizes to this header\n\t\tif ( ! scrollX )\n\t\t{\n\t\t\tdivBodyStyle.width = '100%';\n\t\t\tdivHeader[0].style.width = '100%';\n\t\t}\n\t\n\t\t$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {\n\t\t\tidx = _fnVisibleToColumnIndex( settings, i );\n\t\t\tel.style.width = settings.aoColumns[idx].sWidth;\n\t\t} );\n\t\n\t\tif ( footer ) {\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Size the table as a whole\n\t\tsanityWidth = table.outerWidth();\n\t\tif ( scrollX === \"\" ) {\n\t\t\t// No x scrolling\n\t\t\ttableStyle.width = \"100%\";\n\t\n\t\t\t// IE7 will make the width of the table when 100% include the scrollbar\n\t\t\t// - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t// into account.\n\t\t\tif ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);\n\t\t\t}\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\telse if ( scrollXInner !== \"\" ) {\n\t\t\t// legacy x scroll inner has been given - use it\n\t\t\ttableStyle.width = _fnStringToCss(scrollXInner);\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\n\t\t// Hidden header should have zero height, so remove padding and borders. Then\n\t\t// set the width based on the real headers\n\t\n\t\t// Apply all styles in one pass\n\t\t_fnApplyToChildren( zeroOut, headerSrcEls );\n\t\n\t\t// Read all widths in next pass\n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\theaderContent.push( nSizer.innerHTML );\n\t\t\theaderWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t}, headerSrcEls );\n\t\n\t\t// Apply all widths in final pass\n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t// Only apply widths to the DataTables detected header cells - this\n\t\t\t// prevents complex headers from having contradictory sizes applied\n\t\t\tif ( $.inArray( nToSize, dtHeaderCells ) !== -1 ) {\n\t\t\t\tnToSize.style.width = headerWidths[i];\n\t\t\t}\n\t\t}, headerTrgEls );\n\t\n\t\t$(headerSrcEls).height(0);\n\t\n\t\t/* Same again with the footer if we have one */\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( zeroOut, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\tfooterContent.push( nSizer.innerHTML );\n\t\t\t\tfooterWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t\t}, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = footerWidths[i];\n\t\t\t}, footerTrgEls );\n\t\n\t\t\t$(footerSrcEls).height(0);\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 3. Apply the measurements\n\t\t */\n\t\n\t\t// \"Hide\" the header and footer that we used for the sizing. We need to keep\n\t\t// the content of the cell so that the width applied to the header and body\n\t\t// both match, but we want to hide it completely. We want to also fix their\n\t\t// width to what they currently are\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\" style=\"height:0;overflow:hidden;\">'+headerContent[i]+'</div>';\n\t\t\tnSizer.style.width = headerWidths[i];\n\t\t}, headerSrcEls );\n\t\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\" style=\"height:0;overflow:hidden;\">'+footerContent[i]+'</div>';\n\t\t\t\tnSizer.style.width = footerWidths[i];\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t// misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\tif ( table.outerWidth() < sanityWidth )\n\t\t{\n\t\t\t// The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\tcorrection = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\tsanityWidth+barWidth :\n\t\t\t\t\tsanityWidth;\n\t\n\t\t\t// IE6/7 are a law unto themselves...\n\t\t\tif ( ie67 && (divBodyEl.scrollHeight >\n\t\t\t\tdivBodyEl.offsetHeight || divBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( correction-barWidth );\n\t\t\t}\n\t\n\t\t\t// And give the user a warning that we've stopped the table getting too small\n\t\t\tif ( scrollX === \"\" || scrollXInner !== \"\" ) {\n\t\t\t\t_fnLog( settings, 1, 'Possible column misalignment', 6 );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcorrection = '100%';\n\t\t}\n\t\n\t\t// Apply to the container elements\n\t\tdivBodyStyle.width = _fnStringToCss( correction );\n\t\tdivHeaderStyle.width = _fnStringToCss( correction );\n\t\n\t\tif ( footer ) {\n\t\t\tsettings.nScrollFoot.style.width = _fnStringToCss( correction );\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 4. Clean up\n\t\t */\n\t\tif ( ! scrollY ) {\n\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t */\n\t\t\tif ( ie67 ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Finally set the width's of the header and footer tables */\n\t\tvar iOuterWidth = table.outerWidth();\n\t\tdivHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );\n\t\n\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\tvar bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == \"scroll\";\n\t\tvar padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );\n\t\tdivHeaderInnerStyle[ padding ] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\n\t\tif ( footer ) {\n\t\t\tdivFooterTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style[padding] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\t}\n\t\n\t\t// Correct DOM ordering for colgroup - comes before the thead\n\t\ttable.children('colgroup').insertBefore( table.children('thead') );\n\t\n\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\tdivBody.scroll();\n\t\n\t\t// If sorting or filtering has occurred, jump the scrolling back to the top\n\t\t// only if we aren't holding the position\n\t\tif ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {\n\t\t\tdivBodyEl.scrollTop = 0;\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Apply a given function to the display child nodes of an element array (typically\n\t * TD children of TR rows\n\t *  @param {function} fn Method to apply to the objects\n\t *  @param array {nodes} an1 List of elements to look through for display children\n\t *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t{\n\t\tvar index=0, i=0, iLen=an1.length;\n\t\tvar nNode1, nNode2;\n\t\n\t\twhile ( i < iLen ) {\n\t\t\tnNode1 = an1[i].firstChild;\n\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\n\t\t\twhile ( nNode1 ) {\n\t\t\t\tif ( nNode1.nodeType === 1 ) {\n\t\t\t\t\tif ( an2 ) {\n\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\n\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t}\n\t}\n\t\n\t\n\t\n\tvar __re_html_remove = /<.*?>/g;\n\t\n\t\n\t/**\n\t * Calculate the width of columns for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCalculateColumnWidths ( oSettings )\n\t{\n\t\tvar\n\t\t\ttable = oSettings.nTable,\n\t\t\tcolumns = oSettings.aoColumns,\n\t\t\tscroll = oSettings.oScroll,\n\t\t\tscrollY = scroll.sY,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tcolumnCount = columns.length,\n\t\t\tvisibleColumns = _fnGetColumns( oSettings, 'bVisible' ),\n\t\t\theaderCells = $('th', oSettings.nTHead),\n\t\t\ttableWidthAttr = table.getAttribute('width'), // from DOM element\n\t\t\ttableContainer = table.parentNode,\n\t\t\tuserInputs = false,\n\t\t\ti, column, columnIdx, width, outerWidth,\n\t\t\tbrowser = oSettings.oBrowser,\n\t\t\tie67 = browser.bScrollOversize;\n\t\n\t\tvar styleWidth = table.style.width;\n\t\tif ( styleWidth && styleWidth.indexOf('%') !== -1 ) {\n\t\t\ttableWidthAttr = styleWidth;\n\t\t}\n\t\n\t\t/* Convert any user input sizes into pixel sizes */\n\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\tif ( column.sWidth !== null ) {\n\t\t\t\tcolumn.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );\n\t\n\t\t\t\tuserInputs = true;\n\t\t\t}\n\t\t}\n\t\n\t\t/* If the number of columns in the DOM equals the number that we have to\n\t\t * process in DataTables, then we can use the offsets that are created by\n\t\t * the web- browser. No custom sizes can be set in order for this to happen,\n\t\t * nor scrolling used\n\t\t */\n\t\tif ( ie67 || ! userInputs && ! scrollX && ! scrollY &&\n\t\t     columnCount == _fnVisbleColumns( oSettings ) &&\n\t\t     columnCount == headerCells.length\n\t\t) {\n\t\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\t\tvar colIdx = _fnVisibleToColumnIndex( oSettings, i );\n\t\n\t\t\t\tif ( colIdx !== null ) {\n\t\t\t\t\tcolumns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Otherwise construct a single row, worst case, table with the widest\n\t\t\t// node in the data, assign any user defined widths, then insert it into\n\t\t\t// the DOM and allow the browser to do all the hard work of calculating\n\t\t\t// table widths\n\t\t\tvar tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table\n\t\t\t\t.css( 'visibility', 'hidden' )\n\t\t\t\t.removeAttr( 'id' );\n\t\n\t\t\t// Clean up the table body\n\t\t\ttmpTable.find('tbody tr').remove();\n\t\t\tvar tr = $('<tr/>').appendTo( tmpTable.find('tbody') );\n\t\n\t\t\t// Clone the table header and footer - we can't use the header / footer\n\t\t\t// from the cloned table, since if scrolling is active, the table's\n\t\t\t// real header and footer are contained in different table tags\n\t\t\ttmpTable.find('thead, tfoot').remove();\n\t\t\ttmpTable\n\t\t\t\t.append( $(oSettings.nTHead).clone() )\n\t\t\t\t.append( $(oSettings.nTFoot).clone() );\n\t\n\t\t\t// Remove any assigned widths from the footer (from scrolling)\n\t\t\ttmpTable.find('tfoot th, tfoot td').css('width', '');\n\t\n\t\t\t// Apply custom sizing to the cloned header\n\t\t\theaderCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );\n\t\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\t\theaderCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?\n\t\t\t\t\t_fnStringToCss( column.sWidthOrig ) :\n\t\t\t\t\t'';\n\t\n\t\t\t\t// For scrollX we need to force the column width otherwise the\n\t\t\t\t// browser will collapse it. If this width is smaller than the\n\t\t\t\t// width the column requires, then it will have no effect\n\t\t\t\tif ( column.sWidthOrig && scrollX ) {\n\t\t\t\t\t$( headerCells[i] ).append( $('<div/>').css( {\n\t\t\t\t\t\twidth: column.sWidthOrig,\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\theight: 1\n\t\t\t\t\t} ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Find the widest cell for each column and put it into the table\n\t\t\tif ( oSettings.aoData.length ) {\n\t\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\t\tcolumnIdx = visibleColumns[i];\n\t\t\t\t\tcolumn = columns[ columnIdx ];\n\t\n\t\t\t\t\t$( _fnGetWidestNode( oSettings, columnIdx ) )\n\t\t\t\t\t\t.clone( false )\n\t\t\t\t\t\t.append( column.sContentPadding )\n\t\t\t\t\t\t.appendTo( tr );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Tidy the temporary table - remove name attributes so there aren't\n\t\t\t// duplicated in the dom (radio elements for example)\n\t\t\t$('[name]', tmpTable).removeAttr('name');\n\t\n\t\t\t// Table has been built, attach to the document so we can work with it.\n\t\t\t// A holding element is used, positioned at the top of the container\n\t\t\t// with minimal height, so it has no effect on if the container scrolls\n\t\t\t// or not. Otherwise it might trigger scrolling when it actually isn't\n\t\t\t// needed\n\t\t\tvar holder = $('<div/>').css( scrollX || scrollY ?\n\t\t\t\t\t{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t\t} :\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t\t.append( tmpTable )\n\t\t\t\t.appendTo( tableContainer );\n\t\n\t\t\t// When scrolling (X or Y) we want to set the width of the table as \n\t\t\t// appropriate. However, when not scrolling leave the table width as it\n\t\t\t// is. This results in slightly different, but I think correct behaviour\n\t\t\tif ( scrollX && scrollXInner ) {\n\t\t\t\ttmpTable.width( scrollXInner );\n\t\t\t}\n\t\t\telse if ( scrollX ) {\n\t\t\t\ttmpTable.css( 'width', 'auto' );\n\t\t\t\ttmpTable.removeAttr('width');\n\t\n\t\t\t\t// If there is no width attribute or style, then allow the table to\n\t\t\t\t// collapse\n\t\t\t\tif ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {\n\t\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( scrollY ) {\n\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t}\n\t\t\telse if ( tableWidthAttr ) {\n\t\t\t\ttmpTable.width( tableWidthAttr );\n\t\t\t}\n\t\n\t\t\t// Get the width of each column in the constructed table - we need to\n\t\t\t// know the inner width (so it can be assigned to the other table's\n\t\t\t// cells) and the outer width so we can calculate the full width of the\n\t\t\t// table. This is safe since DataTables requires a unique cell for each\n\t\t\t// column, but if ever a header can span multiple columns, this will\n\t\t\t// need to be modified.\n\t\t\tvar total = 0;\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tvar cell = $(headerCells[i]);\n\t\t\t\tvar border = cell.outerWidth() - cell.width();\n\t\n\t\t\t\t// Use getBounding... where possible (not IE8-) because it can give\n\t\t\t\t// sub-pixel accuracy, which we then want to round up!\n\t\t\t\tvar bounding = browser.bBounding ?\n\t\t\t\t\tMath.ceil( headerCells[i].getBoundingClientRect().width ) :\n\t\t\t\t\tcell.outerWidth();\n\t\n\t\t\t\t// Total is tracked to remove any sub-pixel errors as the outerWidth\n\t\t\t\t// of the table might not equal the total given here (IE!).\n\t\t\t\ttotal += bounding;\n\t\n\t\t\t\t// Width for each column to use\n\t\t\t\tcolumns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding - border );\n\t\t\t}\n\t\n\t\t\ttable.style.width = _fnStringToCss( total );\n\t\n\t\t\t// Finished with the table - ditch it\n\t\t\tholder.remove();\n\t\t}\n\t\n\t\t// If there is a width attr, we want to attach an event listener which\n\t\t// allows the table sizing to automatically adjust when the window is\n\t\t// resized. Use the width attr rather than CSS, since we can't know if the\n\t\t// CSS is a relative value or absolute - DOM read is always px.\n\t\tif ( tableWidthAttr ) {\n\t\t\ttable.style.width = _fnStringToCss( tableWidthAttr );\n\t\t}\n\t\n\t\tif ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {\n\t\t\tvar bindResize = function () {\n\t\t\t\t$(window).on('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {\n\t\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\t} ) );\n\t\t\t};\n\t\n\t\t\t// IE6/7 will crash if we bind a resize event handler on page load.\n\t\t\t// To be removed in 1.11 which drops IE6/7 support\n\t\t\tif ( ie67 ) {\n\t\t\t\tsetTimeout( bindResize, 1000 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbindResize();\n\t\t\t}\n\t\n\t\t\toSettings._reszEvt = true;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Throttle the calls to a function. Arguments and context are maintained for\n\t * the throttled function\n\t *  @param {function} fn Function to be called\n\t *  @param {int} [freq=200] call frequency in mS\n\t *  @returns {function} wrapped function\n\t *  @memberof DataTable#oApi\n\t */\n\tvar _fnThrottle = DataTable.util.throttle;\n\t\n\t\n\t/**\n\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t *  @param {string} width width to be converted\n\t *  @param {node} parent parent to get the with for (required for relative widths) - optional\n\t *  @returns {int} width in pixels\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnConvertToWidth ( width, parent )\n\t{\n\t\tif ( ! width ) {\n\t\t\treturn 0;\n\t\t}\n\t\n\t\tvar n = $('<div/>')\n\t\t\t.css( 'width', _fnStringToCss( width ) )\n\t\t\t.appendTo( parent || document.body );\n\t\n\t\tvar val = n[0].offsetWidth;\n\t\tn.remove();\n\t\n\t\treturn val;\n\t}\n\t\n\t\n\t/**\n\t * Get the widest node\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} colIdx column of interest\n\t *  @returns {node} widest table node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetWidestNode( settings, colIdx )\n\t{\n\t\tvar idx = _fnGetMaxLenString( settings, colIdx );\n\t\tif ( idx < 0 ) {\n\t\t\treturn null;\n\t\t}\n\t\n\t\tvar data = settings.aoData[ idx ];\n\t\treturn ! data.nTr ? // Might not have been created when deferred rendering\n\t\t\t$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :\n\t\t\tdata.anCells[ colIdx ];\n\t}\n\t\n\t\n\t/**\n\t * Get the maximum strlen for each data column\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} colIdx column of interest\n\t *  @returns {string} max string length for each column\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetMaxLenString( settings, colIdx )\n\t{\n\t\tvar s, max=-1, maxIdx = -1;\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\ts = _fnGetCellData( settings, i, colIdx, 'display' )+'';\n\t\t\ts = s.replace( __re_html_remove, '' );\n\t\t\ts = s.replace( /&nbsp;/g, ' ' );\n\t\n\t\t\tif ( s.length > max ) {\n\t\t\t\tmax = s.length;\n\t\t\t\tmaxIdx = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn maxIdx;\n\t}\n\t\n\t\n\t/**\n\t * Append a CSS unit (only if required) to a string\n\t *  @param {string} value to css-ify\n\t *  @returns {string} value with css unit\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnStringToCss( s )\n\t{\n\t\tif ( s === null ) {\n\t\t\treturn '0px';\n\t\t}\n\t\n\t\tif ( typeof s == 'number' ) {\n\t\t\treturn s < 0 ?\n\t\t\t\t'0px' :\n\t\t\t\ts+'px';\n\t\t}\n\t\n\t\t// Check it has a unit character already\n\t\treturn s.match(/\\d$/) ?\n\t\t\ts+'px' :\n\t\t\ts;\n\t}\n\t\n\t\n\t\n\tfunction _fnSortFlatten ( settings )\n\t{\n\t\tvar\n\t\t\ti, iLen, k, kLen,\n\t\t\taSort = [],\n\t\t\taiOrig = [],\n\t\t\taoColumns = settings.aoColumns,\n\t\t\taDataSort, iCol, sType, srcCol,\n\t\t\tfixed = settings.aaSortingFixed,\n\t\t\tfixedObj = $.isPlainObject( fixed ),\n\t\t\tnestedSort = [],\n\t\t\tadd = function ( a ) {\n\t\t\t\tif ( a.length && ! $.isArray( a[0] ) ) {\n\t\t\t\t\t// 1D array\n\t\t\t\t\tnestedSort.push( a );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// 2D array\n\t\t\t\t\t$.merge( nestedSort, a );\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t// Build the sort array, with pre-fix and post-fix options if they have been\n\t\t// specified\n\t\tif ( $.isArray( fixed ) ) {\n\t\t\tadd( fixed );\n\t\t}\n\t\n\t\tif ( fixedObj && fixed.pre ) {\n\t\t\tadd( fixed.pre );\n\t\t}\n\t\n\t\tadd( settings.aaSorting );\n\t\n\t\tif (fixedObj && fixed.post ) {\n\t\t\tadd( fixed.post );\n\t\t}\n\t\n\t\tfor ( i=0 ; i<nestedSort.length ; i++ )\n\t\t{\n\t\t\tsrcCol = nestedSort[i][0];\n\t\t\taDataSort = aoColumns[ srcCol ].aDataSort;\n\t\n\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tiCol = aDataSort[k];\n\t\t\t\tsType = aoColumns[ iCol ].sType || 'string';\n\t\n\t\t\t\tif ( nestedSort[i]._idx === undefined ) {\n\t\t\t\t\tnestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );\n\t\t\t\t}\n\t\n\t\t\t\taSort.push( {\n\t\t\t\t\tsrc:       srcCol,\n\t\t\t\t\tcol:       iCol,\n\t\t\t\t\tdir:       nestedSort[i][1],\n\t\t\t\t\tindex:     nestedSort[i]._idx,\n\t\t\t\t\ttype:      sType,\n\t\t\t\t\tformatter: DataTable.ext.type.order[ sType+\"-pre\" ]\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\treturn aSort;\n\t}\n\t\n\t/**\n\t * Change the order of the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t *  @todo This really needs split up!\n\t */\n\tfunction _fnSort ( oSettings )\n\t{\n\t\tvar\n\t\t\ti, ien, iLen, j, jLen, k, kLen,\n\t\t\tsDataType, nTh,\n\t\t\taiOrig = [],\n\t\t\toExtSort = DataTable.ext.type.order,\n\t\t\taoData = oSettings.aoData,\n\t\t\taoColumns = oSettings.aoColumns,\n\t\t\taDataSort, data, iCol, sType, oSort,\n\t\t\tformatters = 0,\n\t\t\tsortCol,\n\t\t\tdisplayMaster = oSettings.aiDisplayMaster,\n\t\t\taSort;\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo Can this be moved into a 'data-ready' handler which is called when\n\t\t//   data is going to be used in the table?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\taSort = _fnSortFlatten( oSettings );\n\t\n\t\tfor ( i=0, ien=aSort.length ; i<ien ; i++ ) {\n\t\t\tsortCol = aSort[i];\n\t\n\t\t\t// Track if we can use the fast sort algorithm\n\t\t\tif ( sortCol.formatter ) {\n\t\t\t\tformatters++;\n\t\t\t}\n\t\n\t\t\t// Load the data needed for the sort, for each cell\n\t\t\t_fnSortData( oSettings, sortCol.col );\n\t\t}\n\t\n\t\t/* No sorting required if server-side or no sorting array */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )\n\t\t{\n\t\t\t// Create a value - key array of the current row positions such that we can use their\n\t\t\t// current position during the sort, if values match, in order to perform stable sorting\n\t\t\tfor ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {\n\t\t\t\taiOrig[ displayMaster[i] ] = i;\n\t\t\t}\n\t\n\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t *  fnLocalSorting = function(a,b){\n\t\t\t *    var iTest;\n\t\t\t *    iTest = oSort['string-asc']('data11', 'data12');\n\t\t\t *      if (iTest !== 0)\n\t\t\t *        return iTest;\n\t\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t *    if (iTest !== 0)\n\t\t\t *      return iTest;\n\t\t\t *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t *  }\n\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row\n\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t *\n\t\t\t * Note - I know it seems excessive to have two sorting methods, but the first is around\n\t\t\t * 15% faster, so the second is only maintained for backwards compatibility with sorting\n\t\t\t * methods which do not have a pre-sort formatting function.\n\t\t\t */\n\t\t\tif ( formatters === aSort.length ) {\n\t\t\t\t// All sort types have formatting functions\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, test, sort,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\ttest = x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn sort.dir === 'asc' ? test : -test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Depreciated - remove in 1.11 (providing a plug-in option)\n\t\t\t\t// Not all sort types have formatting methods, so we have to call their sorting\n\t\t\t\t// methods.\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, l, test, sort, fn,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\tfn = oExtSort[ sort.type+\"-\"+sort.dir ] || oExtSort[ \"string-\"+sort.dir ];\n\t\t\t\t\t\ttest = fn( x, y );\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Tell the draw function that we have sorted the data */\n\t\toSettings.bSorted = true;\n\t}\n\t\n\t\n\tfunction _fnSortAria ( settings )\n\t{\n\t\tvar label;\n\t\tvar nextSort;\n\t\tvar columns = settings.aoColumns;\n\t\tvar aSort = _fnSortFlatten( settings );\n\t\tvar oAria = settings.oLanguage.oAria;\n\t\n\t\t// ARIA attributes - need to loop all columns, to update all (removing old\n\t\t// attributes as needed)\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar col = columns[i];\n\t\t\tvar asSorting = col.asSorting;\n\t\t\tvar sTitle = col.sTitle.replace( /<.*?>/g, \"\" );\n\t\t\tvar th = col.nTh;\n\t\n\t\t\t// IE7 is throwing an error when setting these properties with jQuery's\n\t\t\t// attr() and removeAttr() methods...\n\t\t\tth.removeAttribute('aria-sort');\n\t\n\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\tif ( col.bSortable ) {\n\t\t\t\tif ( aSort.length > 0 && aSort[0].col == i ) {\n\t\t\t\t\tth.setAttribute('aria-sort', aSort[0].dir==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\tnextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnextSort = asSorting[0];\n\t\t\t\t}\n\t\n\t\t\t\tlabel = sTitle + ( nextSort === \"asc\" ?\n\t\t\t\t\toAria.sSortAscending :\n\t\t\t\t\toAria.sSortDescending\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlabel = sTitle;\n\t\t\t}\n\t\n\t\t\tth.setAttribute('aria-label', label);\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Function to run on user sort request\n\t *  @param {object} settings dataTables settings object\n\t *  @param {node} attachTo node to attach the handler to\n\t *  @param {int} colIdx column sorting index\n\t *  @param {boolean} [append=false] Append the requested sort to the existing\n\t *    sort if true (i.e. multi-column sort)\n\t *  @param {function} [callback] callback function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortListener ( settings, colIdx, append, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\tvar sorting = settings.aaSorting;\n\t\tvar asSorting = col.asSorting;\n\t\tvar nextSortIdx;\n\t\tvar next = function ( a, overflow ) {\n\t\t\tvar idx = a._idx;\n\t\t\tif ( idx === undefined ) {\n\t\t\t\tidx = $.inArray( a[1], asSorting );\n\t\t\t}\n\t\n\t\t\treturn idx+1 < asSorting.length ?\n\t\t\t\tidx+1 :\n\t\t\t\toverflow ?\n\t\t\t\t\tnull :\n\t\t\t\t\t0;\n\t\t};\n\t\n\t\t// Convert to 2D array if needed\n\t\tif ( typeof sorting[0] === 'number' ) {\n\t\t\tsorting = settings.aaSorting = [ sorting ];\n\t\t}\n\t\n\t\t// If appending the sort then we are multi-column sorting\n\t\tif ( append && settings.oFeatures.bSortMulti ) {\n\t\t\t// Are we already doing some kind of sort on this column?\n\t\t\tvar sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );\n\t\n\t\t\tif ( sortIdx !== -1 ) {\n\t\t\t\t// Yes, modify the sort\n\t\t\t\tnextSortIdx = next( sorting[sortIdx], true );\n\t\n\t\t\t\tif ( nextSortIdx === null && sorting.length === 1 ) {\n\t\t\t\t\tnextSortIdx = 0; // can't remove sorting completely\n\t\t\t\t}\n\t\n\t\t\t\tif ( nextSortIdx === null ) {\n\t\t\t\t\tsorting.splice( sortIdx, 1 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsorting[sortIdx][1] = asSorting[ nextSortIdx ];\n\t\t\t\t\tsorting[sortIdx]._idx = nextSortIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// No sort on this column yet\n\t\t\t\tsorting.push( [ colIdx, asSorting[0], 0 ] );\n\t\t\t\tsorting[sorting.length-1]._idx = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( sorting.length && sorting[0][0] == colIdx ) {\n\t\t\t// Single column - already sorting on this column, modify the sort\n\t\t\tnextSortIdx = next( sorting[0] );\n\t\n\t\t\tsorting.length = 1;\n\t\t\tsorting[0][1] = asSorting[ nextSortIdx ];\n\t\t\tsorting[0]._idx = nextSortIdx;\n\t\t}\n\t\telse {\n\t\t\t// Single column - sort only on this column\n\t\t\tsorting.length = 0;\n\t\t\tsorting.push( [ colIdx, asSorting[0] ] );\n\t\t\tsorting[0]._idx = 0;\n\t\t}\n\t\n\t\t// Run the sort by calling a full redraw\n\t\t_fnReDraw( settings );\n\t\n\t\t// callback used for async user interaction\n\t\tif ( typeof callback == 'function' ) {\n\t\t\tcallback( settings );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Attach a sort handler (click) to a node\n\t *  @param {object} settings dataTables settings object\n\t *  @param {node} attachTo node to attach the handler to\n\t *  @param {int} colIdx column sorting index\n\t *  @param {function} [callback] callback function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortAttachListener ( settings, attachTo, colIdx, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\n\t\t_fnBindAction( attachTo, {}, function (e) {\n\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\tif ( col.bSortable === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If processing is enabled use a timeout to allow the processing\n\t\t\t// display to be shown - otherwise to it synchronously\n\t\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\n\t\t\t\t\t// In server-side processing, the draw callback will remove the\n\t\t\t\t\t// processing display\n\t\t\t\t\tif ( _fnDataSource( settings ) !== 'ssp' ) {\n\t\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t}\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Set the sorting classes on table's body, Note: it is safe to call this function\n\t * when bSort and bSortClasses are false\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortingClasses( settings )\n\t{\n\t\tvar oldSort = settings.aLastSort;\n\t\tvar sortClass = settings.oClasses.sSortColumn;\n\t\tvar sort = _fnSortFlatten( settings );\n\t\tvar features = settings.oFeatures;\n\t\tvar i, ien, colIdx;\n\t\n\t\tif ( features.bSort && features.bSortClasses ) {\n\t\t\t// Remove old sorting classes\n\t\t\tfor ( i=0, ien=oldSort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = oldSort[i].src;\n\t\n\t\t\t\t// Remove column sorting\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.removeClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\n\t\t\t// Add new column sorting\n\t\t\tfor ( i=0, ien=sort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = sort[i].src;\n\t\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.addClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aLastSort = sort;\n\t}\n\t\n\t\n\t// Get the data to sort a column, be it from cache, fresh (populating the\n\t// cache), or from a sort formatter\n\tfunction _fnSortData( settings, idx )\n\t{\n\t\t// Custom sorting function - provided by the sort data type\n\t\tvar column = settings.aoColumns[ idx ];\n\t\tvar customSort = DataTable.ext.order[ column.sSortDataType ];\n\t\tvar customData;\n\t\n\t\tif ( customSort ) {\n\t\t\tcustomData = customSort.call( settings.oInstance, settings, idx,\n\t\t\t\t_fnColumnIndexToVisible( settings, idx )\n\t\t\t);\n\t\t}\n\t\n\t\t// Use / populate cache\n\t\tvar row, cellData;\n\t\tvar formatter = DataTable.ext.type.order[ column.sType+\"-pre\" ];\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aSortData ) {\n\t\t\t\trow._aSortData = [];\n\t\t\t}\n\t\n\t\t\tif ( ! row._aSortData[idx] || customSort ) {\n\t\t\t\tcellData = customSort ?\n\t\t\t\t\tcustomData[i] : // If there was a custom sort function, use data from there\n\t\t\t\t\t_fnGetCellData( settings, i, idx, 'sort' );\n\t\n\t\t\t\trow._aSortData[ idx ] = formatter ?\n\t\t\t\t\tformatter( cellData ) :\n\t\t\t\t\tcellData;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Save the state of a table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSaveState ( settings )\n\t{\n\t\tif ( !settings.oFeatures.bStateSave || settings.bDestroying )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Store the interesting variables */\n\t\tvar state = {\n\t\t\ttime:    +new Date(),\n\t\t\tstart:   settings._iDisplayStart,\n\t\t\tlength:  settings._iDisplayLength,\n\t\t\torder:   $.extend( true, [], settings.aaSorting ),\n\t\t\tsearch:  _fnSearchToCamel( settings.oPreviousSearch ),\n\t\t\tcolumns: $.map( settings.aoColumns, function ( col, i ) {\n\t\t\t\treturn {\n\t\t\t\t\tvisible: col.bVisible,\n\t\t\t\t\tsearch: _fnSearchToCamel( settings.aoPreSearchCols[i] )\n\t\t\t\t};\n\t\t\t} )\n\t\t};\n\t\n\t\t_fnCallbackFire( settings, \"aoStateSaveParams\", 'stateSaveParams', [settings, state] );\n\t\n\t\tsettings.oSavedState = state;\n\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, state );\n\t}\n\t\n\t\n\t/**\n\t * Attempt to load a saved table state\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} oInit DataTables init object so we can override settings\n\t *  @param {function} callback Callback to execute when the state has been loaded\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLoadState ( settings, oInit, callback )\n\t{\n\t\tvar i, ien;\n\t\tvar columns = settings.aoColumns;\n\t\tvar loaded = function ( s ) {\n\t\t\tif ( ! s || ! s.time ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t\t// cancelling of loading by returning false\n\t\t\tvar abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );\n\t\t\tif ( $.inArray( false, abStateLoad ) !== -1 ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Reject old data\n\t\t\tvar duration = settings.iStateDuration;\n\t\t\tif ( duration > 0 && s.time < +new Date() - (duration*1000) ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Number of columns have changed - all bets are off, no restore of settings\n\t\t\tif ( s.columns && columns.length !== s.columns.length ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Store the saved state so it might be accessed at any time\n\t\t\tsettings.oLoadedState = $.extend( true, {}, s );\n\t\n\t\t\t// Restore key features - todo - for 1.11 this needs to be done by\n\t\t\t// subscribed events\n\t\t\tif ( s.start !== undefined ) {\n\t\t\t\tsettings._iDisplayStart    = s.start;\n\t\t\t\tsettings.iInitDisplayStart = s.start;\n\t\t\t}\n\t\t\tif ( s.length !== undefined ) {\n\t\t\t\tsettings._iDisplayLength   = s.length;\n\t\t\t}\n\t\n\t\t\t// Order\n\t\t\tif ( s.order !== undefined ) {\n\t\t\t\tsettings.aaSorting = [];\n\t\t\t\t$.each( s.order, function ( i, col ) {\n\t\t\t\t\tsettings.aaSorting.push( col[0] >= columns.length ?\n\t\t\t\t\t\t[ 0, col[1] ] :\n\t\t\t\t\t\tcol\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Search\n\t\t\tif ( s.search !== undefined ) {\n\t\t\t\t$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );\n\t\t\t}\n\t\n\t\t\t// Columns\n\t\t\t//\n\t\t\tif ( s.columns ) {\n\t\t\t\tfor ( i=0, ien=s.columns.length ; i<ien ; i++ ) {\n\t\t\t\t\tvar col = s.columns[i];\n\t\n\t\t\t\t\t// Visibility\n\t\t\t\t\tif ( col.visible !== undefined ) {\n\t\t\t\t\t\tcolumns[i].bVisible = col.visible;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Search\n\t\t\t\t\tif ( col.search !== undefined ) {\n\t\t\t\t\t\t$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );\n\t\t\tcallback();\n\t\t}\n\t\n\t\tif ( ! settings.oFeatures.bStateSave ) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );\n\t\n\t\tif ( state !== undefined ) {\n\t\t\tloaded( state );\n\t\t}\n\t\t// otherwise, wait for the loaded callback to be executed\n\t}\n\t\n\t\n\t/**\n\t * Return the settings object for a particular table\n\t *  @param {node} table table we are using as a dataTable\n\t *  @returns {object} Settings object - or null if not found\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSettingsFromNode ( table )\n\t{\n\t\tvar settings = DataTable.settings;\n\t\tvar idx = $.inArray( table, _pluck( settings, 'nTable' ) );\n\t\n\t\treturn idx !== -1 ?\n\t\t\tsettings[ idx ] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Log an error message\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} level log error messages, or display them to the user\n\t *  @param {string} msg error message\n\t *  @param {int} tn Technical note id to get more information about the error.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLog( settings, level, msg, tn )\n\t{\n\t\tmsg = 'DataTables warning: '+\n\t\t\t(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;\n\t\n\t\tif ( tn ) {\n\t\t\tmsg += '. For more information about this error, please see '+\n\t\t\t'http://datatables.net/tn/'+tn;\n\t\t}\n\t\n\t\tif ( ! level  ) {\n\t\t\t// Backwards compatibility pre 1.10\n\t\t\tvar ext = DataTable.ext;\n\t\t\tvar type = ext.sErrMode || ext.errMode;\n\t\n\t\t\tif ( settings ) {\n\t\t\t\t_fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );\n\t\t\t}\n\t\n\t\t\tif ( type == 'alert' ) {\n\t\t\t\talert( msg );\n\t\t\t}\n\t\t\telse if ( type == 'throw' ) {\n\t\t\t\tthrow new Error(msg);\n\t\t\t}\n\t\t\telse if ( typeof type == 'function' ) {\n\t\t\t\ttype( settings, tn, msg );\n\t\t\t}\n\t\t}\n\t\telse if ( window.console && console.log ) {\n\t\t\tconsole.log( msg );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * See if a property is defined on one object, if so assign it to the other object\n\t *  @param {object} ret target object\n\t *  @param {object} src source object\n\t *  @param {string} name property\n\t *  @param {string} [mappedName] name to map too - optional, name used if not given\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnMap( ret, src, name, mappedName )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\t$.each( name, function (i, val) {\n\t\t\t\tif ( $.isArray( val ) ) {\n\t\t\t\t\t_fnMap( ret, src, val[0], val[1] );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t_fnMap( ret, src, val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( mappedName === undefined ) {\n\t\t\tmappedName = name;\n\t\t}\n\t\n\t\tif ( src[name] !== undefined ) {\n\t\t\tret[mappedName] = src[name];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and\n\t * shallow copy arrays. The reason we need to do this, is that we don't want to\n\t * deep copy array init values (such as aaSorting) since the dev wouldn't be\n\t * able to override them, but we do want to deep copy arrays.\n\t *  @param {object} out Object to extend\n\t *  @param {object} extender Object from which the properties will be applied to\n\t *      out\n\t *  @param {boolean} breakRefs If true, then arrays will be sliced to take an\n\t *      independent copy with the exception of the `data` or `aaData` parameters\n\t *      if they are present. This is so you can pass in a collection to\n\t *      DataTables and have that used as your data source without breaking the\n\t *      references\n\t *  @returns {object} out Reference, just for convenience - out === the return.\n\t *  @memberof DataTable#oApi\n\t *  @todo This doesn't take account of arrays inside the deep copied objects.\n\t */\n\tfunction _fnExtend( out, extender, breakRefs )\n\t{\n\t\tvar val;\n\t\n\t\tfor ( var prop in extender ) {\n\t\t\tif ( extender.hasOwnProperty(prop) ) {\n\t\t\t\tval = extender[prop];\n\t\n\t\t\t\tif ( $.isPlainObject( val ) ) {\n\t\t\t\t\tif ( ! $.isPlainObject( out[prop] ) ) {\n\t\t\t\t\t\tout[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, out[prop], val );\n\t\t\t\t}\n\t\t\t\telse if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {\n\t\t\t\t\tout[prop] = val.slice();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tout[prop] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t}\n\t\n\t\n\t/**\n\t * Bind an event handers to allow a click or return key to activate the callback.\n\t * This is good for accessibility since a return on the keyboard will have the\n\t * same effect as a click, if the element has focus.\n\t *  @param {element} n Element to bind the action to\n\t *  @param {object} oData Data object to pass to the triggered function\n\t *  @param {function} fn Callback function for when the event is triggered\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBindAction( n, oData, fn )\n\t{\n\t\t$(n)\n\t\t\t.on( 'click.DT', oData, function (e) {\n\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\tfn(e);\n\t\t\t\t} )\n\t\t\t.on( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t.on( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Register a callback function. Easily allows a callback function to be added to\n\t * an array store of callback functions that can then all be called together.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t *  @param {function} fn Function to be called back\n\t *  @param {string} sName Identifying name for the callback (i.e. a label)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t{\n\t\tif ( fn )\n\t\t{\n\t\t\toSettings[sStore].push( {\n\t\t\t\t\"fn\": fn,\n\t\t\t\t\"sName\": sName\n\t\t\t} );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Fire callback functions and trigger events. Note that the loop over the\n\t * callback array store is done backwards! Further note that you do not want to\n\t * fire off triggers in time sensitive applications (for example cell creation)\n\t * as its slow.\n\t *  @param {object} settings dataTables settings object\n\t *  @param {string} callbackArr Name of the array storage for the callbacks in\n\t *      oSettings\n\t *  @param {string} eventName Name of the jQuery custom event to trigger. If\n\t *      null no trigger is fired\n\t *  @param {array} args Array of arguments to pass to the callback function /\n\t *      trigger\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackFire( settings, callbackArr, eventName, args )\n\t{\n\t\tvar ret = [];\n\t\n\t\tif ( callbackArr ) {\n\t\t\tret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {\n\t\t\t\treturn val.fn.apply( settings.oInstance, args );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( eventName !== null ) {\n\t\t\tvar e = $.Event( eventName+'.dt' );\n\t\n\t\t\t$(settings.nTable).trigger( e, args );\n\t\n\t\t\tret.push( e.result );\n\t\t}\n\t\n\t\treturn ret;\n\t}\n\t\n\t\n\tfunction _fnLengthOverflow ( settings )\n\t{\n\t\tvar\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tend = settings.fnDisplayEnd(),\n\t\t\tlen = settings._iDisplayLength;\n\t\n\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\tif ( start >= end )\n\t\t{\n\t\t\tstart = end - len;\n\t\t}\n\t\n\t\t// Keep the start record on the current page\n\t\tstart -= (start % len);\n\t\n\t\tif ( len === -1 || start < 0 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\n\t\tsettings._iDisplayStart = start;\n\t}\n\t\n\t\n\tfunction _fnRenderer( settings, type )\n\t{\n\t\tvar renderer = settings.renderer;\n\t\tvar host = DataTable.ext.renderer[type];\n\t\n\t\tif ( $.isPlainObject( renderer ) && renderer[type] ) {\n\t\t\t// Specific renderer for this type. If available use it, otherwise use\n\t\t\t// the default.\n\t\t\treturn host[renderer[type]] || host._;\n\t\t}\n\t\telse if ( typeof renderer === 'string' ) {\n\t\t\t// Common renderer - if there is one available for this type use it,\n\t\t\t// otherwise use the default\n\t\t\treturn host[renderer] || host._;\n\t\t}\n\t\n\t\t// Use the default\n\t\treturn host._;\n\t}\n\t\n\t\n\t/**\n\t * Detect the data source being used for the table. Used to simplify the code\n\t * a little (ajax) and to make it compress a little smaller.\n\t *\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {string} Data source\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDataSource ( settings )\n\t{\n\t\tif ( settings.oFeatures.bServerSide ) {\n\t\t\treturn 'ssp';\n\t\t}\n\t\telse if ( settings.ajax || settings.sAjaxSource ) {\n\t\t\treturn 'ajax';\n\t\t}\n\t\treturn 'dom';\n\t}\n\t\n\n\t\n\t\n\t/**\n\t * Computed structure of the DataTables API, defined by the options passed to\n\t * `DataTable.Api.register()` when building the API.\n\t *\n\t * The structure is built in order to speed creation and extension of the Api\n\t * objects since the extensions are effectively pre-parsed.\n\t *\n\t * The array is an array of objects with the following structure, where this\n\t * base array represents the Api prototype base:\n\t *\n\t *     [\n\t *       {\n\t *         name:      'data'                -- string   - Property name\n\t *         val:       function () {},       -- function - Api method (or undefined if just an object\n\t *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n\t *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n\t *       },\n\t *       {\n\t *         name:     'row'\n\t *         val:       {},\n\t *         methodExt: [ ... ],\n\t *         propExt:   [\n\t *           {\n\t *             name:      'data'\n\t *             val:       function () {},\n\t *             methodExt: [ ... ],\n\t *             propExt:   [ ... ]\n\t *           },\n\t *           ...\n\t *         ]\n\t *       }\n\t *     ]\n\t *\n\t * @type {Array}\n\t * @ignore\n\t */\n\tvar __apiStruct = [];\n\t\n\t\n\t/**\n\t * `Array.prototype` reference.\n\t *\n\t * @type object\n\t * @ignore\n\t */\n\tvar __arrayProto = Array.prototype;\n\t\n\t\n\t/**\n\t * Abstraction for `context` parameter of the `Api` constructor to allow it to\n\t * take several different forms for ease of use.\n\t *\n\t * Each of the input parameter types will be converted to a DataTables settings\n\t * object where possible.\n\t *\n\t * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one\n\t *   of:\n\t *\n\t *   * `string` - jQuery selector. Any DataTables' matching the given selector\n\t *     with be found and used.\n\t *   * `node` - `TABLE` node which has already been formed into a DataTable.\n\t *   * `jQuery` - A jQuery object of `TABLE` nodes.\n\t *   * `object` - DataTables settings object\n\t *   * `DataTables.Api` - API instance\n\t * @return {array|null} Matching DataTables settings objects. `null` or\n\t *   `undefined` is returned if no matching DataTable is found.\n\t * @ignore\n\t */\n\tvar _toSettings = function ( mixed )\n\t{\n\t\tvar idx, jq;\n\t\tvar settings = DataTable.settings;\n\t\tvar tables = $.map( settings, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\tif ( ! mixed ) {\n\t\t\treturn [];\n\t\t}\n\t\telse if ( mixed.nTable && mixed.oApi ) {\n\t\t\t// DataTables settings object\n\t\t\treturn [ mixed ];\n\t\t}\n\t\telse if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {\n\t\t\t// Table node\n\t\t\tidx = $.inArray( mixed, tables );\n\t\t\treturn idx !== -1 ? [ settings[idx] ] : null;\n\t\t}\n\t\telse if ( mixed && typeof mixed.settings === 'function' ) {\n\t\t\treturn mixed.settings().toArray();\n\t\t}\n\t\telse if ( typeof mixed === 'string' ) {\n\t\t\t// jQuery selector\n\t\t\tjq = $(mixed);\n\t\t}\n\t\telse if ( mixed instanceof $ ) {\n\t\t\t// jQuery object (also DataTables instance)\n\t\t\tjq = mixed;\n\t\t}\n\t\n\t\tif ( jq ) {\n\t\t\treturn jq.map( function(i) {\n\t\t\t\tidx = $.inArray( this, tables );\n\t\t\t\treturn idx !== -1 ? settings[idx] : null;\n\t\t\t} ).toArray();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * DataTables API class - used to control and interface with  one or more\n\t * DataTables enhanced tables.\n\t *\n\t * The API class is heavily based on jQuery, presenting a chainable interface\n\t * that you can use to interact with tables. Each instance of the API class has\n\t * a \"context\" - i.e. the tables that it will operate on. This could be a single\n\t * table, all tables on a page or a sub-set thereof.\n\t *\n\t * Additionally the API is designed to allow you to easily work with the data in\n\t * the tables, retrieving and manipulating it as required. This is done by\n\t * presenting the API class as an array like interface. The contents of the\n\t * array depend upon the actions requested by each method (for example\n\t * `rows().nodes()` will return an array of nodes, while `rows().data()` will\n\t * return an array of objects or arrays depending upon your table's\n\t * configuration). The API object has a number of array like methods (`push`,\n\t * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,\n\t * `unique` etc) to assist your working with the data held in a table.\n\t *\n\t * Most methods (those which return an Api instance) are chainable, which means\n\t * the return from a method call also has all of the methods available that the\n\t * top level object had. For example, these two calls are equivalent:\n\t *\n\t *     // Not chained\n\t *     api.row.add( {...} );\n\t *     api.draw();\n\t *\n\t *     // Chained\n\t *     api.row.add( {...} ).draw();\n\t *\n\t * @class DataTable.Api\n\t * @param {array|object|string|jQuery} context DataTable identifier. This is\n\t *   used to define which DataTables enhanced tables this API will operate on.\n\t *   Can be one of:\n\t *\n\t *   * `string` - jQuery selector. Any DataTables' matching the given selector\n\t *     with be found and used.\n\t *   * `node` - `TABLE` node which has already been formed into a DataTable.\n\t *   * `jQuery` - A jQuery object of `TABLE` nodes.\n\t *   * `object` - DataTables settings object\n\t * @param {array} [data] Data to initialise the Api instance with.\n\t *\n\t * @example\n\t *   // Direct initialisation during DataTables construction\n\t *   var api = $('#example').DataTable();\n\t *\n\t * @example\n\t *   // Initialisation using a DataTables jQuery object\n\t *   var api = $('#example').dataTable().api();\n\t *\n\t * @example\n\t *   // Initialisation as a constructor\n\t *   var api = new $.fn.DataTable.Api( 'table.dataTable' );\n\t */\n\t_Api = function ( context, data )\n\t{\n\t\tif ( ! (this instanceof _Api) ) {\n\t\t\treturn new _Api( context, data );\n\t\t}\n\t\n\t\tvar settings = [];\n\t\tvar ctxSettings = function ( o ) {\n\t\t\tvar a = _toSettings( o );\n\t\t\tif ( a ) {\n\t\t\t\tsettings = settings.concat( a );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( $.isArray( context ) ) {\n\t\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tctxSettings( context[i] );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tctxSettings( context );\n\t\t}\n\t\n\t\t// Remove duplicates\n\t\tthis.context = _unique( settings );\n\t\n\t\t// Initial data\n\t\tif ( data ) {\n\t\t\t$.merge( this, data );\n\t\t}\n\t\n\t\t// selector\n\t\tthis.selector = {\n\t\t\trows: null,\n\t\t\tcols: null,\n\t\t\topts: null\n\t\t};\n\t\n\t\t_Api.extend( this, this, __apiStruct );\n\t};\n\t\n\tDataTable.Api = _Api;\n\t\n\t// Don't destroy the existing prototype, just extend it. Required for jQuery 2's\n\t// isPlainObject.\n\t$.extend( _Api.prototype, {\n\t\tany: function ()\n\t\t{\n\t\t\treturn this.count() !== 0;\n\t\t},\n\t\n\t\n\t\tconcat:  __arrayProto.concat,\n\t\n\t\n\t\tcontext: [], // array of table settings objects\n\t\n\t\n\t\tcount: function ()\n\t\t{\n\t\t\treturn this.flatten().length;\n\t\t},\n\t\n\t\n\t\teach: function ( fn )\n\t\t{\n\t\t\tfor ( var i=0, ien=this.length ; i<ien; i++ ) {\n\t\t\t\tfn.call( this, this[i], i, this );\n\t\t\t}\n\t\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\teq: function ( idx )\n\t\t{\n\t\t\tvar ctx = this.context;\n\t\n\t\t\treturn ctx.length > idx ?\n\t\t\t\tnew _Api( ctx[idx], this[idx] ) :\n\t\t\t\tnull;\n\t\t},\n\t\n\t\n\t\tfilter: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.filter ) {\n\t\t\t\ta = __arrayProto.filter.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( fn.call( this, this[i], i, this ) ) {\n\t\t\t\t\t\ta.push( this[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tflatten: function ()\n\t\t{\n\t\t\tvar a = [];\n\t\t\treturn new _Api( this.context, a.concat.apply( a, this.toArray() ) );\n\t\t},\n\t\n\t\n\t\tjoin:    __arrayProto.join,\n\t\n\t\n\t\tindexOf: __arrayProto.indexOf || function (obj, start)\n\t\t{\n\t\t\tfor ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {\n\t\t\t\tif ( this[i] === obj ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\t\n\t\titerator: function ( flatten, type, fn, alwaysNew ) {\n\t\t\tvar\n\t\t\t\ta = [], ret,\n\t\t\t\ti, ien, j, jen,\n\t\t\t\tcontext = this.context,\n\t\t\t\trows, items, item,\n\t\t\t\tselector = this.selector;\n\t\n\t\t\t// Argument shifting\n\t\t\tif ( typeof flatten === 'string' ) {\n\t\t\t\talwaysNew = fn;\n\t\t\t\tfn = type;\n\t\t\t\ttype = flatten;\n\t\t\t\tflatten = false;\n\t\t\t}\n\t\n\t\t\tfor ( i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tvar apiInst = new _Api( context[i] );\n\t\n\t\t\t\tif ( type === 'table' ) {\n\t\t\t\t\tret = fn.call( apiInst, context[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'columns' || type === 'rows' ) {\n\t\t\t\t\t// this has same length as context - one entry for each table\n\t\t\t\t\tret = fn.call( apiInst, context[i], this[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {\n\t\t\t\t\t// columns and rows share the same structure.\n\t\t\t\t\t// 'this' is an array of column indexes for each context\n\t\t\t\t\titems = this[i];\n\t\n\t\t\t\t\tif ( type === 'column-rows' ) {\n\t\t\t\t\t\trows = _selector_row_indexes( context[i], selector.opts );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor ( j=0, jen=items.length ; j<jen ; j++ ) {\n\t\t\t\t\t\titem = items[j];\n\t\n\t\t\t\t\t\tif ( type === 'cell' ) {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item.row, item.column, i, j );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item, i, j, rows );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( a.length || alwaysNew ) {\n\t\t\t\tvar api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );\n\t\t\t\tvar apiSelector = api.selector;\n\t\t\t\tapiSelector.rows = selector.rows;\n\t\t\t\tapiSelector.cols = selector.cols;\n\t\t\t\tapiSelector.opts = selector.opts;\n\t\t\t\treturn api;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\tlastIndexOf: __arrayProto.lastIndexOf || function (obj, start)\n\t\t{\n\t\t\t// Bit cheeky...\n\t\t\treturn this.indexOf.apply( this.toArray.reverse(), arguments );\n\t\t},\n\t\n\t\n\t\tlength:  0,\n\t\n\t\n\t\tmap: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.map ) {\n\t\t\t\ta = __arrayProto.map.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\ta.push( fn.call( this, this[i], i ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tpluck: function ( prop )\n\t\t{\n\t\t\treturn this.map( function ( el ) {\n\t\t\t\treturn el[ prop ];\n\t\t\t} );\n\t\t},\n\t\n\t\tpop:     __arrayProto.pop,\n\t\n\t\n\t\tpush:    __arrayProto.push,\n\t\n\t\n\t\t// Does not return an API instance\n\t\treduce: __arrayProto.reduce || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, 0, this.length, 1 );\n\t\t},\n\t\n\t\n\t\treduceRight: __arrayProto.reduceRight || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, this.length-1, -1, -1 );\n\t\t},\n\t\n\t\n\t\treverse: __arrayProto.reverse,\n\t\n\t\n\t\t// Object with rows, columns and opts\n\t\tselector: null,\n\t\n\t\n\t\tshift:   __arrayProto.shift,\n\t\n\t\n\t\tslice: function () {\n\t\t\treturn new _Api( this.context, this );\n\t\t},\n\t\n\t\n\t\tsort:    __arrayProto.sort, // ? name - order?\n\t\n\t\n\t\tsplice:  __arrayProto.splice,\n\t\n\t\n\t\ttoArray: function ()\n\t\t{\n\t\t\treturn __arrayProto.slice.call( this );\n\t\t},\n\t\n\t\n\t\tto$: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\ttoJQuery: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\tunique: function ()\n\t\t{\n\t\t\treturn new _Api( this.context, _unique(this) );\n\t\t},\n\t\n\t\n\t\tunshift: __arrayProto.unshift\n\t} );\n\t\n\t\n\t_Api.extend = function ( scope, obj, ext )\n\t{\n\t\t// Only extend API instances and static properties of the API\n\t\tif ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\tj, jen,\n\t\t\tstruct, inner,\n\t\t\tmethodScoping = function ( scope, fn, struc ) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar ret = fn.apply( scope, arguments );\n\t\n\t\t\t\t\t// Method extension\n\t\t\t\t\t_Api.extend( ret, ret, struc.methodExt );\n\t\t\t\t\treturn ret;\n\t\t\t\t};\n\t\t\t};\n\t\n\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\tstruct = ext[i];\n\t\n\t\t\t// Value\n\t\t\tobj[ struct.name ] = typeof struct.val === 'function' ?\n\t\t\t\tmethodScoping( scope, struct.val, struct ) :\n\t\t\t\t$.isPlainObject( struct.val ) ?\n\t\t\t\t\t{} :\n\t\t\t\t\tstruct.val;\n\t\n\t\t\tobj[ struct.name ].__dt_wrapper = true;\n\t\n\t\t\t// Property extension\n\t\t\t_Api.extend( scope, obj[ struct.name ], struct.propExt );\n\t\t}\n\t};\n\t\n\t\n\t// @todo - Is there need for an augment function?\n\t// _Api.augment = function ( inst, name )\n\t// {\n\t// \t// Find src object in the structure from the name\n\t// \tvar parts = name.split('.');\n\t\n\t// \t_Api.extend( inst, obj );\n\t// };\n\t\n\t\n\t//     [\n\t//       {\n\t//         name:      'data'                -- string   - Property name\n\t//         val:       function () {},       -- function - Api method (or undefined if just an object\n\t//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n\t//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n\t//       },\n\t//       {\n\t//         name:     'row'\n\t//         val:       {},\n\t//         methodExt: [ ... ],\n\t//         propExt:   [\n\t//           {\n\t//             name:      'data'\n\t//             val:       function () {},\n\t//             methodExt: [ ... ],\n\t//             propExt:   [ ... ]\n\t//           },\n\t//           ...\n\t//         ]\n\t//       }\n\t//     ]\n\t\n\t_Api.register = _api_register = function ( name, val )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\tfor ( var j=0, jen=name.length ; j<jen ; j++ ) {\n\t\t\t\t_Api.register( name[j], val );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\their = name.split('.'),\n\t\t\tstruct = __apiStruct,\n\t\t\tkey, method;\n\t\n\t\tvar find = function ( src, name ) {\n\t\t\tfor ( var i=0, ien=src.length ; i<ien ; i++ ) {\n\t\t\t\tif ( src[i].name === name ) {\n\t\t\t\t\treturn src[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\n\t\tfor ( i=0, ien=heir.length ; i<ien ; i++ ) {\n\t\t\tmethod = heir[i].indexOf('()') !== -1;\n\t\t\tkey = method ?\n\t\t\t\their[i].replace('()', '') :\n\t\t\t\their[i];\n\t\n\t\t\tvar src = find( struct, key );\n\t\t\tif ( ! src ) {\n\t\t\t\tsrc = {\n\t\t\t\t\tname:      key,\n\t\t\t\t\tval:       {},\n\t\t\t\t\tmethodExt: [],\n\t\t\t\t\tpropExt:   []\n\t\t\t\t};\n\t\t\t\tstruct.push( src );\n\t\t\t}\n\t\n\t\t\tif ( i === ien-1 ) {\n\t\t\t\tsrc.val = val;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstruct = method ?\n\t\t\t\t\tsrc.methodExt :\n\t\t\t\t\tsrc.propExt;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\t_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {\n\t\t_Api.register( pluralName, val );\n\t\n\t\t_Api.register( singularName, function () {\n\t\t\tvar ret = val.apply( this, arguments );\n\t\n\t\t\tif ( ret === this ) {\n\t\t\t\t// Returned item is the API instance that was passed in, return it\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\telse if ( ret instanceof _Api ) {\n\t\t\t\t// New API instance returned, want the value from the first item\n\t\t\t\t// in the returned array for the singular result.\n\t\t\t\treturn ret.length ?\n\t\t\t\t\t$.isArray( ret[0] ) ?\n\t\t\t\t\t\tnew _Api( ret.context, ret[0] ) : // Array results are 'enhanced'\n\t\t\t\t\t\tret[0] :\n\t\t\t\t\tundefined;\n\t\t\t}\n\t\n\t\t\t// Non-API return - just fire it back\n\t\t\treturn ret;\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t * Selector for HTML tables. Apply the given selector to the give array of\n\t * DataTables settings objects.\n\t *\n\t * @param {string|integer} [selector] jQuery selector string or integer\n\t * @param  {array} Array of DataTables settings objects to be filtered\n\t * @return {array}\n\t * @ignore\n\t */\n\tvar __table_selector = function ( selector, a )\n\t{\n\t\t// Integer is used to pick out a table by index\n\t\tif ( typeof selector === 'number' ) {\n\t\t\treturn [ a[ selector ] ];\n\t\t}\n\t\n\t\t// Perform a jQuery selector on the table nodes\n\t\tvar nodes = $.map( a, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\treturn $(nodes)\n\t\t\t.filter( selector )\n\t\t\t.map( function (i) {\n\t\t\t\t// Need to translate back from the table node to the settings\n\t\t\t\tvar idx = $.inArray( this, nodes );\n\t\t\t\treturn a[ idx ];\n\t\t\t} )\n\t\t\t.toArray();\n\t};\n\t\n\t\n\t\n\t/**\n\t * Context selector for the API's context (i.e. the tables the API instance\n\t * refers to.\n\t *\n\t * @name    DataTable.Api#tables\n\t * @param {string|integer} [selector] Selector to pick which tables the iterator\n\t *   should operate on. If not given, all tables in the current context are\n\t *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to\n\t *   select multiple tables or as an integer to select a single table.\n\t * @returns {DataTable.Api} Returns a new API instance if a selector is given.\n\t */\n\t_api_register( 'tables()', function ( selector ) {\n\t\t// A new instance is created if there was a selector specified\n\t\treturn selector ?\n\t\t\tnew _Api( __table_selector( selector, this.context ) ) :\n\t\t\tthis;\n\t} );\n\t\n\t\n\t_api_register( 'table()', function ( selector ) {\n\t\tvar tables = this.tables( selector );\n\t\tvar ctx = tables.context;\n\t\n\t\t// Truncate to the first matched table\n\t\treturn ctx.length ?\n\t\t\tnew _Api( ctx[0] ) :\n\t\t\ttables;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTable;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().body()', 'table().body()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTBody;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().header()', 'table().header()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTHead;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTFoot;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().containers()', 'table().container()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTableWrapper;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Redraw the tables in the current context.\n\t */\n\t_api_register( 'draw()', function ( paging ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( paging === 'page' ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif ( typeof paging === 'string' ) {\n\t\t\t\t\tpaging = paging === 'full-hold' ?\n\t\t\t\t\t\tfalse :\n\t\t\t\t\t\ttrue;\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, paging===false );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get the current page index.\n\t *\n\t * @return {integer} Current page index (zero based)\n\t *//**\n\t * Set the current page.\n\t *\n\t * Note that if you attempt to show a page which does not exist, DataTables will\n\t * not throw an error, but rather reset the paging.\n\t *\n\t * @param {integer|string} action The paging action to take. This can be one of:\n\t *  * `integer` - The page index to jump to\n\t *  * `string` - An action to take:\n\t *    * `first` - Jump to first page.\n\t *    * `next` - Jump to the next page\n\t *    * `previous` - Jump to previous page\n\t *    * `last` - Jump to the last page.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page()', function ( action ) {\n\t\tif ( action === undefined ) {\n\t\t\treturn this.page.info().page; // not an expensive call\n\t\t}\n\t\n\t\t// else, have an action to take on all tables\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnPageChange( settings, action );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Paging information for the first table in the current context.\n\t *\n\t * If you require paging information for another table, use the `table()` method\n\t * with a suitable selector.\n\t *\n\t * @return {object} Object with the following properties set:\n\t *  * `page` - Current page index (zero based - i.e. the first page is `0`)\n\t *  * `pages` - Total number of pages\n\t *  * `start` - Display index for the first record shown on the current page\n\t *  * `end` - Display index for the last record shown on the current page\n\t *  * `length` - Display length (number of records). Note that generally `start\n\t *    + length = end`, but this is not always true, for example if there are\n\t *    only 2 records to show on the final page, with a length of 10.\n\t *  * `recordsTotal` - Full data set length\n\t *  * `recordsDisplay` - Data set length once the current filtering criterion\n\t *    are applied.\n\t */\n\t_api_register( 'page.info()', function ( action ) {\n\t\tif ( this.context.length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t\n\t\tvar\n\t\t\tsettings   = this.context[0],\n\t\t\tstart      = settings._iDisplayStart,\n\t\t\tlen        = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,\n\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\tall        = len === -1;\n\t\n\t\treturn {\n\t\t\t\"page\":           all ? 0 : Math.floor( start / len ),\n\t\t\t\"pages\":          all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\"start\":          start,\n\t\t\t\"end\":            settings.fnDisplayEnd(),\n\t\t\t\"length\":         len,\n\t\t\t\"recordsTotal\":   settings.fnRecordsTotal(),\n\t\t\t\"recordsDisplay\": visRecords,\n\t\t\t\"serverSide\":     _fnDataSource( settings ) === 'ssp'\n\t\t};\n\t} );\n\t\n\t\n\t/**\n\t * Get the current page length.\n\t *\n\t * @return {integer} Current page length. Note `-1` indicates that all records\n\t *   are to be shown.\n\t *//**\n\t * Set the current page length.\n\t *\n\t * @param {integer} Page length to set. Use `-1` to show all records.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page.len()', function ( len ) {\n\t\t// Note that we can't call this function 'length()' because `length`\n\t\t// is a Javascript property of functions which defines how many arguments\n\t\t// the function expects.\n\t\tif ( len === undefined ) {\n\t\t\treturn this.context.length !== 0 ?\n\t\t\t\tthis.context[0]._iDisplayLength :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// else, set the page length\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnLengthChange( settings, len );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\tvar __reload = function ( settings, holdPosition, callback ) {\n\t\t// Use the draw event to trigger a callback\n\t\tif ( callback ) {\n\t\t\tvar api = new _Api( settings );\n\t\n\t\t\tapi.one( 'draw', function () {\n\t\t\t\tcallback( api.ajax.json() );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t_fnReDraw( settings, holdPosition );\n\t\t}\n\t\telse {\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t// Cancel an existing request\n\t\t\tvar xhr = settings.jqXHR;\n\t\t\tif ( xhr && xhr.readyState !== 4 ) {\n\t\t\t\txhr.abort();\n\t\t\t}\n\t\n\t\t\t// Trigger xhr\n\t\t\t_fnBuildAjax( settings, [], function( json ) {\n\t\t\t\t_fnClearTable( settings );\n\t\n\t\t\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\t_fnAddData( settings, data[i] );\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, holdPosition );\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Get the JSON response from the last Ajax request that DataTables made to the\n\t * server. Note that this returns the JSON from the first table in the current\n\t * context.\n\t *\n\t * @return {object} JSON received from the server.\n\t */\n\t_api_register( 'ajax.json()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].json;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Get the data submitted in the last Ajax request\n\t */\n\t_api_register( 'ajax.params()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].oAjaxData;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Reload tables from the Ajax data source. Note that this function will\n\t * automatically re-draw the table when the remote data has been loaded.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t *   position. A full re-sort and re-filter is performed when this method is\n\t *   called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.reload()', function ( callback, resetPaging ) {\n\t\treturn this.iterator( 'table', function (settings) {\n\t\t\t__reload( settings, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Get the current Ajax URL. Note that this returns the URL from the first\n\t * table in the current context.\n\t *\n\t * @return {string} Current Ajax source URL\n\t *//**\n\t * Set the Ajax URL. Note that this will set the URL for all tables in the\n\t * current context.\n\t *\n\t * @param {string} url URL to set.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url()', function ( url ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( url === undefined ) {\n\t\t\t// get\n\t\t\tif ( ctx.length === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tctx = ctx[0];\n\t\n\t\t\treturn ctx.ajax ?\n\t\t\t\t$.isPlainObject( ctx.ajax ) ?\n\t\t\t\t\tctx.ajax.url :\n\t\t\t\t\tctx.ajax :\n\t\t\t\tctx.sAjaxSource;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( $.isPlainObject( settings.ajax ) ) {\n\t\t\t\tsettings.ajax.url = url;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsettings.ajax = url;\n\t\t\t}\n\t\t\t// No need to consider sAjaxSource here since DataTables gives priority\n\t\t\t// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any\n\t\t\t// value of `sAjaxSource` redundant.\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Load data from the newly set Ajax URL. Note that this method is only\n\t * available when `ajax.url()` is used to set a URL. Additionally, this method\n\t * has the same effect as calling `ajax.reload()` but is provided for\n\t * convenience when setting a new URL. Like `ajax.reload()` it will\n\t * automatically redraw the table once the remote data has been loaded.\n\t *\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {\n\t\t// Same as a reload, but makes sense to present it for easy access after a\n\t\t// url change\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\t__reload( ctx, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t\n\tvar _selector_run = function ( type, selector, selectFn, settings, opts )\n\t{\n\t\tvar\n\t\t\tout = [], res,\n\t\t\ta, i, ien, j, jen,\n\t\t\tselectorType = typeof selector;\n\t\n\t\t// Can't just check for isArray here, as an API or jQuery instance might be\n\t\t// given with their array like look\n\t\tif ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {\n\t\t\tselector = [ selector ];\n\t\t}\n\t\n\t\tfor ( i=0, ien=selector.length ; i<ien ; i++ ) {\n\t\t\t// Only split on simple strings - complex expressions will be jQuery selectors\n\t\t\ta = selector[i] && selector[i].split && ! selector[i].match(/[\\[\\(:]/) ?\n\t\t\t\tselector[i].split(',') :\n\t\t\t\t[ selector[i] ];\n\t\n\t\t\tfor ( j=0, jen=a.length ; j<jen ; j++ ) {\n\t\t\t\tres = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );\n\t\n\t\t\t\tif ( res && res.length ) {\n\t\t\t\t\tout = out.concat( res );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// selector extensions\n\t\tvar ext = _ext.selector[ type ];\n\t\tif ( ext.length ) {\n\t\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\t\tout = ext[i]( settings, opts, out );\n\t\t\t}\n\t\t}\n\t\n\t\treturn _unique( out );\n\t};\n\t\n\t\n\tvar _selector_opts = function ( opts )\n\t{\n\t\tif ( ! opts ) {\n\t\t\topts = {};\n\t\t}\n\t\n\t\t// Backwards compatibility for 1.9- which used the terminology filter rather\n\t\t// than search\n\t\tif ( opts.filter && opts.search === undefined ) {\n\t\t\topts.search = opts.filter;\n\t\t}\n\t\n\t\treturn $.extend( {\n\t\t\tsearch: 'none',\n\t\t\torder: 'current',\n\t\t\tpage: 'all'\n\t\t}, opts );\n\t};\n\t\n\t\n\tvar _selector_first = function ( inst )\n\t{\n\t\t// Reduce the API instance to the first item found\n\t\tfor ( var i=0, ien=inst.length ; i<ien ; i++ ) {\n\t\t\tif ( inst[i].length > 0 ) {\n\t\t\t\t// Assign the first element to the first item in the instance\n\t\t\t\t// and truncate the instance and context\n\t\t\t\tinst[0] = inst[i];\n\t\t\t\tinst[0].length = 1;\n\t\t\t\tinst.length = 1;\n\t\t\t\tinst.context = [ inst.context[i] ];\n\t\n\t\t\t\treturn inst;\n\t\t\t}\n\t\t}\n\t\n\t\t// Not found - return an empty instance\n\t\tinst.length = 0;\n\t\treturn inst;\n\t};\n\t\n\t\n\tvar _selector_row_indexes = function ( settings, opts )\n\t{\n\t\tvar\n\t\t\ti, ien, tmp, a=[],\n\t\t\tdisplayFiltered = settings.aiDisplay,\n\t\t\tdisplayMaster = settings.aiDisplayMaster;\n\t\n\t\tvar\n\t\t\tsearch = opts.search,  // none, applied, removed\n\t\t\torder  = opts.order,   // applied, current, index (original - compatibility with 1.9)\n\t\t\tpage   = opts.page;    // all, current\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t// In server-side processing mode, most options are irrelevant since\n\t\t\t// rows not shown don't exist and the index order is the applied order\n\t\t\t// Removed is a special case - for consistency just return an empty\n\t\t\t// array\n\t\t\treturn search === 'removed' ?\n\t\t\t\t[] :\n\t\t\t\t_range( 0, displayMaster.length );\n\t\t}\n\t\telse if ( page == 'current' ) {\n\t\t\t// Current page implies that order=current and fitler=applied, since it is\n\t\t\t// fairly senseless otherwise, regardless of what order and search actually\n\t\t\t// are\n\t\t\tfor ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {\n\t\t\t\ta.push( displayFiltered[i] );\n\t\t\t}\n\t\t}\n\t\telse if ( order == 'current' || order == 'applied' ) {\n\t\t\ta = search == 'none' ?\n\t\t\t\tdisplayMaster.slice() :                      // no search\n\t\t\t\tsearch == 'applied' ?\n\t\t\t\t\tdisplayFiltered.slice() :                // applied search\n\t\t\t\t\t$.map( displayMaster, function (el, i) { // removed search\n\t\t\t\t\t\treturn $.inArray( el, displayFiltered ) === -1 ? el : null;\n\t\t\t\t\t} );\n\t\t}\n\t\telse if ( order == 'index' || order == 'original' ) {\n\t\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tif ( search == 'none' ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t\telse { // applied | removed\n\t\t\t\t\ttmp = $.inArray( i, displayFiltered );\n\t\n\t\t\t\t\tif ((tmp === -1 && search == 'removed') ||\n\t\t\t\t\t\t(tmp >= 0   && search == 'applied') )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn a;\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Rows\n\t *\n\t * {}          - no selector - use all available rows\n\t * {integer}   - row aoData index\n\t * {node}      - TR node\n\t * {string}    - jQuery selector to apply to the TR elements\n\t * {array}     - jQuery array of nodes, or simply an array of TR nodes\n\t *\n\t */\n\t\n\t\n\tvar __row_selector = function ( settings, selector, opts )\n\t{\n\t\tvar rows;\n\t\tvar run = function ( sel ) {\n\t\t\tvar selInt = _intVal( sel );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Short cut - selector is a number and no options provided (default is\n\t\t\t// all records, so no need to check if the index is in there, since it\n\t\t\t// must be - dev error if the index doesn't exist).\n\t\t\tif ( selInt !== null && ! opts ) {\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\n\t\t\tif ( ! rows ) {\n\t\t\t\trows = _selector_row_indexes( settings, opts );\n\t\t\t}\n\t\n\t\t\tif ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {\n\t\t\t\t// Selector - integer\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\t\telse if ( sel === null || sel === undefined || sel === '' ) {\n\t\t\t\t// Selector - none\n\t\t\t\treturn rows;\n\t\t\t}\n\t\n\t\t\t// Selector - function\n\t\t\tif ( typeof sel === 'function' ) {\n\t\t\t\treturn $.map( rows, function (idx) {\n\t\t\t\t\tvar row = settings.aoData[ idx ];\n\t\t\t\t\treturn sel( idx, row._aData, row.nTr ) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Get nodes in the order from the `rows` array with null values removed\n\t\t\tvar nodes = _removeEmpty(\n\t\t\t\t_pluck_order( settings.aoData, rows, 'nTr' )\n\t\t\t);\n\t\n\t\t\t// Selector - node\n\t\t\tif ( sel.nodeName ) {\n\t\t\t\tif ( sel._DT_RowIndex !== undefined ) {\n\t\t\t\t\treturn [ sel._DT_RowIndex ]; // Property added by DT for fast lookup\n\t\t\t\t}\n\t\t\t\telse if ( sel._DT_CellIndex ) {\n\t\t\t\t\treturn [ sel._DT_CellIndex.row ];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar host = $(sel).closest('*[data-dt-row]');\n\t\t\t\t\treturn host.length ?\n\t\t\t\t\t\t[ host.data('dt-row') ] :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// ID selector. Want to always be able to select rows by id, regardless\n\t\t\t// of if the tr element has been created or not, so can't rely upon\n\t\t\t// jQuery here - hence a custom implementation. This does not match\n\t\t\t// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,\n\t\t\t// but to select it using a CSS selector engine (like Sizzle or\n\t\t\t// querySelect) it would need to need to be escaped for some characters.\n\t\t\t// DataTables simplifies this for row selectors since you can select\n\t\t\t// only a row. A # indicates an id any anything that follows is the id -\n\t\t\t// unescaped.\n\t\t\tif ( typeof sel === 'string' && sel.charAt(0) === '#' ) {\n\t\t\t\t// get row index from id\n\t\t\t\tvar rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];\n\t\t\t\tif ( rowObj !== undefined ) {\n\t\t\t\t\treturn [ rowObj.idx ];\n\t\t\t\t}\n\t\n\t\t\t\t// need to fall through to jQuery in case there is DOM id that\n\t\t\t\t// matches\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery selector string, array of nodes or jQuery object/\n\t\t\t// As jQuery's .filter() allows jQuery objects to be passed in filter,\n\t\t\t// it also allows arrays, so this will cope with all three options\n\t\t\treturn $(nodes)\n\t\t\t\t.filter( sel )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn this._DT_RowIndex;\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t};\n\t\n\t\treturn _selector_run( 'row', selector, run, settings, opts );\n\t};\n\t\n\t\n\t_api_register( 'rows()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __row_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in __row_selector?\n\t\tinst.selector.rows = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t_api_register( 'rows().nodes()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn settings.aoData[ row ].nTr || undefined;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'rows().data()', function () {\n\t\treturn this.iterator( true, 'rows', function ( settings, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, '_aData' );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\tvar r = settings.aoData[ row ];\n\t\t\treturn type === 'search' ? r._aFilterData : r._aSortData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\t_fnInvalidate( settings, row, src );\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().indexes()', 'row().index()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn row;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {\n\t\tvar a = [];\n\t\tvar context = this.context;\n\t\n\t\t// `iterator` will drop undefined values, but in this case we want them\n\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\tfor ( var j=0, jen=this[i].length ; j<jen ; j++ ) {\n\t\t\t\tvar id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );\n\t\t\t\ta.push( (hash === true ? '#' : '' )+ id );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new _Api( context, a );\n\t} );\n\t\n\t_api_registerPlural( 'rows().remove()', 'row().remove()', function () {\n\t\tvar that = this;\n\t\n\t\tthis.iterator( 'row', function ( settings, row, thatIdx ) {\n\t\t\tvar data = settings.aoData;\n\t\t\tvar rowData = data[ row ];\n\t\t\tvar i, ien, j, jen;\n\t\t\tvar loopRow, loopCells;\n\t\n\t\t\tdata.splice( row, 1 );\n\t\n\t\t\t// Update the cached indexes\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\tloopRow = data[i];\n\t\t\t\tloopCells = loopRow.anCells;\n\t\n\t\t\t\t// Rows\n\t\t\t\tif ( loopRow.nTr !== null ) {\n\t\t\t\t\tloopRow.nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\n\t\t\t\t// Cells\n\t\t\t\tif ( loopCells !== null ) {\n\t\t\t\t\tfor ( j=0, jen=loopCells.length ; j<jen ; j++ ) {\n\t\t\t\t\t\tloopCells[j]._DT_CellIndex.row = i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Delete from the display arrays\n\t\t\t_fnDeleteIndex( settings.aiDisplayMaster, row );\n\t\t\t_fnDeleteIndex( settings.aiDisplay, row );\n\t\t\t_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes\n\t\n\t\t\t// For server-side processing tables - subtract the deleted row from the count\n\t\t\tif ( settings._iRecordsDisplay > 0 ) {\n\t\t\t\tsettings._iRecordsDisplay--;\n\t\t\t}\n\t\n\t\t\t// Check for an 'overflow' they case for displaying the table\n\t\t\t_fnLengthOverflow( settings );\n\t\n\t\t\t// Remove the row's ID reference if there is one\n\t\t\tvar id = settings.rowIdFn( rowData._aData );\n\t\t\tif ( id !== undefined ) {\n\t\t\t\tdelete settings.aIds[ id ];\n\t\t\t}\n\t\t} );\n\t\n\t\tthis.iterator( 'table', function ( settings ) {\n\t\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tsettings.aoData[i].idx = i;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'rows.add()', function ( rows ) {\n\t\tvar newRows = this.iterator( 'table', function ( settings ) {\n\t\t\t\tvar row, i, ien;\n\t\t\t\tvar out = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\t\t\tout.push( _fnAddTr( settings, row )[0] );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tout.push( _fnAddData( settings, row ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn out;\n\t\t\t}, 1 );\n\t\n\t\t// Return an Api.rows() extended instance, so rows().nodes() etc can be used\n\t\tvar modRows = this.rows( -1 );\n\t\tmodRows.pop();\n\t\t$.merge( modRows, newRows );\n\t\n\t\treturn modRows;\n\t} );\n\t\n\t\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'row()', function ( selector, opts ) {\n\t\treturn _selector_first( this.rows( selector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'row().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._aData :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\tctx[0].aoData[ this[0] ]._aData = data;\n\t\n\t\t// Automatically invalidate\n\t\t_fnInvalidate( ctx[0], this[0], 'data' );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'row().node()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\treturn ctx.length && this.length ?\n\t\t\tctx[0].aoData[ this[0] ].nTr || null :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'row.add()', function ( row ) {\n\t\t// Allow a jQuery object to be passed in - only a single row is added from\n\t\t// it though - the first element in the set\n\t\tif ( row instanceof $ && row.length ) {\n\t\t\trow = row[0];\n\t\t}\n\t\n\t\tvar rows = this.iterator( 'table', function ( settings ) {\n\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\treturn _fnAddTr( settings, row )[0];\n\t\t\t}\n\t\t\treturn _fnAddData( settings, row );\n\t\t} );\n\t\n\t\t// Return an Api.rows() extended instance, with the newly added row selected\n\t\treturn this.row( rows[0] );\n\t} );\n\t\n\t\n\t\n\tvar __details_add = function ( ctx, row, data, klass )\n\t{\n\t\t// Convert to array of TR elements\n\t\tvar rows = [];\n\t\tvar addRow = function ( r, k ) {\n\t\t\t// Recursion to allow for arrays of jQuery objects\n\t\t\tif ( $.isArray( r ) || r instanceof $ ) {\n\t\t\t\tfor ( var i=0, ien=r.length ; i<ien ; i++ ) {\n\t\t\t\t\taddRow( r[i], k );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If we get a TR element, then just add it directly - up to the dev\n\t\t\t// to add the correct number of columns etc\n\t\t\tif ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {\n\t\t\t\trows.push( r );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Otherwise create a row with a wrapper\n\t\t\t\tvar created = $('<tr><td/></tr>').addClass( k );\n\t\t\t\t$('td', created)\n\t\t\t\t\t.addClass( k )\n\t\t\t\t\t.html( r )\n\t\t\t\t\t[0].colSpan = _fnVisbleColumns( ctx );\n\t\n\t\t\t\trows.push( created[0] );\n\t\t\t}\n\t\t};\n\t\n\t\taddRow( data, klass );\n\t\n\t\tif ( row._details ) {\n\t\t\trow._details.detach();\n\t\t}\n\t\n\t\trow._details = $(rows);\n\t\n\t\t// If the children were already shown, that state should be retained\n\t\tif ( row._detailsShow ) {\n\t\t\trow._details.insertAfter( row.nTr );\n\t\t}\n\t};\n\t\n\t\n\tvar __details_remove = function ( api, idx )\n\t{\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length ) {\n\t\t\tvar row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];\n\t\n\t\t\tif ( row && row._details ) {\n\t\t\t\trow._details.remove();\n\t\n\t\t\t\trow._detailsShow = undefined;\n\t\t\t\trow._details = undefined;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_display = function ( api, show ) {\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length && api.length ) {\n\t\t\tvar row = ctx[0].aoData[ api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._detailsShow = show;\n\t\n\t\t\t\tif ( show ) {\n\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow._details.detach();\n\t\t\t\t}\n\t\n\t\t\t\t__details_events( ctx[0] );\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_events = function ( settings )\n\t{\n\t\tvar api = new _Api( settings );\n\t\tvar namespace = '.dt.DT_details';\n\t\tvar drawEvent = 'draw'+namespace;\n\t\tvar colvisEvent = 'column-visibility'+namespace;\n\t\tvar destroyEvent = 'destroy'+namespace;\n\t\tvar data = settings.aoData;\n\t\n\t\tapi.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );\n\t\n\t\tif ( _pluck( data, '_details' ).length > 0 ) {\n\t\t\t// On each draw, insert the required elements into the document\n\t\t\tapi.on( drawEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tapi.rows( {page:'current'} ).eq(0).each( function (idx) {\n\t\t\t\t\t// Internal data grab\n\t\t\t\t\tvar row = data[ idx ];\n\t\n\t\t\t\t\tif ( row._detailsShow ) {\n\t\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\n\t\t\t// Column visibility change - update the colspan\n\t\t\tapi.on( colvisEvent, function ( e, ctx, idx, vis ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Update the colspan for the details rows (note, only if it already has\n\t\t\t\t// a colspan)\n\t\t\t\tvar row, visible = _fnVisbleColumns( ctx );\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = data[i];\n\t\n\t\t\t\t\tif ( row._details ) {\n\t\t\t\t\t\trow._details.children('td[colspan]').attr('colspan', visible );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\t// Table destroyed - nuke any child rows\n\t\t\tapi.on( destroyEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( data[i]._details ) {\n\t\t\t\t\t\t__details_remove( api, i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t// Strings for the method names to help minification\n\tvar _emp = '';\n\tvar _child_obj = _emp+'row().child';\n\tvar _child_mth = _child_obj+'()';\n\t\n\t// data can be:\n\t//  tr\n\t//  string\n\t//  jQuery or array of any of the above\n\t_api_register( _child_mth, function ( data, klass ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._details :\n\t\t\t\tundefined;\n\t\t}\n\t\telse if ( data === true ) {\n\t\t\t// show\n\t\t\tthis.child.show();\n\t\t}\n\t\telse if ( data === false ) {\n\t\t\t// remove\n\t\t\t__details_remove( this );\n\t\t}\n\t\telse if ( ctx.length && this.length ) {\n\t\t\t// set\n\t\t\t__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );\n\t\t}\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.show()',\n\t\t_child_mth+'.show()' // only when `child()` was called with parameters (without\n\t], function ( show ) {   // it returns an object and this method is not executed)\n\t\t__details_display( this, true );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.hide()',\n\t\t_child_mth+'.hide()' // only when `child()` was called with parameters (without\n\t], function () {         // it returns an object and this method is not executed)\n\t\t__details_display( this, false );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.remove()',\n\t\t_child_mth+'.remove()' // only when `child()` was called with parameters (without\n\t], function () {           // it returns an object and this method is not executed)\n\t\t__details_remove( this );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( _child_obj+'.isShown()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length && this.length ) {\n\t\t\t// _detailsShown as false or undefined will fall through to return false\n\t\t\treturn ctx[0].aoData[ this[0] ]._detailsShow || false;\n\t\t}\n\t\treturn false;\n\t} );\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Columns\n\t *\n\t * {integer}           - column index (>=0 count from left, <0 count from right)\n\t * \"{integer}:visIdx\"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)\n\t * \"{integer}:visible\" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)\n\t * \"{string}:name\"     - column name\n\t * \"{string}\"          - jQuery selector on column header nodes\n\t *\n\t */\n\t\n\t// can be an array of these items, comma separated list, or an array of comma\n\t// separated lists\n\t\n\tvar __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;\n\t\n\t\n\t// r1 and r2 are redundant - but it means that the parameters match for the\n\t// iterator callback in columns().data()\n\tvar __columnData = function ( settings, column, r1, r2, rows ) {\n\t\tvar a = [];\n\t\tfor ( var row=0, ien=rows.length ; row<ien ; row++ ) {\n\t\t\ta.push( _fnGetCellData( settings, rows[row], column ) );\n\t\t}\n\t\treturn a;\n\t};\n\t\n\t\n\tvar __column_selector = function ( settings, selector, opts )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tnames = _pluck( columns, 'sName' ),\n\t\t\tnodes = _pluck( columns, 'nTh' );\n\t\n\t\tvar run = function ( s ) {\n\t\t\tvar selInt = _intVal( s );\n\t\n\t\t\t// Selector - all\n\t\t\tif ( s === '' ) {\n\t\t\t\treturn _range( columns.length );\n\t\t\t}\n\t\n\t\t\t// Selector - index\n\t\t\tif ( selInt !== null ) {\n\t\t\t\treturn [ selInt >= 0 ?\n\t\t\t\t\tselInt : // Count from left\n\t\t\t\t\tcolumns.length + selInt // Count from right (+ because its a negative value)\n\t\t\t\t];\n\t\t\t}\n\t\n\t\t\t// Selector = function\n\t\t\tif ( typeof s === 'function' ) {\n\t\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\n\t\t\t\treturn $.map( columns, function (col, idx) {\n\t\t\t\t\treturn s(\n\t\t\t\t\t\t\tidx,\n\t\t\t\t\t\t\t__columnData( settings, idx, 0, 0, rows ),\n\t\t\t\t\t\t\tnodes[ idx ]\n\t\t\t\t\t\t) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// jQuery or string selector\n\t\t\tvar match = typeof s === 'string' ?\n\t\t\t\ts.match( __re_column_selector ) :\n\t\t\t\t'';\n\t\n\t\t\tif ( match ) {\n\t\t\t\tswitch( match[2] ) {\n\t\t\t\t\tcase 'visIdx':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\tvar idx = parseInt( match[1], 10 );\n\t\t\t\t\t\t// Visible index given, convert to column index\n\t\t\t\t\t\tif ( idx < 0 ) {\n\t\t\t\t\t\t\t// Counting from the right\n\t\t\t\t\t\t\tvar visColumns = $.map( columns, function (col,i) {\n\t\t\t\t\t\t\t\treturn col.bVisible ? i : null;\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn [ visColumns[ visColumns.length + idx ] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Counting from the left\n\t\t\t\t\t\treturn [ _fnVisibleToColumnIndex( settings, idx ) ];\n\t\n\t\t\t\t\tcase 'name':\n\t\t\t\t\t\t// match by name. `names` is column index complete and in order\n\t\t\t\t\t\treturn $.map( names, function (name, i) {\n\t\t\t\t\t\t\treturn name === match[1] ? i : null;\n\t\t\t\t\t\t} );\n\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Cell in the table body\n\t\t\tif ( s.nodeName && s._DT_CellIndex ) {\n\t\t\t\treturn [ s._DT_CellIndex.column ];\n\t\t\t}\n\t\n\t\t\t// jQuery selector on the TH elements for the columns\n\t\t\tvar jqResult = $( nodes )\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn $.inArray( this, nodes ); // `nodes` is column index complete and in order\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\n\t\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\t\treturn jqResult;\n\t\t\t}\n\t\n\t\t\t// Otherwise a node which might have a `dt-column` data attribute, or be\n\t\t\t// a child or such an element\n\t\t\tvar host = $(s).closest('*[data-dt-column]');\n\t\t\treturn host.length ?\n\t\t\t\t[ host.data('dt-column') ] :\n\t\t\t\t[];\n\t\t};\n\t\n\t\treturn _selector_run( 'column', selector, run, settings, opts );\n\t};\n\t\n\t\n\tvar __setColumnVis = function ( settings, column, vis ) {\n\t\tvar\n\t\t\tcols = settings.aoColumns,\n\t\t\tcol  = cols[ column ],\n\t\t\tdata = settings.aoData,\n\t\t\trow, cells, i, ien, tr;\n\t\n\t\t// Get\n\t\tif ( vis === undefined ) {\n\t\t\treturn col.bVisible;\n\t\t}\n\t\n\t\t// Set\n\t\t// No change\n\t\tif ( col.bVisible === vis ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( vis ) {\n\t\t\t// Insert column\n\t\t\t// Need to decide if we should use appendChild or insertBefore\n\t\t\tvar insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );\n\t\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\ttr = data[i].nTr;\n\t\t\t\tcells = data[i].anCells;\n\t\n\t\t\t\tif ( tr ) {\n\t\t\t\t\t// insertBefore can act like appendChild if 2nd arg is null\n\t\t\t\t\ttr.insertBefore( cells[ column ], cells[ insertBefore ] || null );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Remove column\n\t\t\t$( _pluck( settings.aoData, 'anCells', column ) ).detach();\n\t\t}\n\t\n\t\t// Common actions\n\t\tcol.bVisible = vis;\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t_fnSaveState( settings );\n\t};\n\t\n\t\n\t_api_register( 'columns()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __column_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in _row_selector?\n\t\tinst.selector.cols = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTh;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTf;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().data()', 'column().data()', function () {\n\t\treturn this.iterator( 'column-rows', __columnData, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].mData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows,\n\t\t\t\ttype === 'search' ? '_aFilterData' : '_aSortData', column\n\t\t\t);\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, 'anCells', column ) ;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {\n\t\tvar ret = this.iterator( 'column', function ( settings, column ) {\n\t\t\tif ( vis === undefined ) {\n\t\t\t\treturn settings.aoColumns[ column ].bVisible;\n\t\t\t} // else\n\t\t\t__setColumnVis( settings, column, vis );\n\t\t} );\n\t\n\t\t// Group the column visibility changes\n\t\tif ( vis !== undefined ) {\n\t\t\t// Second loop once the first is done for events\n\t\t\tthis.iterator( 'column', function ( settings, column ) {\n\t\t\t\t_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );\n\t\t\t} );\n\t\n\t\t\tif ( calc === undefined || calc ) {\n\t\t\t\tthis.columns.adjust();\n\t\t\t}\n\t\t}\n\t\n\t\treturn ret;\n\t} );\n\t\n\t_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn type === 'visible' ?\n\t\t\t\t_fnColumnIndexToVisible( settings, column ) :\n\t\t\t\tcolumn;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'columns.adjust()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'column.index()', function ( type, idx ) {\n\t\tif ( this.context.length !== 0 ) {\n\t\t\tvar ctx = this.context[0];\n\t\n\t\t\tif ( type === 'fromVisible' || type === 'toData' ) {\n\t\t\t\treturn _fnVisibleToColumnIndex( ctx, idx );\n\t\t\t}\n\t\t\telse if ( type === 'fromData' || type === 'toVisible' ) {\n\t\t\t\treturn _fnColumnIndexToVisible( ctx, idx );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t_api_register( 'column()', function ( selector, opts ) {\n\t\treturn _selector_first( this.columns( selector, opts ) );\n\t} );\n\t\n\t\n\t\n\tvar __cell_selector = function ( settings, selector, opts )\n\t{\n\t\tvar data = settings.aoData;\n\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\tvar cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );\n\t\tvar allCells = $( [].concat.apply([], cells) );\n\t\tvar row;\n\t\tvar columns = settings.aoColumns.length;\n\t\tvar a, i, ien, j, o, host;\n\t\n\t\tvar run = function ( s ) {\n\t\t\tvar fnSelector = typeof s === 'function';\n\t\n\t\t\tif ( s === null || s === undefined || fnSelector ) {\n\t\t\t\t// All cells and function selectors\n\t\t\t\ta = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tfor ( j=0 ; j<columns ; j++ ) {\n\t\t\t\t\t\to = {\n\t\t\t\t\t\t\trow: row,\n\t\t\t\t\t\t\tcolumn: j\n\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\tif ( fnSelector ) {\n\t\t\t\t\t\t\t// Selector - function\n\t\t\t\t\t\t\thost = data[ row ];\n\t\n\t\t\t\t\t\t\tif ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {\n\t\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// Selector - all\n\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn a;\n\t\t\t}\n\t\t\t\n\t\t\t// Selector - index\n\t\t\tif ( $.isPlainObject( s ) ) {\n\t\t\t\treturn [s];\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery filtered cells\n\t\t\tvar jqResult = allCells\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function (i, el) {\n\t\t\t\t\treturn { // use a new object, in case someone changes the values\n\t\t\t\t\t\trow:    el._DT_CellIndex.row,\n\t\t\t\t\t\tcolumn: el._DT_CellIndex.column\n\t \t\t\t\t};\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\n\t\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\t\treturn jqResult;\n\t\t\t}\n\t\n\t\t\t// Otherwise the selector is a node, and there is one last option - the\n\t\t\t// element might be a child of an element which has dt-row and dt-column\n\t\t\t// data attributes\n\t\t\thost = $(s).closest('*[data-dt-row]');\n\t\t\treturn host.length ?\n\t\t\t\t[ {\n\t\t\t\t\trow: host.data('dt-row'),\n\t\t\t\t\tcolumn: host.data('dt-column')\n\t\t\t\t} ] :\n\t\t\t\t[];\n\t\t};\n\t\n\t\treturn _selector_run( 'cell', selector, run, settings, opts );\n\t};\n\t\n\t\n\t\n\t\n\t_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {\n\t\t// Argument shifting\n\t\tif ( $.isPlainObject( rowSelector ) ) {\n\t\t\t// Indexes\n\t\t\tif ( rowSelector.row === undefined ) {\n\t\t\t\t// Selector options in first parameter\n\t\t\t\topts = rowSelector;\n\t\t\t\trowSelector = null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Cell index objects in first parameter\n\t\t\t\topts = columnSelector;\n\t\t\t\tcolumnSelector = null;\n\t\t\t}\n\t\t}\n\t\tif ( $.isPlainObject( columnSelector ) ) {\n\t\t\topts = columnSelector;\n\t\t\tcolumnSelector = null;\n\t\t}\n\t\n\t\t// Cell selector\n\t\tif ( columnSelector === null || columnSelector === undefined ) {\n\t\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t\treturn __cell_selector( settings, rowSelector, _selector_opts( opts ) );\n\t\t\t} );\n\t\t}\n\t\n\t\t// Row + column selector\n\t\tvar columns = this.columns( columnSelector, opts );\n\t\tvar rows = this.rows( rowSelector, opts );\n\t\tvar a, i, ien, j, jen;\n\t\n\t\tvar cells = this.iterator( 'table', function ( settings, idx ) {\n\t\t\ta = [];\n\t\n\t\t\tfor ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {\n\t\t\t\tfor ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {\n\t\t\t\t\ta.push( {\n\t\t\t\t\t\trow:    rows[idx][i],\n\t\t\t\t\t\tcolumn: columns[idx][j]\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn a;\n\t\t}, 1 );\n\t\n\t\t$.extend( cells.selector, {\n\t\t\tcols: columnSelector,\n\t\t\trows: rowSelector,\n\t\t\topts: opts\n\t\t} );\n\t\n\t\treturn cells;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\tvar data = settings.aoData[ row ];\n\t\n\t\t\treturn data && data.anCells ?\n\t\t\t\tdata.anCells[ column ] :\n\t\t\t\tundefined;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_register( 'cells().data()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {\n\t\ttype = type === 'search' ? '_aFilterData' : '_aSortData';\n\t\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn settings.aoData[ row ][ type ][ column ];\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column, type );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn {\n\t\t\t\trow: row,\n\t\t\t\tcolumn: column,\n\t\t\t\tcolumnVisible: _fnColumnIndexToVisible( settings, column )\n\t\t\t};\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\t_fnInvalidate( settings, row, src, column );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {\n\t\treturn _selector_first( this.cells( rowSelector, columnSelector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'cell().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\tvar cell = this[0];\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && cell.length ?\n\t\t\t\t_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\t_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );\n\t\t_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get current ordering (sorting) that has been applied to the table.\n\t *\n\t * @returns {array} 2D array containing the sorting information for the first\n\t *   table in the current context. Each element in the parent array represents\n\t *   a column being sorted upon (i.e. multi-sorting with two columns would have\n\t *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is\n\t *   the column index that the sorting condition applies to, the second is the\n\t *   direction of the sort (`desc` or `asc`) and, optionally, the third is the\n\t *   index of the sorting order from the `column.sorting` initialisation array.\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {integer} order Column index to sort upon.\n\t * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 1D array of sorting information to be applied.\n\t * @param {array} [...] Optional additional sorting conditions\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 2D array of sorting information to be applied.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order()', function ( order, dir ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( order === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].aaSorting :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\tif ( typeof order === 'number' ) {\n\t\t\t// Simple column / direction passed in\n\t\t\torder = [ [ order, dir ] ];\n\t\t}\n\t\telse if ( order.length && ! $.isArray( order[0] ) ) {\n\t\t\t// Arguments passed in (list of 1D arrays)\n\t\t\torder = Array.prototype.slice.call( arguments );\n\t\t}\n\t\t// otherwise a 2D array was passed in\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSorting = order.slice();\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Attach a sort listener to an element for a given column\n\t *\n\t * @param {node|jQuery|string} node Identifier for the element(s) to attach the\n\t *   listener to. This can take the form of a single DOM node, a jQuery\n\t *   collection of nodes or a jQuery selector which will identify the node(s).\n\t * @param {integer} column the column that a click on this node will sort on\n\t * @param {function} [callback] callback function when sort is run\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order.listener()', function ( node, column, callback ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSortAttachListener( settings, node, column, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'order.fixed()', function ( set ) {\n\t\tif ( ! set ) {\n\t\t\tvar ctx = this.context;\n\t\t\tvar fixed = ctx.length ?\n\t\t\t\tctx[0].aaSortingFixed :\n\t\t\t\tundefined;\n\t\n\t\t\treturn $.isArray( fixed ) ?\n\t\t\t\t{ pre: fixed } :\n\t\t\t\tfixed;\n\t\t}\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSortingFixed = $.extend( true, {}, set );\n\t\t} );\n\t} );\n\t\n\t\n\t// Order by the selected column(s)\n\t_api_register( [\n\t\t'columns().order()',\n\t\t'column().order()'\n\t], function ( dir ) {\n\t\tvar that = this;\n\t\n\t\treturn this.iterator( 'table', function ( settings, i ) {\n\t\t\tvar sort = [];\n\t\n\t\t\t$.each( that[i], function (j, col) {\n\t\t\t\tsort.push( [ col, dir ] );\n\t\t\t} );\n\t\n\t\t\tsettings.aaSorting = sort;\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'search()', function ( input, regex, smart, caseInsen ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( input === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].oPreviousSearch.sSearch :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {\n\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t} ), 1 );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural(\n\t\t'columns().search()',\n\t\t'column().search()',\n\t\tfunction ( input, regex, smart, caseInsen ) {\n\t\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\t\tvar preSearch = settings.aoPreSearchCols;\n\t\n\t\t\t\tif ( input === undefined ) {\n\t\t\t\t\t// get\n\t\t\t\t\treturn preSearch[ column ].sSearch;\n\t\t\t\t}\n\t\n\t\t\t\t// set\n\t\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t$.extend( preSearch[ column ], {\n\t\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t\t} );\n\t\n\t\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch, 1 );\n\t\t\t} );\n\t\t}\n\t);\n\t\n\t/*\n\t * State API methods\n\t */\n\t\n\t_api_register( 'state()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oSavedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t// Save an empty object\n\t\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, {} );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'state.loaded()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oLoadedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.save()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSaveState( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being\n\t * used, in order to ensure compatibility.\n\t *\n\t *  @param {string} version Version string to check for, in the format \"X.Y.Z\".\n\t *    Note that the formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to\n\t *    the required version, or false if this version of DataTales is not\n\t *    suitable\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );\n\t */\n\tDataTable.versionCheck = DataTable.fnVersionCheck = function( version )\n\t{\n\t\tvar aThis = DataTable.version.split('.');\n\t\tvar aThat = version.split('.');\n\t\tvar iThis, iThat;\n\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {\n\t\t\tiThis = parseInt( aThis[i], 10 ) || 0;\n\t\t\tiThat = parseInt( aThat[i], 10 ) || 0;\n\t\n\t\t\t// Parts are the same, keep comparing\n\t\t\tif (iThis === iThat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\t// Parts are different, return immediately\n\t\t\treturn iThis > iThat;\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Check if a `<table>` node is a DataTable table already or not.\n\t *\n\t *  @param {node|jquery|string} table Table node, jQuery object or jQuery\n\t *      selector for the table to test. Note that if more than more than one\n\t *      table is passed on, only the first will be checked\n\t *  @returns {boolean} true the table given is a DataTable, or false otherwise\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {\n\t *      $('#example').dataTable();\n\t *    }\n\t */\n\tDataTable.isDataTable = DataTable.fnIsDataTable = function ( table )\n\t{\n\t\tvar t = $(table).get(0);\n\t\tvar is = false;\n\t\n\t\tif ( table instanceof DataTable.Api ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\t$.each( DataTable.settings, function (i, o) {\n\t\t\tvar head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;\n\t\t\tvar foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;\n\t\n\t\t\tif ( o.nTable === t || head === t || foot === t ) {\n\t\t\t\tis = true;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn is;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can\n\t * select to get only currently visible tables.\n\t *\n\t *  @param {boolean} [visible=false] Flag to indicate if you want all (default)\n\t *    or visible tables only.\n\t *  @returns {array} Array of `table` nodes (not DataTable instances) which are\n\t *    DataTables\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    $.each( $.fn.dataTable.tables(true), function () {\n\t *      $(table).DataTable().columns.adjust();\n\t *    } );\n\t */\n\tDataTable.tables = DataTable.fnTables = function ( visible )\n\t{\n\t\tvar api = false;\n\t\n\t\tif ( $.isPlainObject( visible ) ) {\n\t\t\tapi = visible.api;\n\t\t\tvisible = visible.visible;\n\t\t}\n\t\n\t\tvar a = $.map( DataTable.settings, function (o) {\n\t\t\tif ( !visible || (visible && $(o.nTable).is(':visible')) ) {\n\t\t\t\treturn o.nTable;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn api ?\n\t\t\tnew _Api( a ) :\n\t\t\ta;\n\t};\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian notation. This is made public\n\t * for the extensions to provide the same ability as DataTables core to accept\n\t * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase\n\t * parameters.\n\t *\n\t *  @param {object} src The model object which holds all parameters that can be\n\t *    mapped.\n\t *  @param {object} user The object to convert from camel case to Hungarian.\n\t *  @param {boolean} force When set to `true`, properties which already have a\n\t *    Hungarian value in the `user` object will be overwritten. Otherwise they\n\t *    won't be.\n\t */\n\tDataTable.camelToHungarian = _fnCamelToHungarian;\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( '$()', function ( selector, opts ) {\n\t\tvar\n\t\t\trows   = this.rows( opts ).nodes(), // Get all rows\n\t\t\tjqRows = $(rows);\n\t\n\t\treturn $( [].concat(\n\t\t\tjqRows.filter( selector ).toArray(),\n\t\t\tjqRows.find( selector ).toArray()\n\t\t) );\n\t} );\n\t\n\t\n\t// jQuery functions to operate on the tables\n\t$.each( [ 'on', 'one', 'off' ], function (i, key) {\n\t\t_api_register( key+'()', function ( /* event, handler */ ) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\n\t\t\t// Add the `dt` namespace automatically if it isn't already present\n\t\t\targs[0] = $.map( args[0].split( /\\s/ ), function ( e ) {\n\t\t\t\treturn ! e.match(/\\.dt\\b/) ?\n\t\t\t\t\te+'.dt' :\n\t\t\t\t\te;\n\t\t\t\t} ).join( ' ' );\n\t\n\t\t\tvar inst = $( this.tables().nodes() );\n\t\t\tinst[key].apply( inst, args );\n\t\t\treturn this;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnClearTable( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'settings()', function () {\n\t\treturn new _Api( this.context, this.context );\n\t} );\n\t\n\t\n\t_api_register( 'init()', function () {\n\t\tvar ctx = this.context;\n\t\treturn ctx.length ? ctx[0].oInit : null;\n\t} );\n\t\n\t\n\t_api_register( 'data()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\treturn _pluck( settings.aoData, '_aData' );\n\t\t} ).flatten();\n\t} );\n\t\n\t\n\t_api_register( 'destroy()', function ( remove ) {\n\t\tremove = remove || false;\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tvar orig      = settings.nTableWrapper.parentNode;\n\t\t\tvar classes   = settings.oClasses;\n\t\t\tvar table     = settings.nTable;\n\t\t\tvar tbody     = settings.nTBody;\n\t\t\tvar thead     = settings.nTHead;\n\t\t\tvar tfoot     = settings.nTFoot;\n\t\t\tvar jqTable   = $(table);\n\t\t\tvar jqTbody   = $(tbody);\n\t\t\tvar jqWrapper = $(settings.nTableWrapper);\n\t\t\tvar rows      = $.map( settings.aoData, function (r) { return r.nTr; } );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Flag to note that the table is currently being destroyed - no action\n\t\t\t// should be taken\n\t\t\tsettings.bDestroying = true;\n\t\n\t\t\t// Fire off the destroy callbacks for plug-ins etc\n\t\t\t_fnCallbackFire( settings, \"aoDestroyCallback\", \"destroy\", [settings] );\n\t\n\t\t\t// If not being removed from the document, make all columns visible\n\t\t\tif ( ! remove ) {\n\t\t\t\tnew _Api( settings ).columns().visible( true );\n\t\t\t}\n\t\n\t\t\t// Blitz all `DT` namespaced events (these are internal events, the\n\t\t\t// lowercase, `dt` events are user subscribed and they are responsible\n\t\t\t// for removing them\n\t\t\tjqWrapper.off('.DT').find(':not(tbody *)').off('.DT');\n\t\t\t$(window).off('.DT-'+settings.sInstance);\n\t\n\t\t\t// When scrolling we had to break the table up - restore it\n\t\t\tif ( table != thead.parentNode ) {\n\t\t\t\tjqTable.children('thead').detach();\n\t\t\t\tjqTable.append( thead );\n\t\t\t}\n\t\n\t\t\tif ( tfoot && table != tfoot.parentNode ) {\n\t\t\t\tjqTable.children('tfoot').detach();\n\t\t\t\tjqTable.append( tfoot );\n\t\t\t}\n\t\n\t\t\tsettings.aaSorting = [];\n\t\t\tsettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( settings );\n\t\n\t\t\t$( rows ).removeClass( settings.asStripeClasses.join(' ') );\n\t\n\t\t\t$('th, td', thead).removeClass( classes.sSortable+' '+\n\t\t\t\tclasses.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone\n\t\t\t);\n\t\n\t\t\t// Add the TR elements back into the table in their original order\n\t\t\tjqTbody.children().detach();\n\t\t\tjqTbody.append( rows );\n\t\n\t\t\t// Remove the DataTables generated nodes, events and classes\n\t\t\tvar removedMethod = remove ? 'remove' : 'detach';\n\t\t\tjqTable[ removedMethod ]();\n\t\t\tjqWrapper[ removedMethod ]();\n\t\n\t\t\t// If we need to reattach the table to the document\n\t\t\tif ( ! remove && orig ) {\n\t\t\t\t// insertBefore acts like appendChild if !arg[1]\n\t\t\t\torig.insertBefore( table, settings.nTableReinsertBefore );\n\t\n\t\t\t\t// Restore the width of the original table - was read from the style property,\n\t\t\t\t// so we can restore directly to that\n\t\t\t\tjqTable\n\t\t\t\t\t.css( 'width', settings.sDestroyWidth )\n\t\t\t\t\t.removeClass( classes.sTable );\n\t\n\t\t\t\t// If the were originally stripe classes - then we add them back here.\n\t\t\t\t// Note this is not fool proof (for example if not all rows had stripe\n\t\t\t\t// classes - but it's a good effort without getting carried away\n\t\t\t\tien = settings.asDestroyStripes.length;\n\t\n\t\t\t\tif ( ien ) {\n\t\t\t\t\tjqTbody.children().each( function (i) {\n\t\t\t\t\t\t$(this).addClass( settings.asDestroyStripes[i % ien] );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tvar idx = $.inArray( settings, DataTable.settings );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\tDataTable.settings.splice( idx, 1 );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\t\n\t// Add the `every()` method for rows, columns and cells in a compact form\n\t$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {\n\t\t_api_register( type+'s().every()', function ( fn ) {\n\t\t\tvar opts = this.selector.opts;\n\t\t\tvar api = this;\n\t\n\t\t\treturn this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {\n\t\t\t\t// Rows and columns:\n\t\t\t\t//  arg1 - index\n\t\t\t\t//  arg2 - table counter\n\t\t\t\t//  arg3 - loop counter\n\t\t\t\t//  arg4 - undefined\n\t\t\t\t// Cells:\n\t\t\t\t//  arg1 - row index\n\t\t\t\t//  arg2 - column index\n\t\t\t\t//  arg3 - table counter\n\t\t\t\t//  arg4 - loop counter\n\t\t\t\tfn.call(\n\t\t\t\t\tapi[ type ](\n\t\t\t\t\t\targ1,\n\t\t\t\t\t\ttype==='cell' ? arg2 : opts,\n\t\t\t\t\t\ttype==='cell' ? opts : undefined\n\t\t\t\t\t),\n\t\t\t\t\targ1, arg2, arg3, arg4\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t} );\n\t\n\t\n\t// i18n method for extensions to be able to use the language object from the\n\t// DataTable\n\t_api_register( 'i18n()', function ( token, def, plural ) {\n\t\tvar ctx = this.context[0];\n\t\tvar resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );\n\t\n\t\tif ( resolved === undefined ) {\n\t\t\tresolved = def;\n\t\t}\n\t\n\t\tif ( plural !== undefined && $.isPlainObject( resolved ) ) {\n\t\t\tresolved = resolved[ plural ] !== undefined ?\n\t\t\t\tresolved[ plural ] :\n\t\t\t\tresolved._;\n\t\t}\n\t\n\t\treturn resolved.replace( '%d', plural ); // nb: plural might be undefined,\n\t} );\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used\n\t * only for non-release builds. See http://semver.org/ for more information.\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.10.16\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are\n\t * created for the tables on a given page.\n\t *\n\t * Note that the `DataTable.settings` object is aliased to\n\t * `jQuery.fn.dataTableExt` through which it may be accessed and\n\t * manipulated, or `jQuery.fn.dataTable.settings`.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has\n\t * available to it. These models define the objects that are used to hold\n\t * the active state and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t *  @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings\n\t * aoData array.\n\t *  @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Array of TD elements for each row. This is null until the row has been\n\t\t * created.\n\t\t *  @type array nodes\n\t\t *  @default []\n\t\t */\n\t\t\"anCells\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data\n\t\t * source.\n\t\t *  @type array|object\n\t\t *  @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is\n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_aSortData\": null,\n\t\n\t\t/**\n\t\t * Per cell filtering data cache. As per the sort data cache, used to\n\t\t * increase the performance of the filtering in DataTables\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_aFilterData\": null,\n\t\n\t\t/**\n\t\t * Filtering data cache. This is the same as the cell filtering cache, but\n\t\t * in this case a string rather than an array. This is easily computed with\n\t\t * a join on `_aFilterData`, but is provided as a cache so the join isn't\n\t\t * needed on every search (memory traded for performance)\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_sFilterRow\": null,\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @private\n\t\t */\n\t\t\"_sRowStripe\": \"\",\n\t\n\t\t/**\n\t\t * Denote if the original data source was from the DOM, or the data source\n\t\t * object. This is used for invalidating data, so DataTables can\n\t\t * automatically read data from the original source, unless uninstructed\n\t\t * otherwise.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"src\": null,\n\t\n\t\t/**\n\t\t * Index in the aoData array. This saves an indexOf lookup when we have the\n\t\t * object, but want to know the index\n\t\t *  @type integer\n\t\t *  @default -1\n\t\t *  @private\n\t\t */\n\t\t\"idx\": -1\n\t};\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults.column}\n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t *  @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * Column index. This could be worked out on-the-fly with $.inArray, but it\n\t\t * is faster to just hold it as a variable\n\t\t *  @type integer\n\t\t *  @default null\n\t\t */\n\t\t\"idx\": null,\n\t\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t *  @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t *  @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t *  @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\n\t\t/**\n\t\t * Store for manual type assignment using the `column.type` option. This\n\t\t * is held in store so we can manipulate the column's `sType` property.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_sManualType\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if HTML5 data attributes should be used as the data\n\t\t * source for filtering or sorting. True is either are.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @private\n\t\t */\n\t\t\"_bAttrSrc\": false,\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column\n\t\t * initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array\n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {string} sSpecific The specific data type you want to get -\n\t\t *    'display', 'type' 'filter' 'sort'\n\t\t *  @returns {*} The data for the cell from the given row's data\n\t\t *  @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b>\n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array\n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {*} sValue Value to set\n\t\t *  @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data\n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used\n\t\t * in DataTables as such, but can be used for plug-ins to reference the\n\t\t * footer for each column.\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t *  @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t *  @type string\n\t\t */\n\t\t\"sName\": null,\n\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t *  @type string\n\t\t *  @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t *  @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\t/**\n\t\t * Width of the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t/*\n\t * Developer note: The properties of the object below are given in Hungarian\n\t * notation, that was used as the interface for DataTables prior to v1.10, however\n\t * from v1.10 onwards the primary interface is camel case. In order to avoid\n\t * breaking backwards compatibility utterly with this change, the Hungarian\n\t * version is still, internally the primary interface, but is is not documented\n\t * - hence the @name tags in each doc comment. This allows a Javascript function\n\t * to create a map from Hungarian notation to camel case (going the other direction\n\t * would require each property to be listed, which would at around 3K to the size\n\t * of DataTables, while this method is about a 0.5K hit.\n\t *\n\t * Ultimately this does pave the way for Hungarian notation to be dropped\n\t * completely, but that is a massive amount of work and will break current\n\t * installs (therefore is on-hold until v2).\n\t */\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation\n\t * time.\n\t *  @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which\n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.data\n\t\t *\n\t\t *  @example\n\t\t *    // Using a 2D array data source\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"data\": [\n\t\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t *        ],\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"Engine\" },\n\t\t *          { \"title\": \"Browser\" },\n\t\t *          { \"title\": \"Platform\" },\n\t\t *          { \"title\": \"Version\" },\n\t\t *          { \"title\": \"Grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using an array of objects as a data source (`data`)\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"data\": [\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  4,\n\t\t *            \"grade\":    \"X\"\n\t\t *          },\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  5,\n\t\t *            \"grade\":    \"C\"\n\t\t *          }\n\t\t *        ],\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"Engine\",   \"data\": \"engine\" },\n\t\t *          { \"title\": \"Browser\",  \"data\": \"browser\" },\n\t\t *          { \"title\": \"Platform\", \"data\": \"platform\" },\n\t\t *          { \"title\": \"Version\",  \"data\": \"version\" },\n\t\t *          { \"title\": \"Grade\",    \"data\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If ordering is enabled, then DataTables will perform a first pass sort on\n\t\t * initialisation. You can define which column(s) the sort is performed\n\t\t * upon, and the sorting direction, with this variable. The `sorting` array\n\t\t * should contain an array for each column to be sorted initially containing\n\t\t * the column's index and a direction string ('asc' or 'desc').\n\t\t *  @type array\n\t\t *  @default [[0,'asc']]\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.order\n\t\t *\n\t\t *  @example\n\t\t *    // Sort by 3rd column first, and then 4th column\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"order\": [[2,'asc'], [3,'desc']]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *    // No initial sorting\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"order\": []\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the `sorting` parameter, but\n\t\t * cannot be overridden by user interaction with the table. What this means\n\t\t * is that you could have a column (visible or hidden) which the sorting\n\t\t * will always be forced on first - any sorting after that (from the user)\n\t\t * will then be performed as required. This can be useful for grouping rows\n\t\t * together.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.orderFixed\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderFixed\": [[0,'asc']]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\n\t\t/**\n\t\t * DataTables can be instructed to load data to display in the table from a\n\t\t * Ajax source. This option defines how that Ajax call is made and where to.\n\t\t *\n\t\t * The `ajax` property has three different modes of operation, depending on\n\t\t * how it is defined. These are:\n\t\t *\n\t\t * * `string` - Set the URL from where the data should be loaded from.\n\t\t * * `object` - Define properties for `jQuery.ajax`.\n\t\t * * `function` - Custom data get function\n\t\t *\n\t\t * `string`\n\t\t * --------\n\t\t *\n\t\t * As a string, the `ajax` property simply defines the URL from which\n\t\t * DataTables will load data.\n\t\t *\n\t\t * `object`\n\t\t * --------\n\t\t *\n\t\t * As an object, the parameters in the object are passed to\n\t\t * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control\n\t\t * of the Ajax request. DataTables has a number of default parameters which\n\t\t * you can override using this option. Please refer to the jQuery\n\t\t * documentation for a full description of the options available, although\n\t\t * the following parameters provide additional options in DataTables or\n\t\t * require special consideration:\n\t\t *\n\t\t * * `data` - As with jQuery, `data` can be provided as an object, but it\n\t\t *   can also be used as a function to manipulate the data DataTables sends\n\t\t *   to the server. The function takes a single parameter, an object of\n\t\t *   parameters with the values that DataTables has readied for sending. An\n\t\t *   object may be returned which will be merged into the DataTables\n\t\t *   defaults, or you can add the items to the object that was passed in and\n\t\t *   not return anything from the function. This supersedes `fnServerParams`\n\t\t *   from DataTables 1.9-.\n\t\t *\n\t\t * * `dataSrc` - By default DataTables will look for the property `data` (or\n\t\t *   `aaData` for compatibility with DataTables 1.9-) when obtaining data\n\t\t *   from an Ajax source or for server-side processing - this parameter\n\t\t *   allows that property to be changed. You can use Javascript dotted\n\t\t *   object notation to get a data source for multiple levels of nesting, or\n\t\t *   it my be used as a function. As a function it takes a single parameter,\n\t\t *   the JSON returned from the server, which can be manipulated as\n\t\t *   required, with the returned value being that used by DataTables as the\n\t\t *   data source for the table. This supersedes `sAjaxDataProp` from\n\t\t *   DataTables 1.9-.\n\t\t *\n\t\t * * `success` - Should not be overridden it is used internally in\n\t\t *   DataTables. To manipulate / transform the data returned by the server\n\t\t *   use `ajax.dataSrc`, or use `ajax` as a function (see below).\n\t\t *\n\t\t * `function`\n\t\t * ----------\n\t\t *\n\t\t * As a function, making the Ajax call is left up to yourself allowing\n\t\t * complete control of the Ajax request. Indeed, if desired, a method other\n\t\t * than Ajax could be used to obtain the required data, such as Web storage\n\t\t * or an AIR database.\n\t\t *\n\t\t * The function is given four parameters and no return is required. The\n\t\t * parameters are:\n\t\t *\n\t\t * 1. _object_ - Data to send to the server\n\t\t * 2. _function_ - Callback function that must be executed when the required\n\t\t *    data has been obtained. That data should be passed into the callback\n\t\t *    as the only parameter\n\t\t * 3. _object_ - DataTables settings object for the table\n\t\t *\n\t\t * Note that this supersedes `fnServerData` from DataTables 1.9-.\n\t\t *\n\t\t *  @type string|object|function\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.ajax\n\t\t *  @since 1.10.0\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax.\n\t\t *   // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": \"data.json\"\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax, using `dataSrc` to change\n\t\t *   // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": \"tableData\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax, using `dataSrc` to read data\n\t\t *   // from a plain array rather than an array in an object\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": \"\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Manipulate the data returned from the server - add a link to data\n\t\t *   // (note this can, should, be done using `render` for the column - this\n\t\t *   // is just a simple example of how the data can be manipulated).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": function ( json ) {\n\t\t *         for ( var i=0, ien=json.length ; i<ien ; i++ ) {\n\t\t *           json[i][0] = '<a href=\"/message/'+json[i][0]+'>View message</a>';\n\t\t *         }\n\t\t *         return json;\n\t\t *       }\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Add data to the request\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"data\": function ( d ) {\n\t\t *         return {\n\t\t *           \"extra_search\": $('#extra').val()\n\t\t *         };\n\t\t *       }\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Send request as POST\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"type\": \"POST\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get the data from localStorage (could interface with a form for\n\t\t *   // adding, editing and removing rows).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": function (data, callback, settings) {\n\t\t *       callback(\n\t\t *         JSON.parse( localStorage.getItem('dataTablesData') )\n\t\t *       );\n\t\t *     }\n\t\t *   } );\n\t\t */\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be\n\t\t * either a 1D array of options which will be used for both the displayed\n\t\t * option and the value, or a 2D array which will use the array in the first\n\t\t * position as the value, and the array in the second position as the\n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *\n\t\t * Note that the `pageLength` property will be automatically set to the\n\t\t * first value given in this array, unless `pageLength` is also provided.\n\t\t *  @type array\n\t\t *  @default [ 10, 25, 50, 100 ]\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.lengthMenu\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The `columns` option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see\n\t\t * {@link DataTable.defaults.column}. Note that if you use `columns` to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t *  @member\n\t\t *\n\t\t *  @name DataTable.defaults.column\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to `columns`, `columnDefs` allows you to target a specific\n\t\t * column, multiple columns, or all columns, using the `targets` property of\n\t\t * each object in the array. This allows great flexibility when creating\n\t\t * tables, as the `columnDefs` arrays can be of any length, targeting the\n\t\t * columns you specifically want. `columnDefs` may use any of the column\n\t\t * options available: {@link DataTable.defaults.column}, but it _must_\n\t\t * have `targets` defined in each object in the array. Values in the `targets`\n\t\t * array may be:\n\t\t *   <ul>\n\t\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t\t *     <li>a negative integer - column index counting from the right</li>\n\t\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t *   </ul>\n\t\t *  @member\n\t\t *\n\t\t *  @name DataTable.defaults.columnDefs\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as `search`, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size\n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * `search` and `escapeRegex` (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.searchCols\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searchCols\": [\n\t\t *          null,\n\t\t *          { \"search\": \"My filter\" },\n\t\t *          null,\n\t\t *          { \"search\": \"^[0-9]\", \"escapeRegex\": false }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This\n\t\t * array may be of any length, and DataTables will apply each class\n\t\t * sequentially, looping when required.\n\t\t *  @type array\n\t\t *  @default null <i>Will take the values determined by the `oClasses.stripe*`\n\t\t *    options</i>\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.stripeClasses\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using `columns`.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.autoWidth\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"autoWidth\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.deferRender\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajax\": \"sources/arrays.txt\",\n\t\t *        \"deferRender\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with\n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.destroy\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"srollY\": \"200px\",\n\t\t *        \"paginate\": false\n\t\t *      } );\n\t\t *\n\t\t *      // Some time later....\n\t\t *      $('#example').dataTable( {\n\t\t *        \"filter\": false,\n\t\t *        \"destroy\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.dom}.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.searching\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searching\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information\n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.info\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"info\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.lengthChange\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"lengthChange\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.paging\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"paging\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.processing\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"processing\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). `destroy` can be used to reinitialise a table if\n\t\t * you need.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.retrieve\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      initTable();\n\t\t *      tableActions();\n\t\t *    } );\n\t\t *\n\t\t *    function initTable ()\n\t\t *    {\n\t\t *      return $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200px\",\n\t\t *        \"paginate\": false,\n\t\t *        \"retrieve\": true\n\t\t *      } );\n\t\t *    }\n\t\t *\n\t\t *    function tableActions ()\n\t\t *    {\n\t\t *      var table = initTable();\n\t\t *      // perform API operations with oTable\n\t\t *    }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.scrollCollapse\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200\",\n\t\t *        \"scrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * `ajax` parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverSide\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"xhr.php\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the `sortable` option for each column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.ordering\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ordering\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or display DataTables' ability to sort multiple columns at the\n\t\t * same time (activated by shift-click by the user).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.orderMulti\n\t\t *\n\t\t *  @example\n\t\t *    // Disable multiple column sorting ability\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderMulti\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortMulti\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.orderCellsTop\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderCellsTop\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes `sorting\\_1`, `sorting\\_2` and\n\t\t * `sorting\\_3` to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.orderClasses\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderClasses\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled HTML5 `localStorage` will be\n\t\t * used to save table display information such as pagination information,\n\t\t * display length, filtering and sorting. As such when the end user reloads\n\t\t * the page the display display will match what thy had previously set up.\n\t\t *\n\t\t * Due to the use of `localStorage` the default state saving is not supported\n\t\t * in IE6 or 7. If state saving is required in those browsers, use\n\t\t * `stateSaveCallback` to provide a storage solution such as cookies.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.stateSave\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t *  @type function\n\t\t *  @param {node} row \"TR\" element for the current row\n\t\t *  @param {array} data Raw data array for this row\n\t\t *  @param {int} dataIndex The index of this row in the internal aoData array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.createdRow\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"createdRow\": function( row, data, dataIndex ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( data[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.drawCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"drawCallback\": function( settings ) {\n\t\t *          alert( 'DataTables has redrawn the table' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' event.\n\t\t *  @type function\n\t\t *  @param {node} foot \"TR\" element for the footer\n\t\t *  @param {array} data Full table data (as derived from the original HTML)\n\t\t *  @param {int} start Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} end Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} display Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.footerCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"footerCallback\": function( tfoot, data, start, end, display ) {\n\t\t *          tfoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+start;\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {int} toFormat number to be formatted\n\t\t *  @returns {string} formatted string for DataTables to show the number\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.formatNumber\n\t\t *\n\t\t *  @example\n\t\t *    // Format a number using a single quote for the separator (note that\n\t\t *    // this can also be done with the language.thousands option)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"formatNumber\": function ( toFormat ) {\n\t\t *          return toFormat.toString().replace(\n\t\t *            /\\B(?=(\\d{3})+(?!\\d))/g, \"'\"\n\t\t *          );\n\t\t *        };\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( toFormat ) {\n\t\t\treturn toFormat.toString().replace(\n\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\t\t\tthis.oLanguage.sThousands\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t *  @type function\n\t\t *  @param {node} head \"TR\" element for the header\n\t\t *  @param {array} data Full table data (as derived from the original HTML)\n\t\t *  @param {int} start Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} end Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} display Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.headerCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fheaderCallback\": function( head, data, start, end, display ) {\n\t\t *          head.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(end-start)+\" records\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {int} start Starting position in data for the draw\n\t\t *  @param {int} end End position in data for the draw\n\t\t *  @param {int} max Total number of rows in the table (regardless of\n\t\t *    filtering)\n\t\t *  @param {int} total Total number of rows in the data set, after filtering\n\t\t *  @param {string} pre The string that DataTables has formatted using it's\n\t\t *    own rules\n\t\t *  @returns {string} The string to be displayed in the information element.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.infoCallback\n\t\t *\n\t\t *  @example\n\t\t *    $('#example').dataTable( {\n\t\t *      \"infoCallback\": function( settings, start, end, max, total, pre ) {\n\t\t *        return start +\" to \"+ end;\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} json The JSON object request from the server - only\n\t\t *    present if client-side Ajax sourced data is used\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.initComplete\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"initComplete\": function(settings, json) {\n\t\t *          alert( 'DataTables has finished its initialisation.' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t\t *    return) will allow it to complete.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.preDrawCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"preDrawCallback\": function( settings ) {\n\t\t *          if ( $('#test').val() == 1 ) {\n\t\t *            return false;\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t *  @type function\n\t\t *  @param {node} row \"TR\" element for the current row\n\t\t *  @param {array} data Raw data array for this row\n\t\t *  @param {int} displayIndex The display index for the current table draw\n\t\t *  @param {int} displayIndexFull The index of the data in the full list of\n\t\t *    rows (after filtering)\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.rowCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"rowCallback\": function( row, data, displayIndex, displayIndexFull ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( data[4] == \"A\" ) {\n\t\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server so something more suitable for your application.\n\t\t * For example you could use POST data, or pull information from a Gears or\n\t\t * AIR database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {string} source HTTP source to obtain the data from (`ajax`)\n\t\t *  @param {array} data A key/value pair object containing the data to send\n\t\t *    to the server\n\t\t *  @param {function} callback to be called on completion of the data get\n\t\t *    process that will draw the data on the page.\n\t\t *  @param {object} settings DataTables settings object\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverData\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t *  It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t *  @type function\n\t\t *  @param {array} data Data array (array of objects which are name/value\n\t\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t\t *    server. In the case of Ajax sourced data with server-side processing\n\t\t *    this will be an empty array, for server-side processing there will be a\n\t\t *    significant number of parameters!\n\t\t *  @returns {undefined} Ensure that you modify the data array passed in,\n\t\t *    as this is passed by reference.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverParams\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} callback Callback that can be executed when done. It\n\t\t *    should be passed the loaded state object.\n\t\t *  @return {object} The DataTables state object to be loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoadCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadCallback\": function (settings, callback) {\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_load\",\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"success\": function (json) {\n\t\t *              callback( json );\n\t\t *            }\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadCallback\": function ( settings ) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(\n\t\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(\n\t\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for\n\t\t * plug-in authors, you should use the `stateLoadParams` event to load parameters for\n\t\t * a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object that is to be loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoadParams\n\t\t *\n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never loaded\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadParams\": function (settings, data) {\n\t\t *          data.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Disallow state loading by returning false\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadParams\": function (settings, data) {\n\t\t *          return false;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object that was loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoaded\n\t\t *\n\t\t *  @example\n\t\t *    // Show an alert with the filtering value that was saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoaded\": function (settings, data) {\n\t\t *          alert( 'Saved filter was: '+data.oSearch.sSearch );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored By default DataTables will use `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object to be saved\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateSaveCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateSaveCallback\": function (settings, data) {\n\t\t *          // Send an Ajax request to the server with the state object\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_save\",\n\t\t *            \"data\": data,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"method\": \"POST\"\n\t\t *            \"success\": function () {}\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveCallback\": function ( settings, data ) {\n\t\t\ttry {\n\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(\n\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname,\n\t\t\t\t\tJSON.stringify( data )\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table\n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or\n\t\t * other state properties or modification. Note that for plug-in authors, you should\n\t\t * use the `stateSaveParams` event to save parameters for a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object to be saved\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateSaveParams\n\t\t *\n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateSaveParams\": function (settings, data) {\n\t\t *          data.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration for which the saved state information is considered valid. After this period\n\t\t * has elapsed the state will be returned to the default.\n\t\t * Value is given in seconds.\n\t\t *  @type int\n\t\t *  @default 7200 <i>(2 hours)</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.stateDuration\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateDuration\": 60*60*24; // 1 day\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iStateDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. `deferLoading`\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t *  @type int | array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.deferLoading\n\t\t *\n\t\t *  @example\n\t\t *    // 57 records available in the table, no filtering applied\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"scripts/server_processing.php\",\n\t\t *        \"deferLoading\": 57\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"scripts/server_processing.php\",\n\t\t *        \"deferLoading\": [ 57, 100 ],\n\t\t *        \"search\": {\n\t\t *          \"search\": \"my_filter\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (`lengthChange`) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.pageLength\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"pageLength\": 50\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.displayStart\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"displayStart\": 20\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a `tabindex` attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.tabIndex\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"tabIndex\": 1\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Classes that DataTables assigns to the various components and features\n\t\t * that it adds to the HTML table. This allows classes to be configured\n\t\t * during initialisation in addition to through the static\n\t\t * {@link DataTable.ext.oStdClasses} object).\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.classes\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.language\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t *  @namespace\n\t\t\t *  @name DataTable.defaults.language.aria\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.aria.sortAscending\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"aria\": {\n\t\t\t\t *            \"sortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.aria.sortDescending\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"aria\": {\n\t\t\t\t *            \"sortDescending\": \" - click/return to sort descending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the built-in pagination\n\t\t\t * control types.\n\t\t\t *  @namespace\n\t\t\t *  @name DataTable.defaults.language.paginate\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default First\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.first\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"first\": \"First page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Last\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.last\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"last\": \"Last page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the\n\t\t\t\t * next page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Next\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.next\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"next\": \"Next page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to\n\t\t\t\t * the previous page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Previous\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.previous\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"previous\": \"Previous page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to `zeroRecords` when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of `zeroRecords` will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t *  @type string\n\t\t\t *  @default No data available in table\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.emptyTable\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"emptyTable\": \"No data available in table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information\n\t\t\t * that is current on display on the page. The following tokens can be\n\t\t\t * used in the string and will be dynamically replaced as the table\n\t\t\t * display updates. This tokens can be placed anywhere in the string, or\n\t\t\t * removed as needed by the language requires:\n\t\t\t *\n\t\t\t * * `\\_START\\_` - Display index of the first record on the current page\n\t\t\t * * `\\_END\\_` - Display index of the last record on the current page\n\t\t\t * * `\\_TOTAL\\_` - Number of records in the table after filtering\n\t\t\t * * `\\_MAX\\_` - Number of records in the table without filtering\n\t\t\t * * `\\_PAGE\\_` - Current page number\n\t\t\t * * `\\_PAGES\\_` - Total number of pages of data in the table\n\t\t\t *\n\t\t\t *  @type string\n\t\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.info\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"info\": \"Showing page _PAGE_ of _PAGES_\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the\n\t\t\t * format of this string should match `info`.\n\t\t\t *  @type string\n\t\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoEmpty\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoEmpty\": \"No entries to show\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended\n\t\t\t * to the information (`info`) to give an idea of how strong the filtering\n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t *  @type string\n\t\t\t *  @default (filtered from _MAX_ total entries)\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoFiltered\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string</i>\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoPostFix\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This decimal place operator is a little different from the other\n\t\t\t * language options since DataTables doesn't output floating point\n\t\t\t * numbers, so it won't ever use this for display of a number. Rather,\n\t\t\t * what this parameter does is modify the sort methods of the table so\n\t\t\t * that numbers which are in a format which has a character other than\n\t\t\t * a period (`.`) as a decimal place will be sorted numerically.\n\t\t\t *\n\t\t\t * Note that numbers with different decimal places cannot be shown in\n\t\t\t * the same table and still be sortable, the table must be consistent.\n\t\t\t * However, multiple different tables on the page can use different\n\t\t\t * decimal place characters.\n\t\t\t *  @type string\n\t\t\t *  @default \n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.decimal\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"decimal\": \",\"\n\t\t\t *          \"thousands\": \".\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sDecimal\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (`formatNumber`) which is\n\t\t\t * used to format large numbers that are used in the table information.\n\t\t\t * By default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t *  @type string\n\t\t\t *  @default ,\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.thousands\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"thousands\": \"'\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sThousands\": \",\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t *  @type string\n\t\t\t *  @default Show _MENU_ entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.lengthMenu\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Language change only\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"lengthMenu\": \"Display _MENU_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Language and options change\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"lengthMenu\": 'Display <select>'+\n\t\t\t *            '<option value=\"10\">10</option>'+\n\t\t\t *            '<option value=\"20\">20</option>'+\n\t\t\t *            '<option value=\"30\">30</option>'+\n\t\t\t *            '<option value=\"40\">40</option>'+\n\t\t\t *            '<option value=\"50\">50</option>'+\n\t\t\t *            '<option value=\"-1\">All</option>'+\n\t\t\t *            '</select> records'\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t *  @type string\n\t\t\t *  @default Loading...\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.loadingRecords\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"loadingRecords\": \"Please wait - loading...\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t *  @type string\n\t\t\t *  @default Processing...\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.processing\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"processing\": \"DataTables is currently busy\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t *  @type string\n\t\t\t *  @default Search:\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.search\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Input text box will be appended at the end automatically\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"search\": \"Filter records:\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Specify where the filter should appear\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"search\": \"Apply filter _INPUT_ to table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Assign a `placeholder` attribute to the search `input` element\n\t\t\t *  @type string\n\t\t\t *  @default \n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.searchPlaceholder\n\t\t\t */\n\t\t\t\"sSearchPlaceholder\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.url\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"url\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. `emptyTable` is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t *  @type string\n\t\t\t *  @default No matching records found\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.zeroRecords\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"zeroRecords\": \"No records to display\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the `search` parameter must be\n\t\t * defined, but all other parameters are optional. When `regex` is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When `smart`\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.search\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"search\": {\"search\": \"Initial search\"}\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * By default DataTables will look for the property `data` (or `aaData` for\n\t\t * compatibility with DataTables 1.9-) when obtaining data from an Ajax\n\t\t * source or for server-side processing - this parameter allows that\n\t\t * property to be changed. You can use Javascript dotted object notation to\n\t\t * get a data source for multiple levels of nesting.\n\t\t *  @type string\n\t\t *  @default data\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.ajaxDataProp\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxDataProp\": \"data\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * You can instruct DataTables to load data from an external\n\t\t * source using this parameter (use aData if you want to pass data in you\n\t\t * already have). Simply provide a url a JSON object can be obtained from.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.ajaxSource\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *   <ul>\n\t\t *     <li>The following options are allowed:\n\t\t *       <ul>\n\t\t *         <li>'l' - Length changing</li>\n\t\t *         <li>'f' - Filtering input</li>\n\t\t *         <li>'t' - The table!</li>\n\t\t *         <li>'i' - Information</li>\n\t\t *         <li>'p' - Pagination</li>\n\t\t *         <li>'r' - pRocessing</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following constants are allowed:\n\t\t *       <ul>\n\t\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following syntax is expected:\n\t\t *       <ul>\n\t\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>Examples:\n\t\t *       <ul>\n\t\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *   </ul>\n\t\t *  @type string\n\t\t *  @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>\n\t\t *    <\"H\"lfr>t<\"F\"ip> <i>(when `jQueryUI` is true)</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.dom\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"dom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * Search delay option. This will throttle full table searches that use the\n\t\t * DataTables provided search input element (it does not effect calls to\n\t\t * `dt-api search()`, providing a delay before the search is made.\n\t\t *  @type integer\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.searchDelay\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searchDelay\": 200\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\n\t\t/**\n\t\t * DataTables features six different built-in options for the buttons to\n\t\t * display for pagination control:\n\t\t *\n\t\t * * `numbers` - Page number buttons only\n\t\t * * `simple` - 'Previous' and 'Next' buttons only\n\t\t * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers\n\t\t * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons\n\t\t * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers\n\t\t * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers\n\t\t *  \n\t\t * Further methods can be added using {@link DataTable.ext.oPagination}.\n\t\t *  @type string\n\t\t *  @default simple_numbers\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.pagingType\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"pagingType\": \"full_numbers\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sPaginationType\": \"simple_numbers\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a\n\t\t * certain layout, or you have a large number of columns in the table, you\n\t\t * can enable x-scrolling to show the table in a viewport, which can be\n\t\t * scrolled. This property can be `true` which will allow the table to\n\t\t * scroll horizontally when needed, or any CSS unit, or a number (in which\n\t\t * case it will be treated as a pixel measurement). Setting as simply `true`\n\t\t * is recommended.\n\t\t *  @type boolean|string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.scrollX\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollX\": true,\n\t\t *        \"scrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.scrollXInner\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollX\": \"100%\",\n\t\t *        \"scrollXInner\": \"110%\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.scrollY\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200px\",\n\t\t *        \"paginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t *  @type string\n\t\t *  @default GET\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverMethod\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sServerMethod\": \"GET\",\n\t\n\t\n\t\t/**\n\t\t * DataTables makes use of renderers when displaying HTML elements for\n\t\t * a table. These renderers can be added or modified by plug-ins to\n\t\t * generate suitable mark-up for a site. For example the Bootstrap\n\t\t * integration plug-in for DataTables uses a paging button renderer to\n\t\t * display pagination buttons in the mark-up required by Bootstrap.\n\t\t *\n\t\t * For further information about the renderers available see\n\t\t * DataTable.ext.renderer\n\t\t *  @type string|object\n\t\t *  @default null\n\t\t *\n\t\t *  @name DataTable.defaults.renderer\n\t\t *\n\t\t */\n\t\t\"renderer\": null,\n\t\n\t\n\t\t/**\n\t\t * Set the data property name that DataTables should use to get a row's id\n\t\t * to set as the `id` property in the node.\n\t\t *  @type string\n\t\t *  @default DT_RowId\n\t\t *\n\t\t *  @name DataTable.defaults.rowId\n\t\t */\n\t\t\"rowId\": \"DT_RowId\"\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults );\n\t\n\t\n\t\n\t/*\n\t * Developer note - See note in model.defaults.js about the use of Hungarian\n\t * notation and camel case.\n\t */\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t *  @namespace\n\t */\n\tDataTable.defaults.column = {\n\t\t/**\n\t\t * Define which column(s) an order will occur on for this column. This\n\t\t * allows a column's ordering to take multiple columns into account when\n\t\t * doing a sort or use the data from a different column. For example first\n\t\t * name / last name columns make sense to do a multi-column sort over the\n\t\t * two columns.\n\t\t *  @type array|int\n\t\t *  @default null <i>Takes the value of the column index automatically</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderData\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderData\": [ 0, 1 ], \"targets\": [ 0 ] },\n\t\t *          { \"orderData\": [ 1, 0 ], \"targets\": [ 1 ] },\n\t\t *          { \"orderData\": 2, \"targets\": [ 2 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"orderData\": [ 0, 1 ] },\n\t\t *          { \"orderData\": [ 1, 0 ] },\n\t\t *          { \"orderData\": 2 },\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * You can control the default ordering direction, and even alter the\n\t\t * behaviour of the sort handler (i.e. only allow ascending ordering etc)\n\t\t * using this parameter.\n\t\t *  @type array\n\t\t *  @default [ 'asc', 'desc' ]\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderSequence\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderSequence\": [ \"asc\" ], \"targets\": [ 1 ] },\n\t\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ], \"targets\": [ 2 ] },\n\t\t *          { \"orderSequence\": [ \"desc\" ], \"targets\": [ 3 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          { \"orderSequence\": [ \"asc\" ] },\n\t\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t *          { \"orderSequence\": [ \"desc\" ] },\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.searchable\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"searchable\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"searchable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable ordering on this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderable\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderable\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"orderable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.visible\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"visible\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"visible\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} td The TD node that has been created\n\t\t *  @param {*} cellData The Data for the cell\n\t\t *  @param {array|object} rowData The data for the whole row\n\t\t *  @param {int} row The row index for the aoData data store\n\t\t *  @param {int} col The column index for aoColumns\n\t\t *\n\t\t *  @name DataTable.defaults.column.createdCell\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [3],\n\t\t *          \"createdCell\": function (td, cellData, rowData, row, col) {\n\t\t *            if ( cellData == \"1.7\" ) {\n\t\t *              $(td).css('color', 'blue')\n\t\t *            }\n\t\t *          }\n\t\t *        } ]\n\t\t *      });\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by `data` in DataTables to ensure naming\n\t\t * consistency. `dataProp` can still be used, as there is backwards\n\t\t * compatibility in DataTables for this option, but it is strongly\n\t\t * recommended that you use `data` in preference to `dataProp`.\n\t\t *  @name DataTable.defaults.column.dataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any data source property,\n\t\t * including deeply nested objects / properties. `data` can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t *   default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t *   three 'special' options that can be used in the string to alter how\n\t\t *   DataTables reads the data from the source object:\n\t\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t *      Javascript to read from nested objects, so to can the options\n\t\t *      specified in `data`. For example: `browser.version` or\n\t\t *      `browser.name`. If your object parameter name contains a period, use\n\t\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t\t *      from and array source, joining the data with the characters provided\n\t\t *      between the two brackets. For example: `name[, ]` would provide a\n\t\t *      comma-space separated list from the source array. If no characters\n\t\t *      are provided between the brackets, the original array source is\n\t\t *      returned.\n\t\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t *      execute a function of the name given. For example: `browser()` for a\n\t\t *      simple function on the data source, `browser.version()` for a\n\t\t *      function in a nested property or even `browser().version` to get an\n\t\t *      object property if the function called returns an object. Note that\n\t\t *      function notation is recommended for use in `render` rather than\n\t\t *      `data` as it is much simpler to use as a renderer.\n\t\t * * `null` - use the original data source for the row rather than plucking\n\t\t *   data directly from it. This action has effects on two other\n\t\t *   initialisation options:\n\t\t *    * `defaultContent` - When null is given as the `data` option and\n\t\t *      `defaultContent` is specified for the column, the value defined by\n\t\t *      `defaultContent` will be used for the cell.\n\t\t *    * `render` - When null is used for the `data` option and the `render`\n\t\t *      option is specified for the column, the whole data source for the\n\t\t *      row is used for the renderer.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t *   needs to set or get the data for a cell in the column. The function\n\t\t *   takes three parameters:\n\t\t *    * Parameters:\n\t\t *      * `{array|object}` The data source for the row\n\t\t *      * `{string}` The type call data requested - this will be 'set' when\n\t\t *        setting data or 'filter', 'display', 'type', 'sort' or undefined\n\t\t *        when gathering data. Note that when `undefined` is given for the\n\t\t *        type DataTables expects to get the raw data for the object back<\n\t\t *      * `{*}` Data to set when the second parameter is 'set'.\n\t\t *    * Return:\n\t\t *      * The return value from the function is not required when 'set' is\n\t\t *        the type of call, but otherwise the return is what will be used\n\t\t *        for the data requested.\n\t\t *\n\t\t * Note that `data` is a getter and setter option. If you just require\n\t\t * formatting of data for output, you will likely want to use `render` which\n\t\t * is simply a getter and thus simpler to use.\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The\n\t\t * name change reflects the flexibility of this property and is consistent\n\t\t * with the naming of mRender. If 'mDataProp' is given, then it will still\n\t\t * be used by DataTables, as it automatically maps the old name to the new\n\t\t * if required.\n\t\t *\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use automatically calculated column index</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.data\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Read table data from objects\n\t\t *    // JSON structure for each row:\n\t\t *    //   {\n\t\t *    //      \"engine\": {value},\n\t\t *    //      \"browser\": {value},\n\t\t *    //      \"platform\": {value},\n\t\t *    //      \"version\": {value},\n\t\t *    //      \"grade\": {value}\n\t\t *    //   }\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/objects.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          { \"data\": \"platform\" },\n\t\t *          { \"data\": \"version\" },\n\t\t *          { \"data\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Read information from deeply nested objects\n\t\t *    // JSON structure for each row:\n\t\t *    //   {\n\t\t *    //      \"engine\": {value},\n\t\t *    //      \"browser\": {value},\n\t\t *    //      \"platform\": {\n\t\t *    //         \"inner\": {value}\n\t\t *    //      },\n\t\t *    //      \"details\": [\n\t\t *    //         {value}, {value}\n\t\t *    //      ]\n\t\t *    //   }\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          { \"data\": \"platform.inner\" },\n\t\t *          { \"data\": \"platform.details.0\" },\n\t\t *          { \"data\": \"platform.details.1\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `data` as a function to provide different information for\n\t\t *    // sorting, filtering and display. In this case, currency (price)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": function ( source, type, val ) {\n\t\t *            if (type === 'set') {\n\t\t *              source.price = val;\n\t\t *              // Store the computed dislay and filter values for efficiency\n\t\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t *              return;\n\t\t *            }\n\t\t *            else if (type === 'display') {\n\t\t *              return source.price_display;\n\t\t *            }\n\t\t *            else if (type === 'filter') {\n\t\t *              return source.price_filter;\n\t\t *            }\n\t\t *            // 'sort', 'type' and undefined all just use the integer\n\t\t *            return source.price;\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using default content\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null,\n\t\t *          \"defaultContent\": \"Click to edit\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using array notation - outputting a list from an array\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": \"name[, ]\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to `data` and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering,\n\t\t * sorting etc) without altering the underlying data for the table, use this\n\t\t * property. `render` can be considered to be the the read only companion to\n\t\t * `data` which is read / write (then as such more complex). Like `data`\n\t\t * this option can be given in a number of different ways to effect its\n\t\t * behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t *   default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t *   three 'special' options that can be used in the string to alter how\n\t\t *   DataTables reads the data from the source object:\n\t\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t *      Javascript to read from nested objects, so to can the options\n\t\t *      specified in `data`. For example: `browser.version` or\n\t\t *      `browser.name`. If your object parameter name contains a period, use\n\t\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t\t *      from and array source, joining the data with the characters provided\n\t\t *      between the two brackets. For example: `name[, ]` would provide a\n\t\t *      comma-space separated list from the source array. If no characters\n\t\t *      are provided between the brackets, the original array source is\n\t\t *      returned.\n\t\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t *      execute a function of the name given. For example: `browser()` for a\n\t\t *      simple function on the data source, `browser.version()` for a\n\t\t *      function in a nested property or even `browser().version` to get an\n\t\t *      object property if the function called returns an object.\n\t\t * * `object` - use different data for the different data types requested by\n\t\t *   DataTables ('filter', 'display', 'type' or 'sort'). The property names\n\t\t *   of the object is the data type the property refers to and the value can\n\t\t *   defined using an integer, string or function using the same rules as\n\t\t *   `render` normally does. Note that an `_` option _must_ be specified.\n\t\t *   This is the default value to use if you haven't specified a value for\n\t\t *   the data type requested by DataTables.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t *   needs to set or get the data for a cell in the column. The function\n\t\t *   takes three parameters:\n\t\t *    * Parameters:\n\t\t *      * {array|object} The data source for the row (based on `data`)\n\t\t *      * {string} The type call data requested - this will be 'filter',\n\t\t *        'display', 'type' or 'sort'.\n\t\t *      * {array|object} The full data source for the row (not based on\n\t\t *        `data`)\n\t\t *    * Return:\n\t\t *      * The return value from the function is what will be used for the\n\t\t *        data requested.\n\t\t *\n\t\t *  @type string|int|function|object|null\n\t\t *  @default null Use the data source value.\n\t\t *\n\t\t *  @name DataTable.defaults.column.render\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Create a comma separated list from an array of objects\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          {\n\t\t *            \"data\": \"platform\",\n\t\t *            \"render\": \"[, ].name\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Execute a function to obtain data\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t\t *          \"render\": \"browserName()\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // As an object, extracting different data for the different types\n\t\t *    // This would be used with a data source such as:\n\t\t *    //   { \"phone\": 5552368, \"phone_filter\": \"5552368 555-2368\", \"phone_display\": \"555-2368\" }\n\t\t *    // Here the `phone` integer is used for sorting and type detection, while `phone_filter`\n\t\t *    // (which has both forms) is used for filtering for if a user inputs either format, while\n\t\t *    // the formatted phone number is the one that is shown in the table.\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t\t *          \"render\": {\n\t\t *            \"_\": \"phone\",\n\t\t *            \"filter\": \"phone_filter\",\n\t\t *            \"display\": \"phone_display\"\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Use as a function to create a link from the data source\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": \"download_link\",\n\t\t *          \"render\": function ( data, type, full ) {\n\t\t *            return '<a href=\"'+data+'\">Download</a>';\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t *  @type string\n\t\t *  @default td\n\t\t *\n\t\t *  @name DataTable.defaults.column.cellType\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Make the first column use TH cells\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"cellType\": \"th\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.class\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"class\": \"my_class\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"class\": \"my_class\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this!\n\t\t *  @type string\n\t\t *  @default <i>Empty string<i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.contentPadding\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"contentPadding\": \"mmm\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because `data`\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t *\n\t\t *  @name DataTable.defaults.column.defaultContent\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          {\n\t\t *            \"data\": null,\n\t\t *            \"defaultContent\": \"Edit\",\n\t\t *            \"targets\": [ -1 ]\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"data\": null,\n\t\t *            \"defaultContent\": \"Edit\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.name\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"name\": \"engine\", \"targets\": [ 0 ] },\n\t\t *          { \"name\": \"browser\", \"targets\": [ 1 ] },\n\t\t *          { \"name\": \"platform\", \"targets\": [ 2 ] },\n\t\t *          { \"name\": \"version\", \"targets\": [ 3 ] },\n\t\t *          { \"name\": \"grade\", \"targets\": [ 4 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"name\": \"engine\" },\n\t\t *          { \"name\": \"browser\" },\n\t\t *          { \"name\": \"platform\" },\n\t\t *          { \"name\": \"version\" },\n\t\t *          { \"name\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the ordering which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to ordering. This allows ordering to occur on user\n\t\t * editable elements such as form inputs.\n\t\t *  @type string\n\t\t *  @default std\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderDataType\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderDataType\": \"dom-text\", \"targets\": [ 2, 3 ] },\n\t\t *          { \"type\": \"numeric\", \"targets\": [ 3 ] },\n\t\t *          { \"orderDataType\": \"dom-select\", \"targets\": [ 4 ] },\n\t\t *          { \"orderDataType\": \"dom-checkbox\", \"targets\": [ 5 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          { \"orderDataType\": \"dom-text\" },\n\t\t *          { \"orderDataType\": \"dom-text\", \"type\": \"numeric\" },\n\t\t *          { \"orderDataType\": \"dom-select\" },\n\t\t *          { \"orderDataType\": \"dom-checkbox\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t *  @type string\n\t\t *  @default null <i>Derived from the 'TH' value for this column in the\n\t\t *    original HTML table.</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.title\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"title\": \"My column title\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"My column title\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be\n\t\t * ordered. Four types (string, numeric, date and html (which will strip\n\t\t * HTML tags before ordering)) are currently available. Note that only date\n\t\t * formats understood by Javascript's Date() object will be accepted as type\n\t\t * date. For example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string',\n\t\t * 'numeric', 'date' or 'html' (by default). Further types can be adding\n\t\t * through plug-ins.\n\t\t *  @type string\n\t\t *  @default null <i>Auto-detected from raw data</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.type\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"type\": \"html\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"type\": \"html\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t *  @type string\n\t\t *  @default null <i>Automatic</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.width\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"width\": \"20%\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"width\": \"20%\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults.column );\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a\n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults} but this\n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t *  @namespace\n\t *  @todo Really should attach the settings object to individual instances so we\n\t *    don't need to create new instances on each $().dataTable() call (if the\n\t *    table already exists). It would also save passing oSettings around and\n\t *    into every single function. However, this is a very significant\n\t *    architecture change for DataTables and will almost certainly break\n\t *    backwards compatibility with older installations. This is something that\n\t *    will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t *  @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\n\t\t\t/**\n\t\t\t * Multi-column sorting\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortMulti\": null,\n\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t *  @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t *  @type int\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is\n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t *  @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t *  @namespace\n\t\t *  @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See\n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t *  @type function\n\t\t\t *  @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t *  @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false,\n\t\n\t\t\t/**\n\t\t\t * Determine if the vertical scrollbar is on the right or left of the\n\t\t\t * scrolling container - needed for rtl language layout, although not\n\t\t\t * all browsers move the scrollbar (Safari).\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollbarLeft\": false,\n\t\n\t\t\t/**\n\t\t\t * Flag for if `getBoundingClientRect` is fully supported or not\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bBounding\": false,\n\t\n\t\t\t/**\n\t\t\t * Browser scrollbar width\n\t\t\t *  @type integer\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"barWidth\": 0\n\t\t},\n\t\n\t\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The\n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *   <ul>\n\t\t *     <li>'l' - Length changing</li>\n\t\t *     <li>'f' - Filtering input</li>\n\t\t *     <li>'t' - The table!</li>\n\t\t *     <li>'i' - Information</li>\n\t\t *     <li>'p' - Pagination</li>\n\t\t *     <li>'r' - pRocessing</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\n\t\t/**\n\t\t * Map of row ids to data indexes\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"aIds\": {},\n\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a\n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\n\t\t/**\n\t\t * Store the applied search for each column - see\n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t *   <li>Index 0 - column number</li>\n\t\t *   <li>Index 1 - current sorting direction</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of\n\t\t * false will be used to cancel the draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data\n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\n\t\t/**\n\t\t * Search delay (in mS)\n\t\t *  @type integer\n\t\t *  @default null\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\t/**\n\t\t * The state duration (for `stateSave`) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iStateDuration\": 0,\n\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an\n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the JSON string to save that has been thus far created. Returns\n\t\t *       a JSON string to be inserted into a json object\n\t\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an\n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the object stored. May return false to cancel state loading</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\n\t\t/**\n\t\t * State that was saved. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oSavedState\": null,\n\t\n\t\t/**\n\t\t * State that was loaded. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case\n\t\t * it is  assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering.\n\t\t * This can be used for working with the XHR information in one of the\n\t\t * callbacks\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\n\t\t/**\n\t\t * JSON returned from the server in the last Ajax request\n\t\t *  @type object\n\t\t *  @default undefined\n\t\t */\n\t\t\"json\": undefined,\n\t\n\t\t/**\n\t\t * Data submitted as part of the last Ajax request\n\t\t *  @type object\n\t\t *  @default undefined\n\t\t */\n\t\t\"oAjaxData\": undefined,\n\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra\n\t\t * parameters can easily be sent to the server\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if\n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t *  @type int\n\t\t *  @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\n\t\t/**\n\t\t * Paging display length\n\t\t *  @type int\n\t\t *  @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type boolean\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than\n\t\t * one unique cell per column, if the top one (true) or bottom one (false)\n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsTotal * 1 :\n\t\t\t\tthis.aiDisplayMaster.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsDisplay * 1 :\n\t\t\t\tthis.aiDisplay.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the display end point - aiDisplay index\n\t\t *  @type function\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tvar\n\t\t\t\tlen      = this._iDisplayLength,\n\t\t\t\tstart    = this._iDisplayStart,\n\t\t\t\tcalc     = start + len,\n\t\t\t\trecords  = this.aiDisplay.length,\n\t\t\t\tfeatures = this.oFeatures,\n\t\t\t\tpaginate = features.bPaginate;\n\t\n\t\t\tif ( features.bServerSide ) {\n\t\t\t\treturn paginate === false || len === -1 ?\n\t\t\t\t\tstart + records :\n\t\t\t\t\tMath.min( start+len, this._iRecordsDisplay );\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn ! paginate || calc>records || len===-1 ?\n\t\t\t\t\trecords :\n\t\t\t\t\tcalc;\n\t\t\t}\n\t\t},\n\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null,\n\t\n\t\t/**\n\t\t * Last applied sort\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLastSort\": [],\n\t\n\t\t/**\n\t\t * Stored plug-in instances\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oPlugins\": {},\n\t\n\t\t/**\n\t\t * Function used to get a row's id from the row's data\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"rowIdFn\": null,\n\t\n\t\t/**\n\t\t * Data location where to store a row's id\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"rowId\": null\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension\n\t * options.\n\t *\n\t * Note that the `DataTable.ext` object is available through\n\t * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is\n\t * also aliased to `jQuery.fn.dataTableExt` for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\t\n\t\n\t/**\n\t * DataTables extensions\n\t * \n\t * This namespace acts as a collection area for plug-ins that can be used to\n\t * extend DataTables capabilities. Indeed many of the build in methods\n\t * use this method to provide their own capabilities (sorting methods for\n\t * example).\n\t *\n\t * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy\n\t * reasons\n\t *\n\t *  @namespace\n\t */\n\tDataTable.ext = _ext = {\n\t\t/**\n\t\t * Buttons. For use with the Buttons extension for DataTables. This is\n\t\t * defined here so other extensions can define buttons regardless of load\n\t\t * order. It is _not_ used by DataTables core.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tbuttons: {},\n\t\n\t\n\t\t/**\n\t\t * Element class names\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tclasses: {},\n\t\n\t\n\t\t/**\n\t\t * DataTables build type (expanded by the download builder)\n\t\t *\n\t\t *  @type string\n\t\t */\n\t\tbuild:\"bs4/dt-1.10.16\",\n\t\n\t\n\t\t/**\n\t\t * Error reporting.\n\t\t * \n\t\t * How should DataTables report an error. Can take the value 'alert',\n\t\t * 'throw', 'none' or a function.\n\t\t *\n\t\t *  @type string|function\n\t\t *  @default alert\n\t\t */\n\t\terrMode: \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins.\n\t\t * \n\t\t * This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are then available for\n\t\t * use through the `dom` initialisation option.\n\t\t * \n\t\t * Each feature plug-in is described by an object which must have the\n\t\t * following properties:\n\t\t * \n\t\t * * `fnInit` - function that is used to initialise the plug-in,\n\t\t * * `cFeature` - a character so the feature can be enabled by the `dom`\n\t\t *   instillation option. This is case sensitive.\n\t\t *\n\t\t * The `fnInit` function has the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t *\n\t\t * And the following return is expected:\n\t\t * \n\t\t * * {node|null} The element which contains your feature. Note that the\n\t\t *   return may also be void if your plug-in does not require to inject any\n\t\t *   DOM elements into DataTables control (`dom`) - for example this might\n\t\t *   be useful when developing a plug-in which allows table control via\n\t\t *   keyboard entry\n\t\t *\n\t\t *  @type array\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTable.ext.features.push( {\n\t\t *      \"fnInit\": function( oSettings ) {\n\t\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t *      },\n\t\t *      \"cFeature\": \"T\"\n\t\t *    } );\n\t\t */\n\t\tfeature: [],\n\t\n\t\n\t\t/**\n\t\t * Row searching.\n\t\t * \n\t\t * This method of searching is complimentary to the default type based\n\t\t * searching, and a lot more comprehensive as it allows you complete control\n\t\t * over the searching logic. Each element in this array is a function\n\t\t * (parameters described below) that is called for every row in the table,\n\t\t * and your logic decides if it should be included in the searching data set\n\t\t * or not.\n\t\t *\n\t\t * Searching functions have the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t * 2. `{array|object}` Data for the row to be processed (same as the\n\t\t *    original format that was passed in as the data source, or an array\n\t\t *    from a DOM data source\n\t\t * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which\n\t\t *    can be useful to retrieve the `TR` element if you need DOM interaction.\n\t\t *\n\t\t * And the following return is expected:\n\t\t *\n\t\t * * {boolean} Include the row in the searched result set (true) or not\n\t\t *   (false)\n\t\t *\n\t\t * Note that as with the main search ability in DataTables, technically this\n\t\t * is \"filtering\", since it is subtractive. However, for consistency in\n\t\t * naming we call it searching here.\n\t\t *\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @example\n\t\t *    // The following example shows custom search being applied to the\n\t\t *    // fourth column (i.e. the data[3] index) based on two input values\n\t\t *    // from the end-user, matching the data in a certain range.\n\t\t *    $.fn.dataTable.ext.search.push(\n\t\t *      function( settings, data, dataIndex ) {\n\t\t *        var min = document.getElementById('min').value * 1;\n\t\t *        var max = document.getElementById('max').value * 1;\n\t\t *        var version = data[3] == \"-\" ? 0 : data[3]*1;\n\t\t *\n\t\t *        if ( min == \"\" && max == \"\" ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min == \"\" && version < max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min < version && \"\" == max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min < version && version < max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        return false;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\tsearch: [],\n\t\n\t\n\t\t/**\n\t\t * Selector extensions\n\t\t *\n\t\t * The `selector` option can be used to extend the options available for the\n\t\t * selector modifier options (`selector-modifier` object data type) that\n\t\t * each of the three built in selector types offer (row, column and cell +\n\t\t * their plural counterparts). For example the Select extension uses this\n\t\t * mechanism to provide an option to select only rows, columns and cells\n\t\t * that have been marked as selected by the end user (`{selected: true}`),\n\t\t * which can be used in conjunction with the existing built in selector\n\t\t * options.\n\t\t *\n\t\t * Each property is an array to which functions can be pushed. The functions\n\t\t * take three attributes:\n\t\t *\n\t\t * * Settings object for the host table\n\t\t * * Options object (`selector-modifier` object type)\n\t\t * * Array of selected item indexes\n\t\t *\n\t\t * The return is an array of the resulting item indexes after the custom\n\t\t * selector has been applied.\n\t\t *\n\t\t *  @type object\n\t\t */\n\t\tselector: {\n\t\t\tcell: [],\n\t\t\tcolumn: [],\n\t\t\trow: []\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Internal functions, exposed for used in plug-ins.\n\t\t * \n\t\t * Please note that you should not need to use the internal methods for\n\t\t * anything other than a plug-in (and even then, try to avoid if possible).\n\t\t * The internal function may change between releases.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tinternal: {},\n\t\n\t\n\t\t/**\n\t\t * Legacy configuration options. Enable and disable legacy options that\n\t\t * are available in DataTables.\n\t\t *\n\t\t *  @type object\n\t\t */\n\t\tlegacy: {\n\t\t\t/**\n\t\t\t * Enable / disable DataTables 1.9 compatible server-side processing\n\t\t\t * requests\n\t\t\t *\n\t\t\t *  @type boolean\n\t\t\t *  @default null\n\t\t\t */\n\t\t\tajax: null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods.\n\t\t * \n\t\t * Each entry in this object is a function and defines which buttons should\n\t\t * be shown by the pagination rendering method that is used for the table:\n\t\t * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the\n\t\t * buttons are displayed in the document, while the functions here tell it\n\t\t * what buttons to display. This is done by returning an array of button\n\t\t * descriptions (what each button will do).\n\t\t *\n\t\t * Pagination types (the four built in options and any additional plug-in\n\t\t * options defined here) can be used through the `paginationType`\n\t\t * initialisation parameter.\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{int} page` The current page index\n\t\t * 2. `{int} pages` The number of pages in the table\n\t\t *\n\t\t * Each function is expected to return an array where each element of the\n\t\t * array can be one of:\n\t\t *\n\t\t * * `first` - Jump to first page when activated\n\t\t * * `last` - Jump to last page when activated\n\t\t * * `previous` - Show previous page when activated\n\t\t * * `next` - Show next page when activated\n\t\t * * `{int}` - Show page of the index given\n\t\t * * `{array}` - A nested array containing the above elements to add a\n\t\t *   containing 'DIV' element (might be useful for styling).\n\t\t *\n\t\t * Note that DataTables v1.9- used this object slightly differently whereby\n\t\t * an object with two functions would be defined for each plug-in. That\n\t\t * ability is still supported by DataTables 1.10+ to provide backwards\n\t\t * compatibility, but this option of use is now decremented and no longer\n\t\t * documented in DataTables 1.10+.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Show previous, next and current page buttons only\n\t\t *    $.fn.dataTableExt.oPagination.current = function ( page, pages ) {\n\t\t *      return [ 'previous', page, 'next' ];\n\t\t *    };\n\t\t */\n\t\tpager: {},\n\t\n\t\n\t\trenderer: {\n\t\t\tpageButton: {},\n\t\t\theader: {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Ordering plug-ins - custom data source\n\t\t * \n\t\t * The extension options for ordering of data available here is complimentary\n\t\t * to the default type based ordering that DataTables typically uses. It\n\t\t * allows much greater control over the the data that is being used to\n\t\t * order a column, but is necessarily therefore more complex.\n\t\t * \n\t\t * This type of ordering is useful if you want to do ordering based on data\n\t\t * live from the DOM (for example the contents of an 'input' element) rather\n\t\t * than just the static string that DataTables knows of.\n\t\t * \n\t\t * The way these plug-ins work is that you create an array of the values you\n\t\t * wish to be ordering for the column in question and then return that\n\t\t * array. The data in the array much be in the index order of the rows in\n\t\t * the table (not the currently ordering order!). Which order data gathering\n\t\t * function is run here depends on the `dt-init columns.orderDataType`\n\t\t * parameter that is used for the column (if any).\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t * 2. `{int}` Target column index\n\t\t *\n\t\t * Each function is expected to return an array:\n\t\t *\n\t\t * * `{array}` Data for the column to be ordering upon\n\t\t *\n\t\t *  @type array\n\t\t *\n\t\t *  @example\n\t\t *    // Ordering using `input` node values\n\t\t *    $.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )\n\t\t *    {\n\t\t *      return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {\n\t\t *        return $('input', td).val();\n\t\t *      } );\n\t\t *    }\n\t\t */\n\t\torder: {},\n\t\n\t\n\t\t/**\n\t\t * Type based plug-ins.\n\t\t *\n\t\t * Each column in DataTables has a type assigned to it, either by automatic\n\t\t * detection or by direct assignment using the `type` option for the column.\n\t\t * The type of a column will effect how it is ordering and search (plug-ins\n\t\t * can also make use of the column type if required).\n\t\t *\n\t\t * @namespace\n\t\t */\n\t\ttype: {\n\t\t\t/**\n\t\t\t * Type detection functions.\n\t\t\t *\n\t\t\t * The functions defined in this object are used to automatically detect\n\t\t\t * a column's type, making initialisation of DataTables super easy, even\n\t\t\t * when complex data is in the table.\n\t\t\t *\n\t\t\t * The functions defined take two parameters:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be analysed\n\t\t     *  2. `{settings}` DataTables settings object. This can be used to\n\t\t     *     perform context specific type detection - for example detection\n\t\t     *     based on language settings such as using a comma for a decimal\n\t\t     *     place. Generally speaking the options from the settings will not\n\t\t     *     be required\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Data type detected, or null if unknown (and thus\n\t\t\t *   pass it on to the other type detection functions.\n\t\t\t *\n\t\t\t *  @type array\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Currency type detection plug-in:\n\t\t\t *    $.fn.dataTable.ext.type.detect.push(\n\t\t\t *      function ( data, settings ) {\n\t\t\t *        // Check the numeric part\n\t\t\t *        if ( ! $.isNumeric( data.substring(1) ) ) {\n\t\t\t *          return null;\n\t\t\t *        }\n\t\t\t *\n\t\t\t *        // Check prefixed by currency\n\t\t\t *        if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) {\n\t\t\t *          return 'currency';\n\t\t\t *        }\n\t\t\t *        return null;\n\t\t\t *      }\n\t\t\t *    );\n\t\t\t */\n\t\t\tdetect: [],\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based search formatting.\n\t\t\t *\n\t\t\t * The type based searching functions can be used to pre-format the\n\t\t\t * data to be search on. For example, it can be used to strip HTML\n\t\t\t * tags or to de-format telephone numbers for numeric only searching.\n\t\t\t *\n\t\t\t * Note that is a search is not defined for a column of a given type,\n\t\t\t * no search formatting will be performed.\n\t\t\t * \n\t\t\t * Pre-processing of searching data plug-ins - When you assign the sType\n\t\t\t * for a column (or have it automatically detected for you by DataTables\n\t\t\t * or a type detection plug-in), you will typically be using this for\n\t\t\t * custom sorting, but it can also be used to provide custom searching\n\t\t\t * by allowing you to pre-processing the data and returning the data in\n\t\t\t * the format that should be searched upon. This is done by adding\n\t\t\t * functions this object with a parameter name which matches the sType\n\t\t\t * for that target column. This is the corollary of <i>afnSortData</i>\n\t\t\t * for searching data.\n\t\t\t *\n\t\t\t * The functions defined take a single parameter:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be prepared for searching\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Formatted string that will be used for the searching.\n\t\t\t *\n\t\t\t *  @type object\n\t\t\t *  @default {}\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {\n\t\t\t *      return d.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t *    }\n\t\t\t */\n\t\t\tsearch: {},\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based ordering.\n\t\t\t *\n\t\t\t * The column type tells DataTables what ordering to apply to the table\n\t\t\t * when a column is sorted upon. The order for each type that is defined,\n\t\t\t * is defined by the functions available in this object.\n\t\t\t *\n\t\t\t * Each ordering option can be described by three properties added to\n\t\t\t * this object:\n\t\t\t *\n\t\t\t * * `{type}-pre` - Pre-formatting function\n\t\t\t * * `{type}-asc` - Ascending order function\n\t\t\t * * `{type}-desc` - Descending order function\n\t\t\t *\n\t\t\t * All three can be used together, only `{type}-pre` or only\n\t\t\t * `{type}-asc` and `{type}-desc` together. It is generally recommended\n\t\t\t * that only `{type}-pre` is used, as this provides the optimal\n\t\t\t * implementation in terms of speed, although the others are provided\n\t\t\t * for compatibility with existing Javascript sort functions.\n\t\t\t *\n\t\t\t * `{type}-pre`: Functions defined take a single parameter:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be prepared for ordering\n\t\t\t *\n\t\t\t * And return:\n\t\t\t *\n\t\t\t * * `{*}` Data to be sorted upon\n\t\t\t *\n\t\t\t * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort\n\t\t\t * functions, taking two parameters:\n\t\t\t *\n\t\t     *  1. `{*}` Data to compare to the second parameter\n\t\t     *  2. `{*}` Data to compare to the first parameter\n\t\t\t *\n\t\t\t * And returning:\n\t\t\t *\n\t\t\t * * `{*}` Ordering match: <0 if first parameter should be sorted lower\n\t\t\t *   than the second parameter, ===0 if the two parameters are equal and\n\t\t\t *   >0 if the first parameter should be sorted height than the second\n\t\t\t *   parameter.\n\t\t\t * \n\t\t\t *  @type object\n\t\t\t *  @default {}\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Numeric ordering of formatted numbers with a pre-formatter\n\t\t\t *    $.extend( $.fn.dataTable.ext.type.order, {\n\t\t\t *      \"string-pre\": function(x) {\n\t\t\t *        a = (a === \"-\" || a === \"\") ? 0 : a.replace( /[^\\d\\-\\.]/g, \"\" );\n\t\t\t *        return parseFloat( a );\n\t\t\t *      }\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Case-sensitive string ordering, with no pre-formatting method\n\t\t\t *    $.extend( $.fn.dataTable.ext.order, {\n\t\t\t *      \"string-case-asc\": function(x,y) {\n\t\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t\t *      },\n\t\t\t *      \"string-case-desc\": function(x,y) {\n\t\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t\t *      }\n\t\t\t *    } );\n\t\t\t */\n\t\t\torder: {}\n\t\t},\n\t\n\t\t/**\n\t\t * Unique DataTables instance counter\n\t\t *\n\t\t * @type int\n\t\t * @private\n\t\t */\n\t\t_unique: 0,\n\t\n\t\n\t\t//\n\t\t// Depreciated\n\t\t// The following properties are retained for backwards compatiblity only.\n\t\t// The should not be used in new projects and will be removed in a future\n\t\t// version\n\t\t//\n\t\n\t\t/**\n\t\t * Version check function.\n\t\t *  @type function\n\t\t *  @depreciated Since 1.10\n\t\t */\n\t\tfnVersionCheck: DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t *  @type int\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\tiApiIndex: 0,\n\t\n\t\n\t\t/**\n\t\t * jQuery UI class container\n\t\t *  @type object\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\toJUIClasses: {},\n\t\n\t\n\t\t/**\n\t\t * Software version\n\t\t *  @type string\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\tsVersion: DataTable.version\n\t};\n\t\n\t\n\t//\n\t// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts\n\t//\n\t$.extend( _ext, {\n\t\tafnFiltering: _ext.search,\n\t\taTypes:       _ext.type.detect,\n\t\tofnSearch:    _ext.type.search,\n\t\toSort:        _ext.type.order,\n\t\tafnSortData:  _ext.order,\n\t\taoFeatures:   _ext.feature,\n\t\toApi:         _ext.internal,\n\t\toStdClasses:  _ext.classes,\n\t\toPagination:  _ext.pager\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.classes, {\n\t\t\"sTable\": \"dataTable\",\n\t\t\"sNoFooter\": \"no-footer\",\n\t\n\t\t/* Paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"current\",\n\t\t\"sPageButtonDisabled\": \"disabled\",\n\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\n\t\t/* Filtering */\n\t\t\"sFilterInput\": \"\",\n\t\n\t\t/* Page length */\n\t\t\"sLengthSelect\": \"\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": \"\",\n\t\t\"sFooterTH\": \"\",\n\t\n\t\t// Deprecated\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\tvar extPagination = DataTable.ext.pager;\n\t\n\tfunction _numbers ( page, pages ) {\n\t\tvar\n\t\t\tnumbers = [],\n\t\t\tbuttons = extPagination.numbers_length,\n\t\t\thalf = Math.floor( buttons / 2 ),\n\t\t\ti = 1;\n\t\n\t\tif ( pages <= buttons ) {\n\t\t\tnumbers = _range( 0, pages );\n\t\t}\n\t\telse if ( page <= half ) {\n\t\t\tnumbers = _range( 0, buttons-2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t}\n\t\telse if ( page >= pages - 1 - half ) {\n\t\t\tnumbers = _range( pages-(buttons-2), pages );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\telse {\n\t\t\tnumbers = _range( page-half+2, page+half-1 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' );\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\n\t\tnumbers.DT_el = 'span';\n\t\treturn numbers;\n\t}\n\t\n\t\n\t$.extend( extPagination, {\n\t\tsimple: function ( page, pages ) {\n\t\t\treturn [ 'previous', 'next' ];\n\t\t},\n\t\n\t\tfull: function ( page, pages ) {\n\t\t\treturn [  'first', 'previous', 'next', 'last' ];\n\t\t},\n\t\n\t\tnumbers: function ( page, pages ) {\n\t\t\treturn [ _numbers(page, pages) ];\n\t\t},\n\t\n\t\tsimple_numbers: function ( page, pages ) {\n\t\t\treturn [ 'previous', _numbers(page, pages), 'next' ];\n\t\t},\n\t\n\t\tfull_numbers: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];\n\t\t},\n\t\t\n\t\tfirst_last_numbers: function (page, pages) {\n\t \t\treturn ['first', _numbers(page, pages), 'last'];\n\t \t},\n\t\n\t\t// For testing and plug-ins to use\n\t\t_numbers: _numbers,\n\t\n\t\t// Number of number buttons (including ellipsis) to show. _Must be odd!_\n\t\tnumbers_length: 7\n\t} );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\tpageButton: {\n\t\t\t_: function ( settings, host, idx, buttons, page, pages ) {\n\t\t\t\tvar classes = settings.oClasses;\n\t\t\t\tvar lang = settings.oLanguage.oPaginate;\n\t\t\t\tvar aria = settings.oLanguage.oAria.paginate || {};\n\t\t\t\tvar btnDisplay, btnClass, counter=0;\n\t\n\t\t\t\tvar attach = function( container, buttons ) {\n\t\t\t\t\tvar i, ien, node, button;\n\t\t\t\t\tvar clickHandler = function ( e ) {\n\t\t\t\t\t\t_fnPageChange( settings, e.data.action, true );\n\t\t\t\t\t};\n\t\n\t\t\t\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tbutton = buttons[i];\n\t\n\t\t\t\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\t\t\t\tvar inner = $( '<'+(button.DT_el || 'div')+'/>' )\n\t\t\t\t\t\t\t\t.appendTo( container );\n\t\t\t\t\t\t\tattach( inner, button );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbtnDisplay = null;\n\t\t\t\t\t\t\tbtnClass = '';\n\t\n\t\t\t\t\t\t\tswitch ( button ) {\n\t\t\t\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\t\t\t\tcontainer.append('<span class=\"ellipsis\">&#x2026;</span>');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'first':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'last':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t\t\t\tclasses.sPageButtonActive : '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif ( btnDisplay !== null ) {\n\t\t\t\t\t\t\t\tnode = $('<a>', {\n\t\t\t\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t\t\t\t.appendTo( container );\n\t\n\t\t\t\t\t\t\t\t_fnBindAction(\n\t\t\t\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t\t\t\t);\n\t\n\t\t\t\t\t\t\t\tcounter++;\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\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame. Try / catch the error. Not good for\n\t\t\t\t// accessibility, but neither are frames.\n\t\t\t\tvar activeEl;\n\t\n\t\t\t\ttry {\n\t\t\t\t\t// Because this approach is destroying and recreating the paging\n\t\t\t\t\t// elements, focus is lost on the select button which is bad for\n\t\t\t\t\t// accessibility. So we want to restore focus once the draw has\n\t\t\t\t\t// completed\n\t\t\t\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t\t\t\t}\n\t\t\t\tcatch (e) {}\n\t\n\t\t\t\tattach( $(host).empty(), buttons );\n\t\n\t\t\t\tif ( activeEl !== undefined ) {\n\t\t\t\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t\n\t// Built in type detection. See model.ext.aTypes for information about\n\t// what is required from this methods.\n\t$.extend( DataTable.ext.type.detect, [\n\t\t// Plain numbers - first since V8 detects some plain numbers as dates\n\t\t// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal ) ? 'num'+decimal : null;\n\t\t},\n\t\n\t\t// Dates (only those recognised by the browser's Date.parse)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\t// V8 tries _very_ hard to make a string passed into `Date.parse()`\n\t\t\t// valid, so we need to use a regex to restrict date formats. Use a\n\t\t\t// plug-in for anything other than ISO8601 style strings\n\t\t\tif ( d && !(d instanceof Date) && ! _re_date.test(d) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar parsed = Date.parse(d);\n\t\t\treturn (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;\n\t\t},\n\t\n\t\t// Formatted numbers\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric, formatted\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML (this is strict checking - there must be html)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\treturn _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?\n\t\t\t\t'html' : null;\n\t\t}\n\t] );\n\t\n\t\n\t\n\t// Filter formatting functions. See model.ext.ofnSearch for information about\n\t// what is required from these methods.\n\t// \n\t// Note that additional search methods are added for the html numbers and\n\t// html formatted numbers by `_addNumericSort()` when we know what the decimal\n\t// place is\n\t\n\t\n\t$.extend( DataTable.ext.type.search, {\n\t\thtml: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata\n\t\t\t\t\t\t.replace( _re_new_lines, \" \" )\n\t\t\t\t\t\t.replace( _re_html, \"\" ) :\n\t\t\t\t\t'';\n\t\t},\n\t\n\t\tstring: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata.replace( _re_new_lines, \" \" ) :\n\t\t\t\t\tdata;\n\t\t}\n\t} );\n\t\n\t\n\t\n\tvar __numericReplace = function ( d, decimalPlace, re1, re2 ) {\n\t\tif ( d !== 0 && (!d || d === '-') ) {\n\t\t\treturn -Infinity;\n\t\t}\n\t\n\t\t// If a decimal place other than `.` is used, it needs to be given to the\n\t\t// function so we can detect it and replace with a `.` which is the only\n\t\t// decimal place Javascript recognises - it is not locale aware.\n\t\tif ( decimalPlace ) {\n\t\t\td = _numToDecimal( d, decimalPlace );\n\t\t}\n\t\n\t\tif ( d.replace ) {\n\t\t\tif ( re1 ) {\n\t\t\t\td = d.replace( re1, '' );\n\t\t\t}\n\t\n\t\t\tif ( re2 ) {\n\t\t\t\td = d.replace( re2, '' );\n\t\t\t}\n\t\t}\n\t\n\t\treturn d * 1;\n\t};\n\t\n\t\n\t// Add the numeric 'deformatting' functions for sorting and search. This is done\n\t// in a function to provide an easy ability for the language options to add\n\t// additional methods if a non-period decimal place is used.\n\tfunction _addNumericSort ( decimalPlace ) {\n\t\t$.each(\n\t\t\t{\n\t\t\t\t// Plain numbers\n\t\t\t\t\"num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace );\n\t\t\t\t},\n\t\n\t\t\t\t// Formatted numbers\n\t\t\t\t\"num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_formatted_numeric );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric\n\t\t\t\t\"html-num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric, formatted\n\t\t\t\t\"html-num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction ( key, fn ) {\n\t\t\t\t// Add the ordering method\n\t\t\t\t_ext.type.order[ key+decimalPlace+'-pre' ] = fn;\n\t\n\t\t\t\t// For HTML types add a search formatter that will strip the HTML\n\t\t\t\tif ( key.match(/^html\\-/) ) {\n\t\t\t\t\t_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\t\n\t\n\t// Default sort methods\n\t$.extend( _ext.type.order, {\n\t\t// Dates\n\t\t\"date-pre\": function ( d ) {\n\t\t\treturn Date.parse( d ) || -Infinity;\n\t\t},\n\t\n\t\t// html\n\t\t\"html-pre\": function ( a ) {\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ta.replace ?\n\t\t\t\t\ta.replace( /<.*?>/g, \"\" ).toLowerCase() :\n\t\t\t\t\ta+'';\n\t\t},\n\t\n\t\t// string\n\t\t\"string-pre\": function ( a ) {\n\t\t\t// This is a little complex, but faster than always calling toString,\n\t\t\t// http://jsperf.com/tostring-v-check\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ttypeof a === 'string' ?\n\t\t\t\t\ta.toLowerCase() :\n\t\t\t\t\t! a.toString ?\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\ta.toString();\n\t\t},\n\t\n\t\t// string-asc and -desc are retained only for compatibility with the old\n\t\t// sort methods\n\t\t\"string-asc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\n\t\t\"string-desc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t}\n\t} );\n\t\n\t\n\t// Numeric sorting types - order doesn't matter here\n\t_addNumericSort( '' );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\theader: {\n\t\t\t_: function ( settings, cell, column, classes ) {\n\t\t\t\t// No additional mark-up required\n\t\t\t\t// Attach a sort listener to update on sort - note that using the\n\t\t\t\t// `DT` namespace will allow the event to be removed automatically\n\t\t\t\t// on destroy, while the `dt` namespaced event is the one we are\n\t\t\t\t// listening for\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) { // need to check this this is the host\n\t\t\t\t\t\treturn;               // table, not a nested one\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tcolumn.sSortingClass +' '+\n\t\t\t\t\t\t\tclasses.sSortAsc +' '+\n\t\t\t\t\t\t\tclasses.sSortDesc\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tjqueryui: function ( settings, cell, column, classes ) {\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.addClass( classes.sSortJUIWrapper )\n\t\t\t\t\t.append( cell.contents() )\n\t\t\t\t\t.append( $('<span/>')\n\t\t\t\t\t\t.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )\n\t\t\t\t\t)\n\t\t\t\t\t.appendTo( cell );\n\t\n\t\t\t\t// Attach a sort listener to update on sort\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tclasses.sSortJUIAsc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDesc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUI +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIAscAllowed +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDescAllowed\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortJUIAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortJUIDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClassJUI\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t/*\n\t * Public helper functions. These aren't used internally by DataTables, or\n\t * called by any of the options passed into DataTables, but they can be used\n\t * externally by developers working with DataTables. They are helper functions\n\t * to make working with DataTables a little bit easier.\n\t */\n\t\n\tvar __htmlEscapeEntities = function ( d ) {\n\t\treturn typeof d === 'string' ?\n\t\t\td.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;') :\n\t\t\td;\n\t};\n\t\n\t/**\n\t * Helpers for `columns.render`.\n\t *\n\t * The options defined here can be used with the `columns.render` initialisation\n\t * option to provide a display renderer. The following functions are defined:\n\t *\n\t * * `number` - Will format numeric data (defined by `columns.data`) for\n\t *   display, retaining the original unformatted data for sorting and filtering.\n\t *   It takes 5 parameters:\n\t *   * `string` - Thousands grouping separator\n\t *   * `string` - Decimal point indicator\n\t *   * `integer` - Number of decimal points to show\n\t *   * `string` (optional) - Prefix.\n\t *   * `string` (optional) - Postfix (/suffix).\n\t * * `text` - Escape HTML to help prevent XSS attacks. It has no optional\n\t *   parameters.\n\t *\n\t * @example\n\t *   // Column definition using the number renderer\n\t *   {\n\t *     data: \"salary\",\n\t *     render: $.fn.dataTable.render.number( '\\'', '.', 0, '$' )\n\t *   }\n\t *\n\t * @namespace\n\t */\n\tDataTable.render = {\n\t\tnumber: function ( thousands, decimal, precision, prefix, postfix ) {\n\t\t\treturn {\n\t\t\t\tdisplay: function ( d ) {\n\t\t\t\t\tif ( typeof d !== 'number' && typeof d !== 'string' ) {\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar negative = d < 0 ? '-' : '';\n\t\t\t\t\tvar flo = parseFloat( d );\n\t\n\t\t\t\t\t// If NaN then there isn't much formatting that we can do - just\n\t\t\t\t\t// return immediately, escaping any HTML (this was supposed to\n\t\t\t\t\t// be a number after all)\n\t\t\t\t\tif ( isNaN( flo ) ) {\n\t\t\t\t\t\treturn __htmlEscapeEntities( d );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tflo = flo.toFixed( precision );\n\t\t\t\t\td = Math.abs( flo );\n\t\n\t\t\t\t\tvar intPart = parseInt( d, 10 );\n\t\t\t\t\tvar floatPart = precision ?\n\t\t\t\t\t\tdecimal+(d - intPart).toFixed( precision ).substring( 2 ):\n\t\t\t\t\t\t'';\n\t\n\t\t\t\t\treturn negative + (prefix||'') +\n\t\t\t\t\t\tintPart.toString().replace(\n\t\t\t\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g, thousands\n\t\t\t\t\t\t) +\n\t\t\t\t\t\tfloatPart +\n\t\t\t\t\t\t(postfix||'');\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\n\t\ttext: function () {\n\t\t\treturn {\n\t\t\t\tdisplay: __htmlEscapeEntities\n\t\t\t};\n\t\t}\n\t};\n\t\n\t\n\t/*\n\t * This is really a good bit rubbish this method of exposing the internal methods\n\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t */\n\t\n\t\n\t/**\n\t * Create a wrapper function for exporting an internal functions to an external API.\n\t *  @param {string} fn API function name\n\t *  @returns {function} wrapped function\n\t *  @memberof DataTable#internal\n\t */\n\tfunction _fnExternApiFunc (fn)\n\t{\n\t\treturn function() {\n\t\t\tvar args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(\n\t\t\t\tArray.prototype.slice.call(arguments)\n\t\t\t);\n\t\t\treturn DataTable.ext.internal[fn].apply( this, args );\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Reference to internal functions for use by plug-in developers. Note that\n\t * these methods are references to internal functions and are considered to be\n\t * private. If you use these methods, be aware that they are liable to change\n\t * between versions.\n\t *  @namespace\n\t */\n\t$.extend( DataTable.ext.internal, {\n\t\t_fnExternApiFunc: _fnExternApiFunc,\n\t\t_fnBuildAjax: _fnBuildAjax,\n\t\t_fnAjaxUpdate: _fnAjaxUpdate,\n\t\t_fnAjaxParameters: _fnAjaxParameters,\n\t\t_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,\n\t\t_fnAjaxDataSrc: _fnAjaxDataSrc,\n\t\t_fnAddColumn: _fnAddColumn,\n\t\t_fnColumnOptions: _fnColumnOptions,\n\t\t_fnAdjustColumnSizing: _fnAdjustColumnSizing,\n\t\t_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,\n\t\t_fnColumnIndexToVisible: _fnColumnIndexToVisible,\n\t\t_fnVisbleColumns: _fnVisbleColumns,\n\t\t_fnGetColumns: _fnGetColumns,\n\t\t_fnColumnTypes: _fnColumnTypes,\n\t\t_fnApplyColumnDefs: _fnApplyColumnDefs,\n\t\t_fnHungarianMap: _fnHungarianMap,\n\t\t_fnCamelToHungarian: _fnCamelToHungarian,\n\t\t_fnLanguageCompat: _fnLanguageCompat,\n\t\t_fnBrowserDetect: _fnBrowserDetect,\n\t\t_fnAddData: _fnAddData,\n\t\t_fnAddTr: _fnAddTr,\n\t\t_fnNodeToDataIndex: _fnNodeToDataIndex,\n\t\t_fnNodeToColumnIndex: _fnNodeToColumnIndex,\n\t\t_fnGetCellData: _fnGetCellData,\n\t\t_fnSetCellData: _fnSetCellData,\n\t\t_fnSplitObjNotation: _fnSplitObjNotation,\n\t\t_fnGetObjectDataFn: _fnGetObjectDataFn,\n\t\t_fnSetObjectDataFn: _fnSetObjectDataFn,\n\t\t_fnGetDataMaster: _fnGetDataMaster,\n\t\t_fnClearTable: _fnClearTable,\n\t\t_fnDeleteIndex: _fnDeleteIndex,\n\t\t_fnInvalidate: _fnInvalidate,\n\t\t_fnGetRowElements: _fnGetRowElements,\n\t\t_fnCreateTr: _fnCreateTr,\n\t\t_fnBuildHead: _fnBuildHead,\n\t\t_fnDrawHead: _fnDrawHead,\n\t\t_fnDraw: _fnDraw,\n\t\t_fnReDraw: _fnReDraw,\n\t\t_fnAddOptionsHtml: _fnAddOptionsHtml,\n\t\t_fnDetectHeader: _fnDetectHeader,\n\t\t_fnGetUniqueThs: _fnGetUniqueThs,\n\t\t_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,\n\t\t_fnFilterComplete: _fnFilterComplete,\n\t\t_fnFilterCustom: _fnFilterCustom,\n\t\t_fnFilterColumn: _fnFilterColumn,\n\t\t_fnFilter: _fnFilter,\n\t\t_fnFilterCreateSearch: _fnFilterCreateSearch,\n\t\t_fnEscapeRegex: _fnEscapeRegex,\n\t\t_fnFilterData: _fnFilterData,\n\t\t_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,\n\t\t_fnUpdateInfo: _fnUpdateInfo,\n\t\t_fnInfoMacros: _fnInfoMacros,\n\t\t_fnInitialise: _fnInitialise,\n\t\t_fnInitComplete: _fnInitComplete,\n\t\t_fnLengthChange: _fnLengthChange,\n\t\t_fnFeatureHtmlLength: _fnFeatureHtmlLength,\n\t\t_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,\n\t\t_fnPageChange: _fnPageChange,\n\t\t_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,\n\t\t_fnProcessingDisplay: _fnProcessingDisplay,\n\t\t_fnFeatureHtmlTable: _fnFeatureHtmlTable,\n\t\t_fnScrollDraw: _fnScrollDraw,\n\t\t_fnApplyToChildren: _fnApplyToChildren,\n\t\t_fnCalculateColumnWidths: _fnCalculateColumnWidths,\n\t\t_fnThrottle: _fnThrottle,\n\t\t_fnConvertToWidth: _fnConvertToWidth,\n\t\t_fnGetWidestNode: _fnGetWidestNode,\n\t\t_fnGetMaxLenString: _fnGetMaxLenString,\n\t\t_fnStringToCss: _fnStringToCss,\n\t\t_fnSortFlatten: _fnSortFlatten,\n\t\t_fnSort: _fnSort,\n\t\t_fnSortAria: _fnSortAria,\n\t\t_fnSortListener: _fnSortListener,\n\t\t_fnSortAttachListener: _fnSortAttachListener,\n\t\t_fnSortingClasses: _fnSortingClasses,\n\t\t_fnSortData: _fnSortData,\n\t\t_fnSaveState: _fnSaveState,\n\t\t_fnLoadState: _fnLoadState,\n\t\t_fnSettingsFromNode: _fnSettingsFromNode,\n\t\t_fnLog: _fnLog,\n\t\t_fnMap: _fnMap,\n\t\t_fnBindAction: _fnBindAction,\n\t\t_fnCallbackReg: _fnCallbackReg,\n\t\t_fnCallbackFire: _fnCallbackFire,\n\t\t_fnLengthOverflow: _fnLengthOverflow,\n\t\t_fnRenderer: _fnRenderer,\n\t\t_fnDataSource: _fnDataSource,\n\t\t_fnRowAttributes: _fnRowAttributes,\n\t\t_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant\n\t\t                                // in 1.10, so this dead-end function is\n\t\t                                // added to prevent errors\n\t} );\n\t\n\n\t// jQuery access\n\t$.fn.dataTable = DataTable;\n\n\t// Provide access to the host jQuery object (circular reference)\n\tDataTable.$ = $;\n\n\t// Legacy aliases\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\t// With a capital `D` we return a DataTables API instance rather than a\n\t// jQuery object\n\t$.fn.DataTable = function ( opts ) {\n\t\treturn $(this).dataTable( opts ).api();\n\t};\n\n\t// All properties that are available to $.fn.dataTable should also be\n\t// available on $.fn.DataTable\n\t$.each( DataTable, function ( prop, val ) {\n\t\t$.fn.DataTable[ prop ] = val;\n\t} );\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same\n\t * point as fnDrawCallback. This may be useful for binding events or\n\t * performing calculations when the table is altered at all.\n\t *  @name DataTable#draw.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Search event, fired when the searching applied to the table (using the\n\t * built-in global search, or column filters) is altered.\n\t *  @name DataTable#search.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Order event, fired when the ordering applied to the table is altered.\n\t *  @name DataTable#order.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully\n\t * drawn, including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save\n\t * is required. This event allows modification of the state saving object\n\t * prior to actually doing the save, including addition or other state\n\t * properties (for plug-ins) or modification of a DataTables core property.\n\t *  @name DataTable#stateSaveParams.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored\n\t * data, but prior to the settings object being modified by the saved state\n\t * - allowing modification of the saved state is required or loading of\n\t * state for a plug-in.\n\t *  @name DataTable#stateLoadParams.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and\n\t * the settings object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing\n\t * (be it, order, searcg or anything else). It can be used to indicate to\n\t * the end user that there is something happening, or that something has\n\t * finished.\n\t *  @name DataTable#processing.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a\n\t * request to made to the server for new data. This event is called before\n\t * DataTables processed the returned data, so it can also be used to pre-\n\t * process the data returned from the server, if needed.\n\t *\n\t * Note that this trigger is called in `fnServerData`, if you override\n\t * `fnServerData` and which to use this event, you need to trigger it in you\n\t * success function.\n\t *  @name DataTable#xhr.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t *\n\t *  @example\n\t *     // Use a custom property returned from the server in another DOM element\n\t *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t *       $('#status').html( json.status );\n\t *     } );\n\t *\n\t *  @example\n\t *     // Pre-process the data returned from the server\n\t *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t *       for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {\n\t *         json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;\n\t *       }\n\t *       // Note no return - manipulate the data directly in the JSON object.\n\t *     } );\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy\n\t * or passing the bDestroy:true parameter in the initialisation object. This\n\t * can be used to remove bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page length change event, fired when number of records to show on each\n\t * page (the length) is changed.\n\t *  @name DataTable#length.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {integer} len New length\n\t */\n\n\t/**\n\t * Column sizing has changed.\n\t *  @name DataTable#column-sizing.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Column visibility has changed.\n\t *  @name DataTable#column-visibility.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {int} column Column index\n\t *  @param {bool} vis `false` if column now hidden, or `true` if visible\n\t */\n\n\treturn $.fn.dataTable;\n}));\n\n\n/*! DataTables Bootstrap 3 integration\n * ©2011-2015 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t// Require DataTables, which attaches to jQuery, including\n\t\t\t\t// jQuery if needed and have a $ property so we can access the\n\t\t\t\t// jQuery object that is used\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t\"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>\" +\n\t\t\"<'row'<'col-sm-12'tr>>\" +\n\t\t\"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>\",\n\trenderer: 'bootstrap'\n} );\n\n\n/* Default class modification */\n$.extend( DataTable.ext.classes, {\n\tsWrapper:      \"dataTables_wrapper container-fluid dt-bootstrap4\",\n\tsFilterInput:  \"form-control form-control-sm\",\n\tsLengthSelect: \"form-control form-control-sm\",\n\tsProcessing:   \"dataTables_processing card\",\n\tsPageButton:   \"paginate_button page-item\"\n} );\n\n\n/* Bootstrap paging button renderer */\nDataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {\n\tvar api     = new DataTable.Api( settings );\n\tvar classes = settings.oClasses;\n\tvar lang    = settings.oLanguage.oPaginate;\n\tvar aria = settings.oLanguage.oAria.paginate || {};\n\tvar btnDisplay, btnClass, counter=0;\n\n\tvar attach = function( container, buttons ) {\n\t\tvar i, ien, node, button;\n\t\tvar clickHandler = function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tif ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {\n\t\t\t\tapi.page( e.data.action ).draw( 'page' );\n\t\t\t}\n\t\t};\n\n\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\tbutton = buttons[i];\n\n\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\tattach( container, button );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtnDisplay = '';\n\t\t\t\tbtnClass = '';\n\n\t\t\t\tswitch ( button ) {\n\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\tbtnDisplay = '&#x2026;';\n\t\t\t\t\t\tbtnClass = 'disabled';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t'active' : '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\tnode = $('<li>', {\n\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append( $('<a>', {\n\t\t\t\t\t\t\t\t'href': '#',\n\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t'class': 'page-link'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\tsettings.oApi._fnBindAction(\n\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t);\n\n\t\t\t\t\tcounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t// inside an iframe or frame. \n\tvar activeEl;\n\n\ttry {\n\t\t// Because this approach is destroying and recreating the paging\n\t\t// elements, focus is lost on the select button which is bad for\n\t\t// accessibility. So we want to restore focus once the draw has\n\t\t// completed\n\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t}\n\tcatch (e) {}\n\n\tattach(\n\t\t$(host).empty().html('<ul class=\"pagination\"/>').children('ul'),\n\t\tbuttons\n\t);\n\n\tif ( activeEl !== undefined ) {\n\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t}\n};\n\n\nreturn DataTable;\n}));\n\n\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/calendar/calendar.css",
    "content": ".fc-state-default {\n    text-shadow: none;\n    box-shadow: none;\n}\n\n.fc-basic-view .fc-body .fc-row {\n    min-height: 5rem;\n}\n\n.fc-toolbar .fc-button-group {\n    border: 1px solid #2961ff;\n    border-radius: 4px;\n}\n\n.fc-toolbar .fc-button {\n    background: #2961ff;\n    color: #fff;\n    border: none;\n}\n\n.fc-toolbar .fc-button:hover {\n    background: #2961ff;\n    opacity: 1;\n}\n\n.fc-toolbar .fc-button.fc-state-active {\n    background: #fff;\n    color: #2961ff;\n}\n\n\n.fc-widget-header {\n    border: 0px !important;\n}\n\n.fc-widget-content {\n    border-color: rgba(120, 130, 140, 0.13) !important;\n}\n\n.fc-widget-content tr {\n    border-bottom: none;\n}\n\n\n.fc-view {\n    margin-top: 0px;\n}\n\n.fc-toolbar {\n    margin: 0px;\n    padding: 24px 0px;\n}\n\n\n.fc-event {\n    border-radius: 0px;\n    border: none;\n    cursor: move;\n    color: #fff !important;\n    font-size: 13px;\n    margin: 1px -1px 0 -1px;\n\n    padding: 5px 5px;\n    text-align: center;\n    background: #40c4ff;\n}"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/gritter/jquery.gritter.css",
    "content": "/* the norm */\n#gritter-notice-wrapper {\n\tposition:fixed;\n\ttop:50px;\n\tright:10px;\n\twidth:301px;\n\tz-index:989;\n}\n#gritter-notice-wrapper.top-left {\n    left: 20px;\n    right: auto;\n}\n#gritter-notice-wrapper.bottom-right {\n    top: auto;\n    left: auto;\n    bottom: 20px;\n    right: 20px;\n}\n#gritter-notice-wrapper.bottom-left {\n    top: auto;\n    right: auto;\n    bottom: 20px;\n    left: 20px;\n}\n.gritter-item-wrapper {\n\tposition:relative;\n\tmargin:0 0 10px 0;\n}\n\n.gritter-top, .gritter-bottom {\n\theight: 0;\n}\n\n.gritter-item {\n\tdisplay:block;\n\tbackground: #f74d4d; /* Old browsers */\n\tcolor:#2b2b2b; box-shadow:3px 3px 20px #000;\n\tpadding:7px 10px 10px;\n\tfont-size: 11px; color:#fff;\n\tfont-family:verdana;\n}\n.hover .gritter-item {\n}\n.gritter-item p {\n\tpadding:0;\n\tmargin:0;\n\tword-wrap:break-word;\n\tfont-size: 10px;\n\tline-height: 14px;\n}\n.gritter-close {\n\tdisplay:none;\n\tposition:absolute;\n\ttop:-7px;\n\tright:-9px;\n\tbackground:url(../img/gritter.png) no-repeat left top;\n\tcursor:pointer;\n\twidth:30px;\n\theight:30px;\n}\n.gritter-title {\n\tfont-size:12px;\n\tfont-weight:bold;\n\tpadding:0 0 7px 0;\n\tdisplay:block;\n}\n.gritter-image {\n\twidth:32px;\n\theight:32px;\n\tfloat:left;\n\tmargin: 5px;\n}\n.gritter-with-image,\n.gritter-without-image {\n\tpadding:0;\n}\n.gritter-with-image {\n\twidth:220px;\n\tfloat:right;\n}\n/* for the light (white) version of the gritter notice */\n.gritter-light .gritter-item,\n.gritter-light .gritter-bottom,\n.gritter-light .gritter-top,\n.gritter-light .gritter-close {\n    background-image: url(../img/gritter-light.png);\n    color: #222;\n}\n.gritter-light .gritter-title {\n    text-shadow: none;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/multicheck/datatable-checkbox-init.js",
    "content": "$(function() {\n    //multicheckbox check for static table no padding\n    $('#mainCheckbox').multicheck($('.listCheckbox'));\n\n    //multicheckbox check for static table with padding\n    $('#mainCheckbox1').multicheck($('.listCheckbox1'));\n\n    /*var _gaq = _gaq || [];\n    _gaq.push(['_setAccount', 'UA-36251023-1']);\n    _gaq.push(['_setDomainName', 'jqueryscript.net']);\n    _gaq.push(['_trackPageview']);\n\n    (function() {\n        var ga = document.createElement('script');\n        ga.type = 'text/javascript';\n        ga.async = true;\n        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n        var s = document.getElementsByTagName('script')[0];\n        s.parentNode.insertBefore(ga, s);\n    })();*/\n\n\n\n});"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/multicheck/jquery.multicheck.js",
    "content": "( function( $ ) {\n\n\t$.fn.multicheck = function( $checkboxes ) {\n\t\t$checkboxes = $checkboxes.filter( 'input[type=checkbox]' );\n\t\tif( $checkboxes.length > 0 ) {\n\t\t\tthis.each( function() {\n\t\t\t\tvar $this = $( this );\n\t\t\t\t$this.click( function() {\n\t\t\t\t\t$checkboxes.prop( 'checked', this.checked );\n\t\t\t\t\t$this.trigger( this.checked ? 'multicheck.allchecked' : 'multicheck.nonechecked' );\n\t\t\t\t});\n\t\t\t\t$checkboxes.on( 'click change', function() {\n\t\t\t\t\tvar checkedItems = $checkboxes.filter( ':checked' ).length;\n\t\t\t\t\tif( checkedItems == 0 ) {\n\t\t\t\t\t\t$this[ 0 ].indeterminate = false;\n\t\t\t\t\t\t$this[ 0 ].checked = false;\n\t\t\t\t\t\t$this.trigger( 'multicheck.nonechecked' );\n\t\t\t\t\t} else if( checkedItems == $checkboxes.length ) {\n\t\t\t\t\t\t$this[ 0 ].indeterminate = false;\n\t\t\t\t\t\t$this[ 0 ].checked = true;\n\t\t\t\t\t\t$this.trigger( 'multicheck.allchecked' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$this[ 0 ].checked = false;\n\t\t\t\t\t\t$this[ 0 ].indeterminate = true;\n\t\t\t\t\t\t$this.trigger( 'multicheck.somechecked' );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t};\n\n})( jQuery );"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/multicheck/multicheck.css",
    "content": "/* The customcheckbox */\n.customcheckbox {\n  display: block;\n  position: relative;\n  padding-left: 24px;\n  font-weight: 100;\n  /*margin-bottom: 12px;*/\n  cursor: pointer;\n  font-size: 22px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none; }\n\n/* Hide the browser's default checkbox */\n.customcheckbox input {\n  position: absolute;\n  opacity: 0;\n  cursor: pointer; }\n\n/* Create a custom checkbox */\n.checkmark {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 20px;\n  width: 20px;\n  background-color: #CDCDCD;\n  border-radius: 6px; }\n\n/* On mouse-over, add a grey background color */\n.customcheckbox:hover input ~ .checkmark {\n  background-color: #ccc; }\n\n/* When the checkbox is checked, add a blue background */\n.customcheckbox input:checked ~ .checkmark {\n  background-color: #2196BB; }\n\n/* Create the checkmark/indicator (hidden when not checked) */\n.checkmark:after {\n  content: \"\";\n  position: absolute;\n  display: none; }\n\n/* Show the checkmark when checked */\n.customcheckbox input:checked ~ .checkmark:after {\n  display: block; }\n\n/* Style the checkmark/indicator */\n.customcheckbox .checkmark:after {\n  left: 8px;\n  top: 4px;\n  width: 5px;\n  height: 10px;\n  border: solid white;\n  border-width: 0 3px 3px 0;\n  -webkit-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  transform: rotate(45deg); }\n\n.check-1 {\n  margin-top: 12px;\n  margin-left: 14px; }"
  },
  {
    "path": "public/admin-panel/assets/extra-libs/sparkline/sparkline.js",
    "content": "/* jquery.sparkline 2.1.2 - http://omnipotent.net/jquery.sparkline/ \n** Licensed under the New BSD License - see above site for details */\n\n(function(a,b,c){(function(a){typeof define==\"function\"&&define.amd?define([\"jquery\"],a):jQuery&&!jQuery.fn.sparkline&&a(jQuery)})(function(d){\"use strict\";var e={},f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L=0;f=function(){return{common:{type:\"line\",lineColor:\"#00f\",fillColor:\"#cdf\",defaultPixelsPerValue:3,width:\"auto\",height:\"auto\",composite:!1,tagValuesAttribute:\"values\",tagOptionsPrefix:\"spark\",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:\"\",tooltipSuffix:\"\",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:\",\",numberDecimalMark:\".\",disableTooltips:!1,disableInteraction:!1},line:{spotColor:\"#f80\",highlightSpotColor:\"#5f5\",highlightLineColor:\"#f22\",spotRadius:1.5,minSpotColor:\"#f80\",maxSpotColor:\"#f80\",lineWidth:1,normalRangeMin:c,normalRangeMax:c,normalRangeColor:\"#ccc\",drawNormalOnTop:!1,chartRangeMin:c,chartRangeMax:c,chartRangeMinX:c,chartRangeMaxX:c,tooltipFormat:new h('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:\"#3366cc\",negBarColor:\"#f44\",stackedBarColor:[\"#3366cc\",\"#dc3912\",\"#ff9900\",\"#109618\",\"#66aa00\",\"#dd4477\",\"#0099c6\",\"#990099\"],zeroColor:c,nullColor:c,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,colorMap:c,tooltipFormat:new h('<span style=\"color: {{color}}\">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:\"#6f6\",negBarColor:\"#f44\",zeroBarColor:\"#999\",colorMap:{},tooltipFormat:new h('<span style=\"color: {{color}}\">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{\"-1\":\"Loss\",0:\"Draw\",1:\"Win\"}}},discrete:{lineHeight:\"auto\",thresholdColor:c,thresholdValue:0,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,tooltipFormat:new h(\"{{prefix}}{{value}}{{suffix}}\")},bullet:{targetColor:\"#f33\",targetWidth:3,performanceColor:\"#33f\",rangeColors:[\"#d3dafe\",\"#a8b6ff\",\"#7f94ff\"],base:c,tooltipFormat:new h(\"{{fieldkey:fields}} - {{value}}\"),tooltipValueLookups:{fields:{r:\"Range\",p:\"Performance\",t:\"Target\"}}},pie:{offset:0,sliceColors:[\"#3366cc\",\"#dc3912\",\"#ff9900\",\"#109618\",\"#66aa00\",\"#dd4477\",\"#0099c6\",\"#990099\"],borderWidth:0,borderColor:\"#000\",tooltipFormat:new h('<span style=\"color: {{color}}\">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:\"#000\",boxFillColor:\"#cdf\",whiskerColor:\"#000\",outlierLineColor:\"#333\",outlierFillColor:\"#fff\",medianColor:\"#f00\",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:c,targetColor:\"#4a2\",chartRangeMax:c,chartRangeMin:c,tooltipFormat:new h(\"{{field:fields}}: {{value}}\"),tooltipFormatFieldlistKey:\"field\",tooltipValueLookups:{fields:{lq:\"Lower Quartile\",med:\"Median\",uq:\"Upper Quartile\",lo:\"Left Outlier\",ro:\"Right Outlier\",lw:\"Left Whisker\",rw:\"Right Whisker\"}}}}},E='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',g=function(){var a,b;return a=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(a.prototype=d.extend(new arguments[0],arguments[arguments.length-1]),a._super=arguments[0].prototype):a.prototype=arguments[arguments.length-1],arguments.length>2&&(b=Array.prototype.slice.call(arguments,1,-1),b.unshift(a.prototype),d.extend.apply(d,b))):a.prototype=arguments[0],a.prototype.cls=a,a},d.SPFormatClass=h=g({fre:/\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,precre:/(\\w+)\\.(\\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,d){var e=this,f=a,g,h,i,j,k;return this.format.replace(this.fre,function(){var a;return h=arguments[1],i=arguments[3],g=e.precre.exec(h),g?(k=g[2],h=g[1]):k=!1,j=f[h],j===c?\"\":i&&b&&b[i]?(a=b[i],a.get?b[i].get(j)||j:b[i][j]||j):(n(j)&&(d.get(\"numberFormatter\")?j=d.get(\"numberFormatter\")(j):j=s(j,k,d.get(\"numberDigitGroupCount\"),d.get(\"numberDigitGroupSep\"),d.get(\"numberDecimalMark\"))),j)})}}),d.spformat=function(a,b){return new h(a,b)},i=function(a,b,c){return a<b?b:a>c?c:a},j=function(a,c){var d;return c===2?(d=b.floor(a.length/2),a.length%2?a[d]:(a[d-1]+a[d])/2):a.length%2?(d=(a.length*c+c)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1]):(d=(a.length*c+2)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1])},k=function(a){var b;switch(a){case\"undefined\":a=c;break;case\"null\":a=null;break;case\"true\":a=!0;break;case\"false\":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},l=function(a){var b,c=[];for(b=a.length;b--;)c[b]=k(a[b]);return c},m=function(a,b){var c,d,e=[];for(c=0,d=a.length;c<d;c++)a[c]!==b&&e.push(a[c]);return e},n=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},s=function(a,b,c,e,f){var g,h;a=(b===!1?parseFloat(a).toString():a.toFixed(b)).split(\"\"),g=(g=d.inArray(\".\",a))<0?a.length:g,g<a.length&&(a[g]=f);for(h=g-c;h>0;h-=c)a.splice(h,0,e);return a.join(\"\")},o=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},p=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]==\"number\"?a[c]:0;return b},r=function(a){return d.isArray(a)?a:[a]},q=function(b){var c;a.createStyleSheet?a.createStyleSheet().cssText=b:(c=a.createElement(\"style\"),c.type=\"text/css\",a.getElementsByTagName(\"head\")[0].appendChild(c),c[typeof a.body.style.WebkitAppearance==\"string\"?\"innerText\":\"innerHTML\"]=b)},d.fn.simpledraw=function(b,e,f,g){var h,i;if(f&&(h=this.data(\"_jqs_vcanvas\")))return h;if(d.fn.sparkline.canvas===!1)return!1;if(d.fn.sparkline.canvas===c){var j=a.createElement(\"canvas\");if(!j.getContext||!j.getContext(\"2d\")){if(!a.namespaces||!!a.namespaces.v)return d.fn.sparkline.canvas=!1,!1;a.namespaces.add(\"v\",\"urn:schemas-microsoft-com:vml\",\"#default#VML\"),d.fn.sparkline.canvas=function(a,b,c,d){return new J(a,b,c)}}else d.fn.sparkline.canvas=function(a,b,c,d){return new I(a,b,c,d)}}return b===c&&(b=d(this).innerWidth()),e===c&&(e=d(this).innerHeight()),h=d.fn.sparkline.canvas(b,e,this,g),i=d(this).data(\"_jqs_mhandler\"),i&&i.registerCanvas(h),h},d.fn.cleardraw=function(){var a=this.data(\"_jqs_vcanvas\");a&&a.reset()},d.RangeMapClass=t=g({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b==\"string\"&&b.indexOf(\":\")>-1&&(c=b.split(\":\"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,d,e,f;if((f=this.map[a])!==c)return f;if(b)for(d=b.length;d--;){e=b[d];if(e[0]<=a&&e[1]>=a)return e[2]}return c}}),d.range_map=function(a){return new t(a)},u=g({init:function(a,b){var c=d(a);this.$el=c,this.options=b,this.currentPageX=0,this.currentPageY=0,this.el=a,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!b.get(\"disableTooltips\"),this.highlightEnabled=!b.get(\"disableHighlight\")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(a){var b=d(a.canvas);this.canvas=a,this.$canvas=b,b.mouseenter(d.proxy(this.mouseenter,this)),b.mouseleave(d.proxy(this.mouseleave,this)),b.click(d.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=c)},mouseclick:function(a){var b=d.Event(\"sparklineClick\");b.originalEvent=a,b.sparklines=this.splist,this.$el.trigger(b)},mouseenter:function(b){d(a.body).unbind(\"mousemove.jqs\"),d(a.body).bind(\"mousemove.jqs\",d.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new v(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){d(a.body).unbind(\"mousemove.jqs\");var b=this.splist,c=b.length,e=!1,f,g;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(g=0;g<c;g++)f=b[g],f.clearRegionHighlight()&&(e=!0);e&&this.canvas.render()},mousemove:function(a){this.currentPageX=a.pageX,this.currentPageY=a.pageY,this.currentEl=a.target,this.tooltip&&this.tooltip.updatePosition(a.pageX,a.pageY),this.updateDisplay()},updateDisplay:function(){var a=this.splist,b=a.length,c=!1,e=this.$canvas.offset(),f=this.currentPageX-e.left,g=this.currentPageY-e.top,h,i,j,k,l;if(!this.over)return;for(j=0;j<b;j++)i=a[j],k=i.setRegionHighlight(this.currentEl,f,g),k&&(c=!0);if(c){l=d.Event(\"sparklineRegionChange\"),l.sparklines=this.splist,this.$el.trigger(l);if(this.tooltip){h=\"\";for(j=0;j<b;j++)i=a[j],h+=i.getCurrentRegionTooltip();this.tooltip.setContent(h)}this.disableHighlight||this.canvas.render()}k===null&&this.mouseleave()}}),v=g({sizeStyle:\"position: static !important;display: block !important;visibility: hidden !important;float: left !important;\",init:function(b){var c=b.get(\"tooltipClassname\",\"jqstooltip\"),e=this.sizeStyle,f;this.container=b.get(\"tooltipContainer\")||a.body,this.tooltipOffsetX=b.get(\"tooltipOffsetX\",10),this.tooltipOffsetY=b.get(\"tooltipOffsetY\",12),d(\"#jqssizetip\").remove(),d(\"#jqstooltip\").remove(),this.sizetip=d(\"<div/>\",{id:\"jqssizetip\",style:e,\"class\":c}),this.tooltip=d(\"<div/>\",{id:\"jqstooltip\",\"class\":c}).appendTo(this.container),f=this.tooltip.offset(),this.offsetLeft=f.left,this.offsetTop=f.top,this.hidden=!0,d(window).unbind(\"resize.jqs scroll.jqs\"),d(window).bind(\"resize.jqs scroll.jqs\",d.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=d(window).scrollTop(),this.scrollLeft=d(window).scrollLeft(),this.scrollRight=this.scrollLeft+d(window).width(),this.updatePosition()},getSize:function(a){this.sizetip.html(a).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(a){if(!a){this.tooltip.css(\"visibility\",\"hidden\"),this.hidden=!0;return}this.getSize(a),this.tooltip.html(a).css({width:this.width,height:this.height,visibility:\"visible\"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(a,b){if(a===c){if(this.mousex===c)return;a=this.mousex-this.offsetLeft,b=this.mousey-this.offsetTop}else this.mousex=a-=this.offsetLeft,this.mousey=b-=this.offsetTop;if(!this.height||!this.width||this.hidden)return;b-=this.height+this.tooltipOffsetY,a+=this.tooltipOffsetX,b<this.scrollTop&&(b=this.scrollTop),a<this.scrollLeft?a=this.scrollLeft:a+this.width>this.scrollRight&&(a=this.scrollRight-this.width),this.tooltip.css({left:a,top:b})},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=c,d(window).unbind(\"resize.jqs scroll.jqs\")}}),F=function(){q(E)},d(F),K=[],d.fn.sparkline=function(b,e){return this.each(function(){var f=new d.fn.sparkline.options(this,e),g=d(this),h,i;h=function(){var e,h,i,j,k,l,m;if(b===\"html\"||b===c){m=this.getAttribute(f.get(\"tagValuesAttribute\"));if(m===c||m===null)m=g.html();e=m.replace(/(^\\s*<!--)|(-->\\s*$)|\\s+/g,\"\").split(\",\")}else e=b;h=f.get(\"width\")===\"auto\"?e.length*f.get(\"defaultPixelsPerValue\"):f.get(\"width\");if(f.get(\"height\")===\"auto\"){if(!f.get(\"composite\")||!d.data(this,\"_jqs_vcanvas\"))j=a.createElement(\"span\"),j.innerHTML=\"a\",g.html(j),i=d(j).innerHeight()||d(j).height(),d(j).remove(),j=null}else i=f.get(\"height\");f.get(\"disableInteraction\")?k=!1:(k=d.data(this,\"_jqs_mhandler\"),k?f.get(\"composite\")||k.reset():(k=new u(this,f),d.data(this,\"_jqs_mhandler\",k)));if(f.get(\"composite\")&&!d.data(this,\"_jqs_vcanvas\")){d.data(this,\"_jqs_errnotify\")||(alert(\"Attempted to attach a composite sparkline to an element with no existing sparkline\"),d.data(this,\"_jqs_errnotify\",!0));return}l=new(d.fn.sparkline[f.get(\"type\")])(this,e,f,h,i),l.render(),k&&k.registerSparkline(l)};if(d(this).html()&&!f.get(\"disableHiddenCheck\")&&d(this).is(\":hidden\")||!d(this).parents(\"body\").length){if(!f.get(\"composite\")&&d.data(this,\"_jqs_pending\"))for(i=K.length;i;i--)K[i-1][0]==this&&K.splice(i-1,1);K.push([this,h]),d.data(this,\"_jqs_pending\",!0)}else h.call(this)})},d.fn.sparkline.defaults=f(),d.sparkline_display_visible=function(){var a,b,c,e=[];for(b=0,c=K.length;b<c;b++)a=K[b][0],d(a).is(\":visible\")&&!d(a).parents().is(\":hidden\")?(K[b][1].call(a),d.data(K[b][0],\"_jqs_pending\",!1),e.push(b)):!d(a).closest(\"html\").length&&!d.data(a,\"_jqs_pending\")&&(d.data(K[b][0],\"_jqs_pending\",!1),e.push(b));for(b=e.length;b;b--)K.splice(e[b-1],1)},d.fn.sparkline.options=g({init:function(a,b){var c,f,g,h;this.userOptions=b=b||{},this.tag=a,this.tagValCache={},f=d.fn.sparkline.defaults,g=f.common,this.tagOptionsPrefix=b.enableTagOptions&&(b.tagOptionsPrefix||g.tagOptionsPrefix),h=this.getTagSetting(\"type\"),h===e?c=f[b.type||g.type]:c=f[h],this.mergedOptions=d.extend({},g,c,b)},getTagSetting:function(a){var b=this.tagOptionsPrefix,d,f,g,h;if(b===!1||b===c)return e;if(this.tagValCache.hasOwnProperty(a))d=this.tagValCache.key;else{d=this.tag.getAttribute(b+a);if(d===c||d===null)d=e;else if(d.substr(0,1)===\"[\"){d=d.substr(1,d.length-2).split(\",\");for(f=d.length;f--;)d[f]=k(d[f].replace(/(^\\s*)|(\\s*$)/g,\"\"))}else if(d.substr(0,1)===\"{\"){g=d.substr(1,d.length-2).split(\",\"),d={};for(f=g.length;f--;)h=g[f].split(\":\",2),d[h[0].replace(/(^\\s*)|(\\s*$)/g,\"\")]=k(h[1].replace(/(^\\s*)|(\\s*$)/g,\"\"))}else d=k(d);this.tagValCache.key=d}return d},get:function(a,b){var d=this.getTagSetting(a),f;return d!==e?d:(f=this.mergedOptions[a])===c?b:f}}),d.fn.sparkline._base=g({disabled:!1,init:function(a,b,e,f,g){this.el=a,this.$el=d(a),this.values=b,this.options=e,this.width=f,this.height=g,this.currentRegion=c},initTarget:function(){var a=!this.options.get(\"disableInteraction\");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get(\"composite\"),a))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return this.disabled?(this.el.innerHTML=\"\",!1):!0},getRegion:function(a,b){},setRegionHighlight:function(a,b,d){var e=this.currentRegion,f=!this.options.get(\"disableHighlight\"),g;return b>this.canvasWidth||d>this.canvasHeight||b<0||d<0?null:(g=this.getRegion(a,b,d),e!==g?(e!==c&&f&&this.removeHighlight(),this.currentRegion=g,g!==c&&f&&this.renderHighlight(),!0):!1)},clearRegionHighlight:function(){return this.currentRegion!==c?(this.removeHighlight(),this.currentRegion=c,!0):!1},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(a){},getCurrentRegionTooltip:function(){var a=this.options,b=\"\",e=[],f,g,i,j,k,l,m,n,o,p,q,r,s,t;if(this.currentRegion===c)return\"\";f=this.getCurrentRegionFields(),q=a.get(\"tooltipFormatter\");if(q)return q(this,a,f);a.get(\"tooltipChartTitle\")&&(b+='<div class=\"jqs jqstitle\">'+a.get(\"tooltipChartTitle\")+\"</div>\\n\"),g=this.options.get(\"tooltipFormat\");if(!g)return\"\";d.isArray(g)||(g=[g]),d.isArray(f)||(f=[f]),m=this.options.get(\"tooltipFormatFieldlist\"),n=this.options.get(\"tooltipFormatFieldlistKey\");if(m&&n){o=[];for(l=f.length;l--;)p=f[l][n],(t=d.inArray(p,m))!=-1&&(o[t]=f[l]);f=o}i=g.length,s=f.length;for(l=0;l<i;l++){r=g[l],typeof r==\"string\"&&(r=new h(r)),j=r.fclass||\"jqsfield\";for(t=0;t<s;t++)if(!f[t].isNull||!a.get(\"tooltipSkipNull\"))d.extend(f[t],{prefix:a.get(\"tooltipPrefix\"),suffix:a.get(\"tooltipSuffix\")}),k=r.render(f[t],a.get(\"tooltipValueLookups\"),a),e.push('<div class=\"'+j+'\">'+k+\"</div>\")}return e.length?b+e.join(\"\\n\"):\"\"},getCurrentRegionFields:function(){},calcHighlightColor:function(a,c){var d=c.get(\"highlightColor\"),e=c.get(\"highlightLighten\"),f,g,h,j;if(d)return d;if(e){f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(a)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(a);if(f){h=[],g=a.length===4?16:1;for(j=0;j<3;j++)h[j]=i(b.round(parseInt(f[j+1],16)*g*e),0,255);return\"rgb(\"+h.join(\",\")+\")\"}}return a}}),w={changeHighlight:function(a){var b=this.currentRegion,c=this.target,e=this.regionShapes[b],f;e&&(f=this.renderRegion(b,a),d.isArray(f)||d.isArray(e)?(c.replaceWithShapes(e,f),this.regionShapes[b]=d.map(f,function(a){return a.id})):(c.replaceWithShape(e,f),this.regionShapes[b]=f.id))},render:function(){var a=this.values,b=this.target,c=this.regionShapes,e,f,g,h;if(!this.cls._super.render.call(this))return;for(g=a.length;g--;){e=this.renderRegion(g);if(e)if(d.isArray(e)){f=[];for(h=e.length;h--;)e[h].append(),f.push(e[h].id);c[g]=f}else e.append(),c[g]=e.id;else c[g]=null}b.render()}},d.fn.sparkline.line=x=g(d.fn.sparkline._base,{type:\"line\",init:function(a,b,c,d,e){x._super.init.call(this,a,b,c,d,e),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(a,b,d){var e,f=this.regionMap;for(e=f.length;e--;)if(f[e]!==null&&b>=f[e][0]&&b<=f[e][1])return f[e][2];return c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.yvalues[a]===null,x:this.xvalues[a],y:this.yvalues[a],color:this.options.get(\"lineColor\"),fillColor:this.options.get(\"fillColor\"),offset:a}},renderHighlight:function(){var a=this.currentRegion,b=this.target,d=this.vertices[a],e=this.options,f=e.get(\"spotRadius\"),g=e.get(\"highlightSpotColor\"),h=e.get(\"highlightLineColor\"),i,j;if(!d)return;f&&g&&(i=b.drawCircle(d[0],d[1],f,c,g),this.highlightSpotId=i.id,b.insertAfterShape(this.lastShapeId,i)),h&&(j=b.drawLine(d[0],this.canvasTop,d[0],this.canvasTop+this.canvasHeight,h),this.highlightLineId=j.id,b.insertAfterShape(this.lastShapeId,j))},removeHighlight:function(){var a=this.target;this.highlightSpotId&&(a.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(a.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var a=this.values,c=a.length,d=this.xvalues,e=this.yvalues,f=this.yminmax,g,h,i,j,k;for(g=0;g<c;g++)h=a[g],i=typeof a[g]==\"string\",j=typeof a[g]==\"object\"&&a[g]instanceof Array,k=i&&a[g].split(\":\"),i&&k.length===2?(d.push(Number(k[0])),e.push(Number(k[1])),f.push(Number(k[1]))):j?(d.push(h[0]),e.push(h[1]),f.push(h[1])):(d.push(g),a[g]===null||a[g]===\"null\"?e.push(null):(e.push(Number(h)),f.push(Number(h))));this.options.get(\"xvalues\")&&(d=this.options.get(\"xvalues\")),this.maxy=this.maxyorg=b.max.apply(b,f),this.miny=this.minyorg=b.min.apply(b,f),this.maxx=b.max.apply(b,d),this.minx=b.min.apply(b,d),this.xvalues=d,this.yvalues=e,this.yminmax=f},processRangeOptions:function(){var a=this.options,b=a.get(\"normalRangeMin\"),d=a.get(\"normalRangeMax\");b!==c&&(b<this.miny&&(this.miny=b),d>this.maxy&&(this.maxy=d)),a.get(\"chartRangeMin\")!==c&&(a.get(\"chartRangeClip\")||a.get(\"chartRangeMin\")<this.miny)&&(this.miny=a.get(\"chartRangeMin\")),a.get(\"chartRangeMax\")!==c&&(a.get(\"chartRangeClip\")||a.get(\"chartRangeMax\")>this.maxy)&&(this.maxy=a.get(\"chartRangeMax\")),a.get(\"chartRangeMinX\")!==c&&(a.get(\"chartRangeClipX\")||a.get(\"chartRangeMinX\")<this.minx)&&(this.minx=a.get(\"chartRangeMinX\")),a.get(\"chartRangeMaxX\")!==c&&(a.get(\"chartRangeClipX\")||a.get(\"chartRangeMaxX\")>this.maxx)&&(this.maxx=a.get(\"chartRangeMaxX\"))},drawNormalRange:function(a,d,e,f,g){var h=this.options.get(\"normalRangeMin\"),i=this.options.get(\"normalRangeMax\"),j=d+b.round(e-e*((i-this.miny)/g)),k=b.round(e*(i-h)/g);this.target.drawRect(a,j,f,k,c,this.options.get(\"normalRangeColor\")).append()},render:function(){var a=this.options,e=this.target,f=this.canvasWidth,g=this.canvasHeight,h=this.vertices,i=a.get(\"spotRadius\"),j=this.regionMap,k,l,m,n,o,p,q,r,s,u,v,w,y,z,A,B,C,D,E,F,G,H,I,J,K;if(!x._super.render.call(this))return;this.scanValues(),this.processRangeOptions(),I=this.xvalues,J=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2)return;n=o=0,k=this.maxx-this.minx===0?1:this.maxx-this.minx,l=this.maxy-this.miny===0?1:this.maxy-this.miny,m=this.yvalues.length-1,i&&(f<i*4||g<i*4)&&(i=0);if(i){G=a.get(\"highlightSpotColor\")&&!a.get(\"disableInteraction\");if(G||a.get(\"minSpotColor\")||a.get(\"spotColor\")&&J[m]===this.miny)g-=b.ceil(i);if(G||a.get(\"maxSpotColor\")||a.get(\"spotColor\")&&J[m]===this.maxy)g-=b.ceil(i),n+=b.ceil(i);if(G||(a.get(\"minSpotColor\")||a.get(\"maxSpotColor\"))&&(J[0]===this.miny||J[0]===this.maxy))o+=b.ceil(i),f-=b.ceil(i);if(G||a.get(\"spotColor\")||a.get(\"minSpotColor\")||a.get(\"maxSpotColor\")&&(J[m]===this.miny||J[m]===this.maxy))f-=b.ceil(i)}g--,a.get(\"normalRangeMin\")!==c&&!a.get(\"drawNormalOnTop\")&&this.drawNormalRange(o,n,g,f,l),q=[],r=[q],z=A=null,B=J.length;for(K=0;K<B;K++)s=I[K],v=I[K+1],u=J[K],w=o+b.round((s-this.minx)*(f/k)),y=K<B-1?o+b.round((v-this.minx)*(f/k)):f,A=w+(y-w)/2,j[K]=[z||0,A,K],z=A,u===null?K&&(J[K-1]!==null&&(q=[],r.push(q)),h.push(null)):(u<this.miny&&(u=this.miny),u>this.maxy&&(u=this.maxy),q.length||q.push([w,n+g]),p=[w,n+b.round(g-g*((u-this.miny)/l))],q.push(p),h.push(p));C=[],D=[],E=r.length;for(K=0;K<E;K++)q=r[K],q.length&&(a.get(\"fillColor\")&&(q.push([q[q.length-1][0],n+g]),D.push(q.slice(0)),q.pop()),q.length>2&&(q[0]=[q[0][0],q[1][1]]),C.push(q));E=D.length;for(K=0;K<E;K++)e.drawShape(D[K],a.get(\"fillColor\"),a.get(\"fillColor\")).append();a.get(\"normalRangeMin\")!==c&&a.get(\"drawNormalOnTop\")&&this.drawNormalRange(o,n,g,f,l),E=C.length;for(K=0;K<E;K++)e.drawShape(C[K],a.get(\"lineColor\"),c,a.get(\"lineWidth\")).append();if(i&&a.get(\"valueSpots\")){F=a.get(\"valueSpots\"),F.get===c&&(F=new t(F));for(K=0;K<B;K++)H=F.get(J[K]),H&&e.drawCircle(o+b.round((I[K]-this.minx)*(f/k)),n+b.round(g-g*((J[K]-this.miny)/l)),i,c,H).append()}i&&a.get(\"spotColor\")&&J[m]!==null&&e.drawCircle(o+b.round((I[I.length-1]-this.minx)*(f/k)),n+b.round(g-g*((J[m]-this.miny)/l)),i,c,a.get(\"spotColor\")).append(),this.maxy!==this.minyorg&&(i&&a.get(\"minSpotColor\")&&(s=I[d.inArray(this.minyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.minyorg-this.miny)/l)),i,c,a.get(\"minSpotColor\")).append()),i&&a.get(\"maxSpotColor\")&&(s=I[d.inArray(this.maxyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.maxyorg-this.miny)/l)),i,c,a.get(\"maxSpotColor\")).append())),this.lastShapeId=e.getLastShapeId(),this.canvasTop=n,e.render()}}),d.fn.sparkline.bar=y=g(d.fn.sparkline._base,w,{type:\"bar\",init:function(a,e,f,g,h){var j=parseInt(f.get(\"barWidth\"),10),n=parseInt(f.get(\"barSpacing\"),10),o=f.get(\"chartRangeMin\"),p=f.get(\"chartRangeMax\"),q=f.get(\"chartRangeClip\"),r=Infinity,s=-Infinity,u,v,w,x,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R;y._super.init.call(this,a,e,f,g,h);for(A=0,B=e.length;A<B;A++){O=e[A],u=typeof O==\"string\"&&O.indexOf(\":\")>-1;if(u||d.isArray(O))J=!0,u&&(O=e[A]=l(O.split(\":\"))),O=m(O,null),v=b.min.apply(b,O),w=b.max.apply(b,O),v<r&&(r=v),w>s&&(s=w)}this.stacked=J,this.regionShapes={},this.barWidth=j,this.barSpacing=n,this.totalBarWidth=j+n,this.width=g=e.length*j+(e.length-1)*n,this.initTarget(),q&&(H=o===c?-Infinity:o,I=p===c?Infinity:p),z=[],x=J?[]:z;var S=[],T=[];for(A=0,B=e.length;A<B;A++)if(J){K=e[A],e[A]=N=[],S[A]=0,x[A]=T[A]=0;for(L=0,M=K.length;L<M;L++)O=N[L]=q?i(K[L],H,I):K[L],O!==null&&(O>0&&(S[A]+=O),r<0&&s>0?O<0?T[A]+=b.abs(O):x[A]+=O:x[A]+=b.abs(O-(O<0?s:r)),z.push(O))}else O=q?i(e[A],H,I):e[A],O=e[A]=k(O),O!==null&&z.push(O);this.max=G=b.max.apply(b,z),this.min=F=b.min.apply(b,z),this.stackMax=s=J?b.max.apply(b,S):G,this.stackMin=r=J?b.min.apply(b,z):F,f.get(\"chartRangeMin\")!==c&&(f.get(\"chartRangeClip\")||f.get(\"chartRangeMin\")<F)&&(F=f.get(\"chartRangeMin\")),f.get(\"chartRangeMax\")!==c&&(f.get(\"chartRangeClip\")||f.get(\"chartRangeMax\")>G)&&(G=f.get(\"chartRangeMax\")),this.zeroAxis=D=f.get(\"zeroAxis\",!0),F<=0&&G>=0&&D?E=0:D==0?E=F:F>0?E=F:E=G,this.xaxisOffset=E,C=J?b.max.apply(b,x)+b.max.apply(b,T):G-F,this.canvasHeightEf=D&&F<0?this.canvasHeight-2:this.canvasHeight-1,F<E?(Q=J&&G>=0?s:G,P=(Q-E)/C*this.canvasHeight,P!==b.ceil(P)&&(this.canvasHeightEf-=2,P=b.ceil(P))):P=this.canvasHeight,this.yoffset=P,d.isArray(f.get(\"colorMap\"))?(this.colorMapByIndex=f.get(\"colorMap\"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=f.get(\"colorMap\"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.range=C},getRegion:function(a,d,e){var f=b.floor(d/this.totalBarWidth);return f<0||f>=this.values.length?c:f},getCurrentRegionFields:function(){var a=this.currentRegion,b=r(this.values[a]),c=[],d,e;for(e=b.length;e--;)d=b[e],c.push({isNull:d===null,value:d,color:this.calcColor(e,d,a),offset:a});return c},calcColor:function(a,b,e){var f=this.colorMapByIndex,g=this.colorMapByValue,h=this.options,i,j;return this.stacked?i=h.get(\"stackedBarColor\"):i=b<0?h.get(\"negBarColor\"):h.get(\"barColor\"),b===0&&h.get(\"zeroColor\")!==c&&(i=h.get(\"zeroColor\")),g&&(j=g.get(b))?i=j:f&&f.length>e&&(i=f[e]),d.isArray(i)?i[a%i.length]:i},renderRegion:function(a,e){var f=this.values[a],g=this.options,h=this.xaxisOffset,i=[],j=this.range,k=this.stacked,l=this.target,m=a*this.totalBarWidth,n=this.canvasHeightEf,p=this.yoffset,q,r,s,t,u,v,w,x,y,z;f=d.isArray(f)?f:[f],w=f.length,x=f[0],t=o(null,f),z=o(h,f,!0);if(t)return g.get(\"nullColor\")?(s=e?g.get(\"nullColor\"):this.calcHighlightColor(g.get(\"nullColor\"),g),q=p>0?p-1:p,l.drawRect(m,q,this.barWidth-1,0,s,s)):c;u=p;for(v=0;v<w;v++){x=f[v];if(k&&x===h){if(!z||y)continue;y=!0}j>0?r=b.floor(n*(b.abs(x-h)/j))+1:r=1,x<h||x===h&&p===0?(q=u,u+=r):(q=p-r,p-=r),s=this.calcColor(v,x,a),e&&(s=this.calcHighlightColor(s,g)),i.push(l.drawRect(m,q,this.barWidth-1,r-1,s,s))}return i.length===1?i[0]:i}}),d.fn.sparkline.tristate=z=g(d.fn.sparkline._base,w,{type:\"tristate\",init:function(a,b,e,f,g){var h=parseInt(e.get(\"barWidth\"),10),i=parseInt(e.get(\"barSpacing\"),10);z._super.init.call(this,a,b,e,f,g),this.regionShapes={},this.barWidth=h,this.barSpacing=i,this.totalBarWidth=h+i,this.values=d.map(b,Number),this.width=f=b.length*h+(b.length-1)*i,d.isArray(e.get(\"colorMap\"))?(this.colorMapByIndex=e.get(\"colorMap\"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=e.get(\"colorMap\"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.initTarget()},getRegion:function(a,c,d){return b.floor(c/this.totalBarWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],color:this.calcColor(this.values[a],a),offset:a}},calcColor:function(a,b){var c=this.values,d=this.options,e=this.colorMapByIndex,f=this.colorMapByValue,g,h;return f&&(h=f.get(a))?g=h:e&&e.length>b?g=e[b]:c[b]<0?g=d.get(\"negBarColor\"):c[b]>0?g=d.get(\"posBarColor\"):g=d.get(\"zeroBarColor\"),g},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.target,g,h,i,j,k,l;g=f.pixelHeight,i=b.round(g/2),j=a*this.totalBarWidth,d[a]<0?(k=i,h=i-1):d[a]>0?(k=0,h=i-1):(k=i-1,h=2),l=this.calcColor(d[a],a);if(l===null)return;return c&&(l=this.calcHighlightColor(l,e)),f.drawRect(j,k,this.barWidth-1,h-1,l,l)}}),d.fn.sparkline.discrete=A=g(d.fn.sparkline._base,w,{type:\"discrete\",init:function(a,e,f,g,h){A._super.init.call(this,a,e,f,g,h),this.regionShapes={},this.values=e=d.map(e,Number),this.min=b.min.apply(b,e),this.max=b.max.apply(b,e),this.range=this.max-this.min,this.width=g=f.get(\"width\")===\"auto\"?e.length*2:this.width,this.interval=b.floor(g/e.length),this.itemWidth=g/e.length,f.get(\"chartRangeMin\")!==c&&(f.get(\"chartRangeClip\")||f.get(\"chartRangeMin\")<this.min)&&(this.min=f.get(\"chartRangeMin\")),f.get(\"chartRangeMax\")!==c&&(f.get(\"chartRangeClip\")||f.get(\"chartRangeMax\")>this.max)&&(this.max=f.get(\"chartRangeMax\")),this.initTarget(),this.target&&(this.lineHeight=f.get(\"lineHeight\")===\"auto\"?b.round(this.canvasHeight*.3):f.get(\"lineHeight\"))},getRegion:function(a,c,d){return b.floor(c/this.itemWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],offset:a}},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.min,g=this.max,h=this.range,j=this.interval,k=this.target,l=this.canvasHeight,m=this.lineHeight,n=l-m,o,p,q,r;return p=i(d[a],f,g),r=a*j,o=b.round(n-n*((p-f)/h)),q=e.get(\"thresholdColor\")&&p<e.get(\"thresholdValue\")?e.get(\"thresholdColor\"):e.get(\"lineColor\"),c&&(q=this.calcHighlightColor(q,e)),k.drawLine(r,o,r,o+m,q)}}),d.fn.sparkline.bullet=B=g(d.fn.sparkline._base,{type:\"bullet\",init:function(a,d,e,f,g){var h,i,j;B._super.init.call(this,a,d,e,f,g),this.values=d=l(d),j=d.slice(),j[0]=j[0]===null?j[2]:j[0],j[1]=d[1]===null?j[2]:j[1],h=b.min.apply(b,d),i=b.max.apply(b,d),e.get(\"base\")===c?h=h<0?h:0:h=e.get(\"base\"),this.min=h,this.max=i,this.range=i-h,this.shapes={},this.valueShapes={},this.regiondata={},this.width=f=e.get(\"width\")===\"auto\"?\"4.0em\":f,this.target=this.$el.simpledraw(f,g,e.get(\"composite\")),d.length||(this.disabled=!0),this.initTarget()},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{fieldkey:a.substr(0,1),value:this.values[a.substr(1)],region:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.valueShapes[b],d;delete this.shapes[c];switch(b.substr(0,1)){case\"r\":d=this.renderRange(b.substr(1),a);break;case\"p\":d=this.renderPerformance(a);break;case\"t\":d=this.renderTarget(a)}this.valueShapes[b]=d.id,this.shapes[d.id]=b,this.target.replaceWithShape(c,d)},renderRange:function(a,c){var d=this.values[a],e=b.round(this.canvasWidth*((d-this.min)/this.range)),f=this.options.get(\"rangeColors\")[a-2];return c&&(f=this.calcHighlightColor(f,this.options)),this.target.drawRect(0,0,e-1,this.canvasHeight-1,f,f)},renderPerformance:function(a){var c=this.values[1],d=b.round(this.canvasWidth*((c-this.min)/this.range)),e=this.options.get(\"performanceColor\");return a&&(e=this.calcHighlightColor(e,this.options)),this.target.drawRect(0,b.round(this.canvasHeight*.3),d-1,b.round(this.canvasHeight*.4)-1,e,e)},renderTarget:function(a){var c=this.values[0],d=b.round(this.canvasWidth*((c-this.min)/this.range)-this.options.get(\"targetWidth\")/2),e=b.round(this.canvasHeight*.1),f=this.canvasHeight-e*2,g=this.options.get(\"targetColor\");return a&&(g=this.calcHighlightColor(g,this.options)),this.target.drawRect(d,e,this.options.get(\"targetWidth\")-1,f-1,g,g)},render:function(){var a=this.values.length,b=this.target,c,d;if(!B._super.render.call(this))return;for(c=2;c<a;c++)d=this.renderRange(c).append(),this.shapes[d.id]=\"r\"+c,this.valueShapes[\"r\"+c]=d.id;this.values[1]!==null&&(d=this.renderPerformance().append(),this.shapes[d.id]=\"p1\",this.valueShapes.p1=d.id),this.values[0]!==null&&(d=this.renderTarget().append(),this.shapes[d.id]=\"t0\",this.valueShapes.t0=d.id),b.render()}}),d.fn.sparkline.pie=C=g(d.fn.sparkline._base,{type:\"pie\",init:function(a,c,e,f,g){var h=0,i;C._super.init.call(this,a,c,e,f,g),this.shapes={},this.valueShapes={},this.values=c=d.map(c,Number),e.get(\"width\")===\"auto\"&&(this.width=this.height);if(c.length>0)for(i=c.length;i--;)h+=c[i];this.total=h,this.initTarget(),this.radius=b.floor(b.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],percent:this.values[a]/this.total*100,color:this.options.get(\"sliceColors\")[a%this.options.get(\"sliceColors\").length],offset:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.renderSlice(b,a),d=this.valueShapes[b];delete this.shapes[d],this.target.replaceWithShape(d,c),this.valueShapes[b]=c.id,this.shapes[c.id]=b},renderSlice:function(a,d){var e=this.target,f=this.options,g=this.radius,h=f.get(\"borderWidth\"),i=f.get(\"offset\"),j=2*b.PI,k=this.values,l=this.total,m=i?2*b.PI*(i/360):0,n,o,p,q,r;q=k.length;for(p=0;p<q;p++){n=m,o=m,l>0&&(o=m+j*(k[p]/l));if(a===p)return r=f.get(\"sliceColors\")[p%f.get(\"sliceColors\").length],d&&(r=this.calcHighlightColor(r,f)),e.drawPieSlice(g,g,g-h,n,o,c,r);m=o}},render:function(){var a=this.target,d=this.values,e=this.options,f=this.radius,g=e.get(\"borderWidth\"),h,i;if(!C._super.render.call(this))return;g&&a.drawCircle(f,f,b.floor(f-g/2),e.get(\"borderColor\"),c,g).append();for(i=d.length;i--;)d[i]&&(h=this.renderSlice(i).append(),this.valueShapes[i]=h.id,this.shapes[h.id]=i);a.render()}}),d.fn.sparkline.box=D=g(d.fn.sparkline._base,{type:\"box\",init:function(a,b,c,e,f){D._super.init.call(this,a,b,c,e,f),this.values=d.map(b,Number),this.width=c.get(\"width\")===\"auto\"?\"4.0em\":e,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var a=[{field:\"lq\",value:this.quartiles[0]},{field:\"med\",value:this.quartiles\n[1]},{field:\"uq\",value:this.quartiles[2]}];return this.loutlier!==c&&a.push({field:\"lo\",value:this.loutlier}),this.routlier!==c&&a.push({field:\"ro\",value:this.routlier}),this.lwhisker!==c&&a.push({field:\"lw\",value:this.lwhisker}),this.rwhisker!==c&&a.push({field:\"rw\",value:this.rwhisker}),a},render:function(){var a=this.target,d=this.values,e=d.length,f=this.options,g=this.canvasWidth,h=this.canvasHeight,i=f.get(\"chartRangeMin\")===c?b.min.apply(b,d):f.get(\"chartRangeMin\"),k=f.get(\"chartRangeMax\")===c?b.max.apply(b,d):f.get(\"chartRangeMax\"),l=0,m,n,o,p,q,r,s,t,u,v,w;if(!D._super.render.call(this))return;if(f.get(\"raw\"))f.get(\"showOutliers\")&&d.length>5?(n=d[0],m=d[1],p=d[2],q=d[3],r=d[4],s=d[5],t=d[6]):(m=d[0],p=d[1],q=d[2],r=d[3],s=d[4]);else{d.sort(function(a,b){return a-b}),p=j(d,1),q=j(d,2),r=j(d,3),o=r-p;if(f.get(\"showOutliers\")){m=s=c;for(u=0;u<e;u++)m===c&&d[u]>p-o*f.get(\"outlierIQR\")&&(m=d[u]),d[u]<r+o*f.get(\"outlierIQR\")&&(s=d[u]);n=d[0],t=d[e-1]}else m=d[0],s=d[e-1]}this.quartiles=[p,q,r],this.lwhisker=m,this.rwhisker=s,this.loutlier=n,this.routlier=t,w=g/(k-i+1),f.get(\"showOutliers\")&&(l=b.ceil(f.get(\"spotRadius\")),g-=2*b.ceil(f.get(\"spotRadius\")),w=g/(k-i+1),n<m&&a.drawCircle((n-i)*w+l,h/2,f.get(\"spotRadius\"),f.get(\"outlierLineColor\"),f.get(\"outlierFillColor\")).append(),t>s&&a.drawCircle((t-i)*w+l,h/2,f.get(\"spotRadius\"),f.get(\"outlierLineColor\"),f.get(\"outlierFillColor\")).append()),a.drawRect(b.round((p-i)*w+l),b.round(h*.1),b.round((r-p)*w),b.round(h*.8),f.get(\"boxLineColor\"),f.get(\"boxFillColor\")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/2),b.round((p-i)*w+l),b.round(h/2),f.get(\"lineColor\")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/4),b.round((m-i)*w+l),b.round(h-h/4),f.get(\"whiskerColor\")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/2),b.round((r-i)*w+l),b.round(h/2),f.get(\"lineColor\")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/4),b.round((s-i)*w+l),b.round(h-h/4),f.get(\"whiskerColor\")).append(),a.drawLine(b.round((q-i)*w+l),b.round(h*.1),b.round((q-i)*w+l),b.round(h*.9),f.get(\"medianColor\")).append(),f.get(\"target\")&&(v=b.ceil(f.get(\"spotRadius\")),a.drawLine(b.round((f.get(\"target\")-i)*w+l),b.round(h/2-v),b.round((f.get(\"target\")-i)*w+l),b.round(h/2+v),f.get(\"targetColor\")).append(),a.drawLine(b.round((f.get(\"target\")-i)*w+l-v),b.round(h/2),b.round((f.get(\"target\")-i)*w+l+v),b.round(h/2),f.get(\"targetColor\")).append()),a.render()}}),G=g({init:function(a,b,c,d){this.target=a,this.id=b,this.type=c,this.args=d},append:function(){return this.target.appendShape(this),this}}),H=g({_pxregex:/(\\d+)(px)?\\s*$/i,init:function(a,b,c){if(!a)return;this.width=a,this.height=b,this.target=c,this.lastShapeId=null,c[0]&&(c=c[0]),d.data(c,\"_jqs_vcanvas\",this)},drawLine:function(a,b,c,d,e,f){return this.drawShape([[a,b],[c,d]],e,f)},drawShape:function(a,b,c,d){return this._genShape(\"Shape\",[a,b,c,d])},drawCircle:function(a,b,c,d,e,f){return this._genShape(\"Circle\",[a,b,c,d,e,f])},drawPieSlice:function(a,b,c,d,e,f,g){return this._genShape(\"PieSlice\",[a,b,c,d,e,f,g])},drawRect:function(a,b,c,d,e,f){return this._genShape(\"Rect\",[a,b,c,d,e,f])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert(\"reset not implemented\")},_insert:function(a,b){d(b).html(a)},_calculatePixelDims:function(a,b,c){var e;e=this._pxregex.exec(b),e?this.pixelHeight=e[1]:this.pixelHeight=d(c).height(),e=this._pxregex.exec(a),e?this.pixelWidth=e[1]:this.pixelWidth=d(c).width()},_genShape:function(a,b){var c=L++;return b.unshift(c),new G(this,c,a,b)},appendShape:function(a){alert(\"appendShape not implemented\")},replaceWithShape:function(a,b){alert(\"replaceWithShape not implemented\")},insertAfterShape:function(a,b){alert(\"insertAfterShape not implemented\")},removeShapeId:function(a){alert(\"removeShapeId not implemented\")},getShapeAt:function(a,b,c){alert(\"getShapeAt not implemented\")},render:function(){alert(\"render not implemented\")}}),I=g(H,{init:function(b,e,f,g){I._super.init.call(this,b,e,f),this.canvas=a.createElement(\"canvas\"),f[0]&&(f=f[0]),d.data(f,\"_jqs_vcanvas\",this),d(this.canvas).css({display:\"inline-block\",width:b,height:e,verticalAlign:\"top\"}),this._insert(this.canvas,f),this._calculatePixelDims(b,e,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=g,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c,d(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(a,b,d){var e=this.canvas.getContext(\"2d\");return a!==c&&(e.strokeStyle=a),e.lineWidth=d===c?1:d,b!==c&&(e.fillStyle=b),e},reset:function(){var a=this._getContext();a.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c},_drawShape:function(a,b,d,e,f){var g=this._getContext(d,e,f),h,i;g.beginPath(),g.moveTo(b[0][0]+.5,b[0][1]+.5);for(h=1,i=b.length;h<i;h++)g.lineTo(b[h][0]+.5,b[h][1]+.5);d!==c&&g.stroke(),e!==c&&g.fill(),this.targetX!==c&&this.targetY!==c&&g.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawCircle:function(a,d,e,f,g,h,i){var j=this._getContext(g,h,i);j.beginPath(),j.arc(d,e,f,0,2*b.PI,!1),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a),g!==c&&j.stroke(),h!==c&&j.fill()},_drawPieSlice:function(a,b,d,e,f,g,h,i){var j=this._getContext(h,i);j.beginPath(),j.moveTo(b,d),j.arc(b,d,e,f,g,!1),j.lineTo(b,d),j.closePath(),h!==c&&j.stroke(),i&&j.fill(),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b+d,c],[b+d,c+e],[b,c+e],[b,c]],f,g)},appendShape:function(a){return this.shapes[a.id]=a,this.shapeseq.push(a.id),this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=this.shapeseq,d;this.shapes[b.id]=b;for(d=c.length;d--;)c[d]==a&&(c[d]=b.id);delete this.shapes[a]},replaceWithShapes:function(a,b){var c=this.shapeseq,d={},e,f,g;for(f=a.length;f--;)d[a[f]]=!0;for(f=c.length;f--;)e=c[f],d[e]&&(c.splice(f,1),delete this.shapes[e],g=f);for(f=b.length;f--;)c.splice(g,0,b[f].id),this.shapes[b[f].id]=b[f]},insertAfterShape:function(a,b){var c=this.shapeseq,d;for(d=c.length;d--;)if(c[d]===a){c.splice(d+1,0,b.id),this.shapes[b.id]=b;return}},removeShapeId:function(a){var b=this.shapeseq,c;for(c=b.length;c--;)if(b[c]===a){b.splice(c,1);break}delete this.shapes[a]},getShapeAt:function(a,b,c){return this.targetX=b,this.targetY=c,this.render(),this.currentTargetShapeId},render:function(){var a=this.shapeseq,b=this.shapes,c=a.length,d=this._getContext(),e,f,g;d.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(g=0;g<c;g++)e=a[g],f=b[e],this[\"_draw\"+f.type].apply(this,f.args);this.interact||(this.shapes={},this.shapeseq=[])}}),J=g(H,{init:function(b,c,e){var f;J._super.init.call(this,b,c,e),e[0]&&(e=e[0]),d.data(e,\"_jqs_vcanvas\",this),this.canvas=a.createElement(\"span\"),d(this.canvas).css({display:\"inline-block\",position:\"relative\",overflow:\"hidden\",width:b,height:c,margin:\"0px\",padding:\"0px\",verticalAlign:\"top\"}),this._insert(this.canvas,e),this._calculatePixelDims(b,c,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,f='<v:group coordorigin=\"0 0\" coordsize=\"'+this.pixelWidth+\" \"+this.pixelHeight+'\"'+' style=\"position:absolute;top:0;left:0;width:'+this.pixelWidth+\"px;height=\"+this.pixelHeight+'px;\"></v:group>',this.canvas.insertAdjacentHTML(\"beforeEnd\",f),this.group=d(this.canvas).children()[0],this.rendered=!1,this.prerender=\"\"},_drawShape:function(a,b,d,e,f){var g=[],h,i,j,k,l,m,n;for(n=0,m=b.length;n<m;n++)g[n]=\"\"+b[n][0]+\",\"+b[n][1];return h=g.splice(0,1),f=f===c?1:f,i=d===c?' stroked=\"false\" ':' strokeWeight=\"'+f+'px\" strokeColor=\"'+d+'\" ',j=e===c?' filled=\"false\"':' fillColor=\"'+e+'\" filled=\"true\" ',k=g[0]===g[g.length-1]?\"x \":\"\",l='<v:shape coordorigin=\"0 0\" coordsize=\"'+this.pixelWidth+\" \"+this.pixelHeight+'\" '+' id=\"jqsshape'+a+'\" '+i+j+' style=\"position:absolute;left:0px;top:0px;height:'+this.pixelHeight+\"px;width:\"+this.pixelWidth+'px;padding:0px;margin:0px;\" '+' path=\"m '+h+\" l \"+g.join(\", \")+\" \"+k+'e\">'+\" </v:shape>\",l},_drawCircle:function(a,b,d,e,f,g,h){var i,j,k;return b-=e,d-=e,i=f===c?' stroked=\"false\" ':' strokeWeight=\"'+h+'px\" strokeColor=\"'+f+'\" ',j=g===c?' filled=\"false\"':' fillColor=\"'+g+'\" filled=\"true\" ',k='<v:oval  id=\"jqsshape'+a+'\" '+i+j+' style=\"position:absolute;top:'+d+\"px; left:\"+b+\"px; width:\"+e*2+\"px; height:\"+e*2+'px\"></v:oval>',k},_drawPieSlice:function(a,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r;if(g===h)return\"\";h-g===2*b.PI&&(g=0,h=2*b.PI),l=d+b.round(b.cos(g)*f),m=e+b.round(b.sin(g)*f),n=d+b.round(b.cos(h)*f),o=e+b.round(b.sin(h)*f);if(l===n&&m===o){if(h-g<b.PI)return\"\";l=n=d+f,m=o=e}return l===n&&m===o&&h-g<b.PI?\"\":(k=[d-f,e-f,d+f,e+f,l,m,n,o],p=i===c?' stroked=\"false\" ':' strokeWeight=\"1px\" strokeColor=\"'+i+'\" ',q=j===c?' filled=\"false\"':' fillColor=\"'+j+'\" filled=\"true\" ',r='<v:shape coordorigin=\"0 0\" coordsize=\"'+this.pixelWidth+\" \"+this.pixelHeight+'\" '+' id=\"jqsshape'+a+'\" '+p+q+' style=\"position:absolute;left:0px;top:0px;height:'+this.pixelHeight+\"px;width:\"+this.pixelWidth+'px;padding:0px;margin:0px;\" '+' path=\"m '+d+\",\"+e+\" wa \"+k.join(\", \")+' x e\">'+\" </v:shape>\",r)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b,c+e],[b+d,c+e],[b+d,c],[b,c]],f,g)},reset:function(){this.group.innerHTML=\"\"},appendShape:function(a){var b=this[\"_draw\"+a.type].apply(this,a.args);return this.rendered?this.group.insertAdjacentHTML(\"beforeEnd\",b):this.prerender+=b,this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=d(\"#jqsshape\"+a),e=this[\"_draw\"+b.type].apply(this,b.args);c[0].outerHTML=e},replaceWithShapes:function(a,b){var c=d(\"#jqsshape\"+a[0]),e=\"\",f=b.length,g;for(g=0;g<f;g++)e+=this[\"_draw\"+b[g].type].apply(this,b[g].args);c[0].outerHTML=e;for(g=1;g<a.length;g++)d(\"#jqsshape\"+a[g]).remove()},insertAfterShape:function(a,b){var c=d(\"#jqsshape\"+a),e=this[\"_draw\"+b.type].apply(this,b.args);c[0].insertAdjacentHTML(\"afterEnd\",e)},removeShapeId:function(a){var b=d(\"#jqsshape\"+a);this.group.removeChild(b[0])},getShapeAt:function(a,b,c){var d=a.id.substr(8);return d},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})})(document,Math);"
  },
  {
    "path": "public/admin-panel/assets/libs/chart/chart.js",
    "content": "$(document).ready(function() {\n\n\n\n    // === Prepare peity charts === //\n    maruti.peity();\n\n    // === Prepare the chart data ===/\n    var sin = [],\n        cos = [];\n    for (var i = 0; i < 14; i += 0.5) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\n    // === Make chart === //\n    var plot = $.plot($(\".chart\"), [{ data: sin, label: \"sin(x)\", color: \"#ee7951\" }, { data: cos, label: \"cos(x)\", color: \"#4fb9f0\" }], {\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        grid: { hoverable: true, clickable: true },\n        yaxis: { min: -1.6, max: 1.6 }\n    });\n\n    // === Point hover in chart === //\n    var previousPoint = null;\n    $(\".chart\").bind(\"plothover\", function(event, pos, item) {\n\n        if (item) {\n            if (previousPoint != item.dataIndex) {\n                previousPoint = item.dataIndex;\n\n                $('#tooltip').fadeOut(200, function() {\n                    $(this).remove();\n                });\n                var x = item.datapoint[0].toFixed(2),\n                    y = item.datapoint[1].toFixed(2);\n\n                maruti.flot_tooltip(item.pageX, item.pageY, item.series.label + \" of \" + x + \" = \" + y);\n            }\n\n        } else {\n            $('#tooltip').fadeOut(200, function() {\n                $(this).remove();\n            });\n            previousPoint = null;\n        }\n    });\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/chart/jquery.ui.custom.js",
    "content": " /*!\n  * jQuery UI 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI\n  */\n (function($, undefined) {\n\n     // prevent duplicate loading\n     // this is only a problem because we proxy existing functions\n     // and we don't want to double proxy them\n     $.ui = $.ui || {};\n     if ($.ui.version) {\n         return;\n     }\n\n     $.extend($.ui, {\n         version: \"1.8.21\",\n\n         keyCode: {\n             ALT: 18,\n             BACKSPACE: 8,\n             CAPS_LOCK: 20,\n             COMMA: 188,\n             COMMAND: 91,\n             COMMAND_LEFT: 91, // COMMAND\n             COMMAND_RIGHT: 93,\n             CONTROL: 17,\n             DELETE: 46,\n             DOWN: 40,\n             END: 35,\n             ENTER: 13,\n             ESCAPE: 27,\n             HOME: 36,\n             INSERT: 45,\n             LEFT: 37,\n             MENU: 93, // COMMAND_RIGHT\n             NUMPAD_ADD: 107,\n             NUMPAD_DECIMAL: 110,\n             NUMPAD_DIVIDE: 111,\n             NUMPAD_ENTER: 108,\n             NUMPAD_MULTIPLY: 106,\n             NUMPAD_SUBTRACT: 109,\n             PAGE_DOWN: 34,\n             PAGE_UP: 33,\n             PERIOD: 190,\n             RIGHT: 39,\n             SHIFT: 16,\n             SPACE: 32,\n             TAB: 9,\n             UP: 38,\n             WINDOWS: 91 // COMMAND\n         }\n     });\n\n     // plugins\n     $.fn.extend({\n         propAttr: $.fn.prop || $.fn.attr,\n\n         _focus: $.fn.focus,\n         focus: function(delay, fn) {\n             return typeof delay === \"number\" ?\n                 this.each(function() {\n                     var elem = this;\n                     setTimeout(function() {\n                         $(elem).focus();\n                         if (fn) {\n                             fn.call(elem);\n                         }\n                     }, delay);\n                 }) :\n                 this._focus.apply(this, arguments);\n         },\n\n         scrollParent: function() {\n             var scrollParent;\n             if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {\n                 scrollParent = this.parents().filter(function() {\n                     return (/(relative|absolute|fixed)/).test($.curCSS(this, 'position', 1)) && (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));\n                 }).eq(0);\n             } else {\n                 scrollParent = this.parents().filter(function() {\n                     return (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1));\n                 }).eq(0);\n             }\n\n             return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;\n         },\n\n         zIndex: function(zIndex) {\n             if (zIndex !== undefined) {\n                 return this.css(\"zIndex\", zIndex);\n             }\n\n             if (this.length) {\n                 var elem = $(this[0]),\n                     position, value;\n                 while (elem.length && elem[0] !== document) {\n                     // Ignore z-index if position is set to a value where z-index is ignored by the browser\n                     // This makes behavior of this function consistent across browsers\n                     // WebKit always returns auto if the element is positioned\n                     position = elem.css(\"position\");\n                     if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\n                         // IE returns 0 when zIndex is not specified\n                         // other browsers return a string\n                         // we ignore the case of nested elements with an explicit value of 0\n                         // <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n                         value = parseInt(elem.css(\"zIndex\"), 10);\n                         if (!isNaN(value) && value !== 0) {\n                             return value;\n                         }\n                     }\n                     elem = elem.parent();\n                 }\n             }\n\n             return 0;\n         },\n\n         disableSelection: function() {\n             return this.bind(($.support.selectstart ? \"selectstart\" : \"mousedown\") +\n                 \".ui-disableSelection\",\n                 function(event) {\n                     event.preventDefault();\n                 });\n         },\n\n         enableSelection: function() {\n             return this.unbind(\".ui-disableSelection\");\n         }\n     });\n\n     $.each([\"Width\", \"Height\"], function(i, name) {\n         var side = name === \"Width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\n             type = name.toLowerCase(),\n             orig = {\n                 innerWidth: $.fn.innerWidth,\n                 innerHeight: $.fn.innerHeight,\n                 outerWidth: $.fn.outerWidth,\n                 outerHeight: $.fn.outerHeight\n             };\n\n         function reduce(elem, size, border, margin) {\n             $.each(side, function() {\n                 size -= parseFloat($.curCSS(elem, \"padding\" + this, true)) || 0;\n                 if (border) {\n                     size -= parseFloat($.curCSS(elem, \"border\" + this + \"Width\", true)) || 0;\n                 }\n                 if (margin) {\n                     size -= parseFloat($.curCSS(elem, \"margin\" + this, true)) || 0;\n                 }\n             });\n             return size;\n         }\n\n         $.fn[\"inner\" + name] = function(size) {\n             if (size === undefined) {\n                 return orig[\"inner\" + name].call(this);\n             }\n\n             return this.each(function() {\n                 $(this).css(type, reduce(this, size) + \"px\");\n             });\n         };\n\n         $.fn[\"outer\" + name] = function(size, margin) {\n             if (typeof size !== \"number\") {\n                 return orig[\"outer\" + name].call(this, size);\n             }\n\n             return this.each(function() {\n                 $(this).css(type, reduce(this, size, true, margin) + \"px\");\n             });\n         };\n     });\n\n     // selectors\n     function focusable(element, isTabIndexNotNaN) {\n         var nodeName = element.nodeName.toLowerCase();\n         if (\"area\" === nodeName) {\n             var map = element.parentNode,\n                 mapName = map.name,\n                 img;\n             if (!element.href || !mapName || map.nodeName.toLowerCase() !== \"map\") {\n                 return false;\n             }\n             img = $(\"img[usemap=#\" + mapName + \"]\")[0];\n             return !!img && visible(img);\n         }\n         return (/input|select|textarea|button|object/.test(nodeName) ?\n                 !element.disabled :\n                 \"a\" == nodeName ?\n                 element.href || isTabIndexNotNaN :\n                 isTabIndexNotNaN)\n             // the element and all of its ancestors must be visible\n             &&\n             visible(element);\n     }\n\n     function visible(element) {\n         return !$(element).parents().andSelf().filter(function() {\n             return $.curCSS(this, \"visibility\") === \"hidden\" ||\n                 $.expr.filters.hidden(this);\n         }).length;\n     }\n\n     $.extend($.expr[\":\"], {\n         data: function(elem, i, match) {\n             return !!$.data(elem, match[3]);\n         },\n\n         focusable: function(element) {\n             return focusable(element, !isNaN($.attr(element, \"tabindex\")));\n         },\n\n         tabbable: function(element) {\n             var tabIndex = $.attr(element, \"tabindex\"),\n                 isTabIndexNaN = isNaN(tabIndex);\n             return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n         }\n     });\n\n     // support\n     $(function() {\n         var body = document.body,\n             div = body.appendChild(div = document.createElement(\"div\"));\n\n         // access offsetHeight before setting the style to prevent a layout bug\n         // in IE 9 which causes the elemnt to continue to take up space even\n         // after it is removed from the DOM (#8026)\n         div.offsetHeight;\n\n         $.extend(div.style, {\n             minHeight: \"100px\",\n             height: \"auto\",\n             padding: 0,\n             borderWidth: 0\n         });\n\n         $.support.minHeight = div.offsetHeight === 100;\n         $.support.selectstart = \"onselectstart\" in div;\n\n         // set display to none to avoid a layout bug in IE\n         // http://dev.jquery.com/ticket/4014\n         body.removeChild(div).style.display = \"none\";\n     });\n\n\n\n\n\n     // deprecated\n     $.extend($.ui, {\n         // $.ui.plugin is deprecated.  Use the proxy pattern instead.\n         plugin: {\n             add: function(module, option, set) {\n                 var proto = $.ui[module].prototype;\n                 for (var i in set) {\n                     proto.plugins[i] = proto.plugins[i] || [];\n                     proto.plugins[i].push([option, set[i]]);\n                 }\n             },\n             call: function(instance, name, args) {\n                 var set = instance.plugins[name];\n                 if (!set || !instance.element[0].parentNode) {\n                     return;\n                 }\n\n                 for (var i = 0; i < set.length; i++) {\n                     if (instance.options[set[i][0]]) {\n                         set[i][1].apply(instance.element, args);\n                     }\n                 }\n             }\n         },\n\n         // will be deprecated when we switch to jQuery 1.4 - use jQuery.contains()\n         contains: function(a, b) {\n             return document.compareDocumentPosition ?\n                 a.compareDocumentPosition(b) & 16 :\n                 a !== b && a.contains(b);\n         },\n\n         // only used by resizable\n         hasScroll: function(el, a) {\n\n             //If overflow is hidden, the element might have extra content, but the user wants to hide it\n             if ($(el).css(\"overflow\") === \"hidden\") {\n                 return false;\n             }\n\n             var scroll = (a && a === \"left\") ? \"scrollLeft\" : \"scrollTop\",\n                 has = false;\n\n             if (el[scroll] > 0) {\n                 return true;\n             }\n\n             // TODO: determine which cases actually cause this to happen\n             // if the element doesn't have the scroll set, see if it's possible to\n             // set the scroll\n             el[scroll] = 1;\n             has = (el[scroll] > 0);\n             el[scroll] = 0;\n             return has;\n         },\n\n         // these are odd functions, fix the API or move into individual plugins\n         isOverAxis: function(x, reference, size) {\n             //Determines when x coordinate is over \"b\" element axis\n             return (x > reference) && (x < (reference + size));\n         },\n         isOver: function(y, x, top, left, height, width) {\n             //Determines when x, y coordinates is over \"b\" element\n             return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);\n         }\n     });\n\n })(jQuery);\n /*!\n  * jQuery UI Widget 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Widget\n  */\n (function($, undefined) {\n\n     // jQuery 1.4+\n     if ($.cleanData) {\n         var _cleanData = $.cleanData;\n         $.cleanData = function(elems) {\n             for (var i = 0, elem;\n                 (elem = elems[i]) != null; i++) {\n                 try {\n                     $(elem).triggerHandler(\"remove\");\n                     // http://bugs.jquery.com/ticket/8235\n                 } catch (e) {}\n             }\n             _cleanData(elems);\n         };\n     } else {\n         var _remove = $.fn.remove;\n         $.fn.remove = function(selector, keepData) {\n             return this.each(function() {\n                 if (!keepData) {\n                     if (!selector || $.filter(selector, [this]).length) {\n                         $(\"*\", this).add([this]).each(function() {\n                             try {\n                                 $(this).triggerHandler(\"remove\");\n                                 // http://bugs.jquery.com/ticket/8235\n                             } catch (e) {}\n                         });\n                     }\n                 }\n                 return _remove.call($(this), selector, keepData);\n             });\n         };\n     }\n\n     $.widget = function(name, base, prototype) {\n         var namespace = name.split(\".\")[0],\n             fullName;\n         name = name.split(\".\")[1];\n         fullName = namespace + \"-\" + name;\n\n         if (!prototype) {\n             prototype = base;\n             base = $.Widget;\n         }\n\n         // create selector for plugin\n         $.expr[\":\"][fullName] = function(elem) {\n             return !!$.data(elem, name);\n         };\n\n         $[namespace] = $[namespace] || {};\n         $[namespace][name] = function(options, element) {\n             // allow instantiation without initializing for simple inheritance\n             if (arguments.length) {\n                 this._createWidget(options, element);\n             }\n         };\n\n         var basePrototype = new base();\n         // we need to make the options hash a property directly on the new instance\n         // otherwise we'll modify the options hash on the prototype that we're\n         // inheriting from\n         //\t$.each( basePrototype, function( key, val ) {\n         //\t\tif ( $.isPlainObject(val) ) {\n         //\t\t\tbasePrototype[ key ] = $.extend( {}, val );\n         //\t\t}\n         //\t});\n         basePrototype.options = $.extend(true, {}, basePrototype.options);\n         $[namespace][name].prototype = $.extend(true, basePrototype, {\n             namespace: namespace,\n             widgetName: name,\n             widgetEventPrefix: $[namespace][name].prototype.widgetEventPrefix || name,\n             widgetBaseClass: fullName\n         }, prototype);\n\n         $.widget.bridge(name, $[namespace][name]);\n     };\n\n     $.widget.bridge = function(name, object) {\n         $.fn[name] = function(options) {\n             var isMethodCall = typeof options === \"string\",\n                 args = Array.prototype.slice.call(arguments, 1),\n                 returnValue = this;\n\n             // allow multiple hashes to be passed on init\n             options = !isMethodCall && args.length ?\n                 $.extend.apply(null, [true, options].concat(args)) :\n                 options;\n\n             // prevent calls to internal methods\n             if (isMethodCall && options.charAt(0) === \"_\") {\n                 return returnValue;\n             }\n\n             if (isMethodCall) {\n                 this.each(function() {\n                     var instance = $.data(this, name),\n                         methodValue = instance && $.isFunction(instance[options]) ?\n                         instance[options].apply(instance, args) :\n                         instance;\n                     // TODO: add this back in 1.9 and use $.error() (see #5972)\n                     //\t\t\t\tif ( !instance ) {\n                     //\t\t\t\t\tthrow \"cannot call methods on \" + name + \" prior to initialization; \" +\n                     //\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\";\n                     //\t\t\t\t}\n                     //\t\t\t\tif ( !$.isFunction( instance[options] ) ) {\n                     //\t\t\t\t\tthrow \"no such method '\" + options + \"' for \" + name + \" widget instance\";\n                     //\t\t\t\t}\n                     //\t\t\t\tvar methodValue = instance[ options ].apply( instance, args );\n                     if (methodValue !== instance && methodValue !== undefined) {\n                         returnValue = methodValue;\n                         return false;\n                     }\n                 });\n             } else {\n                 this.each(function() {\n                     var instance = $.data(this, name);\n                     if (instance) {\n                         instance.option(options || {})._init();\n                     } else {\n                         $.data(this, name, new object(options, this));\n                     }\n                 });\n             }\n\n             return returnValue;\n         };\n     };\n\n     $.Widget = function(options, element) {\n         // allow instantiation without initializing for simple inheritance\n         if (arguments.length) {\n             this._createWidget(options, element);\n         }\n     };\n\n     $.Widget.prototype = {\n         widgetName: \"widget\",\n         widgetEventPrefix: \"\",\n         options: {\n             disabled: false\n         },\n         _createWidget: function(options, element) {\n             // $.widget.bridge stores the plugin instance, but we do it anyway\n             // so that it's stored even before the _create function runs\n             $.data(element, this.widgetName, this);\n             this.element = $(element);\n             this.options = $.extend(true, {},\n                 this.options,\n                 this._getCreateOptions(),\n                 options);\n\n             var self = this;\n             this.element.bind(\"remove.\" + this.widgetName, function() {\n                 self.destroy();\n             });\n\n             this._create();\n             this._trigger(\"create\");\n             this._init();\n         },\n         _getCreateOptions: function() {\n             return $.metadata && $.metadata.get(this.element[0])[this.widgetName];\n         },\n         _create: function() {},\n         _init: function() {},\n\n         destroy: function() {\n             this.element\n                 .unbind(\".\" + this.widgetName)\n                 .removeData(this.widgetName);\n             this.widget()\n                 .unbind(\".\" + this.widgetName)\n                 .removeAttr(\"aria-disabled\")\n                 .removeClass(\n                     this.widgetBaseClass + \"-disabled \" +\n                     \"ui-state-disabled\");\n         },\n\n         widget: function() {\n             return this.element;\n         },\n\n         option: function(key, value) {\n             var options = key;\n\n             if (arguments.length === 0) {\n                 // don't return a reference to the internal hash\n                 return $.extend({}, this.options);\n             }\n\n             if (typeof key === \"string\") {\n                 if (value === undefined) {\n                     return this.options[key];\n                 }\n                 options = {};\n                 options[key] = value;\n             }\n\n             this._setOptions(options);\n\n             return this;\n         },\n         _setOptions: function(options) {\n             var self = this;\n             $.each(options, function(key, value) {\n                 self._setOption(key, value);\n             });\n\n             return this;\n         },\n         _setOption: function(key, value) {\n             this.options[key] = value;\n\n             if (key === \"disabled\") {\n                 this.widget()[value ? \"addClass\" : \"removeClass\"](\n                         this.widgetBaseClass + \"-disabled\" + \" \" +\n                         \"ui-state-disabled\")\n                     .attr(\"aria-disabled\", value);\n             }\n\n             return this;\n         },\n\n         enable: function() {\n             return this._setOption(\"disabled\", false);\n         },\n         disable: function() {\n             return this._setOption(\"disabled\", true);\n         },\n\n         _trigger: function(type, event, data) {\n             var prop, orig,\n                 callback = this.options[type];\n\n             data = data || {};\n             event = $.Event(event);\n             event.type = (type === this.widgetEventPrefix ?\n                 type :\n                 this.widgetEventPrefix + type).toLowerCase();\n             // the original event may come from any element\n             // so we need to reset the target on the new event\n             event.target = this.element[0];\n\n             // copy original event properties over to the new event\n             orig = event.originalEvent;\n             if (orig) {\n                 for (prop in orig) {\n                     if (!(prop in event)) {\n                         event[prop] = orig[prop];\n                     }\n                 }\n             }\n\n             this.element.trigger(event, data);\n\n             return !($.isFunction(callback) &&\n                 callback.call(this.element[0], event, data) === false ||\n                 event.isDefaultPrevented());\n         }\n     };\n\n })(jQuery);\n /*!\n  * jQuery UI Mouse 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Mouse\n  *\n  * Depends:\n  *\tjquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     var mouseHandled = false;\n     $(document).mouseup(function(e) {\n         mouseHandled = false;\n     });\n\n     $.widget(\"ui.mouse\", {\n         options: {\n             cancel: ':input,option',\n             distance: 1,\n             delay: 0\n         },\n         _mouseInit: function() {\n             var self = this;\n\n             this.element\n                 .bind('mousedown.' + this.widgetName, function(event) {\n                     return self._mouseDown(event);\n                 })\n                 .bind('click.' + this.widgetName, function(event) {\n                     if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {\n                         $.removeData(event.target, self.widgetName + '.preventClickEvent');\n                         event.stopImmediatePropagation();\n                         return false;\n                     }\n                 });\n\n             this.started = false;\n         },\n\n         // TODO: make sure destroying one instance of mouse doesn't mess with\n         // other instances of mouse\n         _mouseDestroy: function() {\n             this.element.unbind('.' + this.widgetName);\n             $(document)\n                 .unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate)\n                 .unbind('mouseup.' + this.widgetName, this._mouseUpDelegate);\n         },\n\n         _mouseDown: function(event) {\n             // don't let more than one widget handle mouseStart\n             if (mouseHandled) { return };\n\n             // we may have missed mouseup (out of window)\n             (this._mouseStarted && this._mouseUp(event));\n\n             this._mouseDownEvent = event;\n\n             var self = this,\n                 btnIsLeft = (event.which == 1),\n                 // event.target.nodeName works around a bug in IE 8 with\n                 // disabled inputs (#7620)\n                 elIsCancel = (typeof this.options.cancel == \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n             if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n                 return true;\n             }\n\n             this.mouseDelayMet = !this.options.delay;\n             if (!this.mouseDelayMet) {\n                 this._mouseDelayTimer = setTimeout(function() {\n                     self.mouseDelayMet = true;\n                 }, this.options.delay);\n             }\n\n             if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n                 this._mouseStarted = (this._mouseStart(event) !== false);\n                 if (!this._mouseStarted) {\n                     event.preventDefault();\n                     return true;\n                 }\n             }\n\n             // Click event may never have fired (Gecko & Opera)\n             if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {\n                 $.removeData(event.target, this.widgetName + '.preventClickEvent');\n             }\n\n             // these delegates are required to keep context\n             this._mouseMoveDelegate = function(event) {\n                 return self._mouseMove(event);\n             };\n             this._mouseUpDelegate = function(event) {\n                 return self._mouseUp(event);\n             };\n             $(document)\n                 .bind('mousemove.' + this.widgetName, this._mouseMoveDelegate)\n                 .bind('mouseup.' + this.widgetName, this._mouseUpDelegate);\n\n             event.preventDefault();\n\n             mouseHandled = true;\n             return true;\n         },\n\n         _mouseMove: function(event) {\n             // IE mouseup check - mouseup happened when mouse was out of window\n             if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {\n                 return this._mouseUp(event);\n             }\n\n             if (this._mouseStarted) {\n                 this._mouseDrag(event);\n                 return event.preventDefault();\n             }\n\n             if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n                 this._mouseStarted =\n                     (this._mouseStart(this._mouseDownEvent, event) !== false);\n                 (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n             }\n\n             return !this._mouseStarted;\n         },\n\n         _mouseUp: function(event) {\n             $(document)\n                 .unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate)\n                 .unbind('mouseup.' + this.widgetName, this._mouseUpDelegate);\n\n             if (this._mouseStarted) {\n                 this._mouseStarted = false;\n\n                 if (event.target == this._mouseDownEvent.target) {\n                     $.data(event.target, this.widgetName + '.preventClickEvent', true);\n                 }\n\n                 this._mouseStop(event);\n             }\n\n             return false;\n         },\n\n         _mouseDistanceMet: function(event) {\n             return (Math.max(\n                 Math.abs(this._mouseDownEvent.pageX - event.pageX),\n                 Math.abs(this._mouseDownEvent.pageY - event.pageY)\n             ) >= this.options.distance);\n         },\n\n         _mouseDelayMet: function(event) {\n             return this.mouseDelayMet;\n         },\n\n         // These are placeholder methods, to be overriden by extending plugin\n         _mouseStart: function(event) {},\n         _mouseDrag: function(event) {},\n         _mouseStop: function(event) {},\n         _mouseCapture: function(event) { return true; }\n     });\n\n })(jQuery);\n /*!\n  * jQuery UI Position 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Position\n  */\n (function($, undefined) {\n\n     $.ui = $.ui || {};\n\n     var horizontalPositions = /left|center|right/,\n         verticalPositions = /top|center|bottom/,\n         center = \"center\",\n         support = {},\n         _position = $.fn.position,\n         _offset = $.fn.offset;\n\n     $.fn.position = function(options) {\n         if (!options || !options.of) {\n             return _position.apply(this, arguments);\n         }\n\n         // make a copy, we don't want to modify arguments\n         options = $.extend({}, options);\n\n         var target = $(options.of),\n             targetElem = target[0],\n             collision = (options.collision || \"flip\").split(\" \"),\n             offset = options.offset ? options.offset.split(\" \") : [0, 0],\n             targetWidth,\n             targetHeight,\n             basePosition;\n\n         if (targetElem.nodeType === 9) {\n             targetWidth = target.width();\n             targetHeight = target.height();\n             basePosition = { top: 0, left: 0 };\n             // TODO: use $.isWindow() in 1.9\n         } else if (targetElem.setTimeout) {\n             targetWidth = target.width();\n             targetHeight = target.height();\n             basePosition = { top: target.scrollTop(), left: target.scrollLeft() };\n         } else if (targetElem.preventDefault) {\n             // force left top to allow flipping\n             options.at = \"left top\";\n             targetWidth = targetHeight = 0;\n             basePosition = { top: options.of.pageY, left: options.of.pageX };\n         } else {\n             targetWidth = target.outerWidth();\n             targetHeight = target.outerHeight();\n             basePosition = target.offset();\n         }\n\n         // force my and at to have valid horizontal and veritcal positions\n         // if a value is missing or invalid, it will be converted to center \n         $.each([\"my\", \"at\"], function() {\n             var pos = (options[this] || \"\").split(\" \");\n             if (pos.length === 1) {\n                 pos = horizontalPositions.test(pos[0]) ?\n                     pos.concat([center]) :\n                     verticalPositions.test(pos[0]) ? [center].concat(pos) : [center, center];\n             }\n             pos[0] = horizontalPositions.test(pos[0]) ? pos[0] : center;\n             pos[1] = verticalPositions.test(pos[1]) ? pos[1] : center;\n             options[this] = pos;\n         });\n\n         // normalize collision option\n         if (collision.length === 1) {\n             collision[1] = collision[0];\n         }\n\n         // normalize offset option\n         offset[0] = parseInt(offset[0], 10) || 0;\n         if (offset.length === 1) {\n             offset[1] = offset[0];\n         }\n         offset[1] = parseInt(offset[1], 10) || 0;\n\n         if (options.at[0] === \"right\") {\n             basePosition.left += targetWidth;\n         } else if (options.at[0] === center) {\n             basePosition.left += targetWidth / 2;\n         }\n\n         if (options.at[1] === \"bottom\") {\n             basePosition.top += targetHeight;\n         } else if (options.at[1] === center) {\n             basePosition.top += targetHeight / 2;\n         }\n\n         basePosition.left += offset[0];\n         basePosition.top += offset[1];\n\n         return this.each(function() {\n             var elem = $(this),\n                 elemWidth = elem.outerWidth(),\n                 elemHeight = elem.outerHeight(),\n                 marginLeft = parseInt($.curCSS(this, \"marginLeft\", true)) || 0,\n                 marginTop = parseInt($.curCSS(this, \"marginTop\", true)) || 0,\n                 collisionWidth = elemWidth + marginLeft +\n                 (parseInt($.curCSS(this, \"marginRight\", true)) || 0),\n                 collisionHeight = elemHeight + marginTop +\n                 (parseInt($.curCSS(this, \"marginBottom\", true)) || 0),\n                 position = $.extend({}, basePosition),\n                 collisionPosition;\n\n             if (options.my[0] === \"right\") {\n                 position.left -= elemWidth;\n             } else if (options.my[0] === center) {\n                 position.left -= elemWidth / 2;\n             }\n\n             if (options.my[1] === \"bottom\") {\n                 position.top -= elemHeight;\n             } else if (options.my[1] === center) {\n                 position.top -= elemHeight / 2;\n             }\n\n             // prevent fractions if jQuery version doesn't support them (see #5280)\n             if (!support.fractions) {\n                 position.left = Math.round(position.left);\n                 position.top = Math.round(position.top);\n             }\n\n             collisionPosition = {\n                 left: position.left - marginLeft,\n                 top: position.top - marginTop\n             };\n\n             $.each([\"left\", \"top\"], function(i, dir) {\n                 if ($.ui.position[collision[i]]) {\n                     $.ui.position[collision[i]][dir](position, {\n                         targetWidth: targetWidth,\n                         targetHeight: targetHeight,\n                         elemWidth: elemWidth,\n                         elemHeight: elemHeight,\n                         collisionPosition: collisionPosition,\n                         collisionWidth: collisionWidth,\n                         collisionHeight: collisionHeight,\n                         offset: offset,\n                         my: options.my,\n                         at: options.at\n                     });\n                 }\n             });\n\n             if ($.fn.bgiframe) {\n                 elem.bgiframe();\n             }\n             elem.offset($.extend(position, { using: options.using }));\n         });\n     };\n\n     $.ui.position = {\n         fit: {\n             left: function(position, data) {\n                 var win = $(window),\n                     over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft();\n                 position.left = over > 0 ? position.left - over : Math.max(position.left - data.collisionPosition.left, position.left);\n             },\n             top: function(position, data) {\n                 var win = $(window),\n                     over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop();\n                 position.top = over > 0 ? position.top - over : Math.max(position.top - data.collisionPosition.top, position.top);\n             }\n         },\n\n         flip: {\n             left: function(position, data) {\n                 if (data.at[0] === center) {\n                     return;\n                 }\n                 var win = $(window),\n                     over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(),\n                     myOffset = data.my[0] === \"left\" ?\n                     -data.elemWidth :\n                     data.my[0] === \"right\" ?\n                     data.elemWidth :\n                     0,\n                     atOffset = data.at[0] === \"left\" ?\n                     data.targetWidth :\n                     -data.targetWidth,\n                     offset = -2 * data.offset[0];\n                 position.left += data.collisionPosition.left < 0 ?\n                     myOffset + atOffset + offset :\n                     over > 0 ?\n                     myOffset + atOffset + offset :\n                     0;\n             },\n             top: function(position, data) {\n                 if (data.at[1] === center) {\n                     return;\n                 }\n                 var win = $(window),\n                     over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(),\n                     myOffset = data.my[1] === \"top\" ?\n                     -data.elemHeight :\n                     data.my[1] === \"bottom\" ?\n                     data.elemHeight :\n                     0,\n                     atOffset = data.at[1] === \"top\" ?\n                     data.targetHeight :\n                     -data.targetHeight,\n                     offset = -2 * data.offset[1];\n                 position.top += data.collisionPosition.top < 0 ?\n                     myOffset + atOffset + offset :\n                     over > 0 ?\n                     myOffset + atOffset + offset :\n                     0;\n             }\n         }\n     };\n\n     // offset setter from jQuery 1.4\n     if (!$.offset.setOffset) {\n         $.offset.setOffset = function(elem, options) {\n             // set position first, in-case top/left are set even on static elem\n             if (/static/.test($.curCSS(elem, \"position\"))) {\n                 elem.style.position = \"relative\";\n             }\n             var curElem = $(elem),\n                 curOffset = curElem.offset(),\n                 curTop = parseInt($.curCSS(elem, \"top\", true), 10) || 0,\n                 curLeft = parseInt($.curCSS(elem, \"left\", true), 10) || 0,\n                 props = {\n                     top: (options.top - curOffset.top) + curTop,\n                     left: (options.left - curOffset.left) + curLeft\n                 };\n\n             if ('using' in options) {\n                 options.using.call(elem, props);\n             } else {\n                 curElem.css(props);\n             }\n         };\n\n         $.fn.offset = function(options) {\n             var elem = this[0];\n             if (!elem || !elem.ownerDocument) { return null; }\n             if (options) {\n                 if ($.isFunction(options)) {\n                     return this.each(function(i) {\n                         $(this).offset(options.call(this, i, $(this).offset()));\n                     });\n                 }\n                 return this.each(function() {\n                     $.offset.setOffset(this, options);\n                 });\n             }\n             return _offset.call(this);\n         };\n     }\n\n     // fraction support test (older versions of jQuery don't support fractions)\n     (function() {\n         var body = document.getElementsByTagName(\"body\")[0],\n             div = document.createElement(\"div\"),\n             testElement, testElementParent, testElementStyle, offset, offsetTotal;\n\n         //Create a \"fake body\" for testing based on method used in jQuery.support\n         testElement = document.createElement(body ? \"div\" : \"body\");\n         testElementStyle = {\n             visibility: \"hidden\",\n             width: 0,\n             height: 0,\n             border: 0,\n             margin: 0,\n             background: \"none\"\n         };\n         if (body) {\n             $.extend(testElementStyle, {\n                 position: \"absolute\",\n                 left: \"-1000px\",\n                 top: \"-1000px\"\n             });\n         }\n         for (var i in testElementStyle) {\n             testElement.style[i] = testElementStyle[i];\n         }\n         testElement.appendChild(div);\n         testElementParent = body || document.documentElement;\n         testElementParent.insertBefore(testElement, testElementParent.firstChild);\n\n         div.style.cssText = \"position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;\";\n\n         offset = $(div).offset(function(_, offset) {\n             return offset;\n         }).offset();\n\n         testElement.innerHTML = \"\";\n         testElementParent.removeChild(testElement);\n\n         offsetTotal = offset.top + offset.left + (body ? 2000 : 0);\n         support.fractions = offsetTotal > 21 && offsetTotal < 22;\n     })();\n\n }(jQuery));\n /*!\n  * jQuery UI Draggable 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Draggables\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.mouse.js\n  *\tjquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     $.widget(\"ui.draggable\", $.ui.mouse, {\n         widgetEventPrefix: \"drag\",\n         options: {\n             addClasses: true,\n             appendTo: \"parent\",\n             axis: false,\n             connectToSortable: false,\n             containment: false,\n             cursor: \"auto\",\n             cursorAt: false,\n             grid: false,\n             handle: false,\n             helper: \"original\",\n             iframeFix: false,\n             opacity: false,\n             refreshPositions: false,\n             revert: false,\n             revertDuration: 500,\n             scope: \"default\",\n             scroll: true,\n             scrollSensitivity: 20,\n             scrollSpeed: 20,\n             snap: false,\n             snapMode: \"both\",\n             snapTolerance: 20,\n             stack: false,\n             zIndex: false\n         },\n         _create: function() {\n\n             if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css(\"position\")))\n                 this.element[0].style.position = 'relative';\n\n             (this.options.addClasses && this.element.addClass(\"ui-draggable\"));\n             (this.options.disabled && this.element.addClass(\"ui-draggable-disabled\"));\n\n             this._mouseInit();\n\n         },\n\n         destroy: function() {\n             if (!this.element.data('draggable')) return;\n             this.element\n                 .removeData(\"draggable\")\n                 .unbind(\".draggable\")\n                 .removeClass(\"ui-draggable\" +\n                     \" ui-draggable-dragging\" +\n                     \" ui-draggable-disabled\");\n             this._mouseDestroy();\n\n             return this;\n         },\n\n         _mouseCapture: function(event) {\n\n             var o = this.options;\n\n             // among others, prevent a drag on a resizable-handle\n             if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))\n                 return false;\n\n             //Quit if we're not on a valid handle\n             this.handle = this._getHandle(event);\n             if (!this.handle)\n                 return false;\n\n             if (o.iframeFix) {\n                 $(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n                     $('<div class=\"ui-draggable-iframeFix\" style=\"background: #fff;\"></div>')\n                         .css({\n                             width: this.offsetWidth + \"px\",\n                             height: this.offsetHeight + \"px\",\n                             position: \"absolute\",\n                             opacity: \"0.001\",\n                             zIndex: 1000\n                         })\n                         .css($(this).offset())\n                         .appendTo(\"body\");\n                 });\n             }\n\n             return true;\n\n         },\n\n         _mouseStart: function(event) {\n\n             var o = this.options;\n\n             //Create and append the visible helper\n             this.helper = this._createHelper(event);\n\n             this.helper.addClass(\"ui-draggable-dragging\");\n\n             //Cache the helper size\n             this._cacheHelperProportions();\n\n             //If ddmanager is used for droppables, set the global draggable\n             if ($.ui.ddmanager)\n                 $.ui.ddmanager.current = this;\n\n             /*\n              * - Position generation -\n              * This block generates everything position related - it's the core of draggables.\n              */\n\n             //Cache the margins of the original element\n             this._cacheMargins();\n\n             //Store the helper's css position\n             this.cssPosition = this.helper.css(\"position\");\n             this.scrollParent = this.helper.scrollParent();\n\n             //The element's absolute position on the page minus margins\n             this.offset = this.positionAbs = this.element.offset();\n             this.offset = {\n                 top: this.offset.top - this.margins.top,\n                 left: this.offset.left - this.margins.left\n             };\n\n             $.extend(this.offset, {\n                 click: { //Where the click happened, relative to the element\n                     left: event.pageX - this.offset.left,\n                     top: event.pageY - this.offset.top\n                 },\n                 parent: this._getParentOffset(),\n                 relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n             });\n\n             //Generate the original position\n             this.originalPosition = this.position = this._generatePosition(event);\n             this.originalPageX = event.pageX;\n             this.originalPageY = event.pageY;\n\n             //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n             (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n             //Set a containment if given in the options\n             if (o.containment)\n                 this._setContainment();\n\n             //Trigger event + callbacks\n             if (this._trigger(\"start\", event) === false) {\n                 this._clear();\n                 return false;\n             }\n\n             //Recache the helper size\n             this._cacheHelperProportions();\n\n             //Prepare the droppable offsets\n             if ($.ui.ddmanager && !o.dropBehaviour)\n                 $.ui.ddmanager.prepareOffsets(this, event);\n\n\n             this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n             //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n             if ($.ui.ddmanager) $.ui.ddmanager.dragStart(this, event);\n\n             return true;\n         },\n\n         _mouseDrag: function(event, noPropagation) {\n\n             //Compute the helpers position\n             this.position = this._generatePosition(event);\n             this.positionAbs = this._convertPositionTo(\"absolute\");\n\n             //Call plugins and callbacks and use the resulting position if something is returned\n             if (!noPropagation) {\n                 var ui = this._uiHash();\n                 if (this._trigger('drag', event, ui) === false) {\n                     this._mouseUp({});\n                     return false;\n                 }\n                 this.position = ui.position;\n             }\n\n             if (!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left + 'px';\n             if (!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top + 'px';\n             if ($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n             return false;\n         },\n\n         _mouseStop: function(event) {\n\n             //If we are using droppables, inform the manager about the drop\n             var dropped = false;\n             if ($.ui.ddmanager && !this.options.dropBehaviour)\n                 dropped = $.ui.ddmanager.drop(this, event);\n\n             //if a drop comes from outside (a sortable)\n             if (this.dropped) {\n                 dropped = this.dropped;\n                 this.dropped = false;\n             }\n\n             //if the original element is no longer in the DOM don't bother to continue (see #8269)\n             var element = this.element[0],\n                 elementInDom = false;\n             while (element && (element = element.parentNode)) {\n                 if (element == document) {\n                     elementInDom = true;\n                 }\n             }\n             if (!elementInDom && this.options.helper === \"original\")\n                 return false;\n\n             if ((this.options.revert == \"invalid\" && !dropped) || (this.options.revert == \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n                 var self = this;\n                 $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n                     if (self._trigger(\"stop\", event) !== false) {\n                         self._clear();\n                     }\n                 });\n             } else {\n                 if (this._trigger(\"stop\", event) !== false) {\n                     this._clear();\n                 }\n             }\n\n             return false;\n         },\n\n         _mouseUp: function(event) {\n             if (this.options.iframeFix === true) {\n                 $(\"div.ui-draggable-iframeFix\").each(function() {\n                     this.parentNode.removeChild(this);\n                 }); //Remove frame helpers\n             }\n\n             //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n             if ($.ui.ddmanager) $.ui.ddmanager.dragStop(this, event);\n\n             return $.ui.mouse.prototype._mouseUp.call(this, event);\n         },\n\n         cancel: function() {\n\n             if (this.helper.is(\".ui-draggable-dragging\")) {\n                 this._mouseUp({});\n             } else {\n                 this._clear();\n             }\n\n             return this;\n\n         },\n\n         _getHandle: function(event) {\n\n             var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n             $(this.options.handle, this.element)\n                 .find(\"*\")\n                 .andSelf()\n                 .each(function() {\n                     if (this == event.target) handle = true;\n                 });\n\n             return handle;\n\n         },\n\n         _createHelper: function(event) {\n\n             var o = this.options;\n             var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element);\n\n             if (!helper.parents('body').length)\n                 helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));\n\n             if (helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\")))\n                 helper.css(\"position\", \"absolute\");\n\n             return helper;\n\n         },\n\n         _adjustOffsetFromHelper: function(obj) {\n             if (typeof obj == 'string') {\n                 obj = obj.split(' ');\n             }\n             if ($.isArray(obj)) {\n                 obj = { left: +obj[0], top: +obj[1] || 0 };\n             }\n             if ('left' in obj) {\n                 this.offset.click.left = obj.left + this.margins.left;\n             }\n             if ('right' in obj) {\n                 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n             }\n             if ('top' in obj) {\n                 this.offset.click.top = obj.top + this.margins.top;\n             }\n             if ('bottom' in obj) {\n                 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n             }\n         },\n\n         _getParentOffset: function() {\n\n             //Get the offsetParent and cache its position\n             this.offsetParent = this.helper.offsetParent();\n             var po = this.offsetParent.offset();\n\n             // This is a special case where we need to modify a offset calculated on start, since the following happened:\n             // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n             // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n             //    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n             if (this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {\n                 po.left += this.scrollParent.scrollLeft();\n                 po.top += this.scrollParent.scrollTop();\n             }\n\n             if ((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n                 ||\n                 (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix\n                 po = { top: 0, left: 0 };\n\n             return {\n                 top: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n                 left: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n             };\n\n         },\n\n         _getRelativeOffset: function() {\n\n             if (this.cssPosition == \"relative\") {\n                 var p = this.element.position();\n                 return {\n                     top: p.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + this.scrollParent.scrollTop(),\n                     left: p.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + this.scrollParent.scrollLeft()\n                 };\n             } else {\n                 return { top: 0, left: 0 };\n             }\n\n         },\n\n         _cacheMargins: function() {\n             this.margins = {\n                 left: (parseInt(this.element.css(\"marginLeft\"), 10) || 0),\n                 top: (parseInt(this.element.css(\"marginTop\"), 10) || 0),\n                 right: (parseInt(this.element.css(\"marginRight\"), 10) || 0),\n                 bottom: (parseInt(this.element.css(\"marginBottom\"), 10) || 0)\n             };\n         },\n\n         _cacheHelperProportions: function() {\n             this.helperProportions = {\n                 width: this.helper.outerWidth(),\n                 height: this.helper.outerHeight()\n             };\n         },\n\n         _setContainment: function() {\n\n             var o = this.options;\n             if (o.containment == 'parent') o.containment = this.helper[0].parentNode;\n             if (o.containment == 'document' || o.containment == 'window') this.containment = [\n                 o.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n                 o.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n                 (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n                 (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n             ];\n\n             if (!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {\n                 var c = $(o.containment);\n                 var ce = c[0];\n                 if (!ce) return;\n                 var co = c.offset();\n                 var over = ($(ce).css(\"overflow\") != 'hidden');\n\n                 this.containment = [\n                     (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingLeft\"), 10) || 0),\n                     (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingTop\"), 10) || 0),\n                     (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n                     (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom\n                 ];\n                 this.relative_container = c;\n\n             } else if (o.containment.constructor == Array) {\n                 this.containment = o.containment;\n             }\n\n         },\n\n         _convertPositionTo: function(d, pos) {\n\n             if (!pos) pos = this.position;\n             var mod = d == \"absolute\" ? 1 : -1;\n             var o = this.options,\n                 scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n                 scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n             return {\n                 top: (\n                     pos.top // The absolute mouse position\n                     +\n                     this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent\n                     +\n                     this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)\n                     -\n                     ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod)\n                 ),\n                 left: (\n                     pos.left // The absolute mouse position\n                     +\n                     this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent\n                     +\n                     this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)\n                     -\n                     ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod)\n                 )\n             };\n\n         },\n\n         _generatePosition: function(event) {\n\n             var o = this.options,\n                 scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n                 scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n             var pageX = event.pageX;\n             var pageY = event.pageY;\n\n             /*\n              * - Position constraining -\n              * Constrain the position to a mix of grid, containment.\n              */\n\n             if (this.originalPosition) { //If we are not dragging yet, we won't check for options\n                 var containment;\n                 if (this.containment) {\n                     if (this.relative_container) {\n                         var co = this.relative_container.offset();\n                         containment = [this.containment[0] + co.left,\n                             this.containment[1] + co.top,\n                             this.containment[2] + co.left,\n                             this.containment[3] + co.top\n                         ];\n                     } else {\n                         containment = this.containment;\n                     }\n\n                     if (event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left;\n                     if (event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top;\n                     if (event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left;\n                     if (event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top;\n                 }\n\n                 if (o.grid) {\n                     //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n                     var top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n                     pageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n                     var left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n                     pageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n                 }\n\n             }\n\n             return {\n                 top: (\n                     pageY // The absolute mouse position\n                     -\n                     this.offset.click.top // Click offset (relative to the element)\n                     -\n                     this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent\n                     -\n                     this.offset.parent.top // The offsetParent's offset without borders (offset + border)\n                     +\n                     ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())))\n                 ),\n                 left: (\n                     pageX // The absolute mouse position\n                     -\n                     this.offset.click.left // Click offset (relative to the element)\n                     -\n                     this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent\n                     -\n                     this.offset.parent.left // The offsetParent's offset without borders (offset + border)\n                     +\n                     ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()))\n                 )\n             };\n\n         },\n\n         _clear: function() {\n             this.helper.removeClass(\"ui-draggable-dragging\");\n             if (this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();\n             //if($.ui.ddmanager) $.ui.ddmanager.current = null;\n             this.helper = null;\n             this.cancelHelperRemoval = false;\n         },\n\n         // From now on bulk stuff - mainly helpers\n\n         _trigger: function(type, event, ui) {\n             ui = ui || this._uiHash();\n             $.ui.plugin.call(this, type, [event, ui]);\n             if (type == \"drag\") this.positionAbs = this._convertPositionTo(\"absolute\"); //The absolute position has to be recalculated after plugins\n             return $.Widget.prototype._trigger.call(this, type, event, ui);\n         },\n\n         plugins: {},\n\n         _uiHash: function(event) {\n             return {\n                 helper: this.helper,\n                 position: this.position,\n                 originalPosition: this.originalPosition,\n                 offset: this.positionAbs\n             };\n         }\n\n     });\n\n     $.extend($.ui.draggable, {\n         version: \"1.8.21\"\n     });\n\n     $.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n         start: function(event, ui) {\n\n             var inst = $(this).data(\"draggable\"),\n                 o = inst.options,\n                 uiSortable = $.extend({}, ui, { item: inst.element });\n             inst.sortables = [];\n             $(o.connectToSortable).each(function() {\n                 var sortable = $.data(this, 'sortable');\n                 if (sortable && !sortable.options.disabled) {\n                     inst.sortables.push({\n                         instance: sortable,\n                         shouldRevert: sortable.options.revert\n                     });\n                     sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n                     sortable._trigger(\"activate\", event, uiSortable);\n                 }\n             });\n\n         },\n         stop: function(event, ui) {\n\n             //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n             var inst = $(this).data(\"draggable\"),\n                 uiSortable = $.extend({}, ui, { item: inst.element });\n\n             $.each(inst.sortables, function() {\n                 if (this.instance.isOver) {\n\n                     this.instance.isOver = 0;\n\n                     inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n                     this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n                     //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'\n                     if (this.shouldRevert) this.instance.options.revert = true;\n\n                     //Trigger the stop of the sortable\n                     this.instance._mouseStop(event);\n\n                     this.instance.options.helper = this.instance.options._helper;\n\n                     //If the helper has been the original item, restore properties in the sortable\n                     if (inst.options.helper == 'original')\n                         this.instance.currentItem.css({ top: 'auto', left: 'auto' });\n\n                 } else {\n                     this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n                     this.instance._trigger(\"deactivate\", event, uiSortable);\n                 }\n\n             });\n\n         },\n         drag: function(event, ui) {\n\n             var inst = $(this).data(\"draggable\"),\n                 self = this;\n\n             var checkPos = function(o) {\n                 var dyClick = this.offset.click.top,\n                     dxClick = this.offset.click.left;\n                 var helperTop = this.positionAbs.top,\n                     helperLeft = this.positionAbs.left;\n                 var itemHeight = o.height,\n                     itemWidth = o.width;\n                 var itemTop = o.top,\n                     itemLeft = o.left;\n\n                 return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);\n             };\n\n             $.each(inst.sortables, function(i) {\n\n                 //Copy over some variables to allow calling the sortable's native _intersectsWith\n                 this.instance.positionAbs = inst.positionAbs;\n                 this.instance.helperProportions = inst.helperProportions;\n                 this.instance.offset.click = inst.offset.click;\n\n                 if (this.instance._intersectsWith(this.instance.containerCache)) {\n\n                     //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n                     if (!this.instance.isOver) {\n\n                         this.instance.isOver = 1;\n                         //Now we fake the start of dragging for the sortable instance,\n                         //by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n                         //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n                         this.instance.currentItem = $(self).clone().removeAttr('id').appendTo(this.instance.element).data(\"sortable-item\", true);\n                         this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n                         this.instance.options.helper = function() { return ui.helper[0]; };\n\n                         event.target = this.instance.currentItem[0];\n                         this.instance._mouseCapture(event, true);\n                         this.instance._mouseStart(event, true, true);\n\n                         //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n                         this.instance.offset.click.top = inst.offset.click.top;\n                         this.instance.offset.click.left = inst.offset.click.left;\n                         this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n                         this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n                         inst._trigger(\"toSortable\", event);\n                         inst.dropped = this.instance.element; //draggable revert needs that\n                         //hack so receive/update callbacks work (mostly)\n                         inst.currentItem = inst.element;\n                         this.instance.fromOutside = inst;\n\n                     }\n\n                     //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n                     if (this.instance.currentItem) this.instance._mouseDrag(event);\n\n                 } else {\n\n                     //If it doesn't intersect with the sortable, and it intersected before,\n                     //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n                     if (this.instance.isOver) {\n\n                         this.instance.isOver = 0;\n                         this.instance.cancelHelperRemoval = true;\n\n                         //Prevent reverting on this forced stop\n                         this.instance.options.revert = false;\n\n                         // The out event needs to be triggered independently\n                         this.instance._trigger('out', event, this.instance._uiHash(this.instance));\n\n                         this.instance._mouseStop(event, true);\n                         this.instance.options.helper = this.instance.options._helper;\n\n                         //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n                         this.instance.currentItem.remove();\n                         if (this.instance.placeholder) this.instance.placeholder.remove();\n\n                         inst._trigger(\"fromSortable\", event);\n                         inst.dropped = false; //draggable revert needs that\n                     }\n\n                 };\n\n             });\n\n         }\n     });\n\n     $.ui.plugin.add(\"draggable\", \"cursor\", {\n         start: function(event, ui) {\n             var t = $('body'),\n                 o = $(this).data('draggable').options;\n             if (t.css(\"cursor\")) o._cursor = t.css(\"cursor\");\n             t.css(\"cursor\", o.cursor);\n         },\n         stop: function(event, ui) {\n             var o = $(this).data('draggable').options;\n             if (o._cursor) $('body').css(\"cursor\", o._cursor);\n         }\n     });\n\n     $.ui.plugin.add(\"draggable\", \"opacity\", {\n         start: function(event, ui) {\n             var t = $(ui.helper),\n                 o = $(this).data('draggable').options;\n             if (t.css(\"opacity\")) o._opacity = t.css(\"opacity\");\n             t.css('opacity', o.opacity);\n         },\n         stop: function(event, ui) {\n             var o = $(this).data('draggable').options;\n             if (o._opacity) $(ui.helper).css('opacity', o._opacity);\n         }\n     });\n\n     $.ui.plugin.add(\"draggable\", \"scroll\", {\n         start: function(event, ui) {\n             var i = $(this).data(\"draggable\");\n             if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();\n         },\n         drag: function(event, ui) {\n\n             var i = $(this).data(\"draggable\"),\n                 o = i.options,\n                 scrolled = false;\n\n             if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {\n\n                 if (!o.axis || o.axis != 'x') {\n                     if ((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n                         i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n                     else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity)\n                         i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n                 }\n\n                 if (!o.axis || o.axis != 'y') {\n                     if ((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n                         i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n                     else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity)\n                         i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n                 }\n\n             } else {\n\n                 if (!o.axis || o.axis != 'x') {\n                     if (event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n                         scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n                     else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n                         scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n                 }\n\n                 if (!o.axis || o.axis != 'y') {\n                     if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n                         scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n                     else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n                         scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n                 }\n\n             }\n\n             if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n                 $.ui.ddmanager.prepareOffsets(i, event);\n\n         }\n     });\n\n     $.ui.plugin.add(\"draggable\", \"snap\", {\n         start: function(event, ui) {\n\n             var i = $(this).data(\"draggable\"),\n                 o = i.options;\n             i.snapElements = [];\n\n             $(o.snap.constructor != String ? (o.snap.items || ':data(draggable)') : o.snap).each(function() {\n                 var $t = $(this);\n                 var $o = $t.offset();\n                 if (this != i.element[0]) i.snapElements.push({\n                     item: this,\n                     width: $t.outerWidth(),\n                     height: $t.outerHeight(),\n                     top: $o.top,\n                     left: $o.left\n                 });\n             });\n\n         },\n         drag: function(event, ui) {\n\n             var inst = $(this).data(\"draggable\"),\n                 o = inst.options;\n             var d = o.snapTolerance;\n\n             var x1 = ui.offset.left,\n                 x2 = x1 + inst.helperProportions.width,\n                 y1 = ui.offset.top,\n                 y2 = y1 + inst.helperProportions.height;\n\n             for (var i = inst.snapElements.length - 1; i >= 0; i--) {\n\n                 var l = inst.snapElements[i].left,\n                     r = l + inst.snapElements[i].width,\n                     t = inst.snapElements[i].top,\n                     b = t + inst.snapElements[i].height;\n\n                 //Yes, I know, this is insane ;)\n                 if (!((l - d < x1 && x1 < r + d && t - d < y1 && y1 < b + d) || (l - d < x1 && x1 < r + d && t - d < y2 && y2 < b + d) || (l - d < x2 && x2 < r + d && t - d < y1 && y1 < b + d) || (l - d < x2 && x2 < r + d && t - d < y2 && y2 < b + d))) {\n                     if (inst.snapElements[i].snapping)(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n                     inst.snapElements[i].snapping = false;\n                     continue;\n                 }\n\n                 if (o.snapMode != 'inner') {\n                     var ts = Math.abs(t - y2) <= d;\n                     var bs = Math.abs(b - y1) <= d;\n                     var ls = Math.abs(l - x2) <= d;\n                     var rs = Math.abs(r - x1) <= d;\n                     if (ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n                     if (bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n                     if (ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n                     if (rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n                 }\n\n                 var first = (ts || bs || ls || rs);\n\n                 if (o.snapMode != 'outer') {\n                     var ts = Math.abs(t - y1) <= d;\n                     var bs = Math.abs(b - y2) <= d;\n                     var ls = Math.abs(l - x1) <= d;\n                     var rs = Math.abs(r - x2) <= d;\n                     if (ts) ui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n                     if (bs) ui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n                     if (ls) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n                     if (rs) ui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n                 }\n\n                 if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))\n                     (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n                 inst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n             };\n\n         }\n     });\n\n     $.ui.plugin.add(\"draggable\", \"stack\", {\n         start: function(event, ui) {\n\n             var o = $(this).data(\"draggable\").options;\n\n             var group = $.makeArray($(o.stack)).sort(function(a, b) {\n                 return (parseInt($(a).css(\"zIndex\"), 10) || 0) - (parseInt($(b).css(\"zIndex\"), 10) || 0);\n             });\n             if (!group.length) { return; }\n\n             var min = parseInt(group[0].style.zIndex) || 0;\n             $(group).each(function(i) {\n                 this.style.zIndex = min + i;\n             });\n\n             this[0].style.zIndex = min + group.length;\n\n         }\n     });\n\n     $.ui.plugin.add(\"draggable\", \"zIndex\", {\n         start: function(event, ui) {\n             var t = $(ui.helper),\n                 o = $(this).data(\"draggable\").options;\n             if (t.css(\"zIndex\")) o._zIndex = t.css(\"zIndex\");\n             t.css('zIndex', o.zIndex);\n         },\n         stop: function(event, ui) {\n             var o = $(this).data(\"draggable\").options;\n             if (o._zIndex) $(ui.helper).css('zIndex', o._zIndex);\n         }\n     });\n\n })(jQuery);\n /*!\n  * jQuery UI Droppable 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Droppables\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.widget.js\n  *\tjquery.ui.mouse.js\n  *\tjquery.ui.draggable.js\n  */\n (function($, undefined) {\n\n     $.widget(\"ui.droppable\", {\n         widgetEventPrefix: \"drop\",\n         options: {\n             accept: '*',\n             activeClass: false,\n             addClasses: true,\n             greedy: false,\n             hoverClass: false,\n             scope: 'default',\n             tolerance: 'intersect'\n         },\n         _create: function() {\n\n             var o = this.options,\n                 accept = o.accept;\n             this.isover = 0;\n             this.isout = 1;\n\n             this.accept = $.isFunction(accept) ? accept : function(d) {\n                 return d.is(accept);\n             };\n\n             //Store the droppable's proportions\n             this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };\n\n             // Add the reference and positions to the manager\n             $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];\n             $.ui.ddmanager.droppables[o.scope].push(this);\n\n             (o.addClasses && this.element.addClass(\"ui-droppable\"));\n\n         },\n\n         destroy: function() {\n             var drop = $.ui.ddmanager.droppables[this.options.scope];\n             for (var i = 0; i < drop.length; i++)\n                 if (drop[i] == this)\n                     drop.splice(i, 1);\n\n             this.element\n                 .removeClass(\"ui-droppable ui-droppable-disabled\")\n                 .removeData(\"droppable\")\n                 .unbind(\".droppable\");\n\n             return this;\n         },\n\n         _setOption: function(key, value) {\n\n             if (key == 'accept') {\n                 this.accept = $.isFunction(value) ? value : function(d) {\n                     return d.is(value);\n                 };\n             }\n             $.Widget.prototype._setOption.apply(this, arguments);\n         },\n\n         _activate: function(event) {\n             var draggable = $.ui.ddmanager.current;\n             if (this.options.activeClass) this.element.addClass(this.options.activeClass);\n             (draggable && this._trigger('activate', event, this.ui(draggable)));\n         },\n\n         _deactivate: function(event) {\n             var draggable = $.ui.ddmanager.current;\n             if (this.options.activeClass) this.element.removeClass(this.options.activeClass);\n             (draggable && this._trigger('deactivate', event, this.ui(draggable)));\n         },\n\n         _over: function(event) {\n\n             var draggable = $.ui.ddmanager.current;\n             if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n             if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) {\n                 if (this.options.hoverClass) this.element.addClass(this.options.hoverClass);\n                 this._trigger('over', event, this.ui(draggable));\n             }\n\n         },\n\n         _out: function(event) {\n\n             var draggable = $.ui.ddmanager.current;\n             if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element\n\n             if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) {\n                 if (this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n                 this._trigger('out', event, this.ui(draggable));\n             }\n\n         },\n\n         _drop: function(event, custom) {\n\n             var draggable = custom || $.ui.ddmanager.current;\n             if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element\n\n             var childrenIntersection = false;\n             this.element.find(\":data(droppable)\").not(\".ui-draggable-dragging\").each(function() {\n                 var inst = $.data(this, 'droppable');\n                 if (\n                     inst.options.greedy &&\n                     !inst.options.disabled &&\n                     inst.options.scope == draggable.options.scope &&\n                     inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) &&\n                     $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)\n                 ) { childrenIntersection = true; return false; }\n             });\n             if (childrenIntersection) return false;\n\n             if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) {\n                 if (this.options.activeClass) this.element.removeClass(this.options.activeClass);\n                 if (this.options.hoverClass) this.element.removeClass(this.options.hoverClass);\n                 this._trigger('drop', event, this.ui(draggable));\n                 return this.element;\n             }\n\n             return false;\n\n         },\n\n         ui: function(c) {\n             return {\n                 draggable: (c.currentItem || c.element),\n                 helper: c.helper,\n                 position: c.position,\n                 offset: c.positionAbs\n             };\n         }\n\n     });\n\n     $.extend($.ui.droppable, {\n         version: \"1.8.21\"\n     });\n\n     $.ui.intersect = function(draggable, droppable, toleranceMode) {\n\n         if (!droppable.offset) return false;\n\n         var x1 = (draggable.positionAbs || draggable.position.absolute).left,\n             x2 = x1 + draggable.helperProportions.width,\n             y1 = (draggable.positionAbs || draggable.position.absolute).top,\n             y2 = y1 + draggable.helperProportions.height;\n         var l = droppable.offset.left,\n             r = l + droppable.proportions.width,\n             t = droppable.offset.top,\n             b = t + droppable.proportions.height;\n\n         switch (toleranceMode) {\n             case 'fit':\n                 return (l <= x1 && x2 <= r &&\n                     t <= y1 && y2 <= b);\n                 break;\n             case 'intersect':\n                 return (l < x1 + (draggable.helperProportions.width / 2) // Right Half\n                     &&\n                     x2 - (draggable.helperProportions.width / 2) < r // Left Half\n                     &&\n                     t < y1 + (draggable.helperProportions.height / 2) // Bottom Half\n                     &&\n                     y2 - (draggable.helperProportions.height / 2) < b); // Top Half\n                 break;\n             case 'pointer':\n                 var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),\n                     draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),\n                     isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);\n                 return isOver;\n                 break;\n             case 'touch':\n                 return (\n                     (y1 >= t && y1 <= b) || // Top edge touching\n                     (y2 >= t && y2 <= b) || // Bottom edge touching\n                     (y1 < t && y2 > b) // Surrounded vertically\n                 ) && (\n                     (x1 >= l && x1 <= r) || // Left edge touching\n                     (x2 >= l && x2 <= r) || // Right edge touching\n                     (x1 < l && x2 > r) // Surrounded horizontally\n                 );\n                 break;\n             default:\n                 return false;\n                 break;\n         }\n\n     };\n\n     /*\n     \tThis manager tracks offsets of draggables and droppables\n     */\n     $.ui.ddmanager = {\n         current: null,\n         droppables: { 'default': [] },\n         prepareOffsets: function(t, event) {\n\n             var m = $.ui.ddmanager.droppables[t.options.scope] || [];\n             var type = event ? event.type : null; // workaround for #2317\n             var list = (t.currentItem || t.element).find(\":data(droppable)\").andSelf();\n\n             droppablesLoop: for (var i = 0; i < m.length; i++) {\n\n                 if (m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0], (t.currentItem || t.element)))) continue; //No disabled and non-accepted\n                 for (var j = 0; j < list.length; j++) { if (list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item\n                 m[i].visible = m[i].element.css(\"display\") != \"none\";\n                 if (!m[i].visible) continue; //If the element is not visible, continue\n\n                 if (type == \"mousedown\") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables\n\n                 m[i].offset = m[i].element.offset();\n                 m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };\n\n             }\n\n         },\n         drop: function(draggable, event) {\n\n             var dropped = false;\n             $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n                 if (!this.options) return;\n                 if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))\n                     dropped = this._drop.call(this, event) || dropped;\n\n                 if (!this.options.disabled && this.visible && this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) {\n                     this.isout = 1;\n                     this.isover = 0;\n                     this._deactivate.call(this, event);\n                 }\n\n             });\n             return dropped;\n\n         },\n         dragStart: function(draggable, event) {\n             //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n             draggable.element.parents(\":not(body,html)\").bind(\"scroll.droppable\", function() {\n                 if (!draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n             });\n         },\n         drag: function(draggable, event) {\n\n             //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n             if (draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n\n             //Run through all droppables and check their positions based on specific tolerance options\n             $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {\n\n                 if (this.options.disabled || this.greedyChild || !this.visible) return;\n                 var intersects = $.ui.intersect(draggable, this, this.options.tolerance);\n\n                 var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);\n                 if (!c) return;\n\n                 var parentInstance;\n                 if (this.options.greedy) {\n                     var parent = this.element.parents(':data(droppable):eq(0)');\n                     if (parent.length) {\n                         parentInstance = $.data(parent[0], 'droppable');\n                         parentInstance.greedyChild = (c == 'isover' ? 1 : 0);\n                     }\n                 }\n\n                 // we just moved into a greedy child\n                 if (parentInstance && c == 'isover') {\n                     parentInstance['isover'] = 0;\n                     parentInstance['isout'] = 1;\n                     parentInstance._out.call(parentInstance, event);\n                 }\n\n                 this[c] = 1;\n                 this[c == 'isout' ? 'isover' : 'isout'] = 0;\n                 this[c == \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n                 // we just moved out of a greedy child\n                 if (parentInstance && c == 'isout') {\n                     parentInstance['isout'] = 0;\n                     parentInstance['isover'] = 1;\n                     parentInstance._over.call(parentInstance, event);\n                 }\n             });\n\n         },\n         dragStop: function(draggable, event) {\n             draggable.element.parents(\":not(body,html)\").unbind(\"scroll.droppable\");\n             //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n             if (!draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);\n         }\n     };\n\n })(jQuery);\n /*!\n  * jQuery UI Resizable 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Resizables\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.mouse.js\n  *\tjquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     $.widget(\"ui.resizable\", $.ui.mouse, {\n         widgetEventPrefix: \"resize\",\n         options: {\n             alsoResize: false,\n             animate: false,\n             animateDuration: \"slow\",\n             animateEasing: \"swing\",\n             aspectRatio: false,\n             autoHide: false,\n             containment: false,\n             ghost: false,\n             grid: false,\n             handles: \"e,s,se\",\n             helper: false,\n             maxHeight: null,\n             maxWidth: null,\n             minHeight: 10,\n             minWidth: 10,\n             zIndex: 1000\n         },\n         _create: function() {\n\n             var self = this,\n                 o = this.options;\n             this.element.addClass(\"ui-resizable\");\n\n             $.extend(this, {\n                 _aspectRatio: !!(o.aspectRatio),\n                 aspectRatio: o.aspectRatio,\n                 originalElement: this.element,\n                 _proportionallyResizeElements: [],\n                 _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null\n             });\n\n             //Wrap the element if it cannot hold child nodes\n             if (this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n                 //Create a wrapper element and set the wrapper to the new current internal element\n                 this.element.wrap(\n                     $('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({\n                         position: this.element.css('position'),\n                         width: this.element.outerWidth(),\n                         height: this.element.outerHeight(),\n                         top: this.element.css('top'),\n                         left: this.element.css('left')\n                     })\n                 );\n\n                 //Overwrite the original this.element\n                 this.element = this.element.parent().data(\n                     \"resizable\", this.element.data('resizable')\n                 );\n\n                 this.elementIsWrapper = true;\n\n                 //Move margins to the wrapper\n                 this.element.css({ marginLeft: this.originalElement.css(\"marginLeft\"), marginTop: this.originalElement.css(\"marginTop\"), marginRight: this.originalElement.css(\"marginRight\"), marginBottom: this.originalElement.css(\"marginBottom\") });\n                 this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0 });\n\n                 //Prevent Safari textarea resize\n                 this.originalResizeStyle = this.originalElement.css('resize');\n                 this.originalElement.css('resize', 'none');\n\n                 //Push the actual element to our proportionallyResize internal array\n                 this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));\n\n                 // avoid IE jump (hard set the margin)\n                 this.originalElement.css({ margin: this.originalElement.css('margin') });\n\n                 // fix handlers offset\n                 this._proportionallyResize();\n\n             }\n\n             this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? \"e,s,se\" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });\n             if (this.handles.constructor == String) {\n\n                 if (this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';\n                 var n = this.handles.split(\",\");\n                 this.handles = {};\n\n                 for (var i = 0; i < n.length; i++) {\n\n                     var handle = $.trim(n[i]),\n                         hname = 'ui-resizable-' + handle;\n                     var axis = $('<div class=\"ui-resizable-handle ' + hname + '\"></div>');\n\n                     // Apply zIndex to all handles - see #7960\n                     axis.css({ zIndex: o.zIndex });\n\n                     //TODO : What's going on here?\n                     if ('se' == handle) {\n                         axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');\n                     };\n\n                     //Insert into internal handles object and append to element\n                     this.handles[handle] = '.ui-resizable-' + handle;\n                     this.element.append(axis);\n                 }\n\n             }\n\n             this._renderAxis = function(target) {\n\n                 target = target || this.element;\n\n                 for (var i in this.handles) {\n\n                     if (this.handles[i].constructor == String)\n                         this.handles[i] = $(this.handles[i], this.element).show();\n\n                     //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)\n                     if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n                         var axis = $(this.handles[i], this.element),\n                             padWrapper = 0;\n\n                         //Checking the correct pad and border\n                         padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n                         //The padding type i have to apply...\n                         var padPos = ['padding',\n                             /ne|nw|n/.test(i) ? 'Top' :\n                             /se|sw|s/.test(i) ? 'Bottom' :\n                             /^e$/.test(i) ? 'Right' : 'Left'\n                         ].join(\"\");\n\n                         target.css(padPos, padWrapper);\n\n                         this._proportionallyResize();\n\n                     }\n\n                     //TODO: What's that good for? There's not anything to be executed left\n                     if (!$(this.handles[i]).length)\n                         continue;\n\n                 }\n             };\n\n             //TODO: make renderAxis a prototype function\n             this._renderAxis(this.element);\n\n             this._handles = $('.ui-resizable-handle', this.element)\n                 .disableSelection();\n\n             //Matching axis name\n             this._handles.mouseover(function() {\n                 if (!self.resizing) {\n                     if (this.className)\n                         var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n                     //Axis, default = se\n                     self.axis = axis && axis[1] ? axis[1] : 'se';\n                 }\n             });\n\n             //If we want to auto hide the elements\n             if (o.autoHide) {\n                 this._handles.hide();\n                 $(this.element)\n                     .addClass(\"ui-resizable-autohide\")\n                     .hover(function() {\n                             if (o.disabled) return;\n                             $(this).removeClass(\"ui-resizable-autohide\");\n                             self._handles.show();\n                         },\n                         function() {\n                             if (o.disabled) return;\n                             if (!self.resizing) {\n                                 $(this).addClass(\"ui-resizable-autohide\");\n                                 self._handles.hide();\n                             }\n                         });\n             }\n\n             //Initialize the mouse interaction\n             this._mouseInit();\n\n         },\n\n         destroy: function() {\n\n             this._mouseDestroy();\n\n             var _destroy = function(exp) {\n                 $(exp).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n                     .removeData(\"resizable\").unbind(\".resizable\").find('.ui-resizable-handle').remove();\n             };\n\n             //TODO: Unwrap at same DOM position\n             if (this.elementIsWrapper) {\n                 _destroy(this.element);\n                 var wrapper = this.element;\n                 wrapper.after(\n                     this.originalElement.css({\n                         position: wrapper.css('position'),\n                         width: wrapper.outerWidth(),\n                         height: wrapper.outerHeight(),\n                         top: wrapper.css('top'),\n                         left: wrapper.css('left')\n                     })\n                 ).remove();\n             }\n\n             this.originalElement.css('resize', this.originalResizeStyle);\n             _destroy(this.originalElement);\n\n             return this;\n         },\n\n         _mouseCapture: function(event) {\n             var handle = false;\n             for (var i in this.handles) {\n                 if ($(this.handles[i])[0] == event.target) {\n                     handle = true;\n                 }\n             }\n\n             return !this.options.disabled && handle;\n         },\n\n         _mouseStart: function(event) {\n\n             var o = this.options,\n                 iniPos = this.element.position(),\n                 el = this.element;\n\n             this.resizing = true;\n             this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };\n\n             // bugfix for http://dev.jquery.com/ticket/1749\n             if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {\n                 el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });\n             }\n\n             this._renderProxy();\n\n             var curleft = num(this.helper.css('left')),\n                 curtop = num(this.helper.css('top'));\n\n             if (o.containment) {\n                 curleft += $(o.containment).scrollLeft() || 0;\n                 curtop += $(o.containment).scrollTop() || 0;\n             }\n\n             //Store needed variables\n             this.offset = this.helper.offset();\n             this.position = { left: curleft, top: curtop };\n             this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n             this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };\n             this.originalPosition = { left: curleft, top: curtop };\n             this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };\n             this.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n             //Aspect Ratio\n             this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);\n\n             var cursor = $('.ui-resizable-' + this.axis).css('cursor');\n             $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);\n\n             el.addClass(\"ui-resizable-resizing\");\n             this._propagate(\"start\", event);\n             return true;\n         },\n\n         _mouseDrag: function(event) {\n\n             //Increase performance, avoid regex\n             var el = this.helper,\n                 o = this.options,\n                 props = {},\n                 self = this,\n                 smp = this.originalMousePosition,\n                 a = this.axis;\n\n             var dx = (event.pageX - smp.left) || 0,\n                 dy = (event.pageY - smp.top) || 0;\n             var trigger = this._change[a];\n             if (!trigger) return false;\n\n             // Calculate the attrs that will be change\n             var data = trigger.apply(this, [event, dx, dy]),\n                 ie6 = $.browser.msie && $.browser.version < 7,\n                 csdif = this.sizeDiff;\n\n             // Put this in the mouseDrag handler since the user can start pressing shift while resizing\n             this._updateVirtualBoundaries(event.shiftKey);\n             if (this._aspectRatio || event.shiftKey)\n                 data = this._updateRatio(data, event);\n\n             data = this._respectSize(data, event);\n\n             // plugins callbacks need to be called first\n             this._propagate(\"resize\", event);\n\n             el.css({\n                 top: this.position.top + \"px\",\n                 left: this.position.left + \"px\",\n                 width: this.size.width + \"px\",\n                 height: this.size.height + \"px\"\n             });\n\n             if (!this._helper && this._proportionallyResizeElements.length)\n                 this._proportionallyResize();\n\n             this._updateCache(data);\n\n             // calling the user callback at the end\n             this._trigger('resize', event, this.ui());\n\n             return false;\n         },\n\n         _mouseStop: function(event) {\n\n             this.resizing = false;\n             var o = this.options,\n                 self = this;\n\n             if (this._helper) {\n                 var pr = this._proportionallyResizeElements,\n                     ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n                     soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,\n                     soffsetw = ista ? 0 : self.sizeDiff.width;\n\n                 var s = { width: (self.helper.width() - soffsetw), height: (self.helper.height() - soffseth) },\n                     left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,\n                     top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;\n\n                 if (!o.animate)\n                     this.element.css($.extend(s, { top: top, left: left }));\n\n                 self.helper.height(self.size.height);\n                 self.helper.width(self.size.width);\n\n                 if (this._helper && !o.animate) this._proportionallyResize();\n             }\n\n             $('body').css('cursor', 'auto');\n\n             this.element.removeClass(\"ui-resizable-resizing\");\n\n             this._propagate(\"stop\", event);\n\n             if (this._helper) this.helper.remove();\n             return false;\n\n         },\n\n         _updateVirtualBoundaries: function(forceAspectRatio) {\n             var o = this.options,\n                 pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;\n\n             b = {\n                 minWidth: isNumber(o.minWidth) ? o.minWidth : 0,\n                 maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n                 minHeight: isNumber(o.minHeight) ? o.minHeight : 0,\n                 maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity\n             };\n\n             if (this._aspectRatio || forceAspectRatio) {\n                 // We want to create an enclosing box whose aspect ration is the requested one\n                 // First, compute the \"projected\" size for each dimension based on the aspect ratio and other dimension\n                 pMinWidth = b.minHeight * this.aspectRatio;\n                 pMinHeight = b.minWidth / this.aspectRatio;\n                 pMaxWidth = b.maxHeight * this.aspectRatio;\n                 pMaxHeight = b.maxWidth / this.aspectRatio;\n\n                 if (pMinWidth > b.minWidth) b.minWidth = pMinWidth;\n                 if (pMinHeight > b.minHeight) b.minHeight = pMinHeight;\n                 if (pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;\n                 if (pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;\n             }\n             this._vBoundaries = b;\n         },\n\n         _updateCache: function(data) {\n             var o = this.options;\n             this.offset = this.helper.offset();\n             if (isNumber(data.left)) this.position.left = data.left;\n             if (isNumber(data.top)) this.position.top = data.top;\n             if (isNumber(data.height)) this.size.height = data.height;\n             if (isNumber(data.width)) this.size.width = data.width;\n         },\n\n         _updateRatio: function(data, event) {\n\n             var o = this.options,\n                 cpos = this.position,\n                 csize = this.size,\n                 a = this.axis;\n\n             if (isNumber(data.height)) data.width = (data.height * this.aspectRatio);\n             else if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);\n\n             if (a == 'sw') {\n                 data.left = cpos.left + (csize.width - data.width);\n                 data.top = null;\n             }\n             if (a == 'nw') {\n                 data.top = cpos.top + (csize.height - data.height);\n                 data.left = cpos.left + (csize.width - data.width);\n             }\n\n             return data;\n         },\n\n         _respectSize: function(data, event) {\n\n             var el = this.helper,\n                 o = this._vBoundaries,\n                 pRatio = this._aspectRatio || event.shiftKey,\n                 a = this.axis,\n                 ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width),\n                 ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n                 isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width),\n                 isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);\n\n             if (isminw) data.width = o.minWidth;\n             if (isminh) data.height = o.minHeight;\n             if (ismaxw) data.width = o.maxWidth;\n             if (ismaxh) data.height = o.maxHeight;\n\n             var dw = this.originalPosition.left + this.originalSize.width,\n                 dh = this.position.top + this.size.height;\n             var cw = /sw|nw|w/.test(a),\n                 ch = /nw|ne|n/.test(a);\n\n             if (isminw && cw) data.left = dw - o.minWidth;\n             if (ismaxw && cw) data.left = dw - o.maxWidth;\n             if (isminh && ch) data.top = dh - o.minHeight;\n             if (ismaxh && ch) data.top = dh - o.maxHeight;\n\n             // fixing jump error on top/left - bug #2330\n             var isNotwh = !data.width && !data.height;\n             if (isNotwh && !data.left && data.top) data.top = null;\n             else if (isNotwh && !data.top && data.left) data.left = null;\n\n             return data;\n         },\n\n         _proportionallyResize: function() {\n\n             var o = this.options;\n             if (!this._proportionallyResizeElements.length) return;\n             var element = this.helper || this.element;\n\n             for (var i = 0; i < this._proportionallyResizeElements.length; i++) {\n\n                 var prel = this._proportionallyResizeElements[i];\n\n                 if (!this.borderDif) {\n                     var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],\n                         p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];\n\n                     this.borderDif = $.map(b, function(v, i) {\n                         var border = parseInt(v, 10) || 0,\n                             padding = parseInt(p[i], 10) || 0;\n                         return border + padding;\n                     });\n                 }\n\n                 if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length)))\n                     continue;\n\n                 prel.css({\n                     height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,\n                     width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0\n                 });\n\n             };\n\n         },\n\n         _renderProxy: function() {\n\n             var el = this.element,\n                 o = this.options;\n             this.elementOffset = el.offset();\n\n             if (this._helper) {\n\n                 this.helper = this.helper || $('<div style=\"overflow:hidden;\"></div>');\n\n                 // fix ie6 offset TODO: This seems broken\n                 var ie6 = $.browser.msie && $.browser.version < 7,\n                     ie6offset = (ie6 ? 1 : 0),\n                     pxyoffset = (ie6 ? 2 : -1);\n\n                 this.helper.addClass(this._helper).css({\n                     width: this.element.outerWidth() + pxyoffset,\n                     height: this.element.outerHeight() + pxyoffset,\n                     position: 'absolute',\n                     left: this.elementOffset.left - ie6offset + 'px',\n                     top: this.elementOffset.top - ie6offset + 'px',\n                     zIndex: ++o.zIndex //TODO: Don't modify option\n                 });\n\n                 this.helper\n                     .appendTo(\"body\")\n                     .disableSelection();\n\n             } else {\n                 this.helper = this.element;\n             }\n\n         },\n\n         _change: {\n             e: function(event, dx, dy) {\n                 return { width: this.originalSize.width + dx };\n             },\n             w: function(event, dx, dy) {\n                 var o = this.options,\n                     cs = this.originalSize,\n                     sp = this.originalPosition;\n                 return { left: sp.left + dx, width: cs.width - dx };\n             },\n             n: function(event, dx, dy) {\n                 var o = this.options,\n                     cs = this.originalSize,\n                     sp = this.originalPosition;\n                 return { top: sp.top + dy, height: cs.height - dy };\n             },\n             s: function(event, dx, dy) {\n                 return { height: this.originalSize.height + dy };\n             },\n             se: function(event, dx, dy) {\n                 return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n             },\n             sw: function(event, dx, dy) {\n                 return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n             },\n             ne: function(event, dx, dy) {\n                 return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n             },\n             nw: function(event, dx, dy) {\n                 return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n             }\n         },\n\n         _propagate: function(n, event) {\n             $.ui.plugin.call(this, n, [event, this.ui()]);\n             (n != \"resize\" && this._trigger(n, event, this.ui()));\n         },\n\n         plugins: {},\n\n         ui: function() {\n             return {\n                 originalElement: this.originalElement,\n                 element: this.element,\n                 helper: this.helper,\n                 position: this.position,\n                 size: this.size,\n                 originalSize: this.originalSize,\n                 originalPosition: this.originalPosition\n             };\n         }\n\n     });\n\n     $.extend($.ui.resizable, {\n         version: \"1.8.21\"\n     });\n\n     /*\n      * Resizable Extensions\n      */\n\n     $.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n         start: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options;\n\n             var _store = function(exp) {\n                 $(exp).each(function() {\n                     var el = $(this);\n                     el.data(\"resizable-alsoresize\", {\n                         width: parseInt(el.width(), 10),\n                         height: parseInt(el.height(), 10),\n                         left: parseInt(el.css('left'), 10),\n                         top: parseInt(el.css('top'), 10)\n                     });\n                 });\n             };\n\n             if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {\n                 if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0];\n                     _store(o.alsoResize); } else { $.each(o.alsoResize, function(exp) { _store(exp); }); }\n             } else {\n                 _store(o.alsoResize);\n             }\n         },\n\n         resize: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options,\n                 os = self.originalSize,\n                 op = self.originalPosition;\n\n             var delta = {\n                     height: (self.size.height - os.height) || 0,\n                     width: (self.size.width - os.width) || 0,\n                     top: (self.position.top - op.top) || 0,\n                     left: (self.position.left - op.left) || 0\n                 },\n\n                 _alsoResize = function(exp, c) {\n                     $(exp).each(function() {\n                         var el = $(this),\n                             start = $(this).data(\"resizable-alsoresize\"),\n                             style = {},\n                             css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\n\n                         $.each(css, function(i, prop) {\n                             var sum = (start[prop] || 0) + (delta[prop] || 0);\n                             if (sum && sum >= 0)\n                                 style[prop] = sum || null;\n                         });\n\n                         el.css(style);\n                     });\n                 };\n\n             if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {\n                 $.each(o.alsoResize, function(exp, c) { _alsoResize(exp, c); });\n             } else {\n                 _alsoResize(o.alsoResize);\n             }\n         },\n\n         stop: function(event, ui) {\n             $(this).removeData(\"resizable-alsoresize\");\n         }\n     });\n\n     $.ui.plugin.add(\"resizable\", \"animate\", {\n\n         stop: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options;\n\n             var pr = self._proportionallyResizeElements,\n                 ista = pr.length && (/textarea/i).test(pr[0].nodeName),\n                 soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,\n                 soffsetw = ista ? 0 : self.sizeDiff.width;\n\n             var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },\n                 left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,\n                 top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;\n\n             self.element.animate(\n                 $.extend(style, top && left ? { top: top, left: left } : {}), {\n                     duration: o.animateDuration,\n                     easing: o.animateEasing,\n                     step: function() {\n\n                         var data = {\n                             width: parseInt(self.element.css('width'), 10),\n                             height: parseInt(self.element.css('height'), 10),\n                             top: parseInt(self.element.css('top'), 10),\n                             left: parseInt(self.element.css('left'), 10)\n                         };\n\n                         if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });\n\n                         // propagating resize, and updating values for each animation step\n                         self._updateCache(data);\n                         self._propagate(\"resize\", event);\n\n                     }\n                 }\n             );\n         }\n\n     });\n\n     $.ui.plugin.add(\"resizable\", \"containment\", {\n\n         start: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options,\n                 el = self.element;\n             var oc = o.containment,\n                 ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;\n             if (!ce) return;\n\n             self.containerElement = $(ce);\n\n             if (/document/.test(oc) || oc == document) {\n                 self.containerOffset = { left: 0, top: 0 };\n                 self.containerPosition = { left: 0, top: 0 };\n\n                 self.parentData = {\n                     element: $(document),\n                     left: 0,\n                     top: 0,\n                     width: $(document).width(),\n                     height: $(document).height() || document.body.parentNode.scrollHeight\n                 };\n             }\n\n             // i'm a node, so compute top, left, right, bottom\n             else {\n                 var element = $(ce),\n                     p = [];\n                 $([\"Top\", \"Right\", \"Left\", \"Bottom\"]).each(function(i, name) { p[i] = num(element.css(\"padding\" + name)); });\n\n                 self.containerOffset = element.offset();\n                 self.containerPosition = element.position();\n                 self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };\n\n                 var co = self.containerOffset,\n                     ch = self.containerSize.height,\n                     cw = self.containerSize.width,\n                     width = ($.ui.hasScroll(ce, \"left\") ? ce.scrollWidth : cw),\n                     height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);\n\n                 self.parentData = {\n                     element: ce,\n                     left: co.left,\n                     top: co.top,\n                     width: width,\n                     height: height\n                 };\n             }\n         },\n\n         resize: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options,\n                 ps = self.containerSize,\n                 co = self.containerOffset,\n                 cs = self.size,\n                 cp = self.position,\n                 pRatio = self._aspectRatio || event.shiftKey,\n                 cop = { top: 0, left: 0 },\n                 ce = self.containerElement;\n\n             if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;\n\n             if (cp.left < (self._helper ? co.left : 0)) {\n                 self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left));\n                 if (pRatio) self.size.height = self.size.width / self.aspectRatio;\n                 self.position.left = o.helper ? co.left : 0;\n             }\n\n             if (cp.top < (self._helper ? co.top : 0)) {\n                 self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top);\n                 if (pRatio) self.size.width = self.size.height * self.aspectRatio;\n                 self.position.top = self._helper ? co.top : 0;\n             }\n\n             self.offset.left = self.parentData.left + self.position.left;\n             self.offset.top = self.parentData.top + self.position.top;\n\n             var woset = Math.abs((self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width),\n                 hoset = Math.abs((self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height);\n\n             var isParent = self.containerElement.get(0) == self.element.parent().get(0),\n                 isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position'));\n\n             if (isParent && isOffsetRelative) woset -= self.parentData.left;\n\n             if (woset + self.size.width >= self.parentData.width) {\n                 self.size.width = self.parentData.width - woset;\n                 if (pRatio) self.size.height = self.size.width / self.aspectRatio;\n             }\n\n             if (hoset + self.size.height >= self.parentData.height) {\n                 self.size.height = self.parentData.height - hoset;\n                 if (pRatio) self.size.width = self.size.height * self.aspectRatio;\n             }\n         },\n\n         stop: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options,\n                 cp = self.position,\n                 co = self.containerOffset,\n                 cop = self.containerPosition,\n                 ce = self.containerElement;\n\n             var helper = $(self.helper),\n                 ho = helper.offset(),\n                 w = helper.outerWidth() - self.sizeDiff.width,\n                 h = helper.outerHeight() - self.sizeDiff.height;\n\n             if (self._helper && !o.animate && (/relative/).test(ce.css('position')))\n                 $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n             if (self._helper && !o.animate && (/static/).test(ce.css('position')))\n                 $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });\n\n         }\n     });\n\n     $.ui.plugin.add(\"resizable\", \"ghost\", {\n\n         start: function(event, ui) {\n\n             var self = $(this).data(\"resizable\"),\n                 o = self.options,\n                 cs = self.size;\n\n             self.ghost = self.originalElement.clone();\n             self.ghost\n                 .css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })\n                 .addClass('ui-resizable-ghost')\n                 .addClass(typeof o.ghost == 'string' ? o.ghost : '');\n\n             self.ghost.appendTo(self.helper);\n\n         },\n\n         resize: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options;\n             if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width });\n         },\n\n         stop: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options;\n             if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0));\n         }\n\n     });\n\n     $.ui.plugin.add(\"resizable\", \"grid\", {\n\n         resize: function(event, ui) {\n             var self = $(this).data(\"resizable\"),\n                 o = self.options,\n                 cs = self.size,\n                 os = self.originalSize,\n                 op = self.originalPosition,\n                 a = self.axis,\n                 ratio = o._aspectRatio || event.shiftKey;\n             o.grid = typeof o.grid == \"number\" ? [o.grid, o.grid] : o.grid;\n             var ox = Math.round((cs.width - os.width) / (o.grid[0] || 1)) * (o.grid[0] || 1),\n                 oy = Math.round((cs.height - os.height) / (o.grid[1] || 1)) * (o.grid[1] || 1);\n\n             if (/^(se|s|e)$/.test(a)) {\n                 self.size.width = os.width + ox;\n                 self.size.height = os.height + oy;\n             } else if (/^(ne)$/.test(a)) {\n                 self.size.width = os.width + ox;\n                 self.size.height = os.height + oy;\n                 self.position.top = op.top - oy;\n             } else if (/^(sw)$/.test(a)) {\n                 self.size.width = os.width + ox;\n                 self.size.height = os.height + oy;\n                 self.position.left = op.left - ox;\n             } else {\n                 self.size.width = os.width + ox;\n                 self.size.height = os.height + oy;\n                 self.position.top = op.top - oy;\n                 self.position.left = op.left - ox;\n             }\n         }\n\n     });\n\n     var num = function(v) {\n         return parseInt(v, 10) || 0;\n     };\n\n     var isNumber = function(value) {\n         return !isNaN(parseInt(value, 10));\n     };\n\n })(jQuery);\n /*!\n  * jQuery UI Selectable 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Selectables\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.mouse.js\n  *\tjquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     $.widget(\"ui.selectable\", $.ui.mouse, {\n         options: {\n             appendTo: 'body',\n             autoRefresh: true,\n             distance: 0,\n             filter: '*',\n             tolerance: 'touch'\n         },\n         _create: function() {\n             var self = this;\n\n             this.element.addClass(\"ui-selectable\");\n\n             this.dragged = false;\n\n             // cache selectee children based on filter\n             var selectees;\n             this.refresh = function() {\n                 selectees = $(self.options.filter, self.element[0]);\n                 selectees.addClass(\"ui-selectee\");\n                 selectees.each(function() {\n                     var $this = $(this);\n                     var pos = $this.offset();\n                     $.data(this, \"selectable-item\", {\n                         element: this,\n                         $element: $this,\n                         left: pos.left,\n                         top: pos.top,\n                         right: pos.left + $this.outerWidth(),\n                         bottom: pos.top + $this.outerHeight(),\n                         startselected: false,\n                         selected: $this.hasClass('ui-selected'),\n                         selecting: $this.hasClass('ui-selecting'),\n                         unselecting: $this.hasClass('ui-unselecting')\n                     });\n                 });\n             };\n             this.refresh();\n\n             this.selectees = selectees.addClass(\"ui-selectee\");\n\n             this._mouseInit();\n\n             this.helper = $(\"<div class='ui-selectable-helper'></div>\");\n         },\n\n         destroy: function() {\n             this.selectees\n                 .removeClass(\"ui-selectee\")\n                 .removeData(\"selectable-item\");\n             this.element\n                 .removeClass(\"ui-selectable ui-selectable-disabled\")\n                 .removeData(\"selectable\")\n                 .unbind(\".selectable\");\n             this._mouseDestroy();\n\n             return this;\n         },\n\n         _mouseStart: function(event) {\n             var self = this;\n\n             this.opos = [event.pageX, event.pageY];\n\n             if (this.options.disabled)\n                 return;\n\n             var options = this.options;\n\n             this.selectees = $(options.filter, this.element[0]);\n\n             this._trigger(\"start\", event);\n\n             $(options.appendTo).append(this.helper);\n             // position helper (lasso)\n             this.helper.css({\n                 \"left\": event.clientX,\n                 \"top\": event.clientY,\n                 \"width\": 0,\n                 \"height\": 0\n             });\n\n             if (options.autoRefresh) {\n                 this.refresh();\n             }\n\n             this.selectees.filter('.ui-selected').each(function() {\n                 var selectee = $.data(this, \"selectable-item\");\n                 selectee.startselected = true;\n                 if (!event.metaKey && !event.ctrlKey) {\n                     selectee.$element.removeClass('ui-selected');\n                     selectee.selected = false;\n                     selectee.$element.addClass('ui-unselecting');\n                     selectee.unselecting = true;\n                     // selectable UNSELECTING callback\n                     self._trigger(\"unselecting\", event, {\n                         unselecting: selectee.element\n                     });\n                 }\n             });\n\n             $(event.target).parents().andSelf().each(function() {\n                 var selectee = $.data(this, \"selectable-item\");\n                 if (selectee) {\n                     var doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected');\n                     selectee.$element\n                         .removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n                         .addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n                     selectee.unselecting = !doSelect;\n                     selectee.selecting = doSelect;\n                     selectee.selected = doSelect;\n                     // selectable (UN)SELECTING callback\n                     if (doSelect) {\n                         self._trigger(\"selecting\", event, {\n                             selecting: selectee.element\n                         });\n                     } else {\n                         self._trigger(\"unselecting\", event, {\n                             unselecting: selectee.element\n                         });\n                     }\n                     return false;\n                 }\n             });\n\n         },\n\n         _mouseDrag: function(event) {\n             var self = this;\n             this.dragged = true;\n\n             if (this.options.disabled)\n                 return;\n\n             var options = this.options;\n\n             var x1 = this.opos[0],\n                 y1 = this.opos[1],\n                 x2 = event.pageX,\n                 y2 = event.pageY;\n             if (x1 > x2) { var tmp = x2;\n                 x2 = x1;\n                 x1 = tmp; }\n             if (y1 > y2) { var tmp = y2;\n                 y2 = y1;\n                 y1 = tmp; }\n             this.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 });\n\n             this.selectees.each(function() {\n                 var selectee = $.data(this, \"selectable-item\");\n                 //prevent helper from being selected if appendTo: selectable\n                 if (!selectee || selectee.element == self.element[0])\n                     return;\n                 var hit = false;\n                 if (options.tolerance == 'touch') {\n                     hit = (!(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1));\n                 } else if (options.tolerance == 'fit') {\n                     hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n                 }\n\n                 if (hit) {\n                     // SELECT\n                     if (selectee.selected) {\n                         selectee.$element.removeClass('ui-selected');\n                         selectee.selected = false;\n                     }\n                     if (selectee.unselecting) {\n                         selectee.$element.removeClass('ui-unselecting');\n                         selectee.unselecting = false;\n                     }\n                     if (!selectee.selecting) {\n                         selectee.$element.addClass('ui-selecting');\n                         selectee.selecting = true;\n                         // selectable SELECTING callback\n                         self._trigger(\"selecting\", event, {\n                             selecting: selectee.element\n                         });\n                     }\n                 } else {\n                     // UNSELECT\n                     if (selectee.selecting) {\n                         if ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n                             selectee.$element.removeClass('ui-selecting');\n                             selectee.selecting = false;\n                             selectee.$element.addClass('ui-selected');\n                             selectee.selected = true;\n                         } else {\n                             selectee.$element.removeClass('ui-selecting');\n                             selectee.selecting = false;\n                             if (selectee.startselected) {\n                                 selectee.$element.addClass('ui-unselecting');\n                                 selectee.unselecting = true;\n                             }\n                             // selectable UNSELECTING callback\n                             self._trigger(\"unselecting\", event, {\n                                 unselecting: selectee.element\n                             });\n                         }\n                     }\n                     if (selectee.selected) {\n                         if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n                             selectee.$element.removeClass('ui-selected');\n                             selectee.selected = false;\n\n                             selectee.$element.addClass('ui-unselecting');\n                             selectee.unselecting = true;\n                             // selectable UNSELECTING callback\n                             self._trigger(\"unselecting\", event, {\n                                 unselecting: selectee.element\n                             });\n                         }\n                     }\n                 }\n             });\n\n             return false;\n         },\n\n         _mouseStop: function(event) {\n             var self = this;\n\n             this.dragged = false;\n\n             var options = this.options;\n\n             $('.ui-unselecting', this.element[0]).each(function() {\n                 var selectee = $.data(this, \"selectable-item\");\n                 selectee.$element.removeClass('ui-unselecting');\n                 selectee.unselecting = false;\n                 selectee.startselected = false;\n                 self._trigger(\"unselected\", event, {\n                     unselected: selectee.element\n                 });\n             });\n             $('.ui-selecting', this.element[0]).each(function() {\n                 var selectee = $.data(this, \"selectable-item\");\n                 selectee.$element.removeClass('ui-selecting').addClass('ui-selected');\n                 selectee.selecting = false;\n                 selectee.selected = true;\n                 selectee.startselected = true;\n                 self._trigger(\"selected\", event, {\n                     selected: selectee.element\n                 });\n             });\n             this._trigger(\"stop\", event);\n\n             this.helper.remove();\n\n             return false;\n         }\n\n     });\n\n     $.extend($.ui.selectable, {\n         version: \"1.8.21\"\n     });\n\n })(jQuery);\n /*!\n  * jQuery UI Sortable 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Sortables\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.mouse.js\n  *\tjquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     $.widget(\"ui.sortable\", $.ui.mouse, {\n         widgetEventPrefix: \"sort\",\n         ready: false,\n         options: {\n             appendTo: \"parent\",\n             axis: false,\n             connectWith: false,\n             containment: false,\n             cursor: 'auto',\n             cursorAt: false,\n             dropOnEmpty: true,\n             forcePlaceholderSize: false,\n             forceHelperSize: false,\n             grid: false,\n             handle: false,\n             helper: \"original\",\n             items: '> *',\n             opacity: false,\n             placeholder: false,\n             revert: false,\n             scroll: true,\n             scrollSensitivity: 20,\n             scrollSpeed: 20,\n             scope: \"default\",\n             tolerance: \"intersect\",\n             zIndex: 1000\n         },\n         _create: function() {\n\n             var o = this.options;\n             this.containerCache = {};\n             this.element.addClass(\"ui-sortable\");\n\n             //Get the items\n             this.refresh();\n\n             //Let's determine if the items are being displayed horizontally\n             this.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n             //Let's determine the parent's offset\n             this.offset = this.element.offset();\n\n             //Initialize mouse events for interaction\n             this._mouseInit();\n\n             //We're ready to go\n             this.ready = true\n\n         },\n\n         destroy: function() {\n             $.Widget.prototype.destroy.call(this);\n             this.element\n                 .removeClass(\"ui-sortable ui-sortable-disabled\");\n             this._mouseDestroy();\n\n             for (var i = this.items.length - 1; i >= 0; i--)\n                 this.items[i].item.removeData(this.widgetName + \"-item\");\n\n             return this;\n         },\n\n         _setOption: function(key, value) {\n             if (key === \"disabled\") {\n                 this.options[key] = value;\n\n                 this.widget()[value ? \"addClass\" : \"removeClass\"](\"ui-sortable-disabled\");\n             } else {\n                 // Don't call widget base _setOption for disable as it adds ui-state-disabled class\n                 $.Widget.prototype._setOption.apply(this, arguments);\n             }\n         },\n\n         _mouseCapture: function(event, overrideHandle) {\n             var that = this;\n\n             if (this.reverting) {\n                 return false;\n             }\n\n             if (this.options.disabled || this.options.type == 'static') return false;\n\n             //We have to refresh the items data once first\n             this._refreshItems(event);\n\n             //Find out if the clicked node (or one of its parents) is a actual item in this.items\n             var currentItem = null,\n                 self = this,\n                 nodes = $(event.target).parents().each(function() {\n                     if ($.data(this, that.widgetName + '-item') == self) {\n                         currentItem = $(this);\n                         return false;\n                     }\n                 });\n             if ($.data(event.target, that.widgetName + '-item') == self) currentItem = $(event.target);\n\n             if (!currentItem) return false;\n             if (this.options.handle && !overrideHandle) {\n                 var validHandle = false;\n\n                 $(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if (this == event.target) validHandle = true; });\n                 if (!validHandle) return false;\n             }\n\n             this.currentItem = currentItem;\n             this._removeCurrentsFromItems();\n             return true;\n\n         },\n\n         _mouseStart: function(event, overrideHandle, noActivation) {\n\n             var o = this.options,\n                 self = this;\n             this.currentContainer = this;\n\n             //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n             this.refreshPositions();\n\n             //Create and append the visible helper\n             this.helper = this._createHelper(event);\n\n             //Cache the helper size\n             this._cacheHelperProportions();\n\n             /*\n              * - Position generation -\n              * This block generates everything position related - it's the core of draggables.\n              */\n\n             //Cache the margins of the original element\n             this._cacheMargins();\n\n             //Get the next scrolling parent\n             this.scrollParent = this.helper.scrollParent();\n\n             //The element's absolute position on the page minus margins\n             this.offset = this.currentItem.offset();\n             this.offset = {\n                 top: this.offset.top - this.margins.top,\n                 left: this.offset.left - this.margins.left\n             };\n\n             $.extend(this.offset, {\n                 click: { //Where the click happened, relative to the element\n                     left: event.pageX - this.offset.left,\n                     top: event.pageY - this.offset.top\n                 },\n                 parent: this._getParentOffset(),\n                 relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n             });\n\n             // Only after we got the offset, we can change the helper's position to absolute\n             // TODO: Still need to figure out a way to make relative sorting possible\n             this.helper.css(\"position\", \"absolute\");\n             this.cssPosition = this.helper.css(\"position\");\n\n             //Generate the original position\n             this.originalPosition = this._generatePosition(event);\n             this.originalPageX = event.pageX;\n             this.originalPageY = event.pageY;\n\n             //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n             (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n             //Cache the former DOM position\n             this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n             //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n             if (this.helper[0] != this.currentItem[0]) {\n                 this.currentItem.hide();\n             }\n\n             //Create the placeholder\n             this._createPlaceholder();\n\n             //Set a containment if given in the options\n             if (o.containment)\n                 this._setContainment();\n\n             if (o.cursor) { // cursor option\n                 if ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n                 $('body').css(\"cursor\", o.cursor);\n             }\n\n             if (o.opacity) { // opacity option\n                 if (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n                 this.helper.css(\"opacity\", o.opacity);\n             }\n\n             if (o.zIndex) { // zIndex option\n                 if (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n                 this.helper.css(\"zIndex\", o.zIndex);\n             }\n\n             //Prepare scrolling\n             if (this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n                 this.overflowOffset = this.scrollParent.offset();\n\n             //Call callbacks\n             this._trigger(\"start\", event, this._uiHash());\n\n             //Recache the helper size\n             if (!this._preserveHelperProportions)\n                 this._cacheHelperProportions();\n\n\n             //Post 'activate' events to possible containers\n             if (!noActivation) {\n                 for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, self._uiHash(this)); }\n             }\n\n             //Prepare possible droppables\n             if ($.ui.ddmanager)\n                 $.ui.ddmanager.current = this;\n\n             if ($.ui.ddmanager && !o.dropBehaviour)\n                 $.ui.ddmanager.prepareOffsets(this, event);\n\n             this.dragging = true;\n\n             this.helper.addClass(\"ui-sortable-helper\");\n             this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n             return true;\n\n         },\n\n         _mouseDrag: function(event) {\n\n             //Compute the helpers position\n             this.position = this._generatePosition(event);\n             this.positionAbs = this._convertPositionTo(\"absolute\");\n\n             if (!this.lastPositionAbs) {\n                 this.lastPositionAbs = this.positionAbs;\n             }\n\n             //Do scrolling\n             if (this.options.scroll) {\n                 var o = this.options,\n                     scrolled = false;\n                 if (this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n                     if ((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n                         this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n                     else if (event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n                         this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n                     if ((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n                         this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n                     else if (event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n                         this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n                 } else {\n\n                     if (event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n                         scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n                     else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n                         scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n                     if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n                         scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n                     else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n                         scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n                 }\n\n                 if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n                     $.ui.ddmanager.prepareOffsets(this, event);\n             }\n\n             //Regenerate the absolute position used for position checks\n             this.positionAbs = this._convertPositionTo(\"absolute\");\n\n             //Set the helper position\n             if (!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left + 'px';\n             if (!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top + 'px';\n\n             //Rearrange\n             for (var i = this.items.length - 1; i >= 0; i--) {\n\n                 //Cache variables and intersection, continue if no intersection\n                 var item = this.items[i],\n                     itemElement = item.item[0],\n                     intersection = this._intersectsWithPointer(item);\n                 if (!intersection) continue;\n\n                 if (itemElement != this.currentItem[0] //cannot intersect with itself\n                     &&\n                     this.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n                     &&\n                     !$.ui.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n                     &&\n                     (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true)\n                     //&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n                 ) {\n\n                     this.direction = intersection == 1 ? \"down\" : \"up\";\n\n                     if (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n                         this._rearrange(event, item);\n                     } else {\n                         break;\n                     }\n\n                     this._trigger(\"change\", event, this._uiHash());\n                     break;\n                 }\n             }\n\n             //Post events to containers\n             this._contactContainers(event);\n\n             //Interconnect with droppables\n             if ($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n             //Call callbacks\n             this._trigger('sort', event, this._uiHash());\n\n             this.lastPositionAbs = this.positionAbs;\n             return false;\n\n         },\n\n         _mouseStop: function(event, noPropagation) {\n\n             if (!event) return;\n\n             //If we are using droppables, inform the manager about the drop\n             if ($.ui.ddmanager && !this.options.dropBehaviour)\n                 $.ui.ddmanager.drop(this, event);\n\n             if (this.options.revert) {\n                 var self = this;\n                 var cur = self.placeholder.offset();\n\n                 self.reverting = true;\n\n                 $(this.helper).animate({\n                     left: cur.left - this.offset.parent.left - self.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n                     top: cur.top - this.offset.parent.top - self.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n                 }, parseInt(this.options.revert, 10) || 500, function() {\n                     self._clear(event);\n                 });\n             } else {\n                 this._clear(event, noPropagation);\n             }\n\n             return false;\n\n         },\n\n         cancel: function() {\n\n             var self = this;\n\n             if (this.dragging) {\n\n                 this._mouseUp({ target: null });\n\n                 if (this.options.helper == \"original\")\n                     this.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n                 else\n                     this.currentItem.show();\n\n                 //Post deactivating events to containers\n                 for (var i = this.containers.length - 1; i >= 0; i--) {\n                     this.containers[i]._trigger(\"deactivate\", null, self._uiHash(this));\n                     if (this.containers[i].containerCache.over) {\n                         this.containers[i]._trigger(\"out\", null, self._uiHash(this));\n                         this.containers[i].containerCache.over = 0;\n                     }\n                 }\n\n             }\n\n             if (this.placeholder) {\n                 //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n                 if (this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n                 if (this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n                 $.extend(this, {\n                     helper: null,\n                     dragging: false,\n                     reverting: false,\n                     _noFinalSort: null\n                 });\n\n                 if (this.domPosition.prev) {\n                     $(this.domPosition.prev).after(this.currentItem);\n                 } else {\n                     $(this.domPosition.parent).prepend(this.currentItem);\n                 }\n             }\n\n             return this;\n\n         },\n\n         serialize: function(o) {\n\n             var items = this._getItemsAsjQuery(o && o.connected);\n             var str = [];\n             o = o || {};\n\n             $(items).each(function() {\n                 var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n                 if (res) str.push((o.key || res[1] + '[]') + '=' + (o.key && o.expression ? res[1] : res[2]));\n             });\n\n             if (!str.length && o.key) {\n                 str.push(o.key + '=');\n             }\n\n             return str.join('&');\n\n         },\n\n         toArray: function(o) {\n\n             var items = this._getItemsAsjQuery(o && o.connected);\n             var ret = [];\n             o = o || {};\n\n             items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n             return ret;\n\n         },\n\n         /* Be careful with the following core functions */\n         _intersectsWith: function(item) {\n\n             var x1 = this.positionAbs.left,\n                 x2 = x1 + this.helperProportions.width,\n                 y1 = this.positionAbs.top,\n                 y2 = y1 + this.helperProportions.height;\n\n             var l = item.left,\n                 r = l + item.width,\n                 t = item.top,\n                 b = t + item.height;\n\n             var dyClick = this.offset.click.top,\n                 dxClick = this.offset.click.left;\n\n             var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n             if (this.options.tolerance == \"pointer\" ||\n                 this.options.forcePointerForContainers ||\n                 (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n             ) {\n                 return isOverElement;\n             } else {\n\n                 return (l < x1 + (this.helperProportions.width / 2) // Right Half\n                     &&\n                     x2 - (this.helperProportions.width / 2) < r // Left Half\n                     &&\n                     t < y1 + (this.helperProportions.height / 2) // Bottom Half\n                     &&\n                     y2 - (this.helperProportions.height / 2) < b); // Top Half\n\n             }\n         },\n\n         _intersectsWithPointer: function(item) {\n\n             var isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n                 isOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n                 isOverElement = isOverElementHeight && isOverElementWidth,\n                 verticalDirection = this._getDragVerticalDirection(),\n                 horizontalDirection = this._getDragHorizontalDirection();\n\n             if (!isOverElement)\n                 return false;\n\n             return this.floating ?\n                 (((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1) :\n                 (verticalDirection && (verticalDirection == \"down\" ? 2 : 1));\n\n         },\n\n         _intersectsWithSides: function(item) {\n\n             var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height / 2), item.height),\n                 isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width / 2), item.width),\n                 verticalDirection = this._getDragVerticalDirection(),\n                 horizontalDirection = this._getDragHorizontalDirection();\n\n             if (this.floating && horizontalDirection) {\n                 return ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n             } else {\n                 return verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n             }\n\n         },\n\n         _getDragVerticalDirection: function() {\n             var delta = this.positionAbs.top - this.lastPositionAbs.top;\n             return delta != 0 && (delta > 0 ? \"down\" : \"up\");\n         },\n\n         _getDragHorizontalDirection: function() {\n             var delta = this.positionAbs.left - this.lastPositionAbs.left;\n             return delta != 0 && (delta > 0 ? \"right\" : \"left\");\n         },\n\n         refresh: function(event) {\n             this._refreshItems(event);\n             this.refreshPositions();\n             return this;\n         },\n\n         _connectWith: function() {\n             var options = this.options;\n             return options.connectWith.constructor == String ?\n                 [options.connectWith] :\n                 options.connectWith;\n         },\n\n         _getItemsAsjQuery: function(connected) {\n\n             var self = this;\n             var items = [];\n             var queries = [];\n             var connectWith = this._connectWith();\n\n             if (connectWith && connected) {\n                 for (var i = connectWith.length - 1; i >= 0; i--) {\n                     var cur = $(connectWith[i]);\n                     for (var j = cur.length - 1; j >= 0; j--) {\n                         var inst = $.data(cur[j], this.widgetName);\n                         if (inst && inst != this && !inst.options.disabled) {\n                             queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n                         }\n                     };\n                 };\n             }\n\n             queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n             for (var i = queries.length - 1; i >= 0; i--) {\n                 queries[i][0].each(function() {\n                     items.push(this);\n                 });\n             };\n\n             return $(items);\n\n         },\n\n         _removeCurrentsFromItems: function() {\n\n             var list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n             for (var i = 0; i < this.items.length; i++) {\n\n                 for (var j = 0; j < list.length; j++) {\n                     if (list[j] == this.items[i].item[0])\n                         this.items.splice(i, 1);\n                 };\n\n             };\n\n         },\n\n         _refreshItems: function(event) {\n\n             this.items = [];\n             this.containers = [this];\n             var items = this.items;\n             var self = this;\n             var queries = [\n                 [$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]\n             ];\n             var connectWith = this._connectWith();\n\n             if (connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n                 for (var i = connectWith.length - 1; i >= 0; i--) {\n                     var cur = $(connectWith[i]);\n                     for (var j = cur.length - 1; j >= 0; j--) {\n                         var inst = $.data(cur[j], this.widgetName);\n                         if (inst && inst != this && !inst.options.disabled) {\n                             queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n                             this.containers.push(inst);\n                         }\n                     };\n                 };\n             }\n\n             for (var i = queries.length - 1; i >= 0; i--) {\n                 var targetData = queries[i][1];\n                 var _queries = queries[i][0];\n\n                 for (var j = 0, queriesLength = _queries.length; j < queriesLength; j++) {\n                     var item = $(_queries[j]);\n\n                     item.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n                     items.push({\n                         item: item,\n                         instance: targetData,\n                         width: 0,\n                         height: 0,\n                         left: 0,\n                         top: 0\n                     });\n                 };\n             };\n\n         },\n\n         refreshPositions: function(fast) {\n\n             //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n             if (this.offsetParent && this.helper) {\n                 this.offset.parent = this._getParentOffset();\n             }\n\n             for (var i = this.items.length - 1; i >= 0; i--) {\n                 var item = this.items[i];\n\n                 //We ignore calculating positions of all connected containers when we're not over them\n                 if (item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n                     continue;\n\n                 var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n                 if (!fast) {\n                     item.width = t.outerWidth();\n                     item.height = t.outerHeight();\n                 }\n\n                 var p = t.offset();\n                 item.left = p.left;\n                 item.top = p.top;\n             };\n\n             if (this.options.custom && this.options.custom.refreshContainers) {\n                 this.options.custom.refreshContainers.call(this);\n             } else {\n                 for (var i = this.containers.length - 1; i >= 0; i--) {\n                     var p = this.containers[i].element.offset();\n                     this.containers[i].containerCache.left = p.left;\n                     this.containers[i].containerCache.top = p.top;\n                     this.containers[i].containerCache.width = this.containers[i].element.outerWidth();\n                     this.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n                 };\n             }\n\n             return this;\n         },\n\n         _createPlaceholder: function(that) {\n\n             var self = that || this,\n                 o = self.options;\n\n             if (!o.placeholder || o.placeholder.constructor == String) {\n                 var className = o.placeholder;\n                 o.placeholder = {\n                     element: function() {\n\n                         var el = $(document.createElement(self.currentItem[0].nodeName))\n                             .addClass(className || self.currentItem[0].className + \" ui-sortable-placeholder\")\n                             .removeClass(\"ui-sortable-helper\")[0];\n\n                         if (!className)\n                             el.style.visibility = \"hidden\";\n\n                         return el;\n                     },\n                     update: function(container, p) {\n\n                         // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n                         // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n                         if (className && !o.forcePlaceholderSize) return;\n\n                         //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n                         if (!p.height()) { p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop') || 0, 10) - parseInt(self.currentItem.css('paddingBottom') || 0, 10)); };\n                         if (!p.width()) { p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft') || 0, 10) - parseInt(self.currentItem.css('paddingRight') || 0, 10)); };\n                     }\n                 };\n             }\n\n             //Create the placeholder\n             self.placeholder = $(o.placeholder.element.call(self.element, self.currentItem));\n\n             //Append it after the actual current item\n             self.currentItem.after(self.placeholder);\n\n             //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n             o.placeholder.update(self, self.placeholder);\n\n         },\n\n         _contactContainers: function(event) {\n\n             // get innermost container that intersects with item \n             var innermostContainer = null,\n                 innermostIndex = null;\n\n\n             for (var i = this.containers.length - 1; i >= 0; i--) {\n\n                 // never consider a container that's located within the item itself \n                 if ($.ui.contains(this.currentItem[0], this.containers[i].element[0]))\n                     continue;\n\n                 if (this._intersectsWith(this.containers[i].containerCache)) {\n\n                     // if we've already found a container and it's more \"inner\" than this, then continue \n                     if (innermostContainer && $.ui.contains(this.containers[i].element[0], innermostContainer.element[0]))\n                         continue;\n\n                     innermostContainer = this.containers[i];\n                     innermostIndex = i;\n\n                 } else {\n                     // container doesn't intersect. trigger \"out\" event if necessary \n                     if (this.containers[i].containerCache.over) {\n                         this.containers[i]._trigger(\"out\", event, this._uiHash(this));\n                         this.containers[i].containerCache.over = 0;\n                     }\n                 }\n\n             }\n\n             // if no intersecting containers found, return \n             if (!innermostContainer) return;\n\n             // move the item into the container if it's not there already\n             if (this.containers.length === 1) {\n                 this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n                 this.containers[innermostIndex].containerCache.over = 1;\n             } else if (this.currentContainer != this.containers[innermostIndex]) {\n\n                 //When entering a new container, we will find the item with the least distance and append our item near it\n                 var dist = 10000;\n                 var itemWithLeastDistance = null;\n                 var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];\n                 for (var j = this.items.length - 1; j >= 0; j--) {\n                     if (!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n                     var cur = this.containers[innermostIndex].floating ? this.items[j].item.offset().left : this.items[j].item.offset().top;\n                     if (Math.abs(cur - base) < dist) {\n                         dist = Math.abs(cur - base);\n                         itemWithLeastDistance = this.items[j];\n                         this.direction = (cur - base > 0) ? 'down' : 'up';\n                     }\n                 }\n\n                 if (!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n                     return;\n\n                 this.currentContainer = this.containers[innermostIndex];\n                 itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n                 this._trigger(\"change\", event, this._uiHash());\n                 this.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n                 //Update the placeholder\n                 this.options.placeholder.update(this.currentContainer, this.placeholder);\n\n                 this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n                 this.containers[innermostIndex].containerCache.over = 1;\n             }\n\n\n         },\n\n         _createHelper: function(event) {\n\n             var o = this.options;\n             var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n             if (!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n                 $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n             if (helper[0] == this.currentItem[0])\n                 this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n             if (helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n             if (helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n             return helper;\n\n         },\n\n         _adjustOffsetFromHelper: function(obj) {\n             if (typeof obj == 'string') {\n                 obj = obj.split(' ');\n             }\n             if ($.isArray(obj)) {\n                 obj = { left: +obj[0], top: +obj[1] || 0 };\n             }\n             if ('left' in obj) {\n                 this.offset.click.left = obj.left + this.margins.left;\n             }\n             if ('right' in obj) {\n                 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n             }\n             if ('top' in obj) {\n                 this.offset.click.top = obj.top + this.margins.top;\n             }\n             if ('bottom' in obj) {\n                 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n             }\n         },\n\n         _getParentOffset: function() {\n\n\n             //Get the offsetParent and cache its position\n             this.offsetParent = this.helper.offsetParent();\n             var po = this.offsetParent.offset();\n\n             // This is a special case where we need to modify a offset calculated on start, since the following happened:\n             // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n             // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n             //    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n             if (this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {\n                 po.left += this.scrollParent.scrollLeft();\n                 po.top += this.scrollParent.scrollTop();\n             }\n\n             if ((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n                 ||\n                 (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix\n                 po = { top: 0, left: 0 };\n\n             return {\n                 top: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n                 left: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n             };\n\n         },\n\n         _getRelativeOffset: function() {\n\n             if (this.cssPosition == \"relative\") {\n                 var p = this.currentItem.position();\n                 return {\n                     top: p.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + this.scrollParent.scrollTop(),\n                     left: p.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + this.scrollParent.scrollLeft()\n                 };\n             } else {\n                 return { top: 0, left: 0 };\n             }\n\n         },\n\n         _cacheMargins: function() {\n             this.margins = {\n                 left: (parseInt(this.currentItem.css(\"marginLeft\"), 10) || 0),\n                 top: (parseInt(this.currentItem.css(\"marginTop\"), 10) || 0)\n             };\n         },\n\n         _cacheHelperProportions: function() {\n             this.helperProportions = {\n                 width: this.helper.outerWidth(),\n                 height: this.helper.outerHeight()\n             };\n         },\n\n         _setContainment: function() {\n\n             var o = this.options;\n             if (o.containment == 'parent') o.containment = this.helper[0].parentNode;\n             if (o.containment == 'document' || o.containment == 'window') this.containment = [\n                 0 - this.offset.relative.left - this.offset.parent.left,\n                 0 - this.offset.relative.top - this.offset.parent.top,\n                 $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n                 ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n             ];\n\n             if (!(/^(document|window|parent)$/).test(o.containment)) {\n                 var ce = $(o.containment)[0];\n                 var co = $(o.containment).offset();\n                 var over = ($(ce).css(\"overflow\") != 'hidden');\n\n                 this.containment = [\n                     co.left + (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingLeft\"), 10) || 0) - this.margins.left,\n                     co.top + (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingTop\"), 10) || 0) - this.margins.top,\n                     co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left,\n                     co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top\n                 ];\n             }\n\n         },\n\n         _convertPositionTo: function(d, pos) {\n\n             if (!pos) pos = this.position;\n             var mod = d == \"absolute\" ? 1 : -1;\n             var o = this.options,\n                 scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n                 scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n             return {\n                 top: (\n                     pos.top // The absolute mouse position\n                     +\n                     this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent\n                     +\n                     this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)\n                     -\n                     ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod)\n                 ),\n                 left: (\n                     pos.left // The absolute mouse position\n                     +\n                     this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent\n                     +\n                     this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)\n                     -\n                     ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod)\n                 )\n             };\n\n         },\n\n         _generatePosition: function(event) {\n\n             var o = this.options,\n                 scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n                 scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n             // This is another very weird special case that only happens for relative elements:\n             // 1. If the css position is relative\n             // 2. and the scroll parent is the document or similar to the offset parent\n             // we have to refresh the relative offset during the scroll so there are no jumps\n             if (this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n                 this.offset.relative = this._getRelativeOffset();\n             }\n\n             var pageX = event.pageX;\n             var pageY = event.pageY;\n\n             /*\n              * - Position constraining -\n              * Constrain the position to a mix of grid, containment.\n              */\n\n             if (this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n                 if (this.containment) {\n                     if (event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n                     if (event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n                     if (event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n                     if (event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n                 }\n\n                 if (o.grid) {\n                     var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n                     pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n                     var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n                     pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n                 }\n\n             }\n\n             return {\n                 top: (\n                     pageY // The absolute mouse position\n                     -\n                     this.offset.click.top // Click offset (relative to the element)\n                     -\n                     this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent\n                     -\n                     this.offset.parent.top // The offsetParent's offset without borders (offset + border)\n                     +\n                     ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())))\n                 ),\n                 left: (\n                     pageX // The absolute mouse position\n                     -\n                     this.offset.click.left // Click offset (relative to the element)\n                     -\n                     this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent\n                     -\n                     this.offset.parent.left // The offsetParent's offset without borders (offset + border)\n                     +\n                     ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()))\n                 )\n             };\n\n         },\n\n         _rearrange: function(event, i, a, hardRefresh) {\n\n             a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n             //Various things done here to improve the performance:\n             // 1. we create a setTimeout, that calls refreshPositions\n             // 2. on the instance, we have a counter variable, that get's higher after every append\n             // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n             // 4. this lets only the last addition to the timeout stack through\n             this.counter = this.counter ? ++this.counter : 1;\n             var self = this,\n                 counter = this.counter;\n\n             window.setTimeout(function() {\n                 if (counter == self.counter) self.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n             }, 0);\n\n         },\n\n         _clear: function(event, noPropagation) {\n\n             this.reverting = false;\n             // We delay all events that have to be triggered to after the point where the placeholder has been removed and\n             // everything else normalized again\n             var delayedTriggers = [],\n                 self = this;\n\n             // We first have to update the dom position of the actual currentItem\n             // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n             if (!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n             this._noFinalSort = null;\n\n             if (this.helper[0] == this.currentItem[0]) {\n                 for (var i in this._storedCSS) {\n                     if (this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n                 }\n                 this.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n             } else {\n                 this.currentItem.show();\n             }\n\n             if (this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n             if ((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n             if (!$.ui.contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element\n                 if (!noPropagation) delayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n                 for (var i = this.containers.length - 1; i >= 0; i--) {\n                     if ($.ui.contains(this.containers[i].element[0], this.currentItem[0]) && !noPropagation) {\n                         delayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n                         delayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n                     }\n                 };\n             };\n\n             //Post events to containers\n             for (var i = this.containers.length - 1; i >= 0; i--) {\n                 if (!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n                 if (this.containers[i].containerCache.over) {\n                     delayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n                     this.containers[i].containerCache.over = 0;\n                 }\n             }\n\n             //Do what was originally in plugins\n             if (this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n             if (this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n             if (this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n             this.dragging = false;\n             if (this.cancelHelperRemoval) {\n                 if (!noPropagation) {\n                     this._trigger(\"beforeStop\", event, this._uiHash());\n                     for (var i = 0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n                     this._trigger(\"stop\", event, this._uiHash());\n                 }\n                 return false;\n             }\n\n             if (!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n             //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n             this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n             if (this.helper[0] != this.currentItem[0]) this.helper.remove();\n             this.helper = null;\n\n             if (!noPropagation) {\n                 for (var i = 0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n                 this._trigger(\"stop\", event, this._uiHash());\n             }\n\n             this.fromOutside = false;\n             return true;\n\n         },\n\n         _trigger: function() {\n             if ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n                 this.cancel();\n             }\n         },\n\n         _uiHash: function(inst) {\n             var self = inst || this;\n             return {\n                 helper: self.helper,\n                 placeholder: self.placeholder || $([]),\n                 position: self.position,\n                 originalPosition: self.originalPosition,\n                 offset: self.positionAbs,\n                 item: self.currentItem,\n                 sender: inst ? inst.element : null\n             };\n         }\n\n     });\n\n     $.extend($.ui.sortable, {\n         version: \"1.8.21\"\n     });\n\n })(jQuery);\n /*!\n  * jQuery UI Autocomplete 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Autocomplete\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.widget.js\n  *\tjquery.ui.position.js\n  */\n (function($, undefined) {\n\n     // used to prevent race conditions with remote data sources\n     var requestIndex = 0;\n\n     $.widget(\"ui.autocomplete\", {\n         options: {\n             appendTo: \"body\",\n             autoFocus: false,\n             delay: 300,\n             minLength: 1,\n             position: {\n                 my: \"left top\",\n                 at: \"left bottom\",\n                 collision: \"none\"\n             },\n             source: null\n         },\n\n         pending: 0,\n\n         _create: function() {\n             var self = this,\n                 doc = this.element[0].ownerDocument,\n                 suppressKeyPress;\n             this.isMultiLine = this.element.is(\"textarea\");\n\n             this.element\n                 .addClass(\"ui-autocomplete-input\")\n                 .attr(\"autocomplete\", \"off\")\n                 // TODO verify these actually work as intended\n                 .attr({\n                     role: \"textbox\",\n                     \"aria-autocomplete\": \"list\",\n                     \"aria-haspopup\": \"true\"\n                 })\n                 .bind(\"keydown.autocomplete\", function(event) {\n                     if (self.options.disabled || self.element.propAttr(\"readOnly\")) {\n                         return;\n                     }\n\n                     suppressKeyPress = false;\n                     var keyCode = $.ui.keyCode;\n                     switch (event.keyCode) {\n                         case keyCode.PAGE_UP:\n                             self._move(\"previousPage\", event);\n                             break;\n                         case keyCode.PAGE_DOWN:\n                             self._move(\"nextPage\", event);\n                             break;\n                         case keyCode.UP:\n                             self._keyEvent(\"previous\", event);\n                             break;\n                         case keyCode.DOWN:\n                             self._keyEvent(\"next\", event);\n                             break;\n                         case keyCode.ENTER:\n                         case keyCode.NUMPAD_ENTER:\n                             // when menu is open and has focus\n                             if (self.menu.active) {\n                                 // #6055 - Opera still allows the keypress to occur\n                                 // which causes forms to submit\n                                 suppressKeyPress = true;\n                                 event.preventDefault();\n                             }\n                             //passthrough - ENTER and TAB both select the current element\n                         case keyCode.TAB:\n                             if (!self.menu.active) {\n                                 return;\n                             }\n                             self.menu.select(event);\n                             break;\n                         case keyCode.ESCAPE:\n                             self.element.val(self.term);\n                             self.close(event);\n                             break;\n                         default:\n                             // keypress is triggered before the input value is changed\n                             clearTimeout(self.searching);\n                             self.searching = setTimeout(function() {\n                                 // only search if the value has changed\n                                 if (self.term != self.element.val()) {\n                                     self.selectedItem = null;\n                                     self.search(null, event);\n                                 }\n                             }, self.options.delay);\n                             break;\n                     }\n                 })\n                 .bind(\"keypress.autocomplete\", function(event) {\n                     if (suppressKeyPress) {\n                         suppressKeyPress = false;\n                         event.preventDefault();\n                     }\n                 })\n                 .bind(\"focus.autocomplete\", function() {\n                     if (self.options.disabled) {\n                         return;\n                     }\n\n                     self.selectedItem = null;\n                     self.previous = self.element.val();\n                 })\n                 .bind(\"blur.autocomplete\", function(event) {\n                     if (self.options.disabled) {\n                         return;\n                     }\n\n                     clearTimeout(self.searching);\n                     // clicks on the menu (or a button to trigger a search) will cause a blur event\n                     self.closing = setTimeout(function() {\n                         self.close(event);\n                         self._change(event);\n                     }, 150);\n                 });\n             this._initSource();\n             this.menu = $(\"<ul></ul>\")\n                 .addClass(\"ui-autocomplete\")\n                 .appendTo($(this.options.appendTo || \"body\", doc)[0])\n                 // prevent the close-on-blur in case of a \"slow\" click on the menu (long mousedown)\n                 .mousedown(function(event) {\n                     // clicking on the scrollbar causes focus to shift to the body\n                     // but we can't detect a mouseup or a click immediately afterward\n                     // so we have to track the next mousedown and close the menu if\n                     // the user clicks somewhere outside of the autocomplete\n                     var menuElement = self.menu.element[0];\n                     if (!$(event.target).closest(\".ui-menu-item\").length) {\n                         setTimeout(function() {\n                             $(document).one('mousedown', function(event) {\n                                 if (event.target !== self.element[0] &&\n                                     event.target !== menuElement &&\n                                     !$.ui.contains(menuElement, event.target)) {\n                                     self.close();\n                                 }\n                             });\n                         }, 1);\n                     }\n\n                     // use another timeout to make sure the blur-event-handler on the input was already triggered\n                     setTimeout(function() {\n                         clearTimeout(self.closing);\n                     }, 13);\n                 })\n                 .menu({\n                     focus: function(event, ui) {\n                         var item = ui.item.data(\"item.autocomplete\");\n                         if (false !== self._trigger(\"focus\", event, { item: item })) {\n                             // use value to match what will end up in the input, if it was a key event\n                             if (/^key/.test(event.originalEvent.type)) {\n                                 self.element.val(item.value);\n                             }\n                         }\n                     },\n                     selected: function(event, ui) {\n                         var item = ui.item.data(\"item.autocomplete\"),\n                             previous = self.previous;\n\n                         // only trigger when focus was lost (click on menu)\n                         if (self.element[0] !== doc.activeElement) {\n                             self.element.focus();\n                             self.previous = previous;\n                             // #6109 - IE triggers two focus events and the second\n                             // is asynchronous, so we need to reset the previous\n                             // term synchronously and asynchronously :-(\n                             setTimeout(function() {\n                                 self.previous = previous;\n                                 self.selectedItem = item;\n                             }, 1);\n                         }\n\n                         if (false !== self._trigger(\"select\", event, { item: item })) {\n                             self.element.val(item.value);\n                         }\n                         // reset the term after the select event\n                         // this allows custom select handling to work properly\n                         self.term = self.element.val();\n\n                         self.close(event);\n                         self.selectedItem = item;\n                     },\n                     blur: function(event, ui) {\n                         // don't set the value of the text field if it's already correct\n                         // this prevents moving the cursor unnecessarily\n                         if (self.menu.element.is(\":visible\") &&\n                             (self.element.val() !== self.term)) {\n                             self.element.val(self.term);\n                         }\n                     }\n                 })\n                 .zIndex(this.element.zIndex() + 1)\n                 // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781\n                 .css({ top: 0, left: 0 })\n                 .hide()\n                 .data(\"menu\");\n             if ($.fn.bgiframe) {\n                 this.menu.element.bgiframe();\n             }\n             // turning off autocomplete prevents the browser from remembering the\n             // value when navigating through history, so we re-enable autocomplete\n             // if the page is unloaded before the widget is destroyed. #7790\n             self.beforeunloadHandler = function() {\n                 self.element.removeAttr(\"autocomplete\");\n             };\n             $(window).bind(\"beforeunload\", self.beforeunloadHandler);\n         },\n\n         destroy: function() {\n             this.element\n                 .removeClass(\"ui-autocomplete-input\")\n                 .removeAttr(\"autocomplete\")\n                 .removeAttr(\"role\")\n                 .removeAttr(\"aria-autocomplete\")\n                 .removeAttr(\"aria-haspopup\");\n             this.menu.element.remove();\n             $(window).unbind(\"beforeunload\", this.beforeunloadHandler);\n             $.Widget.prototype.destroy.call(this);\n         },\n\n         _setOption: function(key, value) {\n             $.Widget.prototype._setOption.apply(this, arguments);\n             if (key === \"source\") {\n                 this._initSource();\n             }\n             if (key === \"appendTo\") {\n                 this.menu.element.appendTo($(value || \"body\", this.element[0].ownerDocument)[0])\n             }\n             if (key === \"disabled\" && value && this.xhr) {\n                 this.xhr.abort();\n             }\n         },\n\n         _initSource: function() {\n             var self = this,\n                 array,\n                 url;\n             if ($.isArray(this.options.source)) {\n                 array = this.options.source;\n                 this.source = function(request, response) {\n                     response($.ui.autocomplete.filter(array, request.term));\n                 };\n             } else if (typeof this.options.source === \"string\") {\n                 url = this.options.source;\n                 this.source = function(request, response) {\n                     if (self.xhr) {\n                         self.xhr.abort();\n                     }\n                     self.xhr = $.ajax({\n                         url: url,\n                         data: request,\n                         dataType: \"json\",\n                         success: function(data, status) {\n                             response(data);\n                         },\n                         error: function() {\n                             response([]);\n                         }\n                     });\n                 };\n             } else {\n                 this.source = this.options.source;\n             }\n         },\n\n         search: function(value, event) {\n             value = value != null ? value : this.element.val();\n\n             // always save the actual value, not the one passed as an argument\n             this.term = this.element.val();\n\n             if (value.length < this.options.minLength) {\n                 return this.close(event);\n             }\n\n             clearTimeout(this.closing);\n             if (this._trigger(\"search\", event) === false) {\n                 return;\n             }\n\n             return this._search(value);\n         },\n\n         _search: function(value) {\n             this.pending++;\n             this.element.addClass(\"ui-autocomplete-loading\");\n\n             this.source({ term: value }, this._response());\n         },\n\n         _response: function() {\n             var that = this,\n                 index = ++requestIndex;\n\n             return function(content) {\n                 if (index === requestIndex) {\n                     that.__response(content);\n                 }\n\n                 that.pending--;\n                 if (!that.pending) {\n                     that.element.removeClass(\"ui-autocomplete-loading\");\n                 }\n             };\n         },\n\n         __response: function(content) {\n             if (!this.options.disabled && content && content.length) {\n                 content = this._normalize(content);\n                 this._suggest(content);\n                 this._trigger(\"open\");\n             } else {\n                 this.close();\n             }\n         },\n\n         close: function(event) {\n             clearTimeout(this.closing);\n             if (this.menu.element.is(\":visible\")) {\n                 this.menu.element.hide();\n                 this.menu.deactivate();\n                 this._trigger(\"close\", event);\n             }\n         },\n\n         _change: function(event) {\n             if (this.previous !== this.element.val()) {\n                 this._trigger(\"change\", event, { item: this.selectedItem });\n             }\n         },\n\n         _normalize: function(items) {\n             // assume all items have the right format when the first item is complete\n             if (items.length && items[0].label && items[0].value) {\n                 return items;\n             }\n             return $.map(items, function(item) {\n                 if (typeof item === \"string\") {\n                     return {\n                         label: item,\n                         value: item\n                     };\n                 }\n                 return $.extend({\n                     label: item.label || item.value,\n                     value: item.value || item.label\n                 }, item);\n             });\n         },\n\n         _suggest: function(items) {\n             var ul = this.menu.element\n                 .empty()\n                 .zIndex(this.element.zIndex() + 1);\n             this._renderMenu(ul, items);\n             // TODO refresh should check if the active item is still in the dom, removing the need for a manual deactivate\n             this.menu.deactivate();\n             this.menu.refresh();\n\n             // size and position menu\n             ul.show();\n             this._resizeMenu();\n             ul.position($.extend({ of: this.element\n             }, this.options.position));\n\n             if (this.options.autoFocus) {\n                 this.menu.next(new $.Event(\"mouseover\"));\n             }\n         },\n\n         _resizeMenu: function() {\n             var ul = this.menu.element;\n             ul.outerWidth(Math.max(\n                 // Firefox wraps long text (possibly a rounding bug)\n                 // so we add 1px to avoid the wrapping (#7513)\n                 ul.width(\"\").outerWidth() + 1,\n                 this.element.outerWidth()\n             ));\n         },\n\n         _renderMenu: function(ul, items) {\n             var self = this;\n             $.each(items, function(index, item) {\n                 self._renderItem(ul, item);\n             });\n         },\n\n         _renderItem: function(ul, item) {\n             return $(\"<li></li>\")\n                 .data(\"item.autocomplete\", item)\n                 .append($(\"<a></a>\").text(item.label))\n                 .appendTo(ul);\n         },\n\n         _move: function(direction, event) {\n             if (!this.menu.element.is(\":visible\")) {\n                 this.search(null, event);\n                 return;\n             }\n             if (this.menu.first() && /^previous/.test(direction) ||\n                 this.menu.last() && /^next/.test(direction)) {\n                 this.element.val(this.term);\n                 this.menu.deactivate();\n                 return;\n             }\n             this.menu[direction](event);\n         },\n\n         widget: function() {\n             return this.menu.element;\n         },\n         _keyEvent: function(keyEvent, event) {\n             if (!this.isMultiLine || this.menu.element.is(\":visible\")) {\n                 this._move(keyEvent, event);\n\n                 // prevents moving cursor to beginning/end of the text field in some browsers\n                 event.preventDefault();\n             }\n         }\n     });\n\n     $.extend($.ui.autocomplete, {\n         escapeRegex: function(value) {\n             return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n         },\n         filter: function(array, term) {\n             var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), \"i\");\n             return $.grep(array, function(value) {\n                 return matcher.test(value.label || value.value || value);\n             });\n         }\n     });\n\n }(jQuery));\n\n /*\n  * jQuery UI Menu (not officially released)\n  * \n  * This widget isn't yet finished and the API is subject to change. We plan to finish\n  * it for the next release. You're welcome to give it a try anyway and give us feedback,\n  * as long as you're okay with migrating your code later on. We can help with that, too.\n  *\n  * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Menu\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *  jquery.ui.widget.js\n  */\n (function($) {\n\n     $.widget(\"ui.menu\", {\n         _create: function() {\n             var self = this;\n             this.element\n                 .addClass(\"ui-menu ui-widget ui-widget-content ui-corner-all\")\n                 .attr({\n                     role: \"listbox\",\n                     \"aria-activedescendant\": \"ui-active-menuitem\"\n                 })\n                 .click(function(event) {\n                     if (!$(event.target).closest(\".ui-menu-item a\").length) {\n                         return;\n                     }\n                     // temporary\n                     event.preventDefault();\n                     self.select(event);\n                 });\n             this.refresh();\n         },\n\n         refresh: function() {\n             var self = this;\n\n             // don't refresh list items that are already adapted\n             var items = this.element.children(\"li:not(.ui-menu-item):has(a)\")\n                 .addClass(\"ui-menu-item\")\n                 .attr(\"role\", \"menuitem\");\n\n             items.children(\"a\")\n                 .addClass(\"ui-corner-all\")\n                 .attr(\"tabindex\", -1)\n                 // mouseenter doesn't work with event delegation\n                 .mouseenter(function(event) {\n                     self.activate(event, $(this).parent());\n                 })\n                 .mouseleave(function() {\n                     self.deactivate();\n                 });\n         },\n\n         activate: function(event, item) {\n             this.deactivate();\n             if (this.hasScroll()) {\n                 var offset = item.offset().top - this.element.offset().top,\n                     scroll = this.element.scrollTop(),\n                     elementHeight = this.element.height();\n                 if (offset < 0) {\n                     this.element.scrollTop(scroll + offset);\n                 } else if (offset >= elementHeight) {\n                     this.element.scrollTop(scroll + offset - elementHeight + item.height());\n                 }\n             }\n             this.active = item.eq(0)\n                 .children(\"a\")\n                 .addClass(\"ui-state-hover\")\n                 .attr(\"id\", \"ui-active-menuitem\")\n                 .end();\n             this._trigger(\"focus\", event, { item: item });\n         },\n\n         deactivate: function() {\n             if (!this.active) { return; }\n\n             this.active.children(\"a\")\n                 .removeClass(\"ui-state-hover\")\n                 .removeAttr(\"id\");\n             this._trigger(\"blur\");\n             this.active = null;\n         },\n\n         next: function(event) {\n             this.move(\"next\", \".ui-menu-item:first\", event);\n         },\n\n         previous: function(event) {\n             this.move(\"prev\", \".ui-menu-item:last\", event);\n         },\n\n         first: function() {\n             return this.active && !this.active.prevAll(\".ui-menu-item\").length;\n         },\n\n         last: function() {\n             return this.active && !this.active.nextAll(\".ui-menu-item\").length;\n         },\n\n         move: function(direction, edge, event) {\n             if (!this.active) {\n                 this.activate(event, this.element.children(edge));\n                 return;\n             }\n             var next = this.active[direction + \"All\"](\".ui-menu-item\").eq(0);\n             if (next.length) {\n                 this.activate(event, next);\n             } else {\n                 this.activate(event, this.element.children(edge));\n             }\n         },\n\n         // TODO merge with previousPage\n         nextPage: function(event) {\n             if (this.hasScroll()) {\n                 // TODO merge with no-scroll-else\n                 if (!this.active || this.last()) {\n                     this.activate(event, this.element.children(\".ui-menu-item:first\"));\n                     return;\n                 }\n                 var base = this.active.offset().top,\n                     height = this.element.height(),\n                     result = this.element.children(\".ui-menu-item\").filter(function() {\n                         var close = $(this).offset().top - base - height + $(this).height();\n                         // TODO improve approximation\n                         return close < 10 && close > -10;\n                     });\n\n                 // TODO try to catch this earlier when scrollTop indicates the last page anyway\n                 if (!result.length) {\n                     result = this.element.children(\".ui-menu-item:last\");\n                 }\n                 this.activate(event, result);\n             } else {\n                 this.activate(event, this.element.children(\".ui-menu-item\")\n                     .filter(!this.active || this.last() ? \":first\" : \":last\"));\n             }\n         },\n\n         // TODO merge with nextPage\n         previousPage: function(event) {\n             if (this.hasScroll()) {\n                 // TODO merge with no-scroll-else\n                 if (!this.active || this.first()) {\n                     this.activate(event, this.element.children(\".ui-menu-item:last\"));\n                     return;\n                 }\n\n                 var base = this.active.offset().top,\n                     height = this.element.height(),\n                     result = this.element.children(\".ui-menu-item\").filter(function() {\n                         var close = $(this).offset().top - base + height - $(this).height();\n                         // TODO improve approximation\n                         return close < 10 && close > -10;\n                     });\n\n                 // TODO try to catch this earlier when scrollTop indicates the last page anyway\n                 if (!result.length) {\n                     result = this.element.children(\".ui-menu-item:first\");\n                 }\n                 this.activate(event, result);\n             } else {\n                 this.activate(event, this.element.children(\".ui-menu-item\")\n                     .filter(!this.active || this.first() ? \":last\" : \":first\"));\n             }\n         },\n\n         hasScroll: function() {\n             return this.element.height() < this.element[$.fn.prop ? \"prop\" : \"attr\"](\"scrollHeight\");\n         },\n\n         select: function(event) {\n             this._trigger(\"selected\", event, { item: this.active });\n         }\n     });\n\n }(jQuery));\n /*!\n  * jQuery UI Button 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Button\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     var lastActive, startXPos, startYPos, clickDragged,\n         baseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n         stateClasses = \"ui-state-hover ui-state-active \",\n         typeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n         formResetHandler = function() {\n             var buttons = $(this).find(\":ui-button\");\n             setTimeout(function() {\n                 buttons.button(\"refresh\");\n             }, 1);\n         },\n         radioGroup = function(radio) {\n             var name = radio.name,\n                 form = radio.form,\n                 radios = $([]);\n             if (name) {\n                 if (form) {\n                     radios = $(form).find(\"[name='\" + name + \"']\");\n                 } else {\n                     radios = $(\"[name='\" + name + \"']\", radio.ownerDocument)\n                         .filter(function() {\n                             return !this.form;\n                         });\n                 }\n             }\n             return radios;\n         };\n\n     $.widget(\"ui.button\", {\n         options: {\n             disabled: null,\n             text: true,\n             label: null,\n             icons: {\n                 primary: null,\n                 secondary: null\n             }\n         },\n         _create: function() {\n             this.element.closest(\"form\")\n                 .unbind(\"reset.button\")\n                 .bind(\"reset.button\", formResetHandler);\n\n             if (typeof this.options.disabled !== \"boolean\") {\n                 this.options.disabled = !!this.element.propAttr(\"disabled\");\n             } else {\n                 this.element.propAttr(\"disabled\", this.options.disabled);\n             }\n\n             this._determineButtonType();\n             this.hasTitle = !!this.buttonElement.attr(\"title\");\n\n             var self = this,\n                 options = this.options,\n                 toggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n                 hoverClass = \"ui-state-hover\" + (!toggleButton ? \" ui-state-active\" : \"\"),\n                 focusClass = \"ui-state-focus\";\n\n             if (options.label === null) {\n                 options.label = this.buttonElement.html();\n             }\n\n             this.buttonElement\n                 .addClass(baseClasses)\n                 .attr(\"role\", \"button\")\n                 .bind(\"mouseenter.button\", function() {\n                     if (options.disabled) {\n                         return;\n                     }\n                     $(this).addClass(\"ui-state-hover\");\n                     if (this === lastActive) {\n                         $(this).addClass(\"ui-state-active\");\n                     }\n                 })\n                 .bind(\"mouseleave.button\", function() {\n                     if (options.disabled) {\n                         return;\n                     }\n                     $(this).removeClass(hoverClass);\n                 })\n                 .bind(\"click.button\", function(event) {\n                     if (options.disabled) {\n                         event.preventDefault();\n                         event.stopImmediatePropagation();\n                     }\n                 });\n\n             this.element\n                 .bind(\"focus.button\", function() {\n                     // no need to check disabled, focus won't be triggered anyway\n                     self.buttonElement.addClass(focusClass);\n                 })\n                 .bind(\"blur.button\", function() {\n                     self.buttonElement.removeClass(focusClass);\n                 });\n\n             if (toggleButton) {\n                 this.element.bind(\"change.button\", function() {\n                     if (clickDragged) {\n                         return;\n                     }\n                     self.refresh();\n                 });\n                 // if mouse moves between mousedown and mouseup (drag) set clickDragged flag\n                 // prevents issue where button state changes but checkbox/radio checked state\n                 // does not in Firefox (see ticket #6970)\n                 this.buttonElement\n                     .bind(\"mousedown.button\", function(event) {\n                         if (options.disabled) {\n                             return;\n                         }\n                         clickDragged = false;\n                         startXPos = event.pageX;\n                         startYPos = event.pageY;\n                     })\n                     .bind(\"mouseup.button\", function(event) {\n                         if (options.disabled) {\n                             return;\n                         }\n                         if (startXPos !== event.pageX || startYPos !== event.pageY) {\n                             clickDragged = true;\n                         }\n                     });\n             }\n\n             if (this.type === \"checkbox\") {\n                 this.buttonElement.bind(\"click.button\", function() {\n                     if (options.disabled || clickDragged) {\n                         return false;\n                     }\n                     $(this).toggleClass(\"ui-state-active\");\n                     self.buttonElement.attr(\"aria-pressed\", self.element[0].checked);\n                 });\n             } else if (this.type === \"radio\") {\n                 this.buttonElement.bind(\"click.button\", function() {\n                     if (options.disabled || clickDragged) {\n                         return false;\n                     }\n                     $(this).addClass(\"ui-state-active\");\n                     self.buttonElement.attr(\"aria-pressed\", \"true\");\n\n                     var radio = self.element[0];\n                     radioGroup(radio)\n                         .not(radio)\n                         .map(function() {\n                             return $(this).button(\"widget\")[0];\n                         })\n                         .removeClass(\"ui-state-active\")\n                         .attr(\"aria-pressed\", \"false\");\n                 });\n             } else {\n                 this.buttonElement\n                     .bind(\"mousedown.button\", function() {\n                         if (options.disabled) {\n                             return false;\n                         }\n                         $(this).addClass(\"ui-state-active\");\n                         lastActive = this;\n                         $(document).one(\"mouseup\", function() {\n                             lastActive = null;\n                         });\n                     })\n                     .bind(\"mouseup.button\", function() {\n                         if (options.disabled) {\n                             return false;\n                         }\n                         $(this).removeClass(\"ui-state-active\");\n                     })\n                     .bind(\"keydown.button\", function(event) {\n                         if (options.disabled) {\n                             return false;\n                         }\n                         if (event.keyCode == $.ui.keyCode.SPACE || event.keyCode == $.ui.keyCode.ENTER) {\n                             $(this).addClass(\"ui-state-active\");\n                         }\n                     })\n                     .bind(\"keyup.button\", function() {\n                         $(this).removeClass(\"ui-state-active\");\n                     });\n\n                 if (this.buttonElement.is(\"a\")) {\n                     this.buttonElement.keyup(function(event) {\n                         if (event.keyCode === $.ui.keyCode.SPACE) {\n                             // TODO pass through original event correctly (just as 2nd argument doesn't work)\n                             $(this).click();\n                         }\n                     });\n                 }\n             }\n\n             // TODO: pull out $.Widget's handling for the disabled option into\n             // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can\n             // be overridden by individual plugins\n             this._setOption(\"disabled\", options.disabled);\n             this._resetButton();\n         },\n\n         _determineButtonType: function() {\n\n             if (this.element.is(\":checkbox\")) {\n                 this.type = \"checkbox\";\n             } else if (this.element.is(\":radio\")) {\n                 this.type = \"radio\";\n             } else if (this.element.is(\"input\")) {\n                 this.type = \"input\";\n             } else {\n                 this.type = \"button\";\n             }\n\n             if (this.type === \"checkbox\" || this.type === \"radio\") {\n                 // we don't search against the document in case the element\n                 // is disconnected from the DOM\n                 var ancestor = this.element.parents().filter(\":last\"),\n                     labelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n                 this.buttonElement = ancestor.find(labelSelector);\n                 if (!this.buttonElement.length) {\n                     ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n                     this.buttonElement = ancestor.filter(labelSelector);\n                     if (!this.buttonElement.length) {\n                         this.buttonElement = ancestor.find(labelSelector);\n                     }\n                 }\n                 this.element.addClass(\"ui-helper-hidden-accessible\");\n\n                 var checked = this.element.is(\":checked\");\n                 if (checked) {\n                     this.buttonElement.addClass(\"ui-state-active\");\n                 }\n                 this.buttonElement.attr(\"aria-pressed\", checked);\n             } else {\n                 this.buttonElement = this.element;\n             }\n         },\n\n         widget: function() {\n             return this.buttonElement;\n         },\n\n         destroy: function() {\n             this.element\n                 .removeClass(\"ui-helper-hidden-accessible\");\n             this.buttonElement\n                 .removeClass(baseClasses + \" \" + stateClasses + \" \" + typeClasses)\n                 .removeAttr(\"role\")\n                 .removeAttr(\"aria-pressed\")\n                 .html(this.buttonElement.find(\".ui-button-text\").html());\n\n             if (!this.hasTitle) {\n                 this.buttonElement.removeAttr(\"title\");\n             }\n\n             $.Widget.prototype.destroy.call(this);\n         },\n\n         _setOption: function(key, value) {\n             $.Widget.prototype._setOption.apply(this, arguments);\n             if (key === \"disabled\") {\n                 if (value) {\n                     this.element.propAttr(\"disabled\", true);\n                 } else {\n                     this.element.propAttr(\"disabled\", false);\n                 }\n                 return;\n             }\n             this._resetButton();\n         },\n\n         refresh: function() {\n             var isDisabled = this.element.is(\":disabled\");\n             if (isDisabled !== this.options.disabled) {\n                 this._setOption(\"disabled\", isDisabled);\n             }\n             if (this.type === \"radio\") {\n                 radioGroup(this.element[0]).each(function() {\n                     if ($(this).is(\":checked\")) {\n                         $(this).button(\"widget\")\n                             .addClass(\"ui-state-active\")\n                             .attr(\"aria-pressed\", \"true\");\n                     } else {\n                         $(this).button(\"widget\")\n                             .removeClass(\"ui-state-active\")\n                             .attr(\"aria-pressed\", \"false\");\n                     }\n                 });\n             } else if (this.type === \"checkbox\") {\n                 if (this.element.is(\":checked\")) {\n                     this.buttonElement\n                         .addClass(\"ui-state-active\")\n                         .attr(\"aria-pressed\", \"true\");\n                 } else {\n                     this.buttonElement\n                         .removeClass(\"ui-state-active\")\n                         .attr(\"aria-pressed\", \"false\");\n                 }\n             }\n         },\n\n         _resetButton: function() {\n             if (this.type === \"input\") {\n                 if (this.options.label) {\n                     this.element.val(this.options.label);\n                 }\n                 return;\n             }\n             var buttonElement = this.buttonElement.removeClass(typeClasses),\n                 buttonText = $(\"<span></span>\", this.element[0].ownerDocument)\n                 .addClass(\"ui-button-text\")\n                 .html(this.options.label)\n                 .appendTo(buttonElement.empty())\n                 .text(),\n                 icons = this.options.icons,\n                 multipleIcons = icons.primary && icons.secondary,\n                 buttonClasses = [];\n\n             if (icons.primary || icons.secondary) {\n                 if (this.options.text) {\n                     buttonClasses.push(\"ui-button-text-icon\" + (multipleIcons ? \"s\" : (icons.primary ? \"-primary\" : \"-secondary\")));\n                 }\n\n                 if (icons.primary) {\n                     buttonElement.prepend(\"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\");\n                 }\n\n                 if (icons.secondary) {\n                     buttonElement.append(\"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\");\n                 }\n\n                 if (!this.options.text) {\n                     buttonClasses.push(multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\");\n\n                     if (!this.hasTitle) {\n                         buttonElement.attr(\"title\", buttonText);\n                     }\n                 }\n             } else {\n                 buttonClasses.push(\"ui-button-text-only\");\n             }\n             buttonElement.addClass(buttonClasses.join(\" \"));\n         }\n     });\n\n     $.widget(\"ui.buttonset\", {\n         options: {\n             items: \":button, :submit, :reset, :checkbox, :radio, a, :data(button)\"\n         },\n\n         _create: function() {\n             this.element.addClass(\"ui-buttonset\");\n         },\n\n         _init: function() {\n             this.refresh();\n         },\n\n         _setOption: function(key, value) {\n             if (key === \"disabled\") {\n                 this.buttons.button(\"option\", key, value);\n             }\n\n             $.Widget.prototype._setOption.apply(this, arguments);\n         },\n\n         refresh: function() {\n             var rtl = this.element.css(\"direction\") === \"rtl\";\n\n             this.buttons = this.element.find(this.options.items)\n                 .filter(\":ui-button\")\n                 .button(\"refresh\")\n                 .end()\n                 .not(\":ui-button\")\n                 .button()\n                 .end()\n                 .map(function() {\n                     return $(this).button(\"widget\")[0];\n                 })\n                 .removeClass(\"ui-corner-all ui-corner-left ui-corner-right\")\n                 .filter(\":first\")\n                 .addClass(rtl ? \"ui-corner-right\" : \"ui-corner-left\")\n                 .end()\n                 .filter(\":last\")\n                 .addClass(rtl ? \"ui-corner-left\" : \"ui-corner-right\")\n                 .end()\n                 .end();\n         },\n\n         destroy: function() {\n             this.element.removeClass(\"ui-buttonset\");\n             this.buttons\n                 .map(function() {\n                     return $(this).button(\"widget\")[0];\n                 })\n                 .removeClass(\"ui-corner-left ui-corner-right\")\n                 .end()\n                 .button(\"destroy\");\n\n             $.Widget.prototype.destroy.call(this);\n         }\n     });\n\n }(jQuery));\n /*!\n  * jQuery UI Slider 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Slider\n  *\n  * Depends:\n  *\tjquery.ui.core.js\n  *\tjquery.ui.mouse.js\n  *\tjquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     // number of pages in a slider\n     // (how many times can you page up/down to go through the whole range)\n     var numPages = 5;\n\n     $.widget(\"ui.slider\", $.ui.mouse, {\n\n         widgetEventPrefix: \"slide\",\n\n         options: {\n             animate: false,\n             distance: 0,\n             max: 100,\n             min: 0,\n             orientation: \"horizontal\",\n             range: false,\n             step: 1,\n             value: 0,\n             values: null\n         },\n\n         _create: function() {\n             var self = this,\n                 o = this.options,\n                 existingHandles = this.element.find(\".ui-slider-handle\").addClass(\"ui-state-default ui-corner-all\"),\n                 handle = \"<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>\",\n                 handleCount = (o.values && o.values.length) || 1,\n                 handles = [];\n\n             this._keySliding = false;\n             this._mouseSliding = false;\n             this._animateOff = true;\n             this._handleIndex = null;\n             this._detectOrientation();\n             this._mouseInit();\n\n             this.element\n                 .addClass(\"ui-slider\" +\n                     \" ui-slider-\" + this.orientation +\n                     \" ui-widget\" +\n                     \" ui-widget-content\" +\n                     \" ui-corner-all\" +\n                     (o.disabled ? \" ui-slider-disabled ui-disabled\" : \"\"));\n\n             this.range = $([]);\n\n             if (o.range) {\n                 if (o.range === true) {\n                     if (!o.values) {\n                         o.values = [this._valueMin(), this._valueMin()];\n                     }\n                     if (o.values.length && o.values.length !== 2) {\n                         o.values = [o.values[0], o.values[0]];\n                     }\n                 }\n\n                 this.range = $(\"<div></div>\")\n                     .appendTo(this.element)\n                     .addClass(\"ui-slider-range\" +\n                         // note: this isn't the most fittingly semantic framework class for this element,\n                         // but worked best visually with a variety of themes\n                         \" ui-widget-header\" +\n                         ((o.range === \"min\" || o.range === \"max\") ? \" ui-slider-range-\" + o.range : \"\"));\n             }\n\n             for (var i = existingHandles.length; i < handleCount; i += 1) {\n                 handles.push(handle);\n             }\n\n             this.handles = existingHandles.add($(handles.join(\"\")).appendTo(self.element));\n\n             this.handle = this.handles.eq(0);\n\n             this.handles.add(this.range).filter(\"a\")\n                 .click(function(event) {\n                     event.preventDefault();\n                 })\n                 .hover(function() {\n                     if (!o.disabled) {\n                         $(this).addClass(\"ui-state-hover\");\n                     }\n                 }, function() {\n                     $(this).removeClass(\"ui-state-hover\");\n                 })\n                 .focus(function() {\n                     if (!o.disabled) {\n                         $(\".ui-slider .ui-state-focus\").removeClass(\"ui-state-focus\");\n                         $(this).addClass(\"ui-state-focus\");\n                     } else {\n                         $(this).blur();\n                     }\n                 })\n                 .blur(function() {\n                     $(this).removeClass(\"ui-state-focus\");\n                 });\n\n             this.handles.each(function(i) {\n                 $(this).data(\"index.ui-slider-handle\", i);\n             });\n\n             this.handles\n                 .keydown(function(event) {\n                     var index = $(this).data(\"index.ui-slider-handle\"),\n                         allowed,\n                         curVal,\n                         newVal,\n                         step;\n\n                     if (self.options.disabled) {\n                         return;\n                     }\n\n                     switch (event.keyCode) {\n                         case $.ui.keyCode.HOME:\n                         case $.ui.keyCode.END:\n                         case $.ui.keyCode.PAGE_UP:\n                         case $.ui.keyCode.PAGE_DOWN:\n                         case $.ui.keyCode.UP:\n                         case $.ui.keyCode.RIGHT:\n                         case $.ui.keyCode.DOWN:\n                         case $.ui.keyCode.LEFT:\n                             event.preventDefault();\n                             if (!self._keySliding) {\n                                 self._keySliding = true;\n                                 $(this).addClass(\"ui-state-active\");\n                                 allowed = self._start(event, index);\n                                 if (allowed === false) {\n                                     return;\n                                 }\n                             }\n                             break;\n                     }\n\n                     step = self.options.step;\n                     if (self.options.values && self.options.values.length) {\n                         curVal = newVal = self.values(index);\n                     } else {\n                         curVal = newVal = self.value();\n                     }\n\n                     switch (event.keyCode) {\n                         case $.ui.keyCode.HOME:\n                             newVal = self._valueMin();\n                             break;\n                         case $.ui.keyCode.END:\n                             newVal = self._valueMax();\n                             break;\n                         case $.ui.keyCode.PAGE_UP:\n                             newVal = self._trimAlignValue(curVal + ((self._valueMax() - self._valueMin()) / numPages));\n                             break;\n                         case $.ui.keyCode.PAGE_DOWN:\n                             newVal = self._trimAlignValue(curVal - ((self._valueMax() - self._valueMin()) / numPages));\n                             break;\n                         case $.ui.keyCode.UP:\n                         case $.ui.keyCode.RIGHT:\n                             if (curVal === self._valueMax()) {\n                                 return;\n                             }\n                             newVal = self._trimAlignValue(curVal + step);\n                             break;\n                         case $.ui.keyCode.DOWN:\n                         case $.ui.keyCode.LEFT:\n                             if (curVal === self._valueMin()) {\n                                 return;\n                             }\n                             newVal = self._trimAlignValue(curVal - step);\n                             break;\n                     }\n\n                     self._slide(event, index, newVal);\n                 })\n                 .keyup(function(event) {\n                     var index = $(this).data(\"index.ui-slider-handle\");\n\n                     if (self._keySliding) {\n                         self._keySliding = false;\n                         self._stop(event, index);\n                         self._change(event, index);\n                         $(this).removeClass(\"ui-state-active\");\n                     }\n\n                 });\n\n             this._refreshValue();\n\n             this._animateOff = false;\n         },\n\n         destroy: function() {\n             this.handles.remove();\n             this.range.remove();\n\n             this.element\n                 .removeClass(\"ui-slider\" +\n                     \" ui-slider-horizontal\" +\n                     \" ui-slider-vertical\" +\n                     \" ui-slider-disabled\" +\n                     \" ui-widget\" +\n                     \" ui-widget-content\" +\n                     \" ui-corner-all\")\n                 .removeData(\"slider\")\n                 .unbind(\".slider\");\n\n             this._mouseDestroy();\n\n             return this;\n         },\n\n         _mouseCapture: function(event) {\n             var o = this.options,\n                 position,\n                 normValue,\n                 distance,\n                 closestHandle,\n                 self,\n                 index,\n                 allowed,\n                 offset,\n                 mouseOverHandle;\n\n             if (o.disabled) {\n                 return false;\n             }\n\n             this.elementSize = {\n                 width: this.element.outerWidth(),\n                 height: this.element.outerHeight()\n             };\n             this.elementOffset = this.element.offset();\n\n             position = { x: event.pageX, y: event.pageY };\n             normValue = this._normValueFromMouse(position);\n             distance = this._valueMax() - this._valueMin() + 1;\n             self = this;\n             this.handles.each(function(i) {\n                 var thisDistance = Math.abs(normValue - self.values(i));\n                 if (distance > thisDistance) {\n                     distance = thisDistance;\n                     closestHandle = $(this);\n                     index = i;\n                 }\n             });\n\n             // workaround for bug #3736 (if both handles of a range are at 0,\n             // the first is always used as the one with least distance,\n             // and moving it is obviously prevented by preventing negative ranges)\n             if (o.range === true && this.values(1) === o.min) {\n                 index += 1;\n                 closestHandle = $(this.handles[index]);\n             }\n\n             allowed = this._start(event, index);\n             if (allowed === false) {\n                 return false;\n             }\n             this._mouseSliding = true;\n\n             self._handleIndex = index;\n\n             closestHandle\n                 .addClass(\"ui-state-active\")\n                 .focus();\n\n             offset = closestHandle.offset();\n             mouseOverHandle = !$(event.target).parents().andSelf().is(\".ui-slider-handle\");\n             this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n                 left: event.pageX - offset.left - (closestHandle.width() / 2),\n                 top: event.pageY - offset.top -\n                     (closestHandle.height() / 2) -\n                     (parseInt(closestHandle.css(\"borderTopWidth\"), 10) || 0) -\n                     (parseInt(closestHandle.css(\"borderBottomWidth\"), 10) || 0) +\n                     (parseInt(closestHandle.css(\"marginTop\"), 10) || 0)\n             };\n\n             if (!this.handles.hasClass(\"ui-state-hover\")) {\n                 this._slide(event, index, normValue);\n             }\n             this._animateOff = true;\n             return true;\n         },\n\n         _mouseStart: function(event) {\n             return true;\n         },\n\n         _mouseDrag: function(event) {\n             var position = { x: event.pageX, y: event.pageY },\n                 normValue = this._normValueFromMouse(position);\n\n             this._slide(event, this._handleIndex, normValue);\n\n             return false;\n         },\n\n         _mouseStop: function(event) {\n             this.handles.removeClass(\"ui-state-active\");\n             this._mouseSliding = false;\n\n             this._stop(event, this._handleIndex);\n             this._change(event, this._handleIndex);\n\n             this._handleIndex = null;\n             this._clickOffset = null;\n             this._animateOff = false;\n\n             return false;\n         },\n\n         _detectOrientation: function() {\n             this.orientation = (this.options.orientation === \"vertical\") ? \"vertical\" : \"horizontal\";\n         },\n\n         _normValueFromMouse: function(position) {\n             var pixelTotal,\n                 pixelMouse,\n                 percentMouse,\n                 valueTotal,\n                 valueMouse;\n\n             if (this.orientation === \"horizontal\") {\n                 pixelTotal = this.elementSize.width;\n                 pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);\n             } else {\n                 pixelTotal = this.elementSize.height;\n                 pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);\n             }\n\n             percentMouse = (pixelMouse / pixelTotal);\n             if (percentMouse > 1) {\n                 percentMouse = 1;\n             }\n             if (percentMouse < 0) {\n                 percentMouse = 0;\n             }\n             if (this.orientation === \"vertical\") {\n                 percentMouse = 1 - percentMouse;\n             }\n\n             valueTotal = this._valueMax() - this._valueMin();\n             valueMouse = this._valueMin() + percentMouse * valueTotal;\n\n             return this._trimAlignValue(valueMouse);\n         },\n\n         _start: function(event, index) {\n             var uiHash = {\n                 handle: this.handles[index],\n                 value: this.value()\n             };\n             if (this.options.values && this.options.values.length) {\n                 uiHash.value = this.values(index);\n                 uiHash.values = this.values();\n             }\n             return this._trigger(\"start\", event, uiHash);\n         },\n\n         _slide: function(event, index, newVal) {\n             var otherVal,\n                 newValues,\n                 allowed;\n\n             if (this.options.values && this.options.values.length) {\n                 otherVal = this.values(index ? 0 : 1);\n\n                 if ((this.options.values.length === 2 && this.options.range === true) &&\n                     ((index === 0 && newVal > otherVal) || (index === 1 && newVal < otherVal))\n                 ) {\n                     newVal = otherVal;\n                 }\n\n                 if (newVal !== this.values(index)) {\n                     newValues = this.values();\n                     newValues[index] = newVal;\n                     // A slide can be canceled by returning false from the slide callback\n                     allowed = this._trigger(\"slide\", event, {\n                         handle: this.handles[index],\n                         value: newVal,\n                         values: newValues\n                     });\n                     otherVal = this.values(index ? 0 : 1);\n                     if (allowed !== false) {\n                         this.values(index, newVal, true);\n                     }\n                 }\n             } else {\n                 if (newVal !== this.value()) {\n                     // A slide can be canceled by returning false from the slide callback\n                     allowed = this._trigger(\"slide\", event, {\n                         handle: this.handles[index],\n                         value: newVal\n                     });\n                     if (allowed !== false) {\n                         this.value(newVal);\n                     }\n                 }\n             }\n         },\n\n         _stop: function(event, index) {\n             var uiHash = {\n                 handle: this.handles[index],\n                 value: this.value()\n             };\n             if (this.options.values && this.options.values.length) {\n                 uiHash.value = this.values(index);\n                 uiHash.values = this.values();\n             }\n\n             this._trigger(\"stop\", event, uiHash);\n         },\n\n         _change: function(event, index) {\n             if (!this._keySliding && !this._mouseSliding) {\n                 var uiHash = {\n                     handle: this.handles[index],\n                     value: this.value()\n                 };\n                 if (this.options.values && this.options.values.length) {\n                     uiHash.value = this.values(index);\n                     uiHash.values = this.values();\n                 }\n\n                 this._trigger(\"change\", event, uiHash);\n             }\n         },\n\n         value: function(newValue) {\n             if (arguments.length) {\n                 this.options.value = this._trimAlignValue(newValue);\n                 this._refreshValue();\n                 this._change(null, 0);\n                 return;\n             }\n\n             return this._value();\n         },\n\n         values: function(index, newValue) {\n             var vals,\n                 newValues,\n                 i;\n\n             if (arguments.length > 1) {\n                 this.options.values[index] = this._trimAlignValue(newValue);\n                 this._refreshValue();\n                 this._change(null, index);\n                 return;\n             }\n\n             if (arguments.length) {\n                 if ($.isArray(arguments[0])) {\n                     vals = this.options.values;\n                     newValues = arguments[0];\n                     for (i = 0; i < vals.length; i += 1) {\n                         vals[i] = this._trimAlignValue(newValues[i]);\n                         this._change(null, i);\n                     }\n                     this._refreshValue();\n                 } else {\n                     if (this.options.values && this.options.values.length) {\n                         return this._values(index);\n                     } else {\n                         return this.value();\n                     }\n                 }\n             } else {\n                 return this._values();\n             }\n         },\n\n         _setOption: function(key, value) {\n             var i,\n                 valsLength = 0;\n\n             if ($.isArray(this.options.values)) {\n                 valsLength = this.options.values.length;\n             }\n\n             $.Widget.prototype._setOption.apply(this, arguments);\n\n             switch (key) {\n                 case \"disabled\":\n                     if (value) {\n                         this.handles.filter(\".ui-state-focus\").blur();\n                         this.handles.removeClass(\"ui-state-hover\");\n                         this.handles.propAttr(\"disabled\", true);\n                         this.element.addClass(\"ui-disabled\");\n                     } else {\n                         this.handles.propAttr(\"disabled\", false);\n                         this.element.removeClass(\"ui-disabled\");\n                     }\n                     break;\n                 case \"orientation\":\n                     this._detectOrientation();\n                     this.element\n                         .removeClass(\"ui-slider-horizontal ui-slider-vertical\")\n                         .addClass(\"ui-slider-\" + this.orientation);\n                     this._refreshValue();\n                     break;\n                 case \"value\":\n                     this._animateOff = true;\n                     this._refreshValue();\n                     this._change(null, 0);\n                     this._animateOff = false;\n                     break;\n                 case \"values\":\n                     this._animateOff = true;\n                     this._refreshValue();\n                     for (i = 0; i < valsLength; i += 1) {\n                         this._change(null, i);\n                     }\n                     this._animateOff = false;\n                     break;\n             }\n         },\n\n         //internal value getter\n         // _value() returns value trimmed by min and max, aligned by step\n         _value: function() {\n             var val = this.options.value;\n             val = this._trimAlignValue(val);\n\n             return val;\n         },\n\n         //internal values getter\n         // _values() returns array of values trimmed by min and max, aligned by step\n         // _values( index ) returns single value trimmed by min and max, aligned by step\n         _values: function(index) {\n             var val,\n                 vals,\n                 i;\n\n             if (arguments.length) {\n                 val = this.options.values[index];\n                 val = this._trimAlignValue(val);\n\n                 return val;\n             } else {\n                 // .slice() creates a copy of the array\n                 // this copy gets trimmed by min and max and then returned\n                 vals = this.options.values.slice();\n                 for (i = 0; i < vals.length; i += 1) {\n                     vals[i] = this._trimAlignValue(vals[i]);\n                 }\n\n                 return vals;\n             }\n         },\n\n         // returns the step-aligned value that val is closest to, between (inclusive) min and max\n         _trimAlignValue: function(val) {\n             if (val <= this._valueMin()) {\n                 return this._valueMin();\n             }\n             if (val >= this._valueMax()) {\n                 return this._valueMax();\n             }\n             var step = (this.options.step > 0) ? this.options.step : 1,\n                 valModStep = (val - this._valueMin()) % step,\n                 alignValue = val - valModStep;\n\n             if (Math.abs(valModStep) * 2 >= step) {\n                 alignValue += (valModStep > 0) ? step : (-step);\n             }\n\n             // Since JavaScript has problems with large floats, round\n             // the final value to 5 digits after the decimal point (see #4124)\n             return parseFloat(alignValue.toFixed(5));\n         },\n\n         _valueMin: function() {\n             return this.options.min;\n         },\n\n         _valueMax: function() {\n             return this.options.max;\n         },\n\n         _refreshValue: function() {\n             var oRange = this.options.range,\n                 o = this.options,\n                 self = this,\n                 animate = (!this._animateOff) ? o.animate : false,\n                 valPercent,\n                 _set = {},\n                 lastValPercent,\n                 value,\n                 valueMin,\n                 valueMax;\n\n             if (this.options.values && this.options.values.length) {\n                 this.handles.each(function(i, j) {\n                     valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100;\n                     _set[self.orientation === \"horizontal\" ? \"left\" : \"bottom\"] = valPercent + \"%\";\n                     $(this).stop(1, 1)[animate ? \"animate\" : \"css\"](_set, o.animate);\n                     if (self.options.range === true) {\n                         if (self.orientation === \"horizontal\") {\n                             if (i === 0) {\n                                 self.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({ left: valPercent + \"%\" }, o.animate);\n                             }\n                             if (i === 1) {\n                                 self.range[animate ? \"animate\" : \"css\"]({ width: (valPercent - lastValPercent) + \"%\" }, { queue: false, duration: o.animate });\n                             }\n                         } else {\n                             if (i === 0) {\n                                 self.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({ bottom: (valPercent) + \"%\" }, o.animate);\n                             }\n                             if (i === 1) {\n                                 self.range[animate ? \"animate\" : \"css\"]({ height: (valPercent - lastValPercent) + \"%\" }, { queue: false, duration: o.animate });\n                             }\n                         }\n                     }\n                     lastValPercent = valPercent;\n                 });\n             } else {\n                 value = this.value();\n                 valueMin = this._valueMin();\n                 valueMax = this._valueMax();\n                 valPercent = (valueMax !== valueMin) ?\n                     (value - valueMin) / (valueMax - valueMin) * 100 :\n                     0;\n                 _set[self.orientation === \"horizontal\" ? \"left\" : \"bottom\"] = valPercent + \"%\";\n                 this.handle.stop(1, 1)[animate ? \"animate\" : \"css\"](_set, o.animate);\n\n                 if (oRange === \"min\" && this.orientation === \"horizontal\") {\n                     this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({ width: valPercent + \"%\" }, o.animate);\n                 }\n                 if (oRange === \"max\" && this.orientation === \"horizontal\") {\n                     this.range[animate ? \"animate\" : \"css\"]({ width: (100 - valPercent) + \"%\" }, { queue: false, duration: o.animate });\n                 }\n                 if (oRange === \"min\" && this.orientation === \"vertical\") {\n                     this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({ height: valPercent + \"%\" }, o.animate);\n                 }\n                 if (oRange === \"max\" && this.orientation === \"vertical\") {\n                     this.range[animate ? \"animate\" : \"css\"]({ height: (100 - valPercent) + \"%\" }, { queue: false, duration: o.animate });\n                 }\n             }\n         }\n\n     });\n\n     $.extend($.ui.slider, {\n         version: \"1.8.21\"\n     });\n\n }(jQuery));\n /*!\n  * jQuery UI Progressbar 1.8.21\n  *\n  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n  * Dual licensed under the MIT or GPL Version 2 licenses.\n  * http://jquery.org/license\n  *\n  * http://docs.jquery.com/UI/Progressbar\n  *\n  * Depends:\n  *   jquery.ui.core.js\n  *   jquery.ui.widget.js\n  */\n (function($, undefined) {\n\n     $.widget(\"ui.progressbar\", {\n         options: {\n             value: 0,\n             max: 100\n         },\n\n         min: 0,\n\n         _create: function() {\n             this.element\n                 .addClass(\"ui-progressbar ui-widget ui-widget-content ui-corner-all\")\n                 .attr({\n                     role: \"progressbar\",\n                     \"aria-valuemin\": this.min,\n                     \"aria-valuemax\": this.options.max,\n                     \"aria-valuenow\": this._value()\n                 });\n\n             this.valueDiv = $(\"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\")\n                 .appendTo(this.element);\n\n             this.oldValue = this._value();\n             this._refreshValue();\n         },\n\n         destroy: function() {\n             this.element\n                 .removeClass(\"ui-progressbar ui-widget ui-widget-content ui-corner-all\")\n                 .removeAttr(\"role\")\n                 .removeAttr(\"aria-valuemin\")\n                 .removeAttr(\"aria-valuemax\")\n                 .removeAttr(\"aria-valuenow\");\n\n             this.valueDiv.remove();\n\n             $.Widget.prototype.destroy.apply(this, arguments);\n         },\n\n         value: function(newValue) {\n             if (newValue === undefined) {\n                 return this._value();\n             }\n\n             this._setOption(\"value\", newValue);\n             return this;\n         },\n\n         _setOption: function(key, value) {\n             if (key === \"value\") {\n                 this.options.value = value;\n                 this._refreshValue();\n                 if (this._value() === this.options.max) {\n                     this._trigger(\"complete\");\n                 }\n             }\n\n             $.Widget.prototype._setOption.apply(this, arguments);\n         },\n\n         _value: function() {\n             var val = this.options.value;\n             // normalize invalid value\n             if (typeof val !== \"number\") {\n                 val = 0;\n             }\n             return Math.min(this.options.max, Math.max(this.min, val));\n         },\n\n         _percentage: function() {\n             return 100 * this._value() / this.options.max;\n         },\n\n         _refreshValue: function() {\n             var value = this.value();\n             var percentage = this._percentage();\n\n             if (this.oldValue !== value) {\n                 this.oldValue = value;\n                 this._trigger(\"change\");\n             }\n\n             this.valueDiv\n                 .toggle(value > this.min)\n                 .toggleClass(\"ui-corner-right\", value === this.options.max)\n                 .width(percentage.toFixed(0) + \"%\");\n             this.element.attr(\"aria-valuenow\", value);\n         }\n     });\n\n     $.extend($.ui.progressbar, {\n         version: \"1.8.21\"\n     });\n\n })(jQuery);"
  },
  {
    "path": "public/admin-panel/assets/libs/chart/matrix.charts.js",
    "content": "\n$(function(){\n\t\n\t\n\t// === Prepare the chart data ===/\n\tvar sin = [], cos = [];\n    for (var i = 0; i < 14; i += 0.5) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\t// === Prepare the chart data ===/\n\tvar sin = [], cos = [];\n    for (var i = 0; i < 14; i += 0.5) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\n\t// === Make chart === //\n    var plot = $.plot($(\".chart\"),\n           [ { data: sin, label: \"sin(x)\", color: \"#ee7951\"}, { data: cos, label: \"cos(x)\",color: \"#4fb9f0\" } ], {\n               series: {\n                   lines: { show: true },\n                   points: { show: true }\n               },\n               grid: { hoverable: true, clickable: true },\n               yaxis: { min: -1.6, max: 1.6 }\n\t\t   });\n    \n\t// === Point hover in chart === //\n    var previousPoint = null;\n    $(\".chart\").bind(\"plothover\", function (event, pos, item) {\n\t\t\n        if (item) {\n            if (previousPoint != item.dataIndex) {\n                previousPoint = item.dataIndex;\n                \n                $('#tooltip').fadeOut(200,function(){\n\t\t\t\t\t$(this).remove();\n\t\t\t\t});\n                var x = item.datapoint[0].toFixed(2),\n\t\t\t\t\ty = item.datapoint[1].toFixed(2);\n                    \n                maruti.flot_tooltip(item.pageX, item.pageY,item.series.label + \" of \" + x + \" = \" + y);\n            }\n            \n        } else {\n\t\t\t$('#tooltip').fadeOut(200,function(){\n\t\t\t\t\t$(this).remove();\n\t\t\t\t});\n            previousPoint = null;           \n        }   \n    });\t\n    \n\t\n\t\n    \n    var data = [];\n\tvar series = Math.floor(Math.random()*10)+1;\n\tfor( var i = 0; i<series; i++)\n\t{\n\t\tdata[i] = { label: \"Series\"+(i+1), data: Math.floor(Math.random()*100)+1 }\n\t}\n\t\n    var pie = $.plot($(\".pie\"), data,{\n        series: {\n            pie: {\n                show: true,\n                radius: 3/4,\n                label: {\n                    show: true,\n                    radius: 3/4,\n                    formatter: function(label, series){\n                        return '<div style=\"font-size:8pt;text-align:center;padding:2px;color:white;\">'+label+'<br/>'+Math.round(series.percent)+'%</div>';\n                    },\n                    background: {\n                        opacity: 0.5,\n                        color: '#000'\n                    }\n                },\n                innerRadius: 0.2\n            },\n\t\t\tlegend: {\n\t\t\t\tshow: false\n\t\t\t}\n\t\t}\n\t});\t\n    var d1 = [];\n    for (var i = 0; i <= 10; i += 1) d1.push([i, parseInt(Math.random() * 30)]);\n\n\tvar data = new Array(); \n\tdata.push({\n\t\tdata:d1,\n        bars: {\n            show: true, \n            barWidth: 0.4, \n            order: 1,\n        }\n    });    \n\t\n\t\n    //Display graph\n    var bar = $.plot($(\".bars\"), data, {\n\t\tlegend: true,\n        color: \"#2b2b2b\"\n\t});\n\t\n});\n\t\n\nmaruti = {\n\t\t// === Tooltip for flot charts === //\n\t\tflot_tooltip: function(x, y, contents) {\n\t\t\t\n\t\t\t$('<div id=\"tooltip\">' + contents + '</div>').css( {\n\t\t\t\ttop: y + 5,\n\t\t\t\tleft: x + 5\n\t\t\t}).appendTo(\"body\").fadeIn(200);\n\t\t}\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/chart/matrix.dashboard.js",
    "content": "$(document).ready(function() {\n\n\n\n    // === Prepare peity charts === //\n    maruti.peity();\n\n    // === Prepare the chart data ===/\n    var sin = [],\n        cos = [];\n    for (var i = 0; i < 14; i += 0.5) {\n        sin.push([i, Math.sin(i)]);\n        cos.push([i, Math.cos(i)]);\n    }\n\n    // === Make chart === //\n    var plot = $.plot($(\".chart\"), [{ data: sin, label: \"sin(x)\", color: \"#ee7951\" }, { data: cos, label: \"cos(x)\", color: \"#4fb9f0\" }], {\n        series: {\n            lines: { show: true },\n            points: { show: true }\n        },\n        grid: { hoverable: true, clickable: true },\n        yaxis: { min: -1.6, max: 1.6 }\n    });\n\n    // === Point hover in chart === //\n    var previousPoint = null;\n    $(\".chart\").bind(\"plothover\", function(event, pos, item) {\n\n        if (item) {\n            if (previousPoint != item.dataIndex) {\n                previousPoint = item.dataIndex;\n\n                $('#tooltip').fadeOut(200, function() {\n                    $(this).remove();\n                });\n                var x = item.datapoint[0].toFixed(2),\n                    y = item.datapoint[1].toFixed(2);\n\n                maruti.flot_tooltip(item.pageX, item.pageY, item.series.label + \" of \" + x + \" = \" + y);\n            }\n\n        } else {\n            $('#tooltip').fadeOut(200, function() {\n                $(this).remove();\n            });\n            previousPoint = null;\n        }\n    });\n\n\n\n\n    /*// === Calendar === //    \n    var date = new Date();\n\tvar d = date.getDate();\n\tvar m = date.getMonth();\n\tvar y = date.getFullYear();\n\t\n\t$('.calendar').fullCalendar({\n\t\theader: {\n\t\t\tleft: 'prev,next',\n\t\t\tcenter: 'title',\n\t\t\tright: 'month,basicWeek,basicDay'\n\t\t},\n\t\teditable: true,\n\t\tevents: [\n\t\t\t{\n\t\t\t\ttitle: 'All day event',\n\t\t\t\tstart: new Date(y, m, 1)\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Long event',\n\t\t\t\tstart: new Date(y, m, 5),\n\t\t\t\tend: new Date(y, m, 8)\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 999,\n\t\t\t\ttitle: 'Repeating event',\n\t\t\t\tstart: new Date(y, m, 2, 16, 0),\n\t\t\t\tend: new Date(y, m, 3, 18, 0),\n\t\t\t\tallDay: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 999,\n\t\t\t\ttitle: 'Repeating event',\n\t\t\t\tstart: new Date(y, m, 9, 16, 0),\n\t\t\t\tend: new Date(y, m, 10, 18, 0),\n\t\t\t\tallDay: false\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Lunch',\n\t\t\t\tstart: new Date(y, m, 14, 12, 0),\n\t\t\t\tend: new Date(y, m, 15, 14, 0),\n\t\t\t\tallDay: false\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Birthday PARTY',\n\t\t\t\tstart: new Date(y, m, 18),\n\t\t\t\tend: new Date(y, m, 20),\n\t\t\t\tallDay: false\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Click for Google',\n\t\t\t\tstart: new Date(y, m, 27),\n\t\t\t\tend: new Date(y, m, 29),\n\t\t\t\turl: 'http://www.google.com'\n\t\t\t}\n\t\t]\n\t});*/\n});\n\n\nmaruti = {\n    // === Peity charts === //\n    peity: function() {\n        $.fn.peity.defaults.line = {\n            strokeWidth: 1,\n            delimeter: \",\",\n            height: 24,\n            max: null,\n            min: 0,\n            width: 50\n        };\n        $.fn.peity.defaults.bar = {\n            delimeter: \",\",\n            height: 24,\n            max: null,\n            min: 0,\n            width: 50\n        };\n        $(\".peity_line_good span\").peity(\"line\", {\n            colour: \"#57a532\",\n            strokeColour: \"#459D1C\"\n        });\n        $(\".peity_line_bad span\").peity(\"line\", {\n            colour: \"#FFC4C7\",\n            strokeColour: \"#BA1E20\"\n        });\n        $(\".peity_line_neutral span\").peity(\"line\", {\n            colour: \"#CCCCCC\",\n            strokeColour: \"#757575\"\n        });\n        $(\".peity_bar_good span\").peity(\"bar\", {\n            colour: \"#459D1C\"\n        });\n        $(\".peity_bar_bad span\").peity(\"bar\", {\n            colour: \"#BA1E20\"\n        });\n        $(\".peity_bar_neutral span\").peity(\"bar\", {\n            colour: \"#4fb9f0\"\n        });\n    },\n\n    // === Tooltip for flot charts === //\n    flot_tooltip: function(x, y, contents) {\n\n        $('<div id=\"tooltip\">' + contents + '</div>').css({\n            top: y + 5,\n            left: x + 5\n        }).appendTo(\"body\").fadeIn(200);\n    }\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/chart/matrix.interface.js",
    "content": "\n$(document).ready(function(){\n\t\n\t// === jQuery Peity === //\n\t$.fn.peity.defaults.line = {\n\t\tstrokeWidth: 1,\n\t\tdelimeter: \",\",\n\t\theight: 24,\n\t\tmax: null,\n\t\tmin: 0,\n\t\twidth: 50\n\t};\n\t$.fn.peity.defaults.bar = {\n\t\tdelimeter: \",\",\n\t\theight: 24,\n\t\tmax: null,\n\t\tmin: 0,\n\t\twidth: 50\n\t};\n\t$(\".peity_line_good span\").peity(\"line\", {\n\t\tcolour: \"#488c13\",\n\t\tstrokeColour: \"#459D1C\"\n\t});\n\t$(\".peity_line_bad span\").peity(\"line\", {\n\t\tcolour: \"#da4b0f\",\n\t\tstrokeColour: \"#BA1E20\"\n\t});\t\n\t$(\".peity_line_neutral span\").peity(\"line\", {\n\t\tcolour: \"#CCCCCC\",\n\t\tstrokeColour: \"#757575\"\n\t});\n\t$(\".peity_bar_good span\").peity(\"bar\", {\n\t\tcolour: \"#459D1C\"\n\t});\n\t$(\".peity_bar_bad span\").peity(\"bar\", {\n\t\tcolour: \"#BA1E20\"\n\t});\t\n\t$(\".peity_bar_neutral span\").peity(\"bar\", {\n\t\tcolour: \"#757575\"\n\t});\n});\n"
  },
  {
    "path": "public/admin-panel/assets/libs/chart/turning-series.js",
    "content": "$(function() {\n    var datasets = {\n        \"usa\": {\n            label: \"USA\",\n            data: [\n                [1988, 483994],\n                [1989, 479060],\n                [1990, 457648],\n                [1991, 401949],\n                [1992, 424705],\n                [1993, 402375],\n                [1994, 377867],\n                [1995, 357382],\n                [1996, 337946],\n                [1997, 336185],\n                [1998, 328611],\n                [1999, 329421],\n                [2000, 342172],\n                [2001, 344932],\n                [2002, 387303],\n                [2003, 440813],\n                [2004, 480451],\n                [2005, 504638],\n                [2006, 528692]\n            ]\n        },\n        \"russia\": {\n            label: \"Russia\",\n            data: [\n                [1988, 218000],\n                [1989, 203000],\n                [1990, 171000],\n                [1992, 42500],\n                [1993, 37600],\n                [1994, 36600],\n                [1995, 21700],\n                [1996, 19200],\n                [1997, 21300],\n                [1998, 13600],\n                [1999, 14000],\n                [2000, 19100],\n                [2001, 21300],\n                [2002, 23600],\n                [2003, 25100],\n                [2004, 26100],\n                [2005, 31100],\n                [2006, 34700]\n            ]\n        },\n        \"uk\": {\n            label: \"UK\",\n            data: [\n                [1988, 62982],\n                [1989, 62027],\n                [1990, 60696],\n                [1991, 62348],\n                [1992, 58560],\n                [1993, 56393],\n                [1994, 54579],\n                [1995, 50818],\n                [1996, 50554],\n                [1997, 48276],\n                [1998, 47691],\n                [1999, 47529],\n                [2000, 47778],\n                [2001, 48760],\n                [2002, 50949],\n                [2003, 57452],\n                [2004, 60234],\n                [2005, 60076],\n                [2006, 59213]\n            ]\n        },\n        \"germany\": {\n            label: \"Germany\",\n            data: [\n                [1988, 55627],\n                [1989, 55475],\n                [1990, 58464],\n                [1991, 55134],\n                [1992, 52436],\n                [1993, 47139],\n                [1994, 43962],\n                [1995, 43238],\n                [1996, 42395],\n                [1997, 40854],\n                [1998, 40993],\n                [1999, 41822],\n                [2000, 41147],\n                [2001, 40474],\n                [2002, 40604],\n                [2003, 40044],\n                [2004, 38816],\n                [2005, 38060],\n                [2006, 36984]\n            ]\n        },\n        \"denmark\": {\n            label: \"Denmark\",\n            data: [\n                [1988, 3813],\n                [1989, 3719],\n                [1990, 3722],\n                [1991, 3789],\n                [1992, 3720],\n                [1993, 3730],\n                [1994, 3636],\n                [1995, 3598],\n                [1996, 3610],\n                [1997, 3655],\n                [1998, 3695],\n                [1999, 3673],\n                [2000, 3553],\n                [2001, 3774],\n                [2002, 3728],\n                [2003, 3618],\n                [2004, 3638],\n                [2005, 3467],\n                [2006, 3770]\n            ]\n        },\n        \"sweden\": {\n            label: \"Sweden\",\n            data: [\n                [1988, 6402],\n                [1989, 6474],\n                [1990, 6605],\n                [1991, 6209],\n                [1992, 6035],\n                [1993, 6020],\n                [1994, 6000],\n                [1995, 6018],\n                [1996, 3958],\n                [1997, 5780],\n                [1998, 5954],\n                [1999, 6178],\n                [2000, 6411],\n                [2001, 5993],\n                [2002, 5833],\n                [2003, 5791],\n                [2004, 5450],\n                [2005, 5521],\n                [2006, 5271]\n            ]\n        },\n        \"norway\": {\n            label: \"Norway\",\n            data: [\n                [1988, 4382],\n                [1989, 4498],\n                [1990, 4535],\n                [1991, 4398],\n                [1992, 4766],\n                [1993, 4441],\n                [1994, 4670],\n                [1995, 4217],\n                [1996, 4275],\n                [1997, 4203],\n                [1998, 4482],\n                [1999, 4506],\n                [2000, 4358],\n                [2001, 4385],\n                [2002, 5269],\n                [2003, 5066],\n                [2004, 5194],\n                [2005, 4887],\n                [2006, 4891]\n            ]\n        }\n    };\n   /* var dataSet = [\n    {label: \"USA\", color: \"#005CDE\" },\n    {label: \"Russia\", color: \"#005CDE\" },\n    { label: \"UK\", color: \"#00A36A\" },\n    { label: \"Germany\", color: \"#7D0096\" },\n    { label: \"Denmark\", color: \"#992B00\" },\n    { label: \"Sweden\", color: \"#DE000F\" },\n    { label: \"Norway\", color: \"#ED7B00\" }    \n];*/\n    // hard-code color indices to prevent them from shifting as\n    // countries are turned on/off\n    var i = 0;\n    $.each(datasets, function(key, val) {\n        val.color = i;\n        ++i;\n    });\n\n    // insert checkboxes \n    var choiceContainer = $(\"#choices\");\n    $.each(datasets, function(key, val) {\n        choiceContainer.append('<input type=\"checkbox\" name=\"' + key +\n            '\" checked=\"checked\" id=\"id' + key + '\">' +\n            '<label for=\"id' + key + '\">' +\n            val.label + '</label>');\n    });\n    choiceContainer.find(\"input\").click(plotAccordingToChoices);\n\n\n    function plotAccordingToChoices() {\n        var data = [];\n\n        choiceContainer.find(\"input:checked\").each(function() {\n            var key = $(this).attr(\"name\");\n            if (key && datasets[key])\n                data.push(datasets[key]);\n        });\n\n        if (data.length > 0)\n            $.plot($(\"#placeholder\"), data, {\n                yaxis: { min: 0 },\n                xaxis: { tickDecimals: 0 }\n            });\n    }\n\n    plotAccordingToChoices();\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/datatables/license.txt",
    "content": "Copyright (c) 2008-2015 SpryMedia Limited\nhttp://datatables.net\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/datatables.net-bs4/css/dataTables.bootstrap4.css",
    "content": "table.dataTable {\n  clear: both;\n  margin-top: 6px !important;\n  margin-bottom: 6px !important;\n  max-width: none !important;\n  border-collapse: separate !important;\n}\ntable.dataTable td,\ntable.dataTable th {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ntable.dataTable td.dataTables_empty,\ntable.dataTable th.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable.nowrap th,\ntable.dataTable.nowrap td {\n  white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length label {\n  font-weight: normal;\n  text-align: left;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_length select {\n  width: 75px;\n  display: inline-block;\n}\ndiv.dataTables_wrapper div.dataTables_filter {\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_filter label {\n  font-weight: normal;\n  white-space: nowrap;\n  text-align: left;\n}\ndiv.dataTables_wrapper div.dataTables_filter input {\n  margin-left: 0.5em;\n  display: inline-block;\n  width: auto;\n}\ndiv.dataTables_wrapper div.dataTables_info {\n  padding-top: 0.85em;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_paginate {\n  margin: 0;\n  white-space: nowrap;\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_paginate ul.pagination {\n  margin: 2px 0;\n  white-space: nowrap;\n  justify-content: flex-end;\n}\ndiv.dataTables_wrapper div.dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 200px;\n  margin-left: -100px;\n  margin-top: -26px;\n  text-align: center;\n  padding: 1em 0;\n}\n\ntable.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,\ntable.dataTable thead > tr > td.sorting_asc,\ntable.dataTable thead > tr > td.sorting_desc,\ntable.dataTable thead > tr > td.sorting {\n  padding-right: 30px;\n}\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n  outline: none;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  cursor: pointer;\n  position: relative;\n}\ntable.dataTable thead .sorting:before, table.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  position: absolute;\n  bottom: 0.9em;\n  display: block;\n  opacity: 0.3;\n}\ntable.dataTable thead .sorting:before,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:before {\n  right: 1em;\n  content: \"\\2191\";\n}\ntable.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:after {\n  right: 0.5em;\n  content: \"\\2193\";\n}\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:after {\n  opacity: 1;\n}\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  opacity: 0;\n}\n\ndiv.dataTables_scrollHead table.dataTable {\n  margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n  border-top: none;\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\ndiv.dataTables_scrollBody table thead .sorting:after,\ndiv.dataTables_scrollBody table thead .sorting_asc:after,\ndiv.dataTables_scrollBody table thead .sorting_desc:after {\n  display: none;\n}\ndiv.dataTables_scrollBody table tbody tr:first-child th,\ndiv.dataTables_scrollBody table tbody tr:first-child td {\n  border-top: none;\n}\n\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner {\n  box-sizing: content-box;\n}\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner > table {\n  margin-top: 0 !important;\n  border-top: none;\n}\n\n@media screen and (max-width: 767px) {\n  div.dataTables_wrapper div.dataTables_length,\n  div.dataTables_wrapper div.dataTables_filter,\n  div.dataTables_wrapper div.dataTables_info,\n  div.dataTables_wrapper div.dataTables_paginate {\n    text-align: center;\n  }\n}\ntable.dataTable.table-sm > thead > tr > th {\n  padding-right: 20px;\n}\ntable.dataTable.table-sm .sorting:before,\ntable.dataTable.table-sm .sorting_asc:before,\ntable.dataTable.table-sm .sorting_desc:before {\n  top: 5px;\n  right: 0.85em;\n}\ntable.dataTable.table-sm .sorting:after,\ntable.dataTable.table-sm .sorting_asc:after,\ntable.dataTable.table-sm .sorting_desc:after {\n  top: 5px;\n}\n\ntable.table-bordered.dataTable th,\ntable.table-bordered.dataTable td {\n  border-left-width: 0;\n}\ntable.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,\ntable.table-bordered.dataTable td:last-child,\ntable.table-bordered.dataTable td:last-child {\n  border-right-width: 0;\n}\ntable.table-bordered.dataTable tbody th,\ntable.table-bordered.dataTable tbody td {\n  border-bottom-width: 0;\n}\n\ndiv.dataTables_scrollHead table.table-bordered {\n  border-bottom-width: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row {\n  margin: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:first-child {\n  padding-left: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:last-child {\n  padding-right: 0;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.js",
    "content": "/*! DataTables Bootstrap 3 integration\n * ©2011-2015 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t// Require DataTables, which attaches to jQuery, including\n\t\t\t\t// jQuery if needed and have a $ property so we can access the\n\t\t\t\t// jQuery object that is used\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t\"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>\" +\n\t\t\"<'row'<'col-sm-12'tr>>\" +\n\t\t\"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>\",\n\trenderer: 'bootstrap'\n} );\n\n\n/* Default class modification */\n$.extend( DataTable.ext.classes, {\n\tsWrapper:      \"dataTables_wrapper container-fluid dt-bootstrap4\",\n\tsFilterInput:  \"form-control form-control-sm\",\n\tsLengthSelect: \"form-control form-control-sm\",\n\tsProcessing:   \"dataTables_processing card\",\n\tsPageButton:   \"paginate_button page-item\"\n} );\n\n\n/* Bootstrap paging button renderer */\nDataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {\n\tvar api     = new DataTable.Api( settings );\n\tvar classes = settings.oClasses;\n\tvar lang    = settings.oLanguage.oPaginate;\n\tvar aria = settings.oLanguage.oAria.paginate || {};\n\tvar btnDisplay, btnClass, counter=0;\n\n\tvar attach = function( container, buttons ) {\n\t\tvar i, ien, node, button;\n\t\tvar clickHandler = function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tif ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {\n\t\t\t\tapi.page( e.data.action ).draw( 'page' );\n\t\t\t}\n\t\t};\n\n\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\tbutton = buttons[i];\n\n\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\tattach( container, button );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtnDisplay = '';\n\t\t\t\tbtnClass = '';\n\n\t\t\t\tswitch ( button ) {\n\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\tbtnDisplay = '&#x2026;';\n\t\t\t\t\t\tbtnClass = 'disabled';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t'active' : '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\tnode = $('<li>', {\n\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append( $('<a>', {\n\t\t\t\t\t\t\t\t'href': '#',\n\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t'class': 'page-link'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\tsettings.oApi._fnBindAction(\n\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t);\n\n\t\t\t\t\tcounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t// inside an iframe or frame. \n\tvar activeEl;\n\n\ttry {\n\t\t// Because this approach is destroying and recreating the paging\n\t\t// elements, focus is lost on the select button which is bad for\n\t\t// accessibility. So we want to restore focus once the draw has\n\t\t// completed\n\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t}\n\tcatch (e) {}\n\n\tattach(\n\t\t$(host).empty().html('<ul class=\"pagination\"/>').children('ul'),\n\t\tbuttons\n\t);\n\n\tif ( activeEl !== undefined ) {\n\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t}\n};\n\n\nreturn DataTable;\n}));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/.bower.json",
    "content": "{\n  \"name\": \"Flot\",\n  \"version\": \"0.8.3\",\n  \"main\": \"jquery.flot.js\",\n  \"dependencies\": {\n    \"jquery\": \">= 1.2.6\"\n  },\n  \"homepage\": \"https://github.com/flot/flot\",\n  \"_release\": \"0.8.3\",\n  \"_resolution\": {\n    \"type\": \"version\",\n    \"tag\": \"v0.8.3\",\n    \"commit\": \"453b017cc5acfd75e252b93e8635f57f4196d45d\"\n  },\n  \"_source\": \"git://github.com/flot/flot.git\",\n  \"_target\": \"~0.8.3\",\n  \"_originalSource\": \"flot\",\n  \"_direct\": true\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/.gitignore",
    "content": "*.min.js\n!excanvas.min.js\nnode_modules/\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/.travis.yml",
    "content": "language: node_js\nnode_js:\n  - 0.8\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/API.md",
    "content": "# Flot Reference #\n\n**Table of Contents**\n\n[Introduction](#introduction)\n| [Data Format](#data-format)\n| [Plot Options](#plot-options)\n| [Customizing the legend](#customizing-the-legend)\n| [Customizing the axes](#customizing-the-axes)\n| [Multiple axes](#multiple-axes)\n| [Time series data](#time-series-data)\n| [Customizing the data series](#customizing-the-data-series)\n| [Customizing the grid](#customizing-the-grid)\n| [Specifying gradients](#specifying-gradients)\n| [Plot Methods](#plot-methods)\n| [Hooks](#hooks)\n| [Plugins](#plugins)\n| [Version number](#version-number)\n\n---\n\n## Introduction ##\n\nConsider a call to the plot function:\n\n```js\nvar plot = $.plot(placeholder, data, options)\n```\n\nThe placeholder is a jQuery object or DOM element or jQuery expression\nthat the plot will be put into. This placeholder needs to have its\nwidth and height set as explained in the [README](README.md) (go read that now if\nyou haven't, it's short). The plot will modify some properties of the\nplaceholder so it's recommended you simply pass in a div that you\ndon't use for anything else. Make sure you check any fancy styling\nyou apply to the div, e.g. background images have been reported to be a\nproblem on IE 7.\n\nThe plot function can also be used as a jQuery chainable property.  This form\nnaturally can't return the plot object directly, but you can still access it\nvia the 'plot' data key, like this:\n\n```js\nvar plot = $(\"#placeholder\").plot(data, options).data(\"plot\");\n```\n\nThe format of the data is documented below, as is the available\noptions. The plot object returned from the call has some methods you\ncan call. These are documented separately below.\n\nNote that in general Flot gives no guarantees if you change any of the\nobjects you pass in to the plot function or get out of it since\nthey're not necessarily deep-copied.\n\n\n## Data Format ##\n\nThe data is an array of data series:\n\n```js\n[ series1, series2, ... ]\n```\n\nA series can either be raw data or an object with properties. The raw\ndata format is an array of points:\n\n```js\n[ [x1, y1], [x2, y2], ... ]\n```\n\nE.g.\n\n```js\n[ [1, 3], [2, 14.01], [3.5, 3.14] ]\n```\n\nNote that to simplify the internal logic in Flot both the x and y\nvalues must be numbers (even if specifying time series, see below for\nhow to do this). This is a common problem because you might retrieve\ndata from the database and serialize them directly to JSON without\nnoticing the wrong type. If you're getting mysterious errors, double\ncheck that you're inputting numbers and not strings.\n\nIf a null is specified as a point or if one of the coordinates is null\nor couldn't be converted to a number, the point is ignored when\ndrawing. As a special case, a null value for lines is interpreted as a\nline segment end, i.e. the points before and after the null value are\nnot connected.\n\nLines and points take two coordinates. For filled lines and bars, you\ncan specify a third coordinate which is the bottom of the filled\narea/bar (defaults to 0).\n\nThe format of a single series object is as follows:\n\n```js\n{\n    color: color or number\n    data: rawdata\n    label: string\n    lines: specific lines options\n    bars: specific bars options\n    points: specific points options\n    xaxis: number\n    yaxis: number\n    clickable: boolean\n    hoverable: boolean\n    shadowSize: number\n    highlightColor: color or number\n}\n```\n\nYou don't have to specify any of them except the data, the rest are\noptions that will get default values. Typically you'd only specify\nlabel and data, like this:\n\n```js\n{\n    label: \"y = 3\",\n    data: [[0, 3], [10, 3]]\n}\n```\n\nThe label is used for the legend, if you don't specify one, the series\nwill not show up in the legend.\n\nIf you don't specify color, the series will get a color from the\nauto-generated colors. The color is either a CSS color specification\n(like \"rgb(255, 100, 123)\") or an integer that specifies which of\nauto-generated colors to select, e.g. 0 will get color no. 0, etc.\n\nThe latter is mostly useful if you let the user add and remove series,\nin which case you can hard-code the color index to prevent the colors\nfrom jumping around between the series.\n\nThe \"xaxis\" and \"yaxis\" options specify which axis to use. The axes\nare numbered from 1 (default), so { yaxis: 2} means that the series\nshould be plotted against the second y axis.\n\n\"clickable\" and \"hoverable\" can be set to false to disable\ninteractivity for specific series if interactivity is turned on in\nthe plot, see below.\n\nThe rest of the options are all documented below as they are the same\nas the default options passed in via the options parameter in the plot\ncommmand. When you specify them for a specific data series, they will\noverride the default options for the plot for that data series.\n\nHere's a complete example of a simple data specification:\n\n```js\n[ { label: \"Foo\", data: [ [10, 1], [17, -14], [30, 5] ] },\n  { label: \"Bar\", data: [ [11, 13], [19, 11], [30, -7] ] }\n]\n```\n\n\n## Plot Options ##\n\nAll options are completely optional. They are documented individually\nbelow, to change them you just specify them in an object, e.g.\n\n```js\nvar options = {\n    series: {\n        lines: { show: true },\n        points: { show: true }\n    }\n};\n\t\n$.plot(placeholder, data, options);\n```\n\n\n## Customizing the legend ##\n\n```js\nlegend: {\n    show: boolean\n    labelFormatter: null or (fn: string, series object -> string)\n    labelBoxBorderColor: color\n    noColumns: number\n    position: \"ne\" or \"nw\" or \"se\" or \"sw\"\n    margin: number of pixels or [x margin, y margin]\n    backgroundColor: null or color\n    backgroundOpacity: number between 0 and 1\n    container: null or jQuery object/DOM element/jQuery expression\n    sorted: null/false, true, \"ascending\", \"descending\", \"reverse\", or a comparator\n}\n```\n\nThe legend is generated as a table with the data series labels and\nsmall label boxes with the color of the series. If you want to format\nthe labels in some way, e.g. make them to links, you can pass in a\nfunction for \"labelFormatter\". Here's an example that makes them\nclickable:\n\n```js\nlabelFormatter: function(label, series) {\n    // series is the series object for the label\n    return '<a href=\"#' + label + '\">' + label + '</a>';\n}\n```\n\nTo prevent a series from showing up in the legend, simply have the function\nreturn null.\n\n\"noColumns\" is the number of columns to divide the legend table into.\n\"position\" specifies the overall placement of the legend within the\nplot (top-right, top-left, etc.) and margin the distance to the plot\nedge (this can be either a number or an array of two numbers like [x,\ny]). \"backgroundColor\" and \"backgroundOpacity\" specifies the\nbackground. The default is a partly transparent auto-detected\nbackground.\n\nIf you want the legend to appear somewhere else in the DOM, you can\nspecify \"container\" as a jQuery object/expression to put the legend\ntable into. The \"position\" and \"margin\" etc. options will then be\nignored. Note that Flot will overwrite the contents of the container.\n\nLegend entries appear in the same order as their series by default. If \"sorted\"\nis \"reverse\" then they appear in the opposite order from their series. To sort\nthem alphabetically, you can specify true, \"ascending\" or \"descending\", where\ntrue and \"ascending\" are equivalent.\n\nYou can also provide your own comparator function that accepts two\nobjects with \"label\" and \"color\" properties, and returns zero if they\nare equal, a positive value if the first is greater than the second,\nand a negative value if the first is less than the second.\n\n```js\nsorted: function(a, b) {\n    // sort alphabetically in ascending order\n    return a.label == b.label ? 0 : (\n        a.label > b.label ? 1 : -1\n    )\n}\n```\n\n\n## Customizing the axes ##\n\n```js\nxaxis, yaxis: {\n    show: null or true/false\n    position: \"bottom\" or \"top\" or \"left\" or \"right\"\n    mode: null or \"time\" (\"time\" requires jquery.flot.time.js plugin)\n    timezone: null, \"browser\" or timezone (only makes sense for mode: \"time\")\n\n    color: null or color spec\n    tickColor: null or color spec\n    font: null or font spec object\n\n    min: null or number\n    max: null or number\n    autoscaleMargin: null or number\n    \n    transform: null or fn: number -> number\n    inverseTransform: null or fn: number -> number\n    \n    ticks: null or number or ticks array or (fn: axis -> ticks array)\n    tickSize: number or array\n    minTickSize: number or array\n    tickFormatter: (fn: number, object -> string) or string\n    tickDecimals: null or number\n\n    labelWidth: null or number\n    labelHeight: null or number\n    reserveSpace: null or true\n    \n    tickLength: null or number\n\n    alignTicksWithAxis: null or number\n}\n```\n\nAll axes have the same kind of options. The following describes how to\nconfigure one axis, see below for what to do if you've got more than\none x axis or y axis.\n\nIf you don't set the \"show\" option (i.e. it is null), visibility is\nauto-detected, i.e. the axis will show up if there's data associated\nwith it. You can override this by setting the \"show\" option to true or\nfalse.\n\nThe \"position\" option specifies where the axis is placed, bottom or\ntop for x axes, left or right for y axes. The \"mode\" option determines\nhow the data is interpreted, the default of null means as decimal\nnumbers. Use \"time\" for time series data; see the time series data\nsection. The time plugin (jquery.flot.time.js) is required for time\nseries support.\n\nThe \"color\" option determines the color of the line and ticks for the axis, and\ndefaults to the grid color with transparency. For more fine-grained control you\ncan also set the color of the ticks separately with \"tickColor\".\n\nYou can customize the font and color used to draw the axis tick labels with CSS\nor directly via the \"font\" option. When \"font\" is null - the default - each\ntick label is given the 'flot-tick-label' class. For compatibility with Flot\n0.7 and earlier the labels are also given the 'tickLabel' class, but this is\ndeprecated and scheduled to be removed with the release of version 1.0.0.\n\nTo enable more granular control over styles, labels are divided between a set\nof text containers, with each holding the labels for one axis. These containers\nare given the classes 'flot-[x|y]-axis', and 'flot-[x|y]#-axis', where '#' is\nthe number of the axis when there are multiple axes.  For example, the x-axis\nlabels for a simple plot with only a single x-axis might look like this:\n\n```html\n<div class='flot-x-axis flot-x1-axis'>\n    <div class='flot-tick-label'>January 2013</div>\n    ...\n</div>\n```\n\nFor direct control over label styles you can also provide \"font\" as an object\nwith this format:\n\n```js\n{\n    size: 11,\n    lineHeight: 13,\n    style: \"italic\",\n    weight: \"bold\",\n    family: \"sans-serif\",\n    variant: \"small-caps\",\n    color: \"#545454\"\n}\n```\n\nThe size and lineHeight must be expressed in pixels; CSS units such as 'em'\nor 'smaller' are not allowed.\n\nThe options \"min\"/\"max\" are the precise minimum/maximum value on the\nscale. If you don't specify either of them, a value will automatically\nbe chosen based on the minimum/maximum data values. Note that Flot\nalways examines all the data values you feed to it, even if a\nrestriction on another axis may make some of them invisible (this\nmakes interactive use more stable).\n\nThe \"autoscaleMargin\" is a bit esoteric: it's the fraction of margin\nthat the scaling algorithm will add to avoid that the outermost points\nends up on the grid border. Note that this margin is only applied when\na min or max value is not explicitly set. If a margin is specified,\nthe plot will furthermore extend the axis end-point to the nearest\nwhole tick. The default value is \"null\" for the x axes and 0.02 for y\naxes which seems appropriate for most cases.\n\n\"transform\" and \"inverseTransform\" are callbacks you can put in to\nchange the way the data is drawn. You can design a function to\ncompress or expand certain parts of the axis non-linearly, e.g.\nsuppress weekends or compress far away points with a logarithm or some\nother means. When Flot draws the plot, each value is first put through\nthe transform function. Here's an example, the x axis can be turned\ninto a natural logarithm axis with the following code:\n\n```js\nxaxis: {\n    transform: function (v) { return Math.log(v); },\n    inverseTransform: function (v) { return Math.exp(v); }\n}\n```\n\nSimilarly, for reversing the y axis so the values appear in inverse\norder:\n\n```js\nyaxis: {\n    transform: function (v) { return -v; },\n    inverseTransform: function (v) { return -v; }\n}\n```\n\nNote that for finding extrema, Flot assumes that the transform\nfunction does not reorder values (it should be monotone).\n\nThe inverseTransform is simply the inverse of the transform function\n(so v == inverseTransform(transform(v)) for all relevant v). It is\nrequired for converting from canvas coordinates to data coordinates,\ne.g. for a mouse interaction where a certain pixel is clicked. If you\ndon't use any interactive features of Flot, you may not need it.\n\n\nThe rest of the options deal with the ticks.\n\nIf you don't specify any ticks, a tick generator algorithm will make\nsome for you. The algorithm has two passes. It first estimates how\nmany ticks would be reasonable and uses this number to compute a nice\nround tick interval size. Then it generates the ticks.\n\nYou can specify how many ticks the algorithm aims for by setting\n\"ticks\" to a number. The algorithm always tries to generate reasonably\nround tick values so even if you ask for three ticks, you might get\nfive if that fits better with the rounding. If you don't want any\nticks at all, set \"ticks\" to 0 or an empty array.\n\nAnother option is to skip the rounding part and directly set the tick\ninterval size with \"tickSize\". If you set it to 2, you'll get ticks at\n2, 4, 6, etc. Alternatively, you can specify that you just don't want\nticks at a size less than a specific tick size with \"minTickSize\".\nNote that for time series, the format is an array like [2, \"month\"],\nsee the next section.\n\nIf you want to completely override the tick algorithm, you can specify\nan array for \"ticks\", either like this:\n\n```js\nticks: [0, 1.2, 2.4]\n```\n\nOr like this where the labels are also customized:\n\n```js\nticks: [[0, \"zero\"], [1.2, \"one mark\"], [2.4, \"two marks\"]]\n```\n\nYou can mix the two if you like.\n  \nFor extra flexibility you can specify a function as the \"ticks\"\nparameter. The function will be called with an object with the axis\nmin and max and should return a ticks array. Here's a simplistic tick\ngenerator that spits out intervals of pi, suitable for use on the x\naxis for trigonometric functions:\n\n```js\nfunction piTickGenerator(axis) {\n    var res = [], i = Math.floor(axis.min / Math.PI);\n    do {\n        var v = i * Math.PI;\n        res.push([v, i + \"\\u03c0\"]);\n        ++i;\n    } while (v < axis.max);\n    return res;\n}\n```\n\nYou can control how the ticks look like with \"tickDecimals\", the\nnumber of decimals to display (default is auto-detected).\n\nAlternatively, for ultimate control over how ticks are formatted you can\nprovide a function to \"tickFormatter\". The function is passed two\nparameters, the tick value and an axis object with information, and\nshould return a string. The default formatter looks like this:\n\n```js\nfunction formatter(val, axis) {\n    return val.toFixed(axis.tickDecimals);\n}\n```\n\nThe axis object has \"min\" and \"max\" with the range of the axis,\n\"tickDecimals\" with the number of decimals to round the value to and\n\"tickSize\" with the size of the interval between ticks as calculated\nby the automatic axis scaling algorithm (or specified by you). Here's\nan example of a custom formatter:\n\n```js\nfunction suffixFormatter(val, axis) {\n    if (val > 1000000)\n        return (val / 1000000).toFixed(axis.tickDecimals) + \" MB\";\n    else if (val > 1000)\n        return (val / 1000).toFixed(axis.tickDecimals) + \" kB\";\n    else\n        return val.toFixed(axis.tickDecimals) + \" B\";\n}\n```\n\n\"labelWidth\" and \"labelHeight\" specifies a fixed size of the tick\nlabels in pixels. They're useful in case you need to align several\nplots. \"reserveSpace\" means that even if an axis isn't shown, Flot\nshould reserve space for it - it is useful in combination with\nlabelWidth and labelHeight for aligning multi-axis charts.\n\n\"tickLength\" is the length of the tick lines in pixels. By default, the\ninnermost axes will have ticks that extend all across the plot, while\nany extra axes use small ticks. A value of null means use the default,\nwhile a number means small ticks of that length - set it to 0 to hide\nthe lines completely.\n\nIf you set \"alignTicksWithAxis\" to the number of another axis, e.g.\nalignTicksWithAxis: 1, Flot will ensure that the autogenerated ticks\nof this axis are aligned with the ticks of the other axis. This may\nimprove the looks, e.g. if you have one y axis to the left and one to\nthe right, because the grid lines will then match the ticks in both\nends. The trade-off is that the forced ticks won't necessarily be at\nnatural places.\n\n\n## Multiple axes ##\n\nIf you need more than one x axis or y axis, you need to specify for\neach data series which axis they are to use, as described under the\nformat of the data series, e.g. { data: [...], yaxis: 2 } specifies\nthat a series should be plotted against the second y axis.\n\nTo actually configure that axis, you can't use the xaxis/yaxis options\ndirectly - instead there are two arrays in the options:\n\n```js\nxaxes: []\nyaxes: []\n```\n\nHere's an example of configuring a single x axis and two y axes (we\ncan leave options of the first y axis empty as the defaults are fine):\n\n```js\n{\n    xaxes: [ { position: \"top\" } ],\n    yaxes: [ { }, { position: \"right\", min: 20 } ]\n}\n```\n\nThe arrays get their default values from the xaxis/yaxis settings, so\nsay you want to have all y axes start at zero, you can simply specify\nyaxis: { min: 0 } instead of adding a min parameter to all the axes.\n\nGenerally, the various interfaces in Flot dealing with data points\neither accept an xaxis/yaxis parameter to specify which axis number to\nuse (starting from 1), or lets you specify the coordinate directly as\nx2/x3/... or x2axis/x3axis/... instead of \"x\" or \"xaxis\".\n\n\n## Time series data ##\n\nPlease note that it is now required to include the time plugin,\njquery.flot.time.js, for time series support.\n\nTime series are a bit more difficult than scalar data because\ncalendars don't follow a simple base 10 system. For many cases, Flot\nabstracts most of this away, but it can still be a bit difficult to\nget the data into Flot. So we'll first discuss the data format.\n\nThe time series support in Flot is based on Javascript timestamps,\ni.e. everywhere a time value is expected or handed over, a Javascript\ntimestamp number is used. This is a number, not a Date object. A\nJavascript timestamp is the number of milliseconds since January 1,\n1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's\nin milliseconds, so remember to multiply by 1000!\n\nYou can see a timestamp like this\n\n```js\nalert((new Date()).getTime())\n```\n\nThere are different schools of thought when it comes to display of\ntimestamps. Many will want the timestamps to be displayed according to\na certain time zone, usually the time zone in which the data has been\nproduced. Some want the localized experience, where the timestamps are\ndisplayed according to the local time of the visitor. Flot supports\nboth. Optionally you can include a third-party library to get\nadditional timezone support.\n\nDefault behavior is that Flot always displays timestamps according to\nUTC. The reason being that the core Javascript Date object does not\nsupport other fixed time zones. Often your data is at another time\nzone, so it may take a little bit of tweaking to work around this\nlimitation.\n\nThe easiest way to think about it is to pretend that the data\nproduction time zone is UTC, even if it isn't. So if you have a\ndatapoint at 2002-02-20 08:00, you can generate a timestamp for eight\no'clock UTC even if it really happened eight o'clock UTC+0200.\n\nIn PHP you can get an appropriate timestamp with:\n\n```php\nstrtotime(\"2002-02-20 UTC\") * 1000\n```\n\nIn Python you can get it with something like:\n\n```python\ncalendar.timegm(datetime_object.timetuple()) * 1000\n```\nIn Ruby you can get it using the `#to_i` method on the\n[`Time`](http://apidock.com/ruby/Time/to_i) object. If you're using the\n`active_support` gem (default for Ruby on Rails applications) `#to_i` is also\navailable on the `DateTime` and `ActiveSupport::TimeWithZone` objects. You\nsimply need to multiply the result by 1000:\n\n```ruby\nTime.now.to_i * 1000     # => 1383582043000\n# ActiveSupport examples:\nDateTime.now.to_i * 1000 # => 1383582043000\nActiveSupport::TimeZone.new('Asia/Shanghai').now.to_i * 1000\n# => 1383582043000\n```\n\nIn .NET you can get it with something like:\n\n```aspx\npublic static int GetJavascriptTimestamp(System.DateTime input)\n{\n    System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse(\"1/1/1970\").Ticks);\n    System.DateTime time = input.Subtract(span);\n    return (long)(time.Ticks / 10000);\n}\n```\n\nJavascript also has some support for parsing date strings, so it is\npossible to generate the timestamps manually client-side.\n\nIf you've already got the real UTC timestamp, it's too late to use the\npretend trick described above. But you can fix up the timestamps by\nadding the time zone offset, e.g. for UTC+0200 you would add 2 hours\nto the UTC timestamp you got. Then it'll look right on the plot. Most\nprogramming environments have some means of getting the timezone\noffset for a specific date (note that you need to get the offset for\neach individual timestamp to account for daylight savings).\n\nThe alternative with core Javascript is to interpret the timestamps\naccording to the time zone that the visitor is in, which means that\nthe ticks will shift with the time zone and daylight savings of each\nvisitor. This behavior is enabled by setting the axis option\n\"timezone\" to the value \"browser\".\n\nIf you need more time zone functionality than this, there is still\nanother option. If you include the \"timezone-js\" library\n<https://github.com/mde/timezone-js> in the page and set axis.timezone\nto a value recognized by said library, Flot will use timezone-js to\ninterpret the timestamps according to that time zone.\n\nOnce you've gotten the timestamps into the data and specified \"time\"\nas the axis mode, Flot will automatically generate relevant ticks and\nformat them. As always, you can tweak the ticks via the \"ticks\" option\n- just remember that the values should be timestamps (numbers), not\nDate objects.\n\nTick generation and formatting can also be controlled separately\nthrough the following axis options:\n\n```js\nminTickSize: array\ntimeformat: null or format string\nmonthNames: null or array of size 12 of strings\ndayNames: null or array of size 7 of strings\ntwelveHourClock: boolean\n```\n\nHere \"timeformat\" is a format string to use. You might use it like\nthis:\n\n```js\nxaxis: {\n    mode: \"time\",\n    timeformat: \"%Y/%m/%d\"\n}\n```\n\nThis will result in tick labels like \"2000/12/24\". A subset of the\nstandard strftime specifiers are supported (plus the nonstandard %q):\n\n```js\n%a: weekday name (customizable)\n%b: month name (customizable)\n%d: day of month, zero-padded (01-31)\n%e: day of month, space-padded ( 1-31)\n%H: hours, 24-hour time, zero-padded (00-23)\n%I: hours, 12-hour time, zero-padded (01-12)\n%m: month, zero-padded (01-12)\n%M: minutes, zero-padded (00-59)\n%q: quarter (1-4)\n%S: seconds, zero-padded (00-59)\n%y: year (two digits)\n%Y: year (four digits)\n%p: am/pm\n%P: AM/PM (uppercase version of %p)\n%w: weekday as number (0-6, 0 being Sunday)\n```\n\nFlot 0.8 switched from %h to the standard %H hours specifier. The %h specifier\nis still available, for backwards-compatibility, but is deprecated and\nscheduled to be removed permanently with the release of version 1.0.\n\nYou can customize the month names with the \"monthNames\" option. For\ninstance, for Danish you might specify:\n\n```js\nmonthNames: [\"jan\", \"feb\", \"mar\", \"apr\", \"maj\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"]\n```\n\nSimilarly you can customize the weekday names with the \"dayNames\"\noption. An example in French:\n\n```js\ndayNames: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"]\n```\n\nIf you set \"twelveHourClock\" to true, the autogenerated timestamps\nwill use 12 hour AM/PM timestamps instead of 24 hour. This only\napplies if you have not set \"timeformat\". Use the \"%I\" and \"%p\" or\n\"%P\" options if you want to build your own format string with 12-hour\ntimes.\n\nIf the Date object has a strftime property (and it is a function), it\nwill be used instead of the built-in formatter. Thus you can include\na strftime library such as http://hacks.bluesmoon.info/strftime/ for\nmore powerful date/time formatting.\n\nIf everything else fails, you can control the formatting by specifying\na custom tick formatter function as usual. Here's a simple example\nwhich will format December 24 as 24/12:\n\n```js\ntickFormatter: function (val, axis) {\n    var d = new Date(val);\n    return d.getUTCDate() + \"/\" + (d.getUTCMonth() + 1);\n}\n```\n\nNote that for the time mode \"tickSize\" and \"minTickSize\" are a bit\nspecial in that they are arrays on the form \"[value, unit]\" where unit\nis one of \"second\", \"minute\", \"hour\", \"day\", \"month\" and \"year\". So\nyou can specify\n\n```js\nminTickSize: [1, \"month\"]\n```\n\nto get a tick interval size of at least 1 month and correspondingly,\nif axis.tickSize is [2, \"day\"] in the tick formatter, the ticks have\nbeen produced with two days in-between.\n\n\n## Customizing the data series ##\n\n```js\nseries: {\n    lines, points, bars: {\n        show: boolean\n        lineWidth: number\n        fill: boolean or number\n        fillColor: null or color/gradient\n    }\n\n    lines, bars: {\n        zero: boolean\n    }\n\n    points: {\n        radius: number\n        symbol: \"circle\" or function\n    }\n\n    bars: {\n        barWidth: number\n        align: \"left\", \"right\" or \"center\"\n        horizontal: boolean\n    }\n\n    lines: {\n        steps: boolean\n    }\n\n    shadowSize: number\n    highlightColor: color or number\n}\n\ncolors: [ color1, color2, ... ]\n```\n\nThe options inside \"series: {}\" are copied to each of the series. So\nyou can specify that all series should have bars by putting it in the\nglobal options, or override it for individual series by specifying\nbars in a particular the series object in the array of data.\n  \nThe most important options are \"lines\", \"points\" and \"bars\" that\nspecify whether and how lines, points and bars should be shown for\neach data series. In case you don't specify anything at all, Flot will\ndefault to showing lines (you can turn this off with\nlines: { show: false }). You can specify the various types\nindependently of each other, and Flot will happily draw each of them\nin turn (this is probably only useful for lines and points), e.g.\n\n```js\nvar options = {\n    series: {\n        lines: { show: true, fill: true, fillColor: \"rgba(255, 255, 255, 0.8)\" },\n        points: { show: true, fill: false }\n    }\n};\n```\n\n\"lineWidth\" is the thickness of the line or outline in pixels. You can\nset it to 0 to prevent a line or outline from being drawn; this will\nalso hide the shadow.\n\n\"fill\" is whether the shape should be filled. For lines, this produces\narea graphs. You can use \"fillColor\" to specify the color of the fill.\nIf \"fillColor\" evaluates to false (default for everything except\npoints which are filled with white), the fill color is auto-set to the\ncolor of the data series. You can adjust the opacity of the fill by\nsetting fill to a number between 0 (fully transparent) and 1 (fully\nopaque).\n\nFor bars, fillColor can be a gradient, see the gradient documentation\nbelow. \"barWidth\" is the width of the bars in units of the x axis (or\nthe y axis if \"horizontal\" is true), contrary to most other measures\nthat are specified in pixels. For instance, for time series the unit\nis milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of\na day. \"align\" specifies whether a bar should be left-aligned\n(default), right-aligned or centered on top of the value it represents. \nWhen \"horizontal\" is on, the bars are drawn horizontally, i.e. from the \ny axis instead of the x axis; note that the bar end points are still\ndefined in the same way so you'll probably want to swap the\ncoordinates if you've been plotting vertical bars first.\n\nArea and bar charts normally start from zero, regardless of the data's range.\nThis is because they convey information through size, and starting from a\ndifferent value would distort their meaning. In cases where the fill is purely\nfor decorative purposes, however, \"zero\" allows you to override this behavior.\nIt defaults to true for filled lines and bars; setting it to false tells the\nseries to use the same automatic scaling as an un-filled line.\n\nFor lines, \"steps\" specifies whether two adjacent data points are\nconnected with a straight (possibly diagonal) line or with first a\nhorizontal and then a vertical line. Note that this transforms the\ndata by adding extra points.\n\nFor points, you can specify the radius and the symbol. The only\nbuilt-in symbol type is circles, for other types you can use a plugin\nor define them yourself by specifying a callback:\n\n```js\nfunction cross(ctx, x, y, radius, shadow) {\n    var size = radius * Math.sqrt(Math.PI) / 2;\n    ctx.moveTo(x - size, y - size);\n    ctx.lineTo(x + size, y + size);\n    ctx.moveTo(x - size, y + size);\n    ctx.lineTo(x + size, y - size);\n}\n```\n\nThe parameters are the drawing context, x and y coordinates of the\ncenter of the point, a radius which corresponds to what the circle\nwould have used and whether the call is to draw a shadow (due to\nlimited canvas support, shadows are currently faked through extra\ndraws). It's good practice to ensure that the area covered by the\nsymbol is the same as for the circle with the given radius, this\nensures that all symbols have approximately the same visual weight.\n\n\"shadowSize\" is the default size of shadows in pixels. Set it to 0 to\nremove shadows.\n\n\"highlightColor\" is the default color of the translucent overlay used\nto highlight the series when the mouse hovers over it.\n\nThe \"colors\" array specifies a default color theme to get colors for\nthe data series from. You can specify as many colors as you like, like\nthis:\n\n```js\ncolors: [\"#d18b2c\", \"#dba255\", \"#919733\"]\n```\n\nIf there are more data series than colors, Flot will try to generate\nextra colors by lightening and darkening colors in the theme.\n\n\n## Customizing the grid ##\n\n```js\ngrid: {\n    show: boolean\n    aboveData: boolean\n    color: color\n    backgroundColor: color/gradient or null\n    margin: number or margin object\n    labelMargin: number\n    axisMargin: number\n    markings: array of markings or (fn: axes -> array of markings)\n    borderWidth: number or object with \"top\", \"right\", \"bottom\" and \"left\" properties with different widths\n    borderColor: color or null or object with \"top\", \"right\", \"bottom\" and \"left\" properties with different colors\n    minBorderMargin: number or null\n    clickable: boolean\n    hoverable: boolean\n    autoHighlight: boolean\n    mouseActiveRadius: number\n}\n\ninteraction: {\n    redrawOverlayInterval: number or -1\n}\n```\n\nThe grid is the thing with the axes and a number of ticks. Many of the\nthings in the grid are configured under the individual axes, but not\nall. \"color\" is the color of the grid itself whereas \"backgroundColor\"\nspecifies the background color inside the grid area, here null means\nthat the background is transparent. You can also set a gradient, see\nthe gradient documentation below.\n\nYou can turn off the whole grid including tick labels by setting\n\"show\" to false. \"aboveData\" determines whether the grid is drawn\nabove the data or below (below is default).\n\n\"margin\" is the space in pixels between the canvas edge and the grid,\nwhich can be either a number or an object with individual margins for\neach side, in the form:\n\n```js\nmargin: {\n    top: top margin in pixels\n    left: left margin in pixels\n    bottom: bottom margin in pixels\n    right: right margin in pixels\n}\n```\n\n\"labelMargin\" is the space in pixels between tick labels and axis\nline, and \"axisMargin\" is the space in pixels between axes when there\nare two next to each other.\n\n\"borderWidth\" is the width of the border around the plot. Set it to 0\nto disable the border. Set it to an object with \"top\", \"right\",\n\"bottom\" and \"left\" properties to use different widths. You can\nalso set \"borderColor\" if you want the border to have a different color\nthan the grid lines. Set it to an object with \"top\", \"right\", \"bottom\"\nand \"left\" properties to use different colors. \"minBorderMargin\" controls\nthe default minimum margin around the border - it's used to make sure\nthat points aren't accidentally clipped by the canvas edge so by default\nthe value is computed from the point radius.\n\n\"markings\" is used to draw simple lines and rectangular areas in the\nbackground of the plot. You can either specify an array of ranges on\nthe form { xaxis: { from, to }, yaxis: { from, to } } (with multiple\naxes, you can specify coordinates for other axes instead, e.g. as\nx2axis/x3axis/...) or with a function that returns such an array given\nthe axes for the plot in an object as the first parameter.\n\nYou can set the color of markings by specifying \"color\" in the ranges\nobject. Here's an example array:\n\n```js\nmarkings: [ { xaxis: { from: 0, to: 2 }, yaxis: { from: 10, to: 10 }, color: \"#bb0000\" }, ... ]\n```\n\nIf you leave out one of the values, that value is assumed to go to the\nborder of the plot. So for example if you only specify { xaxis: {\nfrom: 0, to: 2 } } it means an area that extends from the top to the\nbottom of the plot in the x range 0-2.\n\nA line is drawn if from and to are the same, e.g.\n\n```js\nmarkings: [ { yaxis: { from: 1, to: 1 } }, ... ]\n```\n\nwould draw a line parallel to the x axis at y = 1. You can control the\nline width with \"lineWidth\" in the range object.\n\nAn example function that makes vertical stripes might look like this:\n\n```js\nmarkings: function (axes) {\n    var markings = [];\n    for (var x = Math.floor(axes.xaxis.min); x < axes.xaxis.max; x += 2)\n        markings.push({ xaxis: { from: x, to: x + 1 } });\n    return markings;\n}\n```\n\nIf you set \"clickable\" to true, the plot will listen for click events\non the plot area and fire a \"plotclick\" event on the placeholder with\na position and a nearby data item object as parameters. The coordinates\nare available both in the unit of the axes (not in pixels) and in\nglobal screen coordinates.\n\nLikewise, if you set \"hoverable\" to true, the plot will listen for\nmouse move events on the plot area and fire a \"plothover\" event with\nthe same parameters as the \"plotclick\" event. If \"autoHighlight\" is\ntrue (the default), nearby data items are highlighted automatically.\nIf needed, you can disable highlighting and control it yourself with\nthe highlight/unhighlight plot methods described elsewhere.\n\nYou can use \"plotclick\" and \"plothover\" events like this:\n\n```js\n$.plot($(\"#placeholder\"), [ d ], { grid: { clickable: true } });\n\n$(\"#placeholder\").bind(\"plotclick\", function (event, pos, item) {\n    alert(\"You clicked at \" + pos.x + \", \" + pos.y);\n    // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ...\n    // if you need global screen coordinates, they are pos.pageX, pos.pageY\n\n    if (item) {\n        highlight(item.series, item.datapoint);\n        alert(\"You clicked a point!\");\n    }\n});\n```\n\nThe item object in this example is either null or a nearby object on the form:\n\n```js\nitem: {\n    datapoint: the point, e.g. [0, 2]\n    dataIndex: the index of the point in the data array\n    series: the series object\n    seriesIndex: the index of the series\n    pageX, pageY: the global screen coordinates of the point\n}\n```\n\nFor instance, if you have specified the data like this \n\n```js\n$.plot($(\"#placeholder\"), [ { label: \"Foo\", data: [[0, 10], [7, 3]] } ], ...);\n```\n\nand the mouse is near the point (7, 3), \"datapoint\" is [7, 3],\n\"dataIndex\" will be 1, \"series\" is a normalized series object with\namong other things the \"Foo\" label in series.label and the color in\nseries.color, and \"seriesIndex\" is 0. Note that plugins and options\nthat transform the data can shift the indexes from what you specified\nin the original data array.\n\nIf you use the above events to update some other information and want\nto clear out that info in case the mouse goes away, you'll probably\nalso need to listen to \"mouseout\" events on the placeholder div.\n\n\"mouseActiveRadius\" specifies how far the mouse can be from an item\nand still activate it. If there are two or more points within this\nradius, Flot chooses the closest item. For bars, the top-most bar\n(from the latest specified data series) is chosen.\n\nIf you want to disable interactivity for a specific data series, you\ncan set \"hoverable\" and \"clickable\" to false in the options for that\nseries, like this:\n\n```js\n{ data: [...], label: \"Foo\", clickable: false }\n```\n\n\"redrawOverlayInterval\" specifies the maximum time to delay a redraw\nof interactive things (this works as a rate limiting device). The\ndefault is capped to 60 frames per second. You can set it to -1 to\ndisable the rate limiting.\n\n\n## Specifying gradients ##\n\nA gradient is specified like this:\n\n```js\n{ colors: [ color1, color2, ... ] }\n```\n\nFor instance, you might specify a background on the grid going from\nblack to gray like this:\n\n```js\ngrid: {\n    backgroundColor: { colors: [\"#000\", \"#999\"] }\n}\n```\n\nFor the series you can specify the gradient as an object that\nspecifies the scaling of the brightness and the opacity of the series\ncolor, e.g.\n\n```js\n{ colors: [{ opacity: 0.8 }, { brightness: 0.6, opacity: 0.8 } ] }\n```\n\nwhere the first color simply has its alpha scaled, whereas the second\nis also darkened. For instance, for bars the following makes the bars\ngradually disappear, without outline:\n\n```js\nbars: {\n    show: true,\n    lineWidth: 0,\n    fill: true,\n    fillColor: { colors: [ { opacity: 0.8 }, { opacity: 0.1 } ] }\n}\n```\n\nFlot currently only supports vertical gradients drawn from top to\nbottom because that's what works with IE.\n\n\n## Plot Methods ##\n\nThe Plot object returned from the plot function has some methods you\ncan call:\n\n - highlight(series, datapoint)\n\n    Highlight a specific datapoint in the data series. You can either\n    specify the actual objects, e.g. if you got them from a\n    \"plotclick\" event, or you can specify the indices, e.g.\n    highlight(1, 3) to highlight the fourth point in the second series\n    (remember, zero-based indexing).\n\n - unhighlight(series, datapoint) or unhighlight()\n\n    Remove the highlighting of the point, same parameters as\n    highlight.\n\n    If you call unhighlight with no parameters, e.g. as\n    plot.unhighlight(), all current highlights are removed.\n\n - setData(data)\n\n    You can use this to reset the data used. Note that axis scaling,\n    ticks, legend etc. will not be recomputed (use setupGrid() to do\n    that). You'll probably want to call draw() afterwards.\n\n    You can use this function to speed up redrawing a small plot if\n    you know that the axes won't change. Put in the new data with\n    setData(newdata), call draw(), and you're good to go. Note that\n    for large datasets, almost all the time is consumed in draw()\n    plotting the data so in this case don't bother.\n\n - setupGrid()\n\n    Recalculate and set axis scaling, ticks, legend etc.\n\n    Note that because of the drawing model of the canvas, this\n    function will immediately redraw (actually reinsert in the DOM)\n    the labels and the legend, but not the actual tick lines because\n    they're drawn on the canvas. You need to call draw() to get the\n    canvas redrawn.\n\n - draw()\n\n    Redraws the plot canvas.\n\n - triggerRedrawOverlay()\n\n    Schedules an update of an overlay canvas used for drawing\n    interactive things like a selection and point highlights. This\n    is mostly useful for writing plugins. The redraw doesn't happen\n    immediately, instead a timer is set to catch multiple successive\n    redraws (e.g. from a mousemove). You can get to the overlay by\n    setting up a drawOverlay hook.\n\n - width()/height()\n\n    Gets the width and height of the plotting area inside the grid.\n    This is smaller than the canvas or placeholder dimensions as some\n    extra space is needed (e.g. for labels).\n\n - offset()\n\n    Returns the offset of the plotting area inside the grid relative\n    to the document, useful for instance for calculating mouse\n    positions (event.pageX/Y minus this offset is the pixel position\n    inside the plot).\n\n - pointOffset({ x: xpos, y: ypos })\n\n    Returns the calculated offset of the data point at (x, y) in data\n    space within the placeholder div. If you are working with multiple\n    axes, you can specify the x and y axis references, e.g. \n\n    ```js\n      o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 })\n      // o.left and o.top now contains the offset within the div\n    ````\n\n - resize()\n\n    Tells Flot to resize the drawing canvas to the size of the\n    placeholder. You need to run setupGrid() and draw() afterwards as\n    canvas resizing is a destructive operation. This is used\n    internally by the resize plugin.\n\n - shutdown()\n\n    Cleans up any event handlers Flot has currently registered. This\n    is used internally.\n\nThere are also some members that let you peek inside the internal\nworkings of Flot which is useful in some cases. Note that if you change\nsomething in the objects returned, you're changing the objects used by\nFlot to keep track of its state, so be careful.\n\n  - getData()\n\n    Returns an array of the data series currently used in normalized\n    form with missing settings filled in according to the global\n    options. So for instance to find out what color Flot has assigned\n    to the data series, you could do this:\n\n    ```js\n    var series = plot.getData();\n    for (var i = 0; i < series.length; ++i)\n        alert(series[i].color);\n    ```\n\n    A notable other interesting field besides color is datapoints\n    which has a field \"points\" with the normalized data points in a\n    flat array (the field \"pointsize\" is the increment in the flat\n    array to get to the next point so for a dataset consisting only of\n    (x,y) pairs it would be 2).\n\n  - getAxes()\n\n    Gets an object with the axes. The axes are returned as the\n    attributes of the object, so for instance getAxes().xaxis is the\n    x axis.\n\n    Various things are stuffed inside an axis object, e.g. you could\n    use getAxes().xaxis.ticks to find out what the ticks are for the\n    xaxis. Two other useful attributes are p2c and c2p, functions for\n    transforming from data point space to the canvas plot space and\n    back. Both returns values that are offset with the plot offset.\n    Check the Flot source code for the complete set of attributes (or\n    output an axis with console.log() and inspect it).\n\n    With multiple axes, the extra axes are returned as x2axis, x3axis,\n    etc., e.g. getAxes().y2axis is the second y axis. You can check\n    y2axis.used to see whether the axis is associated with any data\n    points and y2axis.show to see if it is currently shown. \n \n  - getPlaceholder()\n\n    Returns placeholder that the plot was put into. This can be useful\n    for plugins for adding DOM elements or firing events.\n\n  - getCanvas()\n\n    Returns the canvas used for drawing in case you need to hack on it\n    yourself. You'll probably need to get the plot offset too.\n  \n  - getPlotOffset()\n\n    Gets the offset that the grid has within the canvas as an object\n    with distances from the canvas edges as \"left\", \"right\", \"top\",\n    \"bottom\". I.e., if you draw a circle on the canvas with the center\n    placed at (left, top), its center will be at the top-most, left\n    corner of the grid.\n\n  - getOptions()\n\n    Gets the options for the plot, normalized, with default values\n    filled in. You get a reference to actual values used by Flot, so\n    if you modify the values in here, Flot will use the new values.\n    If you change something, you probably have to call draw() or\n    setupGrid() or triggerRedrawOverlay() to see the change.\n    \n\n## Hooks ##\n\nIn addition to the public methods, the Plot object also has some hooks\nthat can be used to modify the plotting process. You can install a\ncallback function at various points in the process, the function then\ngets access to the internal data structures in Flot.\n\nHere's an overview of the phases Flot goes through:\n\n  1. Plugin initialization, parsing options\n  \n  2. Constructing the canvases used for drawing\n\n  3. Set data: parsing data specification, calculating colors,\n     copying raw data points into internal format,\n     normalizing them, finding max/min for axis auto-scaling\n\n  4. Grid setup: calculating axis spacing, ticks, inserting tick\n     labels, the legend\n\n  5. Draw: drawing the grid, drawing each of the series in turn\n\n  6. Setting up event handling for interactive features\n\n  7. Responding to events, if any\n\n  8. Shutdown: this mostly happens in case a plot is overwritten \n\nEach hook is simply a function which is put in the appropriate array.\nYou can add them through the \"hooks\" option, and they are also available\nafter the plot is constructed as the \"hooks\" attribute on the returned\nplot object, e.g.\n\n```js\n  // define a simple draw hook\n  function hellohook(plot, canvascontext) { alert(\"hello!\"); };\n\n  // pass it in, in an array since we might want to specify several\n  var plot = $.plot(placeholder, data, { hooks: { draw: [hellohook] } });\n\n  // we can now find it again in plot.hooks.draw[0] unless a plugin\n  // has added other hooks\n```\n\nThe available hooks are described below. All hook callbacks get the\nplot object as first parameter. You can find some examples of defined\nhooks in the plugins bundled with Flot.\n\n - processOptions  [phase 1]\n\n    ```function(plot, options)```\n   \n    Called after Flot has parsed and merged options. Useful in the\n    instance where customizations beyond simple merging of default\n    values is needed. A plugin might use it to detect that it has been\n    enabled and then turn on or off other options.\n\n \n - processRawData  [phase 3]\n\n    ```function(plot, series, data, datapoints)```\n \n    Called before Flot copies and normalizes the raw data for the given\n    series. If the function fills in datapoints.points with normalized\n    points and sets datapoints.pointsize to the size of the points,\n    Flot will skip the copying/normalization step for this series.\n   \n    In any case, you might be interested in setting datapoints.format,\n    an array of objects for specifying how a point is normalized and\n    how it interferes with axis scaling. It accepts the following options:\n\n    ```js\n    {\n        x, y: boolean,\n        number: boolean,\n        required: boolean,\n        defaultValue: value,\n        autoscale: boolean\n    }\n    ```\n\n    \"x\" and \"y\" specify whether the value is plotted against the x or y axis,\n    and is currently used only to calculate axis min-max ranges. The default\n    format array, for example, looks like this:\n\n    ```js\n    [\n        { x: true, number: true, required: true },\n        { y: true, number: true, required: true }\n    ]\n    ```\n\n    This indicates that a point, i.e. [0, 25], consists of two values, with the\n    first being plotted on the x axis and the second on the y axis.\n\n    If \"number\" is true, then the value must be numeric, and is set to null if\n    it cannot be converted to a number.\n\n    \"defaultValue\" provides a fallback in case the original value is null. This\n    is for instance handy for bars, where one can omit the third coordinate\n    (the bottom of the bar), which then defaults to zero.\n\n    If \"required\" is true, then the value must exist (be non-null) for the\n    point as a whole to be valid. If no value is provided, then the entire\n    point is cleared out with nulls, turning it into a gap in the series.\n\n    \"autoscale\" determines whether the value is considered when calculating an\n    automatic min-max range for the axes that the value is plotted against.\n\n - processDatapoints  [phase 3]\n\n    ```function(plot, series, datapoints)```\n\n    Called after normalization of the given series but before finding\n    min/max of the data points. This hook is useful for implementing data\n    transformations. \"datapoints\" contains the normalized data points in\n    a flat array as datapoints.points with the size of a single point\n    given in datapoints.pointsize. Here's a simple transform that\n    multiplies all y coordinates by 2:\n\n    ```js\n    function multiply(plot, series, datapoints) {\n        var points = datapoints.points, ps = datapoints.pointsize;\n        for (var i = 0; i < points.length; i += ps)\n            points[i + 1] *= 2;\n    }\n    ```\n\n    Note that you must leave datapoints in a good condition as Flot\n    doesn't check it or do any normalization on it afterwards.\n\n - processOffset  [phase 4]\n\n    ```function(plot, offset)```\n\n    Called after Flot has initialized the plot's offset, but before it\n    draws any axes or plot elements. This hook is useful for customizing\n    the margins between the grid and the edge of the canvas. \"offset\" is\n    an object with attributes \"top\", \"bottom\", \"left\" and \"right\",\n    corresponding to the margins on the four sides of the plot.\n\n - drawBackground [phase 5]\n\n    ```function(plot, canvascontext)```\n\n    Called before all other drawing operations. Used to draw backgrounds\n    or other custom elements before the plot or axes have been drawn.\n\n - drawSeries  [phase 5]\n\n    ```function(plot, canvascontext, series)```\n\n    Hook for custom drawing of a single series. Called just before the\n    standard drawing routine has been called in the loop that draws\n    each series.\n\n - draw  [phase 5]\n\n    ```function(plot, canvascontext)```\n\n    Hook for drawing on the canvas. Called after the grid is drawn\n    (unless it's disabled or grid.aboveData is set) and the series have\n    been plotted (in case any points, lines or bars have been turned\n    on). For examples of how to draw things, look at the source code.\n\n - bindEvents  [phase 6]\n\n    ```function(plot, eventHolder)```\n\n    Called after Flot has setup its event handlers. Should set any\n    necessary event handlers on eventHolder, a jQuery object with the\n    canvas, e.g.\n\n    ```js\n    function (plot, eventHolder) {\n        eventHolder.mousedown(function (e) {\n            alert(\"You pressed the mouse at \" + e.pageX + \" \" + e.pageY);\n        });\n    }\n    ```\n\n    Interesting events include click, mousemove, mouseup/down. You can\n    use all jQuery events. Usually, the event handlers will update the\n    state by drawing something (add a drawOverlay hook and call\n    triggerRedrawOverlay) or firing an externally visible event for\n    user code. See the crosshair plugin for an example.\n     \n    Currently, eventHolder actually contains both the static canvas\n    used for the plot itself and the overlay canvas used for\n    interactive features because some versions of IE get the stacking\n    order wrong. The hook only gets one event, though (either for the\n    overlay or for the static canvas).\n\n    Note that custom plot events generated by Flot are not generated on\n    eventHolder, but on the div placeholder supplied as the first\n    argument to the plot call. You can get that with\n    plot.getPlaceholder() - that's probably also the one you should use\n    if you need to fire a custom event.\n\n - drawOverlay  [phase 7]\n\n    ```function (plot, canvascontext)```\n\n    The drawOverlay hook is used for interactive things that need a\n    canvas to draw on. The model currently used by Flot works the way\n    that an extra overlay canvas is positioned on top of the static\n    canvas. This overlay is cleared and then completely redrawn\n    whenever something interesting happens. This hook is called when\n    the overlay canvas is to be redrawn.\n\n    \"canvascontext\" is the 2D context of the overlay canvas. You can\n    use this to draw things. You'll most likely need some of the\n    metrics computed by Flot, e.g. plot.width()/plot.height(). See the\n    crosshair plugin for an example.\n\n - shutdown  [phase 8]\n\n    ```function (plot, eventHolder)```\n\n    Run when plot.shutdown() is called, which usually only happens in\n    case a plot is overwritten by a new plot. If you're writing a\n    plugin that adds extra DOM elements or event handlers, you should\n    add a callback to clean up after you. Take a look at the section in\n    the [PLUGINS](PLUGINS.md) document for more info.\n\n   \n## Plugins ##\n\nPlugins extend the functionality of Flot. To use a plugin, simply\ninclude its Javascript file after Flot in the HTML page.\n\nIf you're worried about download size/latency, you can concatenate all\nthe plugins you use, and Flot itself for that matter, into one big file\n(make sure you get the order right), then optionally run it through a\nJavascript minifier such as YUI Compressor.\n\nHere's a brief explanation of how the plugin plumbings work:\n\nEach plugin registers itself in the global array $.plot.plugins. When\nyou make a new plot object with $.plot, Flot goes through this array\ncalling the \"init\" function of each plugin and merging default options\nfrom the \"option\" attribute of the plugin. The init function gets a\nreference to the plot object created and uses this to register hooks\nand add new public methods if needed.\n\nSee the [PLUGINS](PLUGINS.md) document for details on how to write a plugin. As the\nabove description hints, it's actually pretty easy.\n\n\n## Version number ##\n\nThe version number of Flot is available in ```$.plot.version```.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/CONTRIBUTING.md",
    "content": "## Contributing to Flot ##\n\nWe welcome all contributions, but following these guidelines results in less\nwork for us, and a faster and better response.\n\n### Issues ###\n\nIssues are not a way to ask general questions about Flot. If you see unexpected\nbehavior but are not 100% certain that it is a bug, please try posting to the\n[forum](http://groups.google.com/group/flot-graphs) first, and confirm that\nwhat you see is really a Flot problem before creating a new issue for it.  When\nreporting a bug, please include a working demonstration of the problem, if\npossible, or at least a clear description of the options you're using and the\nenvironment (browser and version, jQuery version, other libraries) that you're\nrunning under.\n\nIf you have suggestions for new features, or changes to existing ones, we'd\nlove to hear them! Please submit each suggestion as a separate new issue.\n\nIf you would like to work on an existing issue, please make sure it is not\nalready assigned to someone else. If an issue is assigned to someone, that\nperson has already started working on it. So, pick unassigned issues to prevent\nduplicated effort.\n\n### Pull Requests ###\n\nTo make merging as easy as possible, please keep these rules in mind:\n\n 1. Submit new features or architectural changes to the *&lt;version&gt;-work*\n    branch for the next major release.  Submit bug fixes to the master branch.\n\n 2. Divide larger changes into a series of small, logical commits with\n    descriptive messages.\n\n 3. Rebase, if necessary, before submitting your pull request, to reduce the\n    work we need to do to merge it.\n\n 4. Format your code according to the style guidelines below.\n\n### Flot Style Guidelines ###\n\nFlot follows the [jQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines),\nwith the following updates and exceptions:\n\n#### Spacing ####\n\nUse four-space indents, no tabs.  Do not add horizontal space around parameter\nlists, loop definitions, or array/object indices. For example:\n\n```js\n    for ( var i = 0; i < data.length; i++ ) {  // This block is wrong!\n        if ( data[ i ] > 1 ) {\n            data[ i ] = 2;\n        }\n    }\n\n    for (var i = 0; i < data.length; i++) {  // This block is correct!\n        if (data[i] > 1) {\n            data[i] = 2;\n        }\n    }\n```\n\n#### Comments ####\n\nUse [jsDoc](http://usejsdoc.org) comments for all file and function headers.\nUse // for all inline and block comments, regardless of length.\n\nAll // comment blocks should have an empty line above *and* below them. For\nexample:\n\n```js\n    var a = 5;\n\n    // We're going to loop here\n    // TODO: Make this loop faster, better, stronger!\n\n    for (var x = 0; x < 10; x++) {}\n```\n\n#### Wrapping ####\n\nBlock comments should be wrapped at 80 characters.\n\nCode should attempt to wrap at 80 characters, but may run longer if wrapping\nwould hurt readability more than having to scroll horizontally.  This is a\njudgement call made on a situational basis.\n\nStatements containing complex logic should not be wrapped arbitrarily if they\ndo not exceed 80 characters. For example:\n\n```js\n    if (a == 1 &&    // This block is wrong!\n        b == 2 &&\n        c == 3) {}\n\n    if (a == 1 && b == 2 && c == 3) {}  // This block is correct!\n```\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/FAQ.md",
    "content": "## Frequently asked questions ##\n\n#### How much data can Flot cope with? ####\n\nFlot will happily draw everything you send to it so the answer\ndepends on the browser. The excanvas emulation used for IE (built with\nVML) makes IE by far the slowest browser so be sure to test with that\nif IE users are in your target group (for large plots in IE, you can\nalso check out Flashcanvas which may be faster).\n\n1000 points is not a problem, but as soon as you start having more\npoints than the pixel width, you should probably start thinking about\ndownsampling/aggregation as this is near the resolution limit of the\nchart anyway. If you downsample server-side, you also save bandwidth.\n\n\n#### Flot isn't working when I'm using JSON data as source! ####\n\nActually, Flot loves JSON data, you just got the format wrong.\nDouble check that you're not inputting strings instead of numbers,\nlike [[\"0\", \"-2.13\"], [\"5\", \"4.3\"]]. This is most common mistake, and\nthe error might not show up immediately because Javascript can do some\nconversion automatically.\n\n\n#### Can I export the graph? ####\n\nYou can grab the image rendered by the canvas element used by Flot\nas a PNG or JPEG (remember to set a background). Note that it won't\ninclude anything not drawn in the canvas (such as the legend). And it\ndoesn't work with excanvas which uses VML, but you could try\nFlashcanvas.\n\n\n#### The bars are all tiny in time mode? ####\n\nIt's not really possible to determine the bar width automatically.\nSo you have to set the width with the barWidth option which is NOT in\npixels, but in the units of the x axis (or the y axis for horizontal\nbars). For time mode that's milliseconds so the default value of 1\nmakes the bars 1 millisecond wide.\n\n\n#### Can I use Flot with libraries like Mootools or Prototype? ####\n\nYes, Flot supports it out of the box and it's easy! Just use jQuery\ninstead of $, e.g. call jQuery.plot instead of $.plot and use\njQuery(something) instead of $(something). As a convenience, you can\nput in a DOM element for the graph placeholder where the examples and\nthe API documentation are using jQuery objects.\n\nDepending on how you include jQuery, you may have to add one line of\ncode to prevent jQuery from overwriting functions from the other\nlibraries, see the documentation in jQuery (\"Using jQuery with other\nlibraries\") for details.\n\n\n#### Flot doesn't work with [insert name of Javascript UI framework]! ####\n\nFlot is using standard HTML to make charts. If this is not working,\nit's probably because the framework you're using is doing something\nweird with the DOM or with the CSS that is interfering with Flot.\n\nA common problem is that there's display:none on a container until the\nuser does something. Many tab widgets work this way, and there's\nnothing wrong with it - you just can't call Flot inside a display:none\ncontainer as explained in the README so you need to hold off the Flot\ncall until the container is actually displayed (or use\nvisibility:hidden instead of display:none or move the container\noff-screen).\n\nIf you find there's a specific thing we can do to Flot to help, feel\nfree to submit a bug report. Otherwise, you're welcome to ask for help\non the forum/mailing list, but please don't submit a bug report to\nFlot.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/LICENSE.txt",
    "content": "Copyright (c) 2007-2014 IOLA and Ole Laursen\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/Makefile",
    "content": "# Makefile for generating minified files\n\n.PHONY: all\n\n# we cheat and process all .js files instead of an exhaustive list\nall: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js)))\n\n%.min.js: %.js\n\tyui-compressor $< -o $@\n\ntest:\n\t./node_modules/.bin/jshint *jquery.flot.js\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/NEWS.md",
    "content": "## Flot 0.8.3 ##\n\n### Changes ###\n\n- Updated example code to avoid encouraging unnecessary re-plots.\n  (patch by soenter, pull request #1221)\n\n### Bug fixes ###\n\n - Added a work-around to disable the allocation of extra space for first and\n   last axis ticks, allowing plots to span the full width of their container.\n   A proper solution for this bug will be implemented in the 0.9 release.\n   (reported by Josh Pigford and andig, issue #1212, pull request #1290)\n\n - Fixed a regression introduced in 0.8.1, where the last tick label would\n   sometimes wrap rather than extending the plot's offset to create space.\n   (reported by Elite Gamer, issue #1283)\n\n - Fixed a regression introduced in 0.8.2, where the resize plugin would use\n   unexpectedly high amounts of CPU even when idle.\n   (reported by tommie, issue #1277, pull request #1289)\n\n - Fixed the selection example to work with jQuery 1.9.x and later.\n   (reported by EGLadona and dmfalke, issue #1250, pull request #1285)\n\n - Added a detach shim to fix support for jQuery versions earlier than 1.4.x.\n   (reported by ngavard, issue #1240, pull request #1286)\n\n - Fixed a rare 'Uncaught TypeError' when using the resize plugin in IE 7/8.\n   (reported by tleish, issue #1265, pull request #1289)\n\n - Fixed zoom constraints to apply only in the direction of the zoom.\n   (patch by Neil Katin, issue #1204, pull request #1205)\n\n - Markings lines are no longer blurry when drawn on pixel boundaries.\n   (reported by btccointicker and Rouillard, issue #1210)\n\n - Don't discard original pie data-series values when combining slices.\n   (patch by Phil Tsarik, pull request #1238)\n\n - Fixed broken auto-scale behavior when using deprecated [x|y]2axis options.\n   (reported by jorese, issue #1228, pull request #1284)\n\n - Exposed the dateGenerator function on the plot object, as it used to be\n   before time-mode was moved into a separate plugin.\n   (patch by Paolo Valleri, pull request #1028)\n\n\n## Flot 0.8.2 ##\n\n### Changes ###\n\n - Added a plot.destroy method as a way to free memory when emptying the plot\n   placeholder and then re-using it for some other purpose.\n   (patch by Thodoris Greasidis, issue #1129, pull request #1130)\n\n - Added a table of contents and PLUGINS link to the API documentation.\n   (patches by Brian Peiris, pull requests #1064 and #1127)\n\n - Added Ruby code examples for time conversion.\n   (patch by Mike Połtyn, pull request #1182)\n\n - Minor improvements to API.md and README.md.\n   (patches by Patrik Ragnarsson, pull requests #1085 and #1086)\n\n - Updated inlined jQuery Resize to the latest version to fix errors.\n   (reported by Matthew Sabol and sloker, issues #997 ad #1081)\n\n### Bug fixes ###\n\n - Fixed an unexpected change in behavior that resulted in duplicate tick\n   labels when using a plugin, like flot-tickrotor, that overrode tick labels.\n   (patch by Mark Cote, pull request #1091)\n\n - Fixed a regression from 0.7 where axis labels were given the wrong width,\n   causing them to overlap at certain scales and ignore the labelWidth option.\n   (patch by Benjamin Gram, pull request #1177)\n\n - Fixed a bug where the second axis in an xaxes/yaxes array incorrectly had\n   its 'innermost' property set to false or undefined, even if it was on the\n   other side of the plot from the first axis. This resulted in the axis bar\n   being visible when it shouldn't have been, which was especially obvious\n   when the grid had a left/right border width of zero.\n   (reported by Teq1, fix researched by ryleyb, issue #1056)\n\n - Fixed an error when using a placeholder that has no font-size property.\n   (patch by Craig Oldford, pull request #1135)\n\n - Fixed a regression from 0.7 where nulls at the end of a series were ignored\n   for purposes of determing the range of the x-axis.\n   (reported by Munsifali Rashid, issue #1095)\n\n - If a font size is provided, base the default lineHeight on that size rather\n   that the font size of the plot placeholder, which may be very different.\n   (reported by Daniel Hoffmann Bernardes, issue #1131, pull request #1199)\n\n - Fix broken highlighting for right-aligned bars.\n   (reported by BeWiBu and Mihai Stanciu, issues #975 and #1093, with further\n   assistance by Eric Byers, pull request #1120)\n\n - Prevent white circles from sometimes showing up inside of pie charts.\n   (reported by Pierre Dubois and Jack Klink, issues #1128 and #1073)\n\n - Label formatting no longer breaks when a page contains multiple pie charts.\n   (reported by Brend Wanders, issue #1055)\n\n - When using multiple axes on opposite sides of the plot, the innermost axis\n   coming later in the list no longer has its bar drawn incorrectly.\n   (reported by ryleyb, issue #1056)\n\n - When removing series labels and redrawing the plot, the legend now updates\n   correctly even when using an external container.\n   (patch by Luis Silva, issue #1159, pull request #1160)\n\n - The pie plugin no longer ignores the value of the left offset option.\n   (reported by melanker, issue #1136)\n\n - Fixed a regression from 0.7, where extra padding was added unnecessarily to\n   sides of the plot where there was no last tick label.\n   (reported by sknob001, issue #1048, pull request #1200)\n\n - Fixed incorrect tooltip behavior in the interacting example.\n   (patch by cleroux, issue #686, pull request #1074)\n\n - Fixed an error in CSS color extraction with elements outside the DOM.\n   (patch by execjosh, pull request #1084)\n\n - Fixed :not selector error when using jQuery without Sizzle.\n   (patch by Anthony Ryan, pull request #1180)\n\n - Worked around a browser issue that caused bars to appear un-filled.\n   (reported by irbian, issue #915)\n\n## Flot 0.8.1 ##\n\n### Bug fixes ###\n\n - Fixed a regression in the time plugin, introduced in 0.8, that caused dates\n   to align to the minute rather than to the highest appropriate unit. This\n   caused many x-axes in 0.8 to have different ticks than they did in 0.7.\n   (reported by Tom Sheppard, patch by Daniel Shapiro, issue #1017, pull\n   request #1023)\n\n - Fixed a regression in text rendering, introduced in 0.8, that caused axis\n   labels with the same text as another label on the same axis to disappear.\n   More generally, it's again possible to have the same text in two locations.\n   (issue #1032)\n\n - Fixed a regression in text rendering, introduced in 0.8, where axis labels\n   were no longer assigned an explicit width, and their text could not wrap.\n   (reported by sabregreen, issue #1019)\n\n - Fixed a regression in the pie plugin, introduced in 0.8, that prevented it\n   from accepting data in the format '[[x, y]]'.\n   (patch by Nicolas Morel, pull request #1024)\n\n - The 'zero' series option and 'autoscale' format option are no longer\n   ignored when the series contains a null value.\n   (reported by Daniel Shapiro, issue #1033)\n\n - Avoid triggering the time-mode plugin exception when there are zero series.\n   (reported by Daniel Rothig, patch by Mark Raymond, issue #1016)\n\n - When a custom color palette has fewer colors than the default palette, Flot\n   no longer fills out the colors with the remainder of the default.\n   (patch by goorpy, issue #1031, pull request #1034)\n\n - Fixed missing update for bar highlights after a zoom or other redraw.\n   (reported by Paolo Valleri, issue #1030)\n\n - Fixed compatibility with jQuery versions earlier than 1.7.\n   (patch by Lee Willis, issue #1027, pull request #1027)\n\n - The mouse wheel no longer scrolls the page when using the navigate plugin.\n   (patch by vird, pull request #1020)\n\n - Fixed missing semicolons in the core library.\n   (reported by Michal Zglinski)\n\n\n## Flot 0.8.0 ##\n\n### API changes ###\n\nSupport for time series has been moved into a plugin, jquery.flot.time.js.\nThis results in less code if time series are not used. The functionality\nremains the same (plus timezone support, as described below); however, the\nplugin must be included if axis.mode is set to \"time\".\n\nWhen the axis mode is \"time\", the axis option \"timezone\" can be set to null,\n\"browser\", or a particular timezone (e.g. \"America/New_York\") to control how\nthe dates are displayed. If null, the dates are displayed as UTC. If\n\"browser\", the dates are displayed in the time zone of the user's browser.\n\nDate/time formatting has changed and now follows a proper subset of the\nstandard strftime specifiers, plus one nonstandard specifier for quarters.\nAdditionally, if a strftime function is found in the Date object's prototype,\nit will be used instead of the built-in formatter.\n\nAxis tick labels now use the class 'flot-tick-label' instead of 'tickLabel'.\nThe text containers  for each axis now use the classes 'flot-[x|y]-axis' and\n'flot-[x|y]#-axis' instead of '[x|y]Axis' and '[x|y]#Axis'. For compatibility\nwith Flot 0.7 and earlier text will continue to use the old classes as well,\nbut they are considered deprecated and will be removed in a future version.\n\nIn previous versions the axis 'color' option was used to set the color of tick\nmarks and their label text. It now controls the color of the axis line, which\npreviously could not be changed separately, and continues to act as a default\nfor the tick-mark color.  The color of tick label text is now set either by\noverriding the 'flot-tick-label' CSS rule or via the axis 'font' option.\n\nA new plugin, jquery.flot.canvas.js, allows axis tick labels to be rendered\ndirectly to the canvas, rather than using HTML elements. This feature can be\ntoggled with a simple option, making it easy to create interactive plots in the\nbrowser using HTML, then re-render them to canvas for export as an image.\n\nThe plugin tries to remain as faithful as possible to the original HTML render,\nand goes so far as to automatically extract styles from CSS, to avoid having to\nprovide a separate set of styles when rendering to canvas. Due to limitations\nof the canvas text API, the plugin cannot reproduce certain features, including\nHTML markup embedded in labels, and advanced text styles such as 'em' units.\n\nThe plugin requires support for canvas text, which may not be present in some\nolder browsers, even if they support the canvas tag itself. To use the plugin\nwith these browsers try using a shim such as canvas-text or FlashCanvas.\n\nThe base and overlay canvas are now using the CSS classes \"flot-base\" and\n\"flot-overlay\" to prevent accidental clashes (issue 540).\n\n### Changes ###\n\n - Addition of nonstandard %q specifier to date/time formatting. (patch\n   by risicle, issue 49)\n\n - Date/time formatting follows proper subset of strftime specifiers, and\n   support added for Date.prototype.strftime, if found. (patch by Mark Cote,\n   issues 419 and 558)\n\n - Fixed display of year ticks. (patch by Mark Cote, issue 195)\n\n - Support for time series moved to plugin. (patch by Mark Cote)\n\n - Display time series in different time zones. (patch by Knut Forkalsrud,\n   issue 141)\n\n - Added a canvas plugin to enable rendering axis tick labels to the canvas.\n   (sponsored by YCharts.com, implementation by Ole Laursen and David Schnur)\n\n - Support for setting the interval between redraws of the overlay canvas with\n   redrawOverlayInterval. (suggested in issue 185)\n\n - Support for multiple thresholds in thresholds plugin. (patch by Arnaud\n   Bellec, issue 523)\n\n - Support for plotting categories/textual data directly with new categories\n   plugin.\n\n - Tick generators now get the whole axis rather than just min/max.\n\n - Added processOffset and drawBackground hooks. (suggested in issue 639)\n\n - Added a grid \"margin\" option to set the space between the canvas edge and\n   the grid.\n\n - Prevent the pie example page from generating single-slice pies. (patch by\n   Shane Reustle)\n\n - In addition to \"left\" and \"center\", bars now recognize \"right\" as an\n   alignment option. (patch by Michael Mayer, issue 520)\n\n - Switched from toFixed to a much faster default tickFormatter. (patch by\n   Clemens Stolle)\n\n - Added to a more helpful error when using a time-mode axis without including\n   the flot.time plugin. (patch by Yael Elmatad)\n\n - Added a legend \"sorted\" option to control sorting of legend entries\n   independent of their series order. (patch by Tom Cleaveland)\n\n - Added a series \"highlightColor\" option to control the color of the\n   translucent overlay that identifies the dataset when the mouse hovers over\n   it. (patch by Eric Wendelin and Nate Abele, issues 168 and 299)\n\n - Added a plugin jquery.flot.errorbars, with an accompanying example, that\n   adds the ability to plot error bars, commonly used in many kinds of\n   statistical data visualizations. (patch by Rui Pereira, issue 215)\n\n - The legend now omits entries whose labelFormatter returns null.  (patch by\n   Tom Cleaveland, Christopher Lambert, and Simon Strandgaard)\n\n - Added support for high pixel density (retina) displays, resulting in much\n   crisper charts on such devices. (patch by Olivier Guerriat, additional\n   fixes by Julien Thomas, maimairel, and Lau Bech Lauritzen)\n\n - Added the ability to control pie shadow position and alpha via a new pie\n   'shadow' option. (patch by Julien Thomas, pull request #78)\n\n - Added the ability to set width and color for individual sides of the grid.\n   (patch by Ara Anjargolian, additional fixes by Karl Swedberg, pull requests #855\n   and #880)\n\n - The selection plugin's getSelection now returns null when the selection\n   has been cleared. (patch by Nick Campbell, pull request #852)\n\n - Added a new option called 'zero' to bars and filled lines series, to control\n   whether the y-axis minimum is scaled to fit the data or set to zero.\n   (patch by David Schnur, issues #316, #529, and #856, pull request #911)\n\n - The plot function is now also a jQuery chainable property.\n   (patch by David Schnur, issues #734 and #816, pull request #953)\n\n - When only a single pie slice is beneath the combine threshold it is no longer\n   replaced by an 'other' slice. (suggested by Devin Bayer, issue #638)\n\n - Added lineJoin and minSize options to the selection plugin to control the\n   corner style and minimum size of the selection, respectively.\n   (patch by Ruth Linehan, pull request #963)\n\n### Bug fixes ###\n\n - Fix problem with null values and pie plugin. (patch by gcruxifix,\n   issue 500)\n\n - Fix problem with threshold plugin and bars. (based on patch by\n   kaarlenkaski, issue 348)\n\n - Fix axis box calculations so the boxes include the outermost part of the\n   labels too.\n\n - Fix problem with event clicking and hovering in IE 8 by updating Excanvas\n   and removing previous work-around. (test case by Ara Anjargolian)\n\n - Fix issues with blurry 1px border when some measures aren't integer.\n   (reported by Ara Anjargolian)\n\n - Fix bug with formats in the data processor. (reported by Peter Hull,\n   issue 534)\n\n - Prevent i from being declared global in extractRange. (reported by\n   Alexander Obukhov, issue 627)\n\n - Throw errors in a more cross-browser-compatible manner. (patch by\n   Eddie Kay)\n\n - Prevent pie slice outlines from being drawn when the stroke width is zero.\n   (reported by Chris Minett, issue 585)\n\n - Updated the navigate plugin's inline copy of jquery.mousewheel to fix\n   Webkit zoom problems. (reported by Hau Nguyen, issue 685)\n\n - Axis labels no longer appear as decimals rather than integers in certain\n   cases. (patch by Clemens Stolle, issue 541)\n\n - Automatic color generation no longer produces only whites and blacks when\n   there are many series. (patch by David Schnur and Tom Cleaveland)\n\n - Fixed an error when custom tick labels weren't provided as strings. (patch\n   by Shad Downey)\n\n - Prevented the local insertSteps and fmt variables from becoming global.\n   (first reported by Marc Bennewitz and Szymon Barglowski, patch by Nick\n   Campbell, issues #825 and #831, pull request #851)\n\n - Prevented several threshold plugin variables from becoming global. (patch\n   by Lasse Dahl Ebert)\n\n - Fixed various jQuery 1.8 compatibility issues. (issues #814 and #819,\n   pull request #877)\n\n - Pie charts with a slice equal to or approaching 100% of the pie no longer\n   appear invisible. (patch by David Schnur, issues #444, #658, #726, #824\n   and #850, pull request #879)\n\n - Prevented several local variables from becoming global. (patch by aaa707)\n\n - Ensure that the overlay and primary canvases remain aligned. (issue #670,\n   pull request #901)\n\n - Added support for jQuery 1.9 by removing and replacing uses of $.browser.\n   (analysis and patch by Anthony Ryan, pull request #905)\n\n - Pie charts no longer disappear when redrawn during a resize or update.\n   (reported by Julien Bec, issue #656, pull request #910)\n\n - Avoided floating-point precision errors when calculating pie percentages.\n   (patch by James Ward, pull request #918)\n\n - Fixed compatibility with jQuery 1.2.6, which has no 'mouseleave' shortcut.\n   (reported by Bevan, original pull request #920, replaced by direct patch)\n\n - Fixed sub-pixel rendering issues with crosshair and selection lines.\n   (patches by alanayoub and Daniel Shapiro, pull requests #17 and #925)\n\n - Fixed rendering issues when using the threshold plugin with several series.\n   (patch by Ivan Novikov, pull request #934)\n\n - Pie charts no longer disappear when redrawn after calling setData().\n   (reported by zengge1984 and pareeohnos, issues #810 and #945)\n\n - Added a work-around for the problem where points with a lineWidth of zero\n   still showed up with a visible line. (reported by SalvoSav, issue #842,\n   patch by Jamie Hamel-Smith, pull request #937)\n\n - Pie charts now accept values in string form, like other plot types.\n   (reported by laerdal.no, issue #534)\n\n - Avoid rounding errors in the threshold plugin.\n   (reported by jerikojerk, issue #895)\n\n - Fixed an error when using the navigate plugin with jQuery 1.9.x or later.\n   (reported by Paolo Valleri, issue #964)\n\n - Fixed inconsistencies between the highlight and unhighlight functions.\n   (reported by djamshed, issue #987)\n\n - Fixed recalculation of tickSize and tickDecimals on calls to setupGrid.\n   (patch by thecountofzero, pull request #861, issues #860, #1000)\n\n\n## Flot 0.7 ##\n\n### API changes ###\n\nMultiple axes support. Code using dual axes should be changed from using\nx2axis/y2axis in the options to using an array (although backwards-\ncompatibility hooks are in place). For instance,\n\n```js\n{\n    xaxis: { ... }, x2axis: { ... },\n    yaxis: { ... }, y2axis: { ... }\n}\n```\n\nbecomes\n\n```js\n{\n    xaxes: [ { ... }, { ... } ],\n    yaxes: [ { ... }, { ... } ]\n}\n```\n\nNote that if you're just using one axis, continue to use the xaxis/yaxis\ndirectly (it now sets the default settings for the arrays). Plugins touching\nthe axes must be ported to take the extra axes into account, check the source\nto see some examples.\n\nA related change is that the visibility of axes is now auto-detected. So if\nyou were relying on an axis to show up even without any data in the chart, you\nnow need to set the axis \"show\" option explicitly.\n\n\"tickColor\" on the grid options is now deprecated in favour of a corresponding\noption on the axes, so:\n\n```js\n{ grid: { tickColor: \"#000\" }}\n```\n\nbecomes\n\n```js\n{ xaxis: { tickColor: \"#000\"}, yaxis: { tickColor: \"#000\"} }\n```\n\nBut if you just configure a base color Flot will now autogenerate a tick color\nby adding transparency. Backwards-compatibility hooks are in place.\n\nFinal note: now that IE 9 is coming out with canvas support, you may want to\nadapt the excanvas include to skip loading it in IE 9 (the examples have been\nadapted thanks to Ryley Breiddal). An alternative to excanvas using Flash has\nalso surfaced, if your graphs are slow in IE, you may want to give it a spin:\n\n    http://code.google.com/p/flashcanvas/\n\n### Changes ###\n\n - Support for specifying a bottom for each point for line charts when filling\n   them, this means that an arbitrary bottom can be used instead of just the x\n   axis. (based on patches patiently provided by Roman V. Prikhodchenko)\n\n - New fillbetween plugin that can compute a bottom for a series from another\n   series, useful for filling areas between lines.\n\n   See new example percentiles.html for a use case.\n\n - More predictable handling of gaps for the stacking plugin, now all\n   undefined ranges are skipped.\n\n - Stacking plugin can stack horizontal bar charts.\n\n - Navigate plugin now redraws the plot while panning instead of only after\n   the fact. (raised by lastthemy, issue 235)\n\n   Can be disabled by setting the pan.frameRate option to null.\n\n - Date formatter now accepts %0m and %0d to get a zero-padded month or day.\n   (issue raised by Maximillian Dornseif)\n\n - Revamped internals to support an unlimited number of axes, not just dual.\n   (sponsored by Flight Data Services, www.flightdataservices.com)\n\n - New setting on axes, \"tickLength\", to control the size of ticks or turn\n   them off without turning off the labels.\n\n - Axis labels are now put in container divs with classes, for instance labels\n   in the x axes can be reached via \".xAxis .tickLabel\".\n\n - Support for setting the color of an axis. (sponsored by Flight Data\n   Services, www.flightdataservices.com)\n\n - Tick color is now auto-generated as the base color with some transparency,\n   unless you override it.\n\n - Support for aligning ticks in the axes with \"alignTicksWithAxis\" to ensure\n   that they appear next to each other rather than in between, at the expense\n   of possibly awkward tick steps. (sponsored by Flight Data Services,\n   www.flightdataservices.com)\n\n - Support for customizing the point type through a callback when plotting\n   points and new symbol plugin with some predefined point types. (sponsored\n   by Utility Data Corporation)\n\n - Resize plugin for automatically redrawing when the placeholder changes\n   size, e.g. on window resizes. (sponsored by Novus Partners)\n\n   A resize() method has been added to plot object facilitate this.\n\n - Support Infinity/-Infinity for plotting asymptotes by hacking it into\n   +/-Number.MAX_VALUE. (reported by rabaea.mircea)\n\n - Support for restricting navigate plugin to not pan/zoom an axis. (based on\n   patch by kkaefer)\n\n - Support for providing the drag cursor for the navigate plugin as an option.\n   (based on patch by Kelly T. Moore)\n\n - Options for controlling whether an axis is shown or not (suggestion by Timo\n   Tuominen) and whether to reserve space for it even if it isn't shown.\n\n - New attribute $.plot.version with the Flot version as a string.\n\n - The version comment is now included in the minified jquery.flot.min.js.\n\n - New options.grid.minBorderMargin for adjusting the minimum margin provided\n   around the border (based on patch by corani, issue 188).\n\n - Refactor replot behaviour so Flot tries to reuse the existing canvas,\n   adding shutdown() methods to the plot. (based on patch by Ryley Breiddal,\n   issue 269)\n   \n   This prevents a memory leak in Chrome and hopefully makes replotting faster\n   for those who are using $.plot instead of .setData()/.draw(). Also update\n   jQuery to 1.5.1 to prevent IE leaks fixed in jQuery.\n\n - New real-time line chart example.\n\n - New hooks: drawSeries, shutdown.\n\n### Bug fixes ###\n\n - Fixed problem with findNearbyItem and bars on top of each other. (reported\n   by ragingchikn, issue 242)\n\n - Fixed problem with ticks and the border. (based on patch from\n   ultimatehustler69, issue 236)\n\n - Fixed problem with plugins adding options to the series objects.\n\n - Fixed a problem introduced in 0.6 with specifying a gradient with:\n\n   ```{brightness: x, opacity: y }```\n\n - Don't use $.browser.msie, check for getContext on the created canvas element\n   instead and try to use excanvas if it's not found.\n\n   Fixes IE 9 compatibility.\n\n - highlight(s, index) was looking up the point in the original s.data instead\n   of in the computed datapoints array, which breaks with plugins that modify\n   the datapoints, such as the stacking plugin. (reported by curlypaul924,\n   issue 316)\n\n - More robust handling of axis from data passed in from getData(). (reported)\n   by Morgan)\n\n - Fixed problem with turning off bar outline. (fix by Jordi Castells,\n   issue 253)\n\n - Check the selection passed into setSelection in the selection\n   plugin, to guard against errors when synchronizing plots (fix by Lau\n   Bech Lauritzen).\n\n - Fix bug in crosshair code with mouseout resetting the crosshair even\n   if it is locked (fix by Lau Bech Lauritzen and Banko Adam).\n\n - Fix bug with points plotting using line width from lines rather than\n   points.\n\n - Fix bug with passing non-array 0 data (for plugins that don't expect\n   arrays, patch by vpapp1).\n\n - Fix errors in JSON in examples so they work with jQuery 1.4.2\n   (fix reported by honestbleeps, issue 357).\n\n - Fix bug with tooltip in interacting.html, this makes the tooltip\n   much smoother (fix by bdkahn). Fix related bug inside highlighting\n   handler in Flot.\n\n - Use closure trick to make inline colorhelpers plugin respect\n   jQuery.noConflict(true), renaming the global jQuery object (reported\n   by Nick Stielau).\n\n - Listen for mouseleave events and fire a plothover event with empty\n   item when it occurs to drop highlights when the mouse leaves the\n   plot (reported by by outspirit).\n\n - Fix bug with using aboveData with a background (reported by\n   amitayd).\n\n - Fix possible excanvas leak (report and suggested fix by tom9729).\n\n - Fix bug with backwards compatibility for shadowSize = 0 (report and\n   suggested fix by aspinak).\n\n - Adapt examples to skip loading excanvas (fix by Ryley Breiddal).\n\n - Fix bug that prevent a simple f(x) = -x transform from working\n   correctly (fix by Mike, issue 263).\n\n - Fix bug in restoring cursor in navigate plugin (reported by Matteo\n   Gattanini, issue 395).\n\n - Fix bug in picking items when transform/inverseTransform is in use\n   (reported by Ofri Raviv, and patches and analysis by Jan and Tom\n   Paton, issue 334 and 467).\n\n - Fix problem with unaligned ticks and hover/click events caused by\n   padding on the placeholder by hardcoding the placeholder padding to\n   0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some\n   other people, issue 301).\n\n - Update colorhelpers plugin to avoid dying when trying to parse an\n   invalid string (reported by cadavor, issue 483).\n\n\n\n## Flot 0.6 ##\n\n### API changes ###\n\nSelection support has been moved to a plugin. Thus if you're passing\nselection: { mode: something }, you MUST include the file\njquery.flot.selection.js after jquery.flot.js. This reduces the size of\nbase Flot and makes it easier to customize the selection as well as\nimproving code clarity. The change is based on a patch from andershol.\n\nIn the global options specified in the $.plot command, \"lines\", \"points\",\n\"bars\" and \"shadowSize\" have been moved to a sub-object called \"series\":\n\n```js\n$.plot(placeholder, data, { lines: { show: true }})\n```\n\nshould be changed to\n\n```js\n  $.plot(placeholder, data, { series: { lines: { show: true }}})\n```\n\nAll future series-specific options will go into this sub-object to\nsimplify plugin writing. Backward-compatibility code is in place, so\nold code should not break.\n\n\"plothover\" no longer provides the original data point, but instead a\nnormalized one, since there may be no corresponding original point.\n\nDue to a bug in previous versions of jQuery, you now need at least\njQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some improvements\nin event handling speed.\n\n## Changes ##\n\n - Added support for disabling interactivity for specific data series.\n   (request from Ronald Schouten and Steve Upton)\n\n - Flot now calls $() on the placeholder and optional legend container passed\n   in so you can specify DOM elements or CSS expressions to make it easier to\n   use Flot with libraries like Prototype or Mootools or through raw JSON from\n   Ajax responses.\n\n - A new \"plotselecting\" event is now emitted while the user is making a\n   selection.\n\n - The \"plothover\" event is now emitted immediately instead of at most 10\n   times per second, you'll have to put in a setTimeout yourself if you're\n   doing something really expensive on this event.\n\n - The built-in date formatter can now be accessed as $.plot.formatDate(...)\n   (suggestion by Matt Manela) and even replaced.\n\n - Added \"borderColor\" option to the grid. (patches from Amaury Chamayou and\n   Mike R. Williamson)\n\n - Added support for gradient backgrounds for the grid. (based on patch from\n   Amaury Chamayou, issue 90)\n\n   The \"setting options\" example provides a demonstration.\n\n - Gradient bars. (suggestion by stefpet)\n  \n - Added a \"plotunselected\" event which is triggered when the selection is\n   removed, see \"selection\" example. (suggestion by Meda Ugo)\n\n - The option legend.margin can now specify horizontal and vertical margins\n   independently. (suggestion by someone who's annoyed)\n\n - Data passed into Flot is now copied to a new canonical format to enable\n   further processing before it hits the drawing routines. As a side-effect,\n   this should make Flot more robust in the face of bad data. (issue 112)\n\n - Step-wise charting: line charts have a new option \"steps\" that when set to\n   true connects the points with horizontal/vertical steps instead of diagonal\n   lines.\n\n - The legend labelFormatter now passes the series in addition to just the\n   label. (suggestion by Vincent Lemeltier)\n\n - Horizontal bars (based on patch by Jason LeBrun).\n\n - Support for partial bars by specifying a third coordinate, i.e. they don't\n   have to start from the axis. This can be used to make stacked bars.\n\n - New option to disable the (grid.show).\n\n - Added pointOffset method for converting a point in data space to an offset\n   within the placeholder.\n  \n - Plugin system: register an init method in the $.flot.plugins array to get\n   started, see PLUGINS.txt for details on how to write plugins (it's easy).\n   There are also some extra methods to enable access to internal state.\n\n - Hooks: you can register functions that are called while Flot is crunching\n   the data and doing the plot. This can be used to modify Flot without\n   changing the source, useful for writing plugins. Some hooks are defined,\n   more are likely to come.\n  \n - Threshold plugin: you can set a threshold and a color, and the data points\n   below that threshold will then get the color. Useful for marking data\n   below 0, for instance.\n\n - Stack plugin: you can specify a stack key for each series to have them\n   summed. This is useful for drawing additive/cumulative graphs with bars and\n   (currently unfilled) lines.\n\n - Crosshairs plugin: trace the mouse position on the axes, enable with\n   crosshair: { mode: \"x\"} (see the new tracking example for a use).\n\n - Image plugin: plot prerendered images.\n\n - Navigation plugin for panning and zooming a plot.\n\n - More configurable grid.\n\n - Axis transformation support, useful for non-linear plots, e.g. log axes and\n   compressed time axes (like omitting weekends).\n\n - Support for twelve-hour date formatting (patch by Forrest Aldridge).\n\n - The color parsing code in Flot has been cleaned up and split out so it's\n   now available as a separate jQuery plugin. It's included inline in the Flot\n   source to make dependency managing easier. This also makes it really easy\n   to use the color helpers in Flot plugins.\n\n## Bug fixes ##\n\n - Fixed two corner-case bugs when drawing filled curves. (report and analysis\n   by Joshua Varner)\n\n - Fix auto-adjustment code when setting min to 0 for an axis where the\n   dataset is completely flat on that axis. (report by chovy)\n\n - Fixed a bug with passing in data from getData to setData when the secondary\n   axes are used. (reported by nperelman, issue 65)\n\n - Fixed so that it is possible to turn lines off when no other chart type is\n   shown (based on problem reported by Glenn Vanderburg), and fixed so that\n   setting lineWidth to 0 also hides the shadow. (based on problem reported by\n   Sergio Nunes)\n\n - Updated mousemove position expression to the latest from jQuery. (reported\n   by meyuchas)\n\n - Use CSS borders instead of background in legend. (issues 25 and 45)\n\n - Explicitly convert axis min/max to numbers.\n\n - Fixed a bug with drawing marking lines with different colors. (reported by\n   Khurram)\n\n - Fixed a bug with returning y2 values in the selection event. (fix by\n   exists, issue 75)\n\n - Only set position relative on placeholder if it hasn't already a position\n   different from static. (reported by kyberneticist, issue 95)\n\n - Don't round markings to prevent sub-pixel problems. (reported by\n   Dan Lipsitt)\n\n - Make the grid border act similarly to a regular CSS border, i.e. prevent\n   it from overlapping the plot itself. This also fixes a problem with anti-\n   aliasing when the width is 1 pixel. (reported by Anthony Ettinger)\n\n - Imported version 3 of excanvas and fixed two issues with the newer version.\n   Hopefully, this will make Flot work with IE8. (nudge by Fabien Menager,\n   further analysis by Booink, issue 133)\n\n - Changed the shadow code for lines to hopefully look a bit better with\n   vertical lines.\n\n - Round tick positions to avoid possible problems with fractions. (suggestion\n   by Fred, issue 130)\n\n - Made the heuristic for determining how many ticks to aim for a bit smarter.\n\n - Fix for uneven axis margins (report and patch by Paul Kienzle) and snapping\n   to ticks. (report and patch by lifthrasiir)\n\n - Fixed bug with slicing in findNearbyItems. (patch by zollman)\n\n - Make heuristic for x axis label widths more dynamic. (patch by\n   rickinhethuis)\n\n - Make sure points on top take precedence when finding nearby points when\n   hovering. (reported by didroe, issue 224)\n\n\n\n## Flot 0.5 ##\n\nTimestamps are now in UTC. Also \"selected\" event -> becomes \"plotselected\"\nwith new data, the parameters for setSelection are now different (but\nbackwards compatibility hooks are in place), coloredAreas becomes markings\nwith a new interface (but backwards compatibility hooks are in place).\n\n### API changes ###\n\nTimestamps in time mode are now displayed according to UTC instead of the time\nzone of the visitor. This affects the way the timestamps should be input;\nyou'll probably have to offset the timestamps according to your local time\nzone. It also affects any custom date handling code (which basically now\nshould use the equivalent UTC date mehods, e.g. .setUTCMonth() instead of\n.setMonth().\n\nMarkings, previously coloredAreas, are now specified as ranges on the axes,\nlike ```{ xaxis: { from: 0, to: 10 }}```. Furthermore with markings you can\nnow draw horizontal/vertical lines by setting from and to to the same\ncoordinate. (idea from line support patch by by Ryan Funduk)\n\nInteractivity: added a new \"plothover\" event and this and the \"plotclick\"\nevent now returns the closest data item (based on patch by /david, patch by\nMark Byers for bar support). See the revamped \"interacting with the data\"\nexample for some hints on what you can do.\n\nHighlighting: you can now highlight points and datapoints are autohighlighted\nwhen you hover over them (if hovering is turned on).\n\nSupport for dual axis has been added (based on patch by someone who's annoyed\nand /david). For each data series you can specify which axes it belongs to,\nand there are two more axes, x2axis and y2axis, to customize. This affects the\n\"selected\" event which has been renamed to \"plotselected\" and spews out\n```{ xaxis: { from: -10, to: 20 } ... },``` setSelection in which the\nparameters are on a new form (backwards compatible hooks are in place so old\ncode shouldn't break) and markings (formerly coloredAreas).\n\n## Changes ##\n\n - Added support for specifying the size of tick labels (axis.labelWidth,\n   axis.labelHeight). Useful for specifying a max label size to keep multiple\n   plots aligned.\n\n - The \"fill\" option can now be a number that specifies the opacity of the\n   fill.\n\n - You can now specify a coordinate as null (like [2, null]) and Flot will\n   take the other coordinate into account when scaling the axes. (based on\n   patch by joebno)\n\n - New option for bars \"align\". Set it to \"center\" to center the bars on the\n   value they represent.\n\n - setSelection now takes a second parameter which you can use to prevent the\n   method from firing the \"plotselected\" handler. \n\n - Improved the handling of axis auto-scaling with bars. \n\n## Bug fixes ##\n\n - Fixed a bug in calculating spacing around the plot. (reported by\n   timothytoe)\n\n - Fixed a bug in finding max values for all-negative data sets.\n \n - Prevent the possibility of eternal looping in tick calculations.\n\n - Fixed a bug when borderWidth is set to 0. (reported by Rob/sanchothefat)\n\n - Fixed a bug with drawing bars extending below 0. (reported by James Hewitt,\n   patch by Ryan Funduk).\n\n - Fixed a bug with line widths of bars. (reported by MikeM)\n\n - Fixed a bug with 'nw' and 'sw' legend positions.\n\n - Fixed a bug with multi-line x-axis tick labels. (reported by Luca Ciano,\n   IE-fix help by Savage Zhang)\n\n - Using the \"container\" option in legend now overwrites the container element\n   instead of just appending to it, fixing the infinite legend bug. (reported\n   by several people, fix by Brad Dewey)\n\n\n\n## Flot 0.4 ##\n\n### API changes ###\n\nDeprecated axis.noTicks in favor of just specifying the number as axis.ticks.\nSo ```xaxis: { noTicks: 10 }``` becomes ```xaxis: { ticks: 10 }```.\n\nTime series support. Specify axis.mode: \"time\", put in Javascript timestamps\nas data, and Flot will automatically spit out sensible ticks. Take a look at\nthe two new examples. The format can be customized with axis.timeformat and\naxis.monthNames, or if that fails with axis.tickFormatter.\n\nSupport for colored background areas via grid.coloredAreas. Specify an array\nof { x1, y1, x2, y2 } objects or a function that returns these given\n{ xmin, xmax, ymin, ymax }.\n\nMore members on the plot object (report by Chris Davies and others).\n\"getData\" for inspecting the assigned settings on data series (e.g. color) and\n\"setData\", \"setupGrid\" and \"draw\" for updating the contents without a total\nreplot.\n\nThe default number of ticks to aim for is now dependent on the size of the\nplot in pixels. Support for customizing tick interval sizes directly with\naxis.minTickSize and axis.tickSize.\n\nCleaned up the automatic axis scaling algorithm and fixed how it interacts\nwith ticks. Also fixed a couple of tick-related corner case bugs (one reported\nby mainstreetmark, another reported by timothytoe).\n\nThe option axis.tickFormatter now takes a function with two parameters, the\nsecond parameter is an optional object with information about the axis. It has\nmin, max, tickDecimals, tickSize.\n\n## Changes ##\n\n - Added support for segmented lines. (based on patch from Michael MacDonald)\n\n - Added support for ignoring null and bad values. (suggestion from Nick\n   Konidaris and joshwaihi)\n\n - Added support for changing the border width. (thanks to joebno and safoo)\n\n - Label colors can be changed via CSS by selecting the tickLabel class.\n\n## Bug fixes ##\n\n - Fixed a bug in handling single-item bar series. (reported by Emil Filipov)\n\n - Fixed erratic behaviour when interacting with the plot with IE 7. (reported\n   by Lau Bech Lauritzen).\n\n - Prevent IE/Safari text selection when selecting stuff on the canvas.\n\n\n\n## Flot 0.3 ##\n\nThis is mostly a quick-fix release because jquery.js wasn't included in the\nprevious zip/tarball.\n\n## Changes ##\n\n - Include jquery.js in the zip/tarball.\n\n - Support clicking on the plot. Turn it on with grid: { clickable: true },\n   then you get a \"plotclick\" event on the graph placeholder with the position\n   in units of the plot.\n\n## Bug fixes ##\n\n - Fixed a bug in dealing with data where min = max. (thanks to Michael\n   Messinides)\n\n\n\n## Flot 0.2 ##\n\nThe API should now be fully documented.\n\n### API changes ###\n\nMoved labelMargin option to grid from x/yaxis.\n\n## Changes ##\n\n - Added support for putting a background behind the default legend. The\n   default is the partly transparent background color. Added backgroundColor\n   and backgroundOpacity to the legend options to control this.\n\n - The ticks options can now be a callback function that takes one parameter,\n   an object with the attributes min and max. The function should return a\n   ticks array.\n\n - Added labelFormatter option in legend, useful for turning the legend\n   labels into links.\n\n - Reduced the size of the code. (patch by Guy Fraser)\n\n\n\n## Flot 0.1 ##\n\nFirst public release.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/PLUGINS.md",
    "content": "## Writing plugins ##\n\nAll you need to do to make a new plugin is creating an init function\nand a set of options (if needed), stuffing it into an object and\nputting it in the $.plot.plugins array. For example:\n\n```js\nfunction myCoolPluginInit(plot) {\n    plot.coolstring = \"Hello!\";\n};\n\n$.plot.plugins.push({ init: myCoolPluginInit, options: { ... } });\n\n// if $.plot is called, it will return a plot object with the\n// attribute \"coolstring\"\n```\n\nNow, given that the plugin might run in many different places, it's\na good idea to avoid leaking names. The usual trick here is wrap the\nabove lines in an anonymous function which is called immediately, like\nthis: (function () { inner code ... })(). To make it even more robust\nin case $ is not bound to jQuery but some other Javascript library, we\ncan write it as\n\n```js\n(function ($) {\n    // plugin definition\n    // ...\n})(jQuery);\n```\n\nThere's a complete example below, but you should also check out the\nplugins bundled with Flot.\n\n\n## Complete example ##\n  \nHere is a simple debug plugin which alerts each of the series in the\nplot. It has a single option that control whether it is enabled and\nhow much info to output:\n\n```js\n(function ($) {\n    function init(plot) {\n        var debugLevel = 1;\n\n        function checkDebugEnabled(plot, options) {\n            if (options.debug) {\n                debugLevel = options.debug;\n                plot.hooks.processDatapoints.push(alertSeries);\n            }\n        }\n\n        function alertSeries(plot, series, datapoints) {\n            var msg = \"series \" + series.label;\n            if (debugLevel > 1) {\n                msg += \" with \" + series.data.length + \" points\";\n                alert(msg);\n            }\n        }\n\n        plot.hooks.processOptions.push(checkDebugEnabled);\n    }\n\n    var options = { debug: 0 };\n      \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: \"simpledebug\",\n        version: \"0.1\"\n    });\n})(jQuery);\n```\n\nWe also define \"name\" and \"version\". It's not used by Flot, but might\nbe helpful for other plugins in resolving dependencies.\n  \nPut the above in a file named \"jquery.flot.debug.js\", include it in an\nHTML page and then it can be used with:\n\n```js\n    $.plot($(\"#placeholder\"), [...], { debug: 2 });\n```\n\nThis simple plugin illustrates a couple of points:\n\n - It uses the anonymous function trick to avoid name pollution.\n - It can be enabled/disabled through an option.\n - Variables in the init function can be used to store plot-specific\n   state between the hooks.\n\nThe two last points are important because there may be multiple plots\non the same page, and you'd want to make sure they are not mixed up.\n\n\n## Shutting down a plugin ##\n\nEach plot object has a shutdown hook which is run when plot.shutdown()\nis called. This usually mostly happens in case another plot is made on\ntop of an existing one.\n\nThe purpose of the hook is to give you a chance to unbind any event\nhandlers you've registered and remove any extra DOM things you've\ninserted.\n\nThe problem with event handlers is that you can have registered a\nhandler which is run in some point in the future, e.g. with\nsetTimeout(). Meanwhile, the plot may have been shutdown and removed,\nbut because your event handler is still referencing it, it can't be\ngarbage collected yet, and worse, if your handler eventually runs, it\nmay overwrite stuff on a completely different plot.\n\n \n## Some hints on the options ##\n   \nPlugins should always support appropriate options to enable/disable\nthem because the plugin user may have several plots on the same page\nwhere only one should use the plugin. In most cases it's probably a\ngood idea if the plugin is turned off rather than on per default, just\nlike most of the powerful features in Flot.\n\nIf the plugin needs options that are specific to each series, like the\npoints or lines options in core Flot, you can put them in \"series\" in\nthe options object, e.g.\n\n```js\nvar options = {\n    series: {\n        downsample: {\n            algorithm: null,\n            maxpoints: 1000\n        }\n    }\n}\n```\n\nThen they will be copied by Flot into each series, providing default\nvalues in case none are specified.\n\nThink hard and long about naming the options. These names are going to\nbe public API, and code is going to depend on them if the plugin is\nsuccessful.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/README.md",
    "content": "# Flot [![Build status](https://travis-ci.org/flot/flot.png)](https://travis-ci.org/flot/flot)\n\n## About ##\n\nFlot is a Javascript plotting library for jQuery.  \nRead more at the website: <http://www.flotcharts.org/>\n\nTake a look at the the examples in examples/index.html; they should give a good\nimpression of what Flot can do, and the source code of the examples is probably\nthe fastest way to learn how to use Flot.\n\n\n## Installation ##\n\nJust include the Javascript file after you've included jQuery.\n\nGenerally, all browsers that support the HTML5 canvas tag are\nsupported.\n\nFor support for Internet Explorer < 9, you can use [Excanvas]\n[excanvas], a canvas emulator; this is used in the examples bundled\nwith Flot. You just include the excanvas script like this:\n\n```html\n<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"excanvas.min.js\"></script><![endif]-->\n```\n\nIf it's not working on your development IE 6.0, check that it has\nsupport for VML which Excanvas is relying on. It appears that some\nstripped down versions used for test environments on virtual machines\nlack the VML support.\n\nYou can also try using [Flashcanvas][flashcanvas], which uses Flash to\ndo the emulation. Although Flash can be a bit slower to load than VML,\nif you've got a lot of points, the Flash version can be much faster\noverall. Flot contains some wrapper code for activating Excanvas which\nFlashcanvas is compatible with.\n\nYou need at least jQuery 1.2.6, but try at least 1.3.2 for interactive\ncharts because of performance improvements in event handling.\n\n\n## Basic usage ##\n\nCreate a placeholder div to put the graph in:\n\n```html\n<div id=\"placeholder\"></div>\n```\n\nYou need to set the width and height of this div, otherwise the plot\nlibrary doesn't know how to scale the graph. You can do it inline like\nthis:\n\n```html\n<div id=\"placeholder\" style=\"width:600px;height:300px\"></div>\n```\n\nYou can also do it with an external stylesheet. Make sure that the\nplaceholder isn't within something with a display:none CSS property -\nin that case, Flot has trouble measuring label dimensions which\nresults in garbled looks and might have trouble measuring the\nplaceholder dimensions which is fatal (it'll throw an exception).\n\nThen when the div is ready in the DOM, which is usually on document\nready, run the plot function:\n\n```js\n$.plot($(\"#placeholder\"), data, options);\n```\n\nHere, data is an array of data series and options is an object with\nsettings if you want to customize the plot. Take a look at the\nexamples for some ideas of what to put in or look at the \n[API reference](API.md). Here's a quick example that'll draw a line \nfrom (0, 0) to (1, 1):\n\n```js\n$.plot($(\"#placeholder\"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } });\n```\n\nThe plot function immediately draws the chart and then returns a plot\nobject with a couple of methods.\n\n\n## What's with the name? ##\n\nFirst: it's pronounced with a short o, like \"plot\". Not like \"flawed\".\n\nSo \"Flot\" rhymes with \"plot\".\n\nAnd if you look up \"flot\" in a Danish-to-English dictionary, some of\nthe words that come up are \"good-looking\", \"attractive\", \"stylish\",\n\"smart\", \"impressive\", \"extravagant\". One of the main goals with Flot\nis pretty looks.\n\n\n## Notes about the examples ##\n\nIn order to have a useful, functional example of time-series plots using time\nzones, date.js from [timezone-js][timezone-js] (released under the Apache 2.0\nlicense) and the [Olson][olson] time zone database (released to the public\ndomain) have been included in the examples directory.  They are used in\nexamples/axes-time-zones/index.html.\n\n\n[excanvas]: http://code.google.com/p/explorercanvas/\n[flashcanvas]: http://code.google.com/p/flashcanvas/\n[timezone-js]: https://github.com/mde/timezone-js\n[olson]: http://ftp.iana.org/time-zones\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/component.json",
    "content": "{\n\t\"name\": \"Flot\",\n\t\"version\": \"0.8.3\",\n\t\"main\": \"jquery.flot.js\",\n\t\"dependencies\": {\n\t\t\"jquery\": \">= 1.2.6\"\n\t}\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/css/float-chart.css",
    "content": "/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n@import url(\"https://fonts.googleapis.com/css?family=Rubik:300,400,500,600,700\");\n/*Theme Colors*/\n/**\n * Table Of Content\n *\n * \t1. Color system\n *\t2. Options\n *\t3. Body\n *\t4. Typography\n *\t5. Breadcrumbs\n *\t6. Cards\n *\t7. Dropdowns\n *\t8. Buttons\n *\t9. Typography\n *\t10. Progress bars\n *\t11. Tables\n *\t12. Forms\n *\t14. Component\n */\n/*============================================================== \n flot chart\n ============================================================== */\n.flot-chart {\n  display: block;\n  height: 300px; }\n\n.flot-chart-content {\n  width: 100%;\n  height: 100%; }\n\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-eu-gdp-growth-1.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-eu-gdp-growth-2.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-eu-gdp-growth-3.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-eu-gdp-growth-4.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-eu-gdp-growth-5.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-eu-gdp-growth.json",
    "content": "{\n    \"label\": \"Europe (EU27)\",\n    \"data\": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-japan-gdp-growth.json",
    "content": "{\n    \"label\": \"Japan\",\n    \"data\": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [2005, 1.9], [2006, 2.0], [2007, 2.3], [2008, -0.7]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/data-usa-gdp-growth.json",
    "content": "{\n    \"label\": \"USA\",\n    \"data\": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, 2.9], [2006, 2.8], [2007, 2.0], [2008, 1.1]]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/ajax/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: AJAX</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar options = {\n\t\t\tlines: {\n\t\t\t\tshow: true\n\t\t\t},\n\t\t\tpoints: {\n\t\t\t\tshow: true\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\ttickDecimals: 0,\n\t\t\t\ttickSize: 1\n\t\t\t}\n\t\t};\n\n\t\tvar data = [];\n\n\t\t$.plot(\"#placeholder\", data, options);\n\n\t\t// Fetch one series, adding to what we already have\n\n\t\tvar alreadyFetched = {};\n\n\t\t$(\"button.fetchSeries\").click(function () {\n\n\t\t\tvar button = $(this);\n\n\t\t\t// Find the URL in the link right next to us, then fetch the data\n\n\t\t\tvar dataurl = button.siblings(\"a\").attr(\"href\");\n\n\t\t\tfunction onDataReceived(series) {\n\n\t\t\t\t// Extract the first coordinate pair; jQuery has parsed it, so\n\t\t\t\t// the data is now just an ordinary JavaScript object\n\n\t\t\t\tvar firstcoordinate = \"(\" + series.data[0][0] + \", \" + series.data[0][1] + \")\";\n\t\t\t\tbutton.siblings(\"span\").text(\"Fetched \" + series.label + \", first point: \" + firstcoordinate);\n\n\t\t\t\t// Push the new data onto our existing data array\n\n\t\t\t\tif (!alreadyFetched[series.label]) {\n\t\t\t\t\talreadyFetched[series.label] = true;\n\t\t\t\t\tdata.push(series);\n\t\t\t\t}\n\n\t\t\t\t$.plot(\"#placeholder\", data, options);\n\t\t\t}\n\n\t\t\t$.ajax({\n\t\t\t\turl: dataurl,\n\t\t\t\ttype: \"GET\",\n\t\t\t\tdataType: \"json\",\n\t\t\t\tsuccess: onDataReceived\n\t\t\t});\n\t\t});\n\n\t\t// Initiate a recurring data update\n\n\t\t$(\"button.dataUpdate\").click(function () {\n\n\t\t\tdata = [];\n\t\t\talreadyFetched = {};\n\n\t\t\t$.plot(\"#placeholder\", data, options);\n\n\t\t\tvar iteration = 0;\n\n\t\t\tfunction fetchData() {\n\n\t\t\t\t++iteration;\n\n\t\t\t\tfunction onDataReceived(series) {\n\n\t\t\t\t\t// Load all the data in one pass; if we only got partial\n\t\t\t\t\t// data we could merge it with what we already have.\n\n\t\t\t\t\tdata = [ series ];\n\t\t\t\t\t$.plot(\"#placeholder\", data, options);\n\t\t\t\t}\n\n\t\t\t\t// Normally we call the same URL - a script connected to a\n\t\t\t\t// database - but in this case we only have static example\n\t\t\t\t// files, so we need to modify the URL.\n\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: \"data-eu-gdp-growth-\" + iteration + \".json\",\n\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: onDataReceived\n\t\t\t\t});\n\n\t\t\t\tif (iteration < 5) {\n\t\t\t\t\tsetTimeout(fetchData, 1000);\n\t\t\t\t} else {\n\t\t\t\t\tdata = [];\n\t\t\t\t\talreadyFetched = {};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetTimeout(fetchData, 1000);\n\t\t});\n\n\t\t// Load the first series by default, so we don't have an empty plot\n\n\t\t$(\"button.fetchSeries:first\").click();\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>AJAX</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>Example of loading data dynamically with AJAX. Percentage change in GDP (source: <a href=\"http://epp.eurostat.ec.europa.eu/tgm/table.do?tab=table&init=1&plugin=1&language=en&pcode=tsieb020\">Eurostat</a>). Click the buttons below:</p>\n\n\t\t<p>The data is fetched over HTTP, in this case directly from text files. Usually the URL would point to some web server handler (e.g. a PHP page or Java/.NET/Python/Ruby on Rails handler) that extracts it from a database and serializes it to JSON.</p>\n\n\t\t<p>\n\t\t\t<button class=\"fetchSeries\">First dataset</button>\n\t\t\t[ <a href=\"data-eu-gdp-growth.json\">see data</a> ]\n\t\t\t<span></span>\n\t\t</p>\n\n\t\t<p>\n\t\t\t<button class=\"fetchSeries\">Second dataset</button>\n\t\t\t[ <a href=\"data-japan-gdp-growth.json\">see data</a> ]\n\t\t\t<span></span>\n\t\t</p>\n\n\t\t<p>\n\t\t\t<button class=\"fetchSeries\">Third dataset</button>\n\t\t\t[ <a href=\"data-usa-gdp-growth.json\">see data</a> ]\n\t\t\t<span></span>\n\t\t</p>\n\n\t\t<p>If you combine AJAX with setTimeout, you can poll the server for new data.</p>\n\n\t\t<p>\n\t\t\t<button class=\"dataUpdate\">Poll for data</button>\n\t\t</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/annotating/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Adding Annotations</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d1 = [];\n\t\tfor (var i = 0; i < 20; ++i) {\n\t\t\td1.push([i, Math.sin(i)]);\n\t\t}\n\n\t\tvar data = [{ data: d1, label: \"Pressure\", color: \"#333\" }];\n\n\t\tvar markings = [\n\t\t\t{ color: \"#f6f6f6\", yaxis: { from: 1 } },\n\t\t\t{ color: \"#f6f6f6\", yaxis: { to: -1 } },\n\t\t\t{ color: \"#000\", lineWidth: 1, xaxis: { from: 2, to: 2 } },\n\t\t\t{ color: \"#000\", lineWidth: 1, xaxis: { from: 8, to: 8 } }\n\t\t];\n\n\t\tvar placeholder = $(\"#placeholder\");\n\n\t\tvar plot = $.plot(placeholder, data, {\n\t\t\tbars: { show: true, barWidth: 0.5, fill: 0.9 },\n\t\t\txaxis: { ticks: [], autoscaleMargin: 0.02 },\n\t\t\tyaxis: { min: -2, max: 2 },\n\t\t\tgrid: { markings: markings }\n\t\t});\n\n\t\tvar o = plot.pointOffset({ x: 2, y: -1.2});\n\n\t\t// Append it to the placeholder that Flot already uses for positioning\n\n\t\tplaceholder.append(\"<div style='position:absolute;left:\" + (o.left + 4) + \"px;top:\" + o.top + \"px;color:#666;font-size:smaller'>Warming up</div>\");\n\n\t\to = plot.pointOffset({ x: 8, y: -1.2});\n\t\tplaceholder.append(\"<div style='position:absolute;left:\" + (o.left + 4) + \"px;top:\" + o.top + \"px;color:#666;font-size:smaller'>Actual measurements</div>\");\n\n\t\t// Draw a little arrow on top of the last label to demonstrate canvas\n\t\t// drawing\n\n\t\tvar ctx = plot.getCanvas().getContext(\"2d\");\n\t\tctx.beginPath();\n\t\to.left += 4;\n\t\tctx.moveTo(o.left, o.top);\n\t\tctx.lineTo(o.left, o.top - 10);\n\t\tctx.lineTo(o.left + 10, o.top - 5);\n\t\tctx.lineTo(o.left, o.top);\n\t\tctx.fillStyle = \"#000\";\n\t\tctx.fill();\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Adding Annotations</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>Flot has support for simple background decorations such as lines and rectangles. They can be useful for marking up certain areas. You can easily add any HTML you need with standard DOM manipulation, e.g. for labels. For drawing custom shapes there is also direct access to the canvas.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-interacting/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Interacting with axes</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tfunction generate(start, end, fn) {\n\t\t\tvar res = [];\n\t\t\tfor (var i = 0; i <= 100; ++i) {\n\t\t\t\tvar x = start + i / 100 * (end - start);\n\t\t\t\tres.push([x, fn(x)]);\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tvar data = [\n\t\t\t{ data: generate(0, 10, function (x) { return Math.sqrt(x);}), xaxis: 1, yaxis:1 },\n\t\t\t{ data: generate(0, 10, function (x) { return Math.sin(x);}), xaxis: 1, yaxis:2 },\n\t\t\t{ data: generate(0, 10, function (x) { return Math.cos(x);}), xaxis: 1, yaxis:3 },\n\t\t\t{ data: generate(2, 10, function (x) { return Math.tan(x);}), xaxis: 2, yaxis: 4 }\n\t\t];\n\n\t\tvar plot = $.plot(\"#placeholder\", data, {\n\t\t\txaxes: [\n\t\t\t\t{ position: 'bottom' },\n\t\t\t\t{ position: 'top'}\n\t\t\t],\n\t\t\tyaxes: [\n\t\t\t\t{ position: 'left' },\n\t\t\t\t{ position: 'left' },\n\t\t\t\t{ position: 'right' },\n\t\t\t\t{ position: 'left' }\n\t\t\t]\n\t\t});\n\n\t\t// Create a div for each axis\n\n\t\t$.each(plot.getAxes(), function (i, axis) {\n\t\t\tif (!axis.show)\n\t\t\t\treturn;\n\n\t\t\tvar box = axis.box;\n\n\t\t\t$(\"<div class='axisTarget' style='position:absolute; left:\" + box.left + \"px; top:\" + box.top + \"px; width:\" + box.width +  \"px; height:\" + box.height + \"px'></div>\")\n\t\t\t\t.data(\"axis.direction\", axis.direction)\n\t\t\t\t.data(\"axis.n\", axis.n)\n\t\t\t\t.css({ backgroundColor: \"#f00\", opacity: 0, cursor: \"pointer\" })\n\t\t\t\t.appendTo(plot.getPlaceholder())\n\t\t\t\t.hover(\n\t\t\t\t\tfunction () { $(this).css({ opacity: 0.10 }) },\n\t\t\t\t\tfunction () { $(this).css({ opacity: 0 }) }\n\t\t\t\t)\n\t\t\t\t.click(function () {\n\t\t\t\t\t$(\"#click\").text(\"You clicked the \" + axis.direction + axis.n + \"axis!\")\n\t\t\t\t});\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Interacting with axes</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>With multiple axes, you sometimes need to interact with them. A simple way to do this is to draw the plot, deduce the axis placements and insert a couple of divs on top to catch events.</p>\n\n\t\t<p>Try clicking an axis.</p>\n\n\t\t<p id=\"click\"></p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-multiple/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Multiple Axes</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.time.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar oilprices = [[1167692400000,61.05], [1167778800000,58.32], [1167865200000,57.35], [1167951600000,56.31], [1168210800000,55.55], [1168297200000,55.64], [1168383600000,54.02], [1168470000000,51.88], [1168556400000,52.99], [1168815600000,52.99], [1168902000000,51.21], [1168988400000,52.24], [1169074800000,50.48], [1169161200000,51.99], [1169420400000,51.13], [1169506800000,55.04], [1169593200000,55.37], [1169679600000,54.23], [1169766000000,55.42], [1170025200000,54.01], [1170111600000,56.97], [1170198000000,58.14], [1170284400000,58.14], [1170370800000,59.02], [1170630000000,58.74], [1170716400000,58.88], [1170802800000,57.71], [1170889200000,59.71], [1170975600000,59.89], [1171234800000,57.81], [1171321200000,59.06], [1171407600000,58.00], [1171494000000,57.99], [1171580400000,59.39], [1171839600000,59.39], [1171926000000,58.07], [1172012400000,60.07], [1172098800000,61.14], [1172444400000,61.39], [1172530800000,61.46], [1172617200000,61.79], [1172703600000,62.00], [1172790000000,60.07], [1173135600000,60.69], [1173222000000,61.82], [1173308400000,60.05], [1173654000000,58.91], [1173740400000,57.93], [1173826800000,58.16], [1173913200000,57.55], [1173999600000,57.11], [1174258800000,56.59], [1174345200000,59.61], [1174518000000,61.69], [1174604400000,62.28], [1174860000000,62.91], [1174946400000,62.93], [1175032800000,64.03], [1175119200000,66.03], [1175205600000,65.87], [1175464800000,64.64], [1175637600000,64.38], [1175724000000,64.28], [1175810400000,64.28], [1176069600000,61.51], [1176156000000,61.89], [1176242400000,62.01], [1176328800000,63.85], [1176415200000,63.63], [1176674400000,63.61], [1176760800000,63.10], [1176847200000,63.13], [1176933600000,61.83], [1177020000000,63.38], [1177279200000,64.58], [1177452000000,65.84], [1177538400000,65.06], [1177624800000,66.46], [1177884000000,64.40], [1178056800000,63.68], [1178143200000,63.19], [1178229600000,61.93], [1178488800000,61.47], [1178575200000,61.55], [1178748000000,61.81], [1178834400000,62.37], [1179093600000,62.46], [1179180000000,63.17], [1179266400000,62.55], [1179352800000,64.94], [1179698400000,66.27], [1179784800000,65.50], [1179871200000,65.77], [1179957600000,64.18], [1180044000000,65.20], [1180389600000,63.15], [1180476000000,63.49], [1180562400000,65.08], [1180908000000,66.30], [1180994400000,65.96], [1181167200000,66.93], [1181253600000,65.98], [1181599200000,65.35], [1181685600000,66.26], [1181858400000,68.00], [1182117600000,69.09], [1182204000000,69.10], [1182290400000,68.19], [1182376800000,68.19], [1182463200000,69.14], [1182722400000,68.19], [1182808800000,67.77], [1182895200000,68.97], [1182981600000,69.57], [1183068000000,70.68], [1183327200000,71.09], [1183413600000,70.92], [1183586400000,71.81], [1183672800000,72.81], [1183932000000,72.19], [1184018400000,72.56], [1184191200000,72.50], [1184277600000,74.15], [1184623200000,75.05], [1184796000000,75.92], [1184882400000,75.57], [1185141600000,74.89], [1185228000000,73.56], [1185314400000,75.57], [1185400800000,74.95], [1185487200000,76.83], [1185832800000,78.21], [1185919200000,76.53], [1186005600000,76.86], [1186092000000,76.00], [1186437600000,71.59], [1186696800000,71.47], [1186956000000,71.62], [1187042400000,71.00], [1187301600000,71.98], [1187560800000,71.12], [1187647200000,69.47], [1187733600000,69.26], [1187820000000,69.83], [1187906400000,71.09], [1188165600000,71.73], [1188338400000,73.36], [1188511200000,74.04], [1188856800000,76.30], [1189116000000,77.49], [1189461600000,78.23], [1189548000000,79.91], [1189634400000,80.09], [1189720800000,79.10], [1189980000000,80.57], [1190066400000,81.93], [1190239200000,83.32], [1190325600000,81.62], [1190584800000,80.95], [1190671200000,79.53], [1190757600000,80.30], [1190844000000,82.88], [1190930400000,81.66], [1191189600000,80.24], [1191276000000,80.05], [1191362400000,79.94], [1191448800000,81.44], [1191535200000,81.22], [1191794400000,79.02], [1191880800000,80.26], [1191967200000,80.30], [1192053600000,83.08], [1192140000000,83.69], [1192399200000,86.13], [1192485600000,87.61], [1192572000000,87.40], [1192658400000,89.47], [1192744800000,88.60], [1193004000000,87.56], [1193090400000,87.56], [1193176800000,87.10], [1193263200000,91.86], [1193612400000,93.53], [1193698800000,94.53], [1193871600000,95.93], [1194217200000,93.98], [1194303600000,96.37], [1194476400000,95.46], [1194562800000,96.32], [1195081200000,93.43], [1195167600000,95.10], [1195426800000,94.64], [1195513200000,95.10], [1196031600000,97.70], [1196118000000,94.42], [1196204400000,90.62], [1196290800000,91.01], [1196377200000,88.71], [1196636400000,88.32], [1196809200000,90.23], [1196982000000,88.28], [1197241200000,87.86], [1197327600000,90.02], [1197414000000,92.25], [1197586800000,90.63], [1197846000000,90.63], [1197932400000,90.49], [1198018800000,91.24], [1198105200000,91.06], [1198191600000,90.49], [1198710000000,96.62], [1198796400000,96.00], [1199142000000,99.62], [1199314800000,99.18], [1199401200000,95.09], [1199660400000,96.33], [1199833200000,95.67], [1200351600000,91.90], [1200438000000,90.84], [1200524400000,90.13], [1200610800000,90.57], [1200956400000,89.21], [1201042800000,86.99], [1201129200000,89.85], [1201474800000,90.99], [1201561200000,91.64], [1201647600000,92.33], [1201734000000,91.75], [1202079600000,90.02], [1202166000000,88.41], [1202252400000,87.14], [1202338800000,88.11], [1202425200000,91.77], [1202770800000,92.78], [1202857200000,93.27], [1202943600000,95.46], [1203030000000,95.46], [1203289200000,101.74], [1203462000000,98.81], [1203894000000,100.88], [1204066800000,99.64], [1204153200000,102.59], [1204239600000,101.84], [1204498800000,99.52], [1204585200000,99.52], [1204671600000,104.52], [1204758000000,105.47], [1204844400000,105.15], [1205103600000,108.75], [1205276400000,109.92], [1205362800000,110.33], [1205449200000,110.21], [1205708400000,105.68], [1205967600000,101.84], [1206313200000,100.86], [1206399600000,101.22], [1206486000000,105.90], [1206572400000,107.58], [1206658800000,105.62], [1206914400000,101.58], [1207000800000,100.98], [1207173600000,103.83], [1207260000000,106.23], [1207605600000,108.50], [1207778400000,110.11], [1207864800000,110.14], [1208210400000,113.79], [1208296800000,114.93], [1208383200000,114.86], [1208728800000,117.48], [1208815200000,118.30], [1208988000000,116.06], [1209074400000,118.52], [1209333600000,118.75], [1209420000000,113.46], [1209592800000,112.52], [1210024800000,121.84], [1210111200000,123.53], [1210197600000,123.69], [1210543200000,124.23], [1210629600000,125.80], [1210716000000,126.29], [1211148000000,127.05], [1211320800000,129.07], [1211493600000,132.19], [1211839200000,128.85], [1212357600000,127.76], [1212703200000,138.54], [1212962400000,136.80], [1213135200000,136.38], [1213308000000,134.86], [1213653600000,134.01], [1213740000000,136.68], [1213912800000,135.65], [1214172000000,134.62], [1214258400000,134.62], [1214344800000,134.62], [1214431200000,139.64], [1214517600000,140.21], [1214776800000,140.00], [1214863200000,140.97], [1214949600000,143.57], [1215036000000,145.29], [1215381600000,141.37], [1215468000000,136.04], [1215727200000,146.40], [1215986400000,145.18], [1216072800000,138.74], [1216159200000,134.60], [1216245600000,129.29], [1216332000000,130.65], [1216677600000,127.95], [1216850400000,127.95], [1217282400000,122.19], [1217455200000,124.08], [1217541600000,125.10], [1217800800000,121.41], [1217887200000,119.17], [1217973600000,118.58], [1218060000000,120.02], [1218405600000,114.45], [1218492000000,113.01], [1218578400000,116.00], [1218751200000,113.77], [1219010400000,112.87], [1219096800000,114.53], [1219269600000,114.98], [1219356000000,114.98], [1219701600000,116.27], [1219788000000,118.15], [1219874400000,115.59], [1219960800000,115.46], [1220306400000,109.71], [1220392800000,109.35], [1220565600000,106.23], [1220824800000,106.34]];\n\n\t\tvar exchangerates = [[1167606000000,0.7580], [1167692400000,0.7580], [1167778800000,0.75470], [1167865200000,0.75490], [1167951600000,0.76130], [1168038000000,0.76550], [1168124400000,0.76930], [1168210800000,0.76940], [1168297200000,0.76880], [1168383600000,0.76780], [1168470000000,0.77080], [1168556400000,0.77270], [1168642800000,0.77490], [1168729200000,0.77410], [1168815600000,0.77410], [1168902000000,0.77320], [1168988400000,0.77270], [1169074800000,0.77370], [1169161200000,0.77240], [1169247600000,0.77120], [1169334000000,0.7720], [1169420400000,0.77210], [1169506800000,0.77170], [1169593200000,0.77040], [1169679600000,0.7690], [1169766000000,0.77110], [1169852400000,0.7740], [1169938800000,0.77450], [1170025200000,0.77450], [1170111600000,0.7740], [1170198000000,0.77160], [1170284400000,0.77130], [1170370800000,0.76780], [1170457200000,0.76880], [1170543600000,0.77180], [1170630000000,0.77180], [1170716400000,0.77280], [1170802800000,0.77290], [1170889200000,0.76980], [1170975600000,0.76850], [1171062000000,0.76810], [1171148400000,0.7690], [1171234800000,0.7690], [1171321200000,0.76980], [1171407600000,0.76990], [1171494000000,0.76510], [1171580400000,0.76130], [1171666800000,0.76160], [1171753200000,0.76140], [1171839600000,0.76140], [1171926000000,0.76070], [1172012400000,0.76020], [1172098800000,0.76110], [1172185200000,0.76220], [1172271600000,0.76150], [1172358000000,0.75980], [1172444400000,0.75980], [1172530800000,0.75920], [1172617200000,0.75730], [1172703600000,0.75660], [1172790000000,0.75670], [1172876400000,0.75910], [1172962800000,0.75820], [1173049200000,0.75850], [1173135600000,0.76130], [1173222000000,0.76310], [1173308400000,0.76150], [1173394800000,0.760], [1173481200000,0.76130], [1173567600000,0.76270], [1173654000000,0.76270], [1173740400000,0.76080], [1173826800000,0.75830], [1173913200000,0.75750], [1173999600000,0.75620], [1174086000000,0.7520], [1174172400000,0.75120], [1174258800000,0.75120], [1174345200000,0.75170], [1174431600000,0.7520], [1174518000000,0.75110], [1174604400000,0.7480], [1174690800000,0.75090], [1174777200000,0.75310], [1174860000000,0.75310], [1174946400000,0.75270], [1175032800000,0.74980], [1175119200000,0.74930], [1175205600000,0.75040], [1175292000000,0.750], [1175378400000,0.74910], [1175464800000,0.74910], [1175551200000,0.74850], [1175637600000,0.74840], [1175724000000,0.74920], [1175810400000,0.74710], [1175896800000,0.74590], [1175983200000,0.74770], [1176069600000,0.74770], [1176156000000,0.74830], [1176242400000,0.74580], [1176328800000,0.74480], [1176415200000,0.7430], [1176501600000,0.73990], [1176588000000,0.73950], [1176674400000,0.73950], [1176760800000,0.73780], [1176847200000,0.73820], [1176933600000,0.73620], [1177020000000,0.73550], [1177106400000,0.73480], [1177192800000,0.73610], [1177279200000,0.73610], [1177365600000,0.73650], [1177452000000,0.73620], [1177538400000,0.73310], [1177624800000,0.73390], [1177711200000,0.73440], [1177797600000,0.73270], [1177884000000,0.73270], [1177970400000,0.73360], [1178056800000,0.73330], [1178143200000,0.73590], [1178229600000,0.73590], [1178316000000,0.73720], [1178402400000,0.7360], [1178488800000,0.7360], [1178575200000,0.7350], [1178661600000,0.73650], [1178748000000,0.73840], [1178834400000,0.73950], [1178920800000,0.74130], [1179007200000,0.73970], [1179093600000,0.73960], [1179180000000,0.73850], [1179266400000,0.73780], [1179352800000,0.73660], [1179439200000,0.740], [1179525600000,0.74110], [1179612000000,0.74060], [1179698400000,0.74050], [1179784800000,0.74140], [1179871200000,0.74310], [1179957600000,0.74310], [1180044000000,0.74380], [1180130400000,0.74430], [1180216800000,0.74430], [1180303200000,0.74430], [1180389600000,0.74340], [1180476000000,0.74290], [1180562400000,0.74420], [1180648800000,0.7440], [1180735200000,0.74390], [1180821600000,0.74370], [1180908000000,0.74370], [1180994400000,0.74290], [1181080800000,0.74030], [1181167200000,0.73990], [1181253600000,0.74180], [1181340000000,0.74680], [1181426400000,0.7480], [1181512800000,0.7480], [1181599200000,0.7490], [1181685600000,0.74940], [1181772000000,0.75220], [1181858400000,0.75150], [1181944800000,0.75020], [1182031200000,0.74720], [1182117600000,0.74720], [1182204000000,0.74620], [1182290400000,0.74550], [1182376800000,0.74490], [1182463200000,0.74670], [1182549600000,0.74580], [1182636000000,0.74270], [1182722400000,0.74270], [1182808800000,0.7430], [1182895200000,0.74290], [1182981600000,0.7440], [1183068000000,0.7430], [1183154400000,0.74220], [1183240800000,0.73880], [1183327200000,0.73880], [1183413600000,0.73690], [1183500000000,0.73450], [1183586400000,0.73450], [1183672800000,0.73450], [1183759200000,0.73520], [1183845600000,0.73410], [1183932000000,0.73410], [1184018400000,0.7340], [1184104800000,0.73240], [1184191200000,0.72720], [1184277600000,0.72640], [1184364000000,0.72550], [1184450400000,0.72580], [1184536800000,0.72580], [1184623200000,0.72560], [1184709600000,0.72570], [1184796000000,0.72470], [1184882400000,0.72430], [1184968800000,0.72440], [1185055200000,0.72350], [1185141600000,0.72350], [1185228000000,0.72350], [1185314400000,0.72350], [1185400800000,0.72620], [1185487200000,0.72880], [1185573600000,0.73010], [1185660000000,0.73370], [1185746400000,0.73370], [1185832800000,0.73240], [1185919200000,0.72970], [1186005600000,0.73170], [1186092000000,0.73150], [1186178400000,0.72880], [1186264800000,0.72630], [1186351200000,0.72630], [1186437600000,0.72420], [1186524000000,0.72530], [1186610400000,0.72640], [1186696800000,0.7270], [1186783200000,0.73120], [1186869600000,0.73050], [1186956000000,0.73050], [1187042400000,0.73180], [1187128800000,0.73580], [1187215200000,0.74090], [1187301600000,0.74540], [1187388000000,0.74370], [1187474400000,0.74240], [1187560800000,0.74240], [1187647200000,0.74150], [1187733600000,0.74190], [1187820000000,0.74140], [1187906400000,0.73770], [1187992800000,0.73550], [1188079200000,0.73150], [1188165600000,0.73150], [1188252000000,0.7320], [1188338400000,0.73320], [1188424800000,0.73460], [1188511200000,0.73280], [1188597600000,0.73230], [1188684000000,0.7340], [1188770400000,0.7340], [1188856800000,0.73360], [1188943200000,0.73510], [1189029600000,0.73460], [1189116000000,0.73210], [1189202400000,0.72940], [1189288800000,0.72660], [1189375200000,0.72660], [1189461600000,0.72540], [1189548000000,0.72420], [1189634400000,0.72130], [1189720800000,0.71970], [1189807200000,0.72090], [1189893600000,0.7210], [1189980000000,0.7210], [1190066400000,0.7210], [1190152800000,0.72090], [1190239200000,0.71590], [1190325600000,0.71330], [1190412000000,0.71050], [1190498400000,0.70990], [1190584800000,0.70990], [1190671200000,0.70930], [1190757600000,0.70930], [1190844000000,0.70760], [1190930400000,0.7070], [1191016800000,0.70490], [1191103200000,0.70120], [1191189600000,0.70110], [1191276000000,0.70190], [1191362400000,0.70460], [1191448800000,0.70630], [1191535200000,0.70890], [1191621600000,0.70770], [1191708000000,0.70770], [1191794400000,0.70770], [1191880800000,0.70910], [1191967200000,0.71180], [1192053600000,0.70790], [1192140000000,0.70530], [1192226400000,0.7050], [1192312800000,0.70550], [1192399200000,0.70550], [1192485600000,0.70450], [1192572000000,0.70510], [1192658400000,0.70510], [1192744800000,0.70170], [1192831200000,0.70], [1192917600000,0.69950], [1193004000000,0.69940], [1193090400000,0.70140], [1193176800000,0.70360], [1193263200000,0.70210], [1193349600000,0.70020], [1193436000000,0.69670], [1193522400000,0.6950], [1193612400000,0.6950], [1193698800000,0.69390], [1193785200000,0.6940], [1193871600000,0.69220], [1193958000000,0.69190], [1194044400000,0.69140], [1194130800000,0.68940], [1194217200000,0.68910], [1194303600000,0.69040], [1194390000000,0.6890], [1194476400000,0.68340], [1194562800000,0.68230], [1194649200000,0.68070], [1194735600000,0.68150], [1194822000000,0.68150], [1194908400000,0.68470], [1194994800000,0.68590], [1195081200000,0.68220], [1195167600000,0.68270], [1195254000000,0.68370], [1195340400000,0.68230], [1195426800000,0.68220], [1195513200000,0.68220], [1195599600000,0.67920], [1195686000000,0.67460], [1195772400000,0.67350], [1195858800000,0.67310], [1195945200000,0.67420], [1196031600000,0.67440], [1196118000000,0.67390], [1196204400000,0.67310], [1196290800000,0.67610], [1196377200000,0.67610], [1196463600000,0.67850], [1196550000000,0.68180], [1196636400000,0.68360], [1196722800000,0.68230], [1196809200000,0.68050], [1196895600000,0.67930], [1196982000000,0.68490], [1197068400000,0.68330], [1197154800000,0.68250], [1197241200000,0.68250], [1197327600000,0.68160], [1197414000000,0.67990], [1197500400000,0.68130], [1197586800000,0.68090], [1197673200000,0.68680], [1197759600000,0.69330], [1197846000000,0.69330], [1197932400000,0.69450], [1198018800000,0.69440], [1198105200000,0.69460], [1198191600000,0.69640], [1198278000000,0.69650], [1198364400000,0.69560], [1198450800000,0.69560], [1198537200000,0.6950], [1198623600000,0.69480], [1198710000000,0.69280], [1198796400000,0.68870], [1198882800000,0.68240], [1198969200000,0.67940], [1199055600000,0.67940], [1199142000000,0.68030], [1199228400000,0.68550], [1199314800000,0.68240], [1199401200000,0.67910], [1199487600000,0.67830], [1199574000000,0.67850], [1199660400000,0.67850], [1199746800000,0.67970], [1199833200000,0.680], [1199919600000,0.68030], [1200006000000,0.68050], [1200092400000,0.6760], [1200178800000,0.6770], [1200265200000,0.6770], [1200351600000,0.67360], [1200438000000,0.67260], [1200524400000,0.67640], [1200610800000,0.68210], [1200697200000,0.68310], [1200783600000,0.68420], [1200870000000,0.68420], [1200956400000,0.68870], [1201042800000,0.69030], [1201129200000,0.68480], [1201215600000,0.68240], [1201302000000,0.67880], [1201388400000,0.68140], [1201474800000,0.68140], [1201561200000,0.67970], [1201647600000,0.67690], [1201734000000,0.67650], [1201820400000,0.67330], [1201906800000,0.67290], [1201993200000,0.67580], [1202079600000,0.67580], [1202166000000,0.6750], [1202252400000,0.6780], [1202338800000,0.68330], [1202425200000,0.68560], [1202511600000,0.69030], [1202598000000,0.68960], [1202684400000,0.68960], [1202770800000,0.68820], [1202857200000,0.68790], [1202943600000,0.68620], [1203030000000,0.68520], [1203116400000,0.68230], [1203202800000,0.68130], [1203289200000,0.68130], [1203375600000,0.68220], [1203462000000,0.68020], [1203548400000,0.68020], [1203634800000,0.67840], [1203721200000,0.67480], [1203807600000,0.67470], [1203894000000,0.67470], [1203980400000,0.67480], [1204066800000,0.67330], [1204153200000,0.6650], [1204239600000,0.66110], [1204326000000,0.65830], [1204412400000,0.6590], [1204498800000,0.6590], [1204585200000,0.65810], [1204671600000,0.65780], [1204758000000,0.65740], [1204844400000,0.65320], [1204930800000,0.65020], [1205017200000,0.65140], [1205103600000,0.65140], [1205190000000,0.65070], [1205276400000,0.6510], [1205362800000,0.64890], [1205449200000,0.64240], [1205535600000,0.64060], [1205622000000,0.63820], [1205708400000,0.63820], [1205794800000,0.63410], [1205881200000,0.63440], [1205967600000,0.63780], [1206054000000,0.64390], [1206140400000,0.64780], [1206226800000,0.64810], [1206313200000,0.64810], [1206399600000,0.64940], [1206486000000,0.64380], [1206572400000,0.63770], [1206658800000,0.63290], [1206745200000,0.63360], [1206831600000,0.63330], [1206914400000,0.63330], [1207000800000,0.6330], [1207087200000,0.63710], [1207173600000,0.64030], [1207260000000,0.63960], [1207346400000,0.63640], [1207432800000,0.63560], [1207519200000,0.63560], [1207605600000,0.63680], [1207692000000,0.63570], [1207778400000,0.63540], [1207864800000,0.6320], [1207951200000,0.63320], [1208037600000,0.63280], [1208124000000,0.63310], [1208210400000,0.63420], [1208296800000,0.63210], [1208383200000,0.63020], [1208469600000,0.62780], [1208556000000,0.63080], [1208642400000,0.63240], [1208728800000,0.63240], [1208815200000,0.63070], [1208901600000,0.62770], [1208988000000,0.62690], [1209074400000,0.63350], [1209160800000,0.63920], [1209247200000,0.640], [1209333600000,0.64010], [1209420000000,0.63960], [1209506400000,0.64070], [1209592800000,0.64230], [1209679200000,0.64290], [1209765600000,0.64720], [1209852000000,0.64850], [1209938400000,0.64860], [1210024800000,0.64670], [1210111200000,0.64440], [1210197600000,0.64670], [1210284000000,0.65090], [1210370400000,0.64780], [1210456800000,0.64610], [1210543200000,0.64610], [1210629600000,0.64680], [1210716000000,0.64490], [1210802400000,0.6470], [1210888800000,0.64610], [1210975200000,0.64520], [1211061600000,0.64220], [1211148000000,0.64220], [1211234400000,0.64250], [1211320800000,0.64140], [1211407200000,0.63660], [1211493600000,0.63460], [1211580000000,0.6350], [1211666400000,0.63460], [1211752800000,0.63460], [1211839200000,0.63430], [1211925600000,0.63460], [1212012000000,0.63790], [1212098400000,0.64160], [1212184800000,0.64420], [1212271200000,0.64310], [1212357600000,0.64310], [1212444000000,0.64350], [1212530400000,0.6440], [1212616800000,0.64730], [1212703200000,0.64690], [1212789600000,0.63860], [1212876000000,0.63560], [1212962400000,0.6340], [1213048800000,0.63460], [1213135200000,0.6430], [1213221600000,0.64520], [1213308000000,0.64670], [1213394400000,0.65060], [1213480800000,0.65040], [1213567200000,0.65030], [1213653600000,0.64810], [1213740000000,0.64510], [1213826400000,0.6450], [1213912800000,0.64410], [1213999200000,0.64140], [1214085600000,0.64090], [1214172000000,0.64090], [1214258400000,0.64280], [1214344800000,0.64310], [1214431200000,0.64180], [1214517600000,0.63710], [1214604000000,0.63490], [1214690400000,0.63330], [1214776800000,0.63340], [1214863200000,0.63380], [1214949600000,0.63420], [1215036000000,0.6320], [1215122400000,0.63180], [1215208800000,0.6370], [1215295200000,0.63680], [1215381600000,0.63680], [1215468000000,0.63830], [1215554400000,0.63710], [1215640800000,0.63710], [1215727200000,0.63550], [1215813600000,0.6320], [1215900000000,0.62770], [1215986400000,0.62760], [1216072800000,0.62910], [1216159200000,0.62740], [1216245600000,0.62930], [1216332000000,0.63110], [1216418400000,0.6310], [1216504800000,0.63120], [1216591200000,0.63120], [1216677600000,0.63040], [1216764000000,0.62940], [1216850400000,0.63480], [1216936800000,0.63780], [1217023200000,0.63680], [1217109600000,0.63680], [1217196000000,0.63680], [1217282400000,0.6360], [1217368800000,0.6370], [1217455200000,0.64180], [1217541600000,0.64110], [1217628000000,0.64350], [1217714400000,0.64270], [1217800800000,0.64270], [1217887200000,0.64190], [1217973600000,0.64460], [1218060000000,0.64680], [1218146400000,0.64870], [1218232800000,0.65940], [1218319200000,0.66660], [1218405600000,0.66660], [1218492000000,0.66780], [1218578400000,0.67120], [1218664800000,0.67050], [1218751200000,0.67180], [1218837600000,0.67840], [1218924000000,0.68110], [1219010400000,0.68110], [1219096800000,0.67940], [1219183200000,0.68040], [1219269600000,0.67810], [1219356000000,0.67560], [1219442400000,0.67350], [1219528800000,0.67630], [1219615200000,0.67620], [1219701600000,0.67770], [1219788000000,0.68150], [1219874400000,0.68020], [1219960800000,0.6780], [1220047200000,0.67960], [1220133600000,0.68170], [1220220000000,0.68170], [1220306400000,0.68320], [1220392800000,0.68770], [1220479200000,0.69120], [1220565600000,0.69140], [1220652000000,0.70090], [1220738400000,0.70120], [1220824800000,0.7010], [1220911200000,0.70050]];\n\n\t\tfunction euroFormatter(v, axis) {\n\t\t\treturn v.toFixed(axis.tickDecimals) + \"€\";\n\t\t}\n\n\t\tfunction doPlot(position) {\n\t\t\t$.plot(\"#placeholder\", [\n\t\t\t\t{ data: oilprices, label: \"Oil price ($)\" },\n\t\t\t\t{ data: exchangerates, label: \"USD/EUR exchange rate\", yaxis: 2 }\n\t\t\t], {\n\t\t\t\txaxes: [ { mode: \"time\" } ],\n\t\t\t\tyaxes: [ { min: 0 }, {\n\t\t\t\t\t// align if we are to the right\n\t\t\t\t\talignTicksWithAxis: position == \"right\" ? 1 : null,\n\t\t\t\t\tposition: position,\n\t\t\t\t\ttickFormatter: euroFormatter\n\t\t\t\t} ],\n\t\t\t\tlegend: { position: \"sw\" }\n\t\t\t});\n\t\t}\n\n\t\tdoPlot(\"right\");\n\n\t\t$(\"button\").click(function () {\n\t\t\tdoPlot($(this).text());\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Multiple axes</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>Multiple axis support showing the raw oil price in US $/barrel of crude oil vs. the exchange rate from US $ to €.</p>\n\n\t\t<p>As illustrated, you can put in multiple axes if you need to. For each data series, simply specify the axis number. In the options, you can then configure where you want the extra axes to appear.</p>\n\n\t\t<p>Position axis <button>left</button> or <button>right</button>.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Time Axes</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.time.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d = [[-373597200000, 315.71], [-370918800000, 317.45], [-368326800000, 317.50], [-363056400000, 315.86], [-360378000000, 314.93], [-357699600000, 313.19], [-352429200000, 313.34], [-349837200000, 314.67], [-347158800000, 315.58], [-344480400000, 316.47], [-342061200000, 316.65], [-339382800000, 317.71], [-336790800000, 318.29], [-334112400000, 318.16], [-331520400000, 316.55], [-328842000000, 314.80], [-326163600000, 313.84], [-323571600000, 313.34], [-320893200000, 314.81], [-318301200000, 315.59], [-315622800000, 316.43], [-312944400000, 316.97], [-310438800000, 317.58], [-307760400000, 319.03], [-305168400000, 320.03], [-302490000000, 319.59], [-299898000000, 318.18], [-297219600000, 315.91], [-294541200000, 314.16], [-291949200000, 313.83], [-289270800000, 315.00], [-286678800000, 316.19], [-284000400000, 316.89], [-281322000000, 317.70], [-278902800000, 318.54], [-276224400000, 319.48], [-273632400000, 320.58], [-270954000000, 319.78], [-268362000000, 318.58], [-265683600000, 316.79], [-263005200000, 314.99], [-260413200000, 315.31], [-257734800000, 316.10], [-255142800000, 317.01], [-252464400000, 317.94], [-249786000000, 318.56], [-247366800000, 319.69], [-244688400000, 320.58], [-242096400000, 321.01], [-239418000000, 320.61], [-236826000000, 319.61], [-234147600000, 317.40], [-231469200000, 316.26], [-228877200000, 315.42], [-226198800000, 316.69], [-223606800000, 317.69], [-220928400000, 318.74], [-218250000000, 319.08], [-215830800000, 319.86], [-213152400000, 321.39], [-210560400000, 322.24], [-207882000000, 321.47], [-205290000000, 319.74], [-202611600000, 317.77], [-199933200000, 316.21], [-197341200000, 315.99], [-194662800000, 317.07], [-192070800000, 318.36], [-189392400000, 319.57], [-178938000000, 322.23], [-176259600000, 321.89], [-173667600000, 320.44], [-170989200000, 318.70], [-168310800000, 316.70], [-165718800000, 316.87], [-163040400000, 317.68], [-160448400000, 318.71], [-157770000000, 319.44], [-155091600000, 320.44], [-152672400000, 320.89], [-149994000000, 322.13], [-147402000000, 322.16], [-144723600000, 321.87], [-142131600000, 321.21], [-139453200000, 318.87], [-136774800000, 317.81], [-134182800000, 317.30], [-131504400000, 318.87], [-128912400000, 319.42], [-126234000000, 320.62], [-123555600000, 321.59], [-121136400000, 322.39], [-118458000000, 323.70], [-115866000000, 324.07], [-113187600000, 323.75], [-110595600000, 322.40], [-107917200000, 320.37], [-105238800000, 318.64], [-102646800000, 318.10], [-99968400000, 319.79], [-97376400000, 321.03], [-94698000000, 322.33], [-92019600000, 322.50], [-89600400000, 323.04], [-86922000000, 324.42], [-84330000000, 325.00], [-81651600000, 324.09], [-79059600000, 322.55], [-76381200000, 320.92], [-73702800000, 319.26], [-71110800000, 319.39], [-68432400000, 320.72], [-65840400000, 321.96], [-63162000000, 322.57], [-60483600000, 323.15], [-57978000000, 323.89], [-55299600000, 325.02], [-52707600000, 325.57], [-50029200000, 325.36], [-47437200000, 324.14], [-44758800000, 322.11], [-42080400000, 320.33], [-39488400000, 320.25], [-36810000000, 321.32], [-34218000000, 322.90], [-31539600000, 324.00], [-28861200000, 324.42], [-26442000000, 325.64], [-23763600000, 326.66], [-21171600000, 327.38], [-18493200000, 326.70], [-15901200000, 325.89], [-13222800000, 323.67], [-10544400000, 322.38], [-7952400000, 321.78], [-5274000000, 322.85], [-2682000000, 324.12], [-3600000, 325.06], [2674800000, 325.98], [5094000000, 326.93], [7772400000, 328.13], [10364400000, 328.07], [13042800000, 327.66], [15634800000, 326.35], [18313200000, 324.69], [20991600000, 323.10], [23583600000, 323.07], [26262000000, 324.01], [28854000000, 325.13], [31532400000, 326.17], [34210800000, 326.68], [36630000000, 327.18], [39308400000, 327.78], [41900400000, 328.92], [44578800000, 328.57], [47170800000, 327.37], [49849200000, 325.43], [52527600000, 323.36], [55119600000, 323.56], [57798000000, 324.80], [60390000000, 326.01], [63068400000, 326.77], [65746800000, 327.63], [68252400000, 327.75], [70930800000, 329.72], [73522800000, 330.07], [76201200000, 329.09], [78793200000, 328.05], [81471600000, 326.32], [84150000000, 324.84], [86742000000, 325.20], [89420400000, 326.50], [92012400000, 327.55], [94690800000, 328.54], [97369200000, 329.56], [99788400000, 330.30], [102466800000, 331.50], [105058800000, 332.48], [107737200000, 332.07], [110329200000, 330.87], [113007600000, 329.31], [115686000000, 327.51], [118278000000, 327.18], [120956400000, 328.16], [123548400000, 328.64], [126226800000, 329.35], [128905200000, 330.71], [131324400000, 331.48], [134002800000, 332.65], [136594800000, 333.16], [139273200000, 332.06], [141865200000, 330.99], [144543600000, 329.17], [147222000000, 327.41], [149814000000, 327.20], [152492400000, 328.33], [155084400000, 329.50], [157762800000, 330.68], [160441200000, 331.41], [162860400000, 331.85], [165538800000, 333.29], [168130800000, 333.91], [170809200000, 333.40], [173401200000, 331.78], [176079600000, 329.88], [178758000000, 328.57], [181350000000, 328.46], [184028400000, 329.26], [189298800000, 331.71], [191977200000, 332.76], [194482800000, 333.48], [197161200000, 334.78], [199753200000, 334.78], [202431600000, 334.17], [205023600000, 332.78], [207702000000, 330.64], [210380400000, 328.95], [212972400000, 328.77], [215650800000, 330.23], [218242800000, 331.69], [220921200000, 332.70], [223599600000, 333.24], [226018800000, 334.96], [228697200000, 336.04], [231289200000, 336.82], [233967600000, 336.13], [236559600000, 334.73], [239238000000, 332.52], [241916400000, 331.19], [244508400000, 331.19], [247186800000, 332.35], [249778800000, 333.47], [252457200000, 335.11], [255135600000, 335.26], [257554800000, 336.60], [260233200000, 337.77], [262825200000, 338.00], [265503600000, 337.99], [268095600000, 336.48], [270774000000, 334.37], [273452400000, 332.27], [276044400000, 332.41], [278722800000, 333.76], [281314800000, 334.83], [283993200000, 336.21], [286671600000, 336.64], [289090800000, 338.12], [291769200000, 339.02], [294361200000, 339.02], [297039600000, 339.20], [299631600000, 337.58], [302310000000, 335.55], [304988400000, 333.89], [307580400000, 334.14], [310258800000, 335.26], [312850800000, 336.71], [315529200000, 337.81], [318207600000, 338.29], [320713200000, 340.04], [323391600000, 340.86], [325980000000, 341.47], [328658400000, 341.26], [331250400000, 339.29], [333928800000, 337.60], [336607200000, 336.12], [339202800000, 336.08], [341881200000, 337.22], [344473200000, 338.34], [347151600000, 339.36], [349830000000, 340.51], [352249200000, 341.57], [354924000000, 342.56], [357516000000, 343.01], [360194400000, 342.47], [362786400000, 340.71], [365464800000, 338.52], [368143200000, 336.96], [370738800000, 337.13], [373417200000, 338.58], [376009200000, 339.89], [378687600000, 340.93], [381366000000, 341.69], [383785200000, 342.69], [389052000000, 344.30], [391730400000, 343.43], [394322400000, 341.88], [397000800000, 339.89], [399679200000, 337.95], [402274800000, 338.10], [404953200000, 339.27], [407545200000, 340.67], [410223600000, 341.42], [412902000000, 342.68], [415321200000, 343.46], [417996000000, 345.10], [420588000000, 345.76], [423266400000, 345.36], [425858400000, 343.91], [428536800000, 342.05], [431215200000, 340.00], [433810800000, 340.12], [436489200000, 341.33], [439081200000, 342.94], [441759600000, 343.87], [444438000000, 344.60], [446943600000, 345.20], [452210400000, 347.36], [454888800000, 346.74], [457480800000, 345.41], [460159200000, 343.01], [462837600000, 341.23], [465433200000, 341.52], [468111600000, 342.86], [470703600000, 344.41], [473382000000, 345.09], [476060400000, 345.89], [478479600000, 347.49], [481154400000, 348.00], [483746400000, 348.75], [486424800000, 348.19], [489016800000, 346.54], [491695200000, 344.63], [494373600000, 343.03], [496969200000, 342.92], [499647600000, 344.24], [502239600000, 345.62], [504918000000, 346.43], [507596400000, 346.94], [510015600000, 347.88], [512690400000, 349.57], [515282400000, 350.35], [517960800000, 349.72], [520552800000, 347.78], [523231200000, 345.86], [525909600000, 344.84], [528505200000, 344.32], [531183600000, 345.67], [533775600000, 346.88], [536454000000, 348.19], [539132400000, 348.55], [541551600000, 349.52], [544226400000, 351.12], [546818400000, 351.84], [549496800000, 351.49], [552088800000, 349.82], [554767200000, 347.63], [557445600000, 346.38], [560041200000, 346.49], [562719600000, 347.75], [565311600000, 349.03], [567990000000, 350.20], [570668400000, 351.61], [573174000000, 352.22], [575848800000, 353.53], [578440800000, 354.14], [581119200000, 353.62], [583711200000, 352.53], [586389600000, 350.41], [589068000000, 348.84], [591663600000, 348.94], [594342000000, 350.04], [596934000000, 351.29], [599612400000, 352.72], [602290800000, 353.10], [604710000000, 353.65], [607384800000, 355.43], [609976800000, 355.70], [612655200000, 355.11], [615247200000, 353.79], [617925600000, 351.42], [620604000000, 349.81], [623199600000, 350.11], [625878000000, 351.26], [628470000000, 352.63], [631148400000, 353.64], [633826800000, 354.72], [636246000000, 355.49], [638920800000, 356.09], [641512800000, 357.08], [644191200000, 356.11], [646783200000, 354.70], [649461600000, 352.68], [652140000000, 351.05], [654735600000, 351.36], [657414000000, 352.81], [660006000000, 354.22], [662684400000, 354.85], [665362800000, 355.66], [667782000000, 357.04], [670456800000, 358.40], [673048800000, 359.00], [675727200000, 357.99], [678319200000, 356.00], [680997600000, 353.78], [683676000000, 352.20], [686271600000, 352.22], [688950000000, 353.70], [691542000000, 354.98], [694220400000, 356.09], [696898800000, 356.85], [699404400000, 357.73], [702079200000, 358.91], [704671200000, 359.45], [707349600000, 359.19], [709941600000, 356.72], [712620000000, 354.79], [715298400000, 352.79], [717894000000, 353.20], [720572400000, 354.15], [723164400000, 355.39], [725842800000, 356.77], [728521200000, 357.17], [730940400000, 358.26], [733615200000, 359.16], [736207200000, 360.07], [738885600000, 359.41], [741477600000, 357.44], [744156000000, 355.30], [746834400000, 353.87], [749430000000, 354.04], [752108400000, 355.27], [754700400000, 356.70], [757378800000, 358.00], [760057200000, 358.81], [762476400000, 359.68], [765151200000, 361.13], [767743200000, 361.48], [770421600000, 360.60], [773013600000, 359.20], [775692000000, 357.23], [778370400000, 355.42], [780966000000, 355.89], [783644400000, 357.41], [786236400000, 358.74], [788914800000, 359.73], [791593200000, 360.61], [794012400000, 361.58], [796687200000, 363.05], [799279200000, 363.62], [801957600000, 363.03], [804549600000, 361.55], [807228000000, 358.94], [809906400000, 357.93], [812502000000, 357.80], [815180400000, 359.22], [817772400000, 360.44], [820450800000, 361.83], [823129200000, 362.95], [825634800000, 363.91], [828309600000, 364.28], [830901600000, 364.94], [833580000000, 364.70], [836172000000, 363.31], [838850400000, 361.15], [841528800000, 359.40], [844120800000, 359.34], [846802800000, 360.62], [849394800000, 361.96], [852073200000, 362.81], [854751600000, 363.87], [857170800000, 364.25], [859845600000, 366.02], [862437600000, 366.46], [865116000000, 365.32], [867708000000, 364.07], [870386400000, 361.95], [873064800000, 360.06], [875656800000, 360.49], [878338800000, 362.19], [880930800000, 364.12], [883609200000, 364.99], [886287600000, 365.82], [888706800000, 366.95], [891381600000, 368.42], [893973600000, 369.33], [896652000000, 368.78], [899244000000, 367.59], [901922400000, 365.84], [904600800000, 363.83], [907192800000, 364.18], [909874800000, 365.34], [912466800000, 366.93], [915145200000, 367.94], [917823600000, 368.82], [920242800000, 369.46], [922917600000, 370.77], [925509600000, 370.66], [928188000000, 370.10], [930780000000, 369.08], [933458400000, 366.66], [936136800000, 364.60], [938728800000, 365.17], [941410800000, 366.51], [944002800000, 367.89], [946681200000, 369.04], [949359600000, 369.35], [951865200000, 370.38], [954540000000, 371.63], [957132000000, 371.32], [959810400000, 371.53], [962402400000, 369.75], [965080800000, 368.23], [967759200000, 366.87], [970351200000, 366.94], [973033200000, 368.27], [975625200000, 369.64], [978303600000, 370.46], [980982000000, 371.44], [983401200000, 372.37], [986076000000, 373.33], [988668000000, 373.77], [991346400000, 373.09], [993938400000, 371.51], [996616800000, 369.55], [999295200000, 368.12], [1001887200000, 368.38], [1004569200000, 369.66], [1007161200000, 371.11], [1009839600000, 372.36], [1012518000000, 373.09], [1014937200000, 373.81], [1017612000000, 374.93], [1020204000000, 375.58], [1022882400000, 375.44], [1025474400000, 373.86], [1028152800000, 371.77], [1030831200000, 370.73], [1033423200000, 370.50], [1036105200000, 372.18], [1038697200000, 373.70], [1041375600000, 374.92], [1044054000000, 375.62], [1046473200000, 376.51], [1049148000000, 377.75], [1051740000000, 378.54], [1054418400000, 378.20], [1057010400000, 376.68], [1059688800000, 374.43], [1062367200000, 373.11], [1064959200000, 373.10], [1067641200000, 374.77], [1070233200000, 375.97], [1072911600000, 377.03], [1075590000000, 377.87], [1078095600000, 378.88], [1080770400000, 380.42], [1083362400000, 380.62], [1086040800000, 379.70], [1088632800000, 377.43], [1091311200000, 376.32], [1093989600000, 374.19], [1096581600000, 374.47], [1099263600000, 376.15], [1101855600000, 377.51], [1104534000000, 378.43], [1107212400000, 379.70], [1109631600000, 380.92], [1112306400000, 382.18], [1114898400000, 382.45], [1117576800000, 382.14], [1120168800000, 380.60], [1122847200000, 378.64], [1125525600000, 376.73], [1128117600000, 376.84], [1130799600000, 378.29], [1133391600000, 380.06], [1136070000000, 381.40], [1138748400000, 382.20], [1141167600000, 382.66], [1143842400000, 384.69], [1146434400000, 384.94], [1149112800000, 384.01], [1151704800000, 382.14], [1154383200000, 380.31], [1157061600000, 378.81], [1159653600000, 379.03], [1162335600000, 380.17], [1164927600000, 381.85], [1167606000000, 382.94], [1170284400000, 383.86], [1172703600000, 384.49], [1175378400000, 386.37], [1177970400000, 386.54], [1180648800000, 385.98], [1183240800000, 384.36], [1185919200000, 381.85], [1188597600000, 380.74], [1191189600000, 381.15], [1193871600000, 382.38], [1196463600000, 383.94], [1199142000000, 385.44]]; \n\n\t\t$.plot(\"#placeholder\", [d], {\n\t\t\txaxis: { mode: \"time\" }\n\t\t});\n\n\t\t$(\"#whole\").click(function () {\n\t\t\t$.plot(\"#placeholder\", [d], {\n\t\t\t\txaxis: { mode: \"time\" }\n\t\t\t});\n\t\t});\n\n\t\t$(\"#nineties\").click(function () {\n\t\t\t$.plot(\"#placeholder\", [d], {\n\t\t\t\txaxis: {\n\t\t\t\t\tmode: \"time\",\n\t\t\t\t\tmin: (new Date(1990, 0, 1)).getTime(),\n\t\t\t\t\tmax: (new Date(2000, 0, 1)).getTime()\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t$(\"#latenineties\").click(function () {\n\t\t\t$.plot(\"#placeholder\", [d], {\n\t\t\t\txaxis: {\n\t\t\t\t\tmode: \"time\",\n\t\t\t\t\tminTickSize: [1, \"year\"],\n\t\t\t\t\tmin: (new Date(1996, 0, 1)).getTime(),\n\t\t\t\t\tmax: (new Date(2000, 0, 1)).getTime()\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t$(\"#ninetyninequarters\").click(function () {\n\t\t\t$.plot(\"#placeholder\", [d], {\n\t\t\t\txaxis: {\n\t\t\t\t\tmode: \"time\",\n\t\t\t\t\tminTickSize: [1, \"quarter\"],\n\t\t\t\t\tmin: (new Date(1999, 0, 1)).getTime(),\n\t\t\t\t\tmax: (new Date(2000, 0, 1)).getTime()\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t$(\"#ninetynine\").click(function () {\n\t\t\t$.plot(\"#placeholder\", [d], {\n\t\t\t\txaxis: {\n\t\t\t\t\tmode: \"time\",\n\t\t\t\t\tminTickSize: [1, \"month\"],\n\t\t\t\t\tmin: (new Date(1999, 0, 1)).getTime(),\n\t\t\t\t\tmax: (new Date(2000, 0, 1)).getTime()\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t$(\"#lastweekninetynine\").click(function () {\n\t\t\t$.plot(\"#placeholder\", [d], {\n\t\t\t\txaxis: {\n\t\t\t\t\tmode: \"time\",\n\t\t\t\t\tminTickSize: [1, \"day\"],\n\t\t\t\t\tmin: (new Date(1999, 11, 25)).getTime(),\n\t\t\t\t\tmax: (new Date(2000, 0, 1)).getTime(),\n\t\t\t\t\ttimeformat: \"%a\"\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t$(\"#lastdayninetynine\").click(function () {\n\t\t\t$.plot(\"#placeholder\", [d], {\n\t\t\t\txaxis: {\n\t\t\t\t\tmode: \"time\",\n\t\t\t\t\tminTickSize: [1, \"hour\"],\n\t\t\t\t\tmin: (new Date(1999, 11, 31)).getTime(),\n\t\t\t\t\tmax: (new Date(2000, 0, 1)).getTime(),\n\t\t\t\t\ttwelveHourClock: true\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Time Axes</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>Monthly mean atmospheric CO<sub>2</sub> in PPM at Mauna Loa, Hawaii (source: <a href=\"http://www.esrl.noaa.gov/gmd/ccgg/trends/\">NOAA/ESRL</a>).</p>\n\n\t\t<p>If you tell Flot that an axis represents time, the data will be interpreted as timestamps and the ticks adjusted and formatted accordingly.</p>\n\n\t\t<p>Zoom to: <button id=\"whole\">Whole period</button>\n\t\t<button id=\"nineties\">1990-2000</button>\n\t\t<button id=\"latenineties\">1996-2000</button></p>\n\n\t\t<p>Zoom to: <button id=\"ninetyninequarters\">1999 by quarter</button>\n\t\t<button id=\"ninetynine\">1999 by month</button>\n\t\t<button id=\"lastweekninetynine\">Last week of 1999</button>\n\t\t<button id=\"lastdayninetynine\">Dec. 31, 1999</button></p>\n\n\t\t<p>The timestamps must be specified as Javascript timestamps, as milliseconds since January 1, 1970 00:00. This is like Unix timestamps, but in milliseconds instead of seconds (remember to multiply with 1000!).</p>\n\n\t\t<p>As an extra caveat, the timestamps are interpreted according to UTC and, by default, displayed as such. You can set the axis \"timezone\" option to \"browser\" to display the timestamps in the user's timezone, or, if you use timezoneJS, you can specify a time zone.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/date.js",
    "content": "// -----\n// The `timezoneJS.Date` object gives you full-blown timezone support, independent from the timezone set on the end-user's machine running the browser. It uses the Olson zoneinfo files for its timezone data.\n//\n// The constructor function and setter methods use proxy JavaScript Date objects behind the scenes, so you can use strings like '10/22/2006' with the constructor. You also get the same sensible wraparound behavior with numeric parameters (like setting a value of 14 for the month wraps around to the next March).\n//\n// The other significant difference from the built-in JavaScript Date is that `timezoneJS.Date` also has named properties that store the values of year, month, date, etc., so it can be directly serialized to JSON and used for data transfer.\n\n/*\n * Copyright 2010 Matthew Eernisse (mde@fleegix.org)\n * and Open Source Applications Foundation\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 * Credits: Ideas included from incomplete JS implementation of Olson\n * parser, \"XMLDAte\" by Philippe Goetz (philippe.goetz@wanadoo.fr)\n *\n * Contributions:\n * Jan Niehusmann\n * Ricky Romero\n * Preston Hunt (prestonhunt@gmail.com)\n * Dov. B Katz (dov.katz@morganstanley.com)\n * Peter Bergström (pbergstr@mac.com)\n * Long Ho\n */\n(function () {\n  // Standard initialization stuff to make sure the library is\n  // usable on both client and server (node) side.\n\n  var root = this;\n\n  var timezoneJS;\n  if (typeof exports !== 'undefined') {\n    timezoneJS = exports;\n  } else {\n    timezoneJS = root.timezoneJS = {};\n  }\n\n  timezoneJS.VERSION = '1.0.0';\n\n  // Grab the ajax library from global context.\n  // This can be jQuery, Zepto or fleegix.\n  // You can also specify your own transport mechanism by declaring\n  // `timezoneJS.timezone.transport` to a `function`. More details will follow\n  var $ = root.$ || root.jQuery || root.Zepto\n    , fleegix = root.fleegix\n  // Declare constant list of days and months. Unfortunately this doesn't leave room for i18n due to the Olson data being in English itself\n    , DAYS = timezoneJS.Days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n    , MONTHS = timezoneJS.Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n    , SHORT_MONTHS = {}\n    , SHORT_DAYS = {}\n    , EXACT_DATE_TIME = {}\n    , TZ_REGEXP = new RegExp('^[a-zA-Z]+/');\n\n  //`{ \"Jan\": 0, \"Feb\": 1, \"Mar\": 2, \"Apr\": 3, \"May\": 4, \"Jun\": 5, \"Jul\": 6, \"Aug\": 7, \"Sep\": 8, \"Oct\": 9, \"Nov\": 10, \"Dec\": 11 }`\n  for (var i = 0; i < MONTHS.length; i++) {\n    SHORT_MONTHS[MONTHS[i].substr(0, 3)] = i;\n  }\n\n  //`{ \"Sun\": 0, \"Mon\": 1, \"Tue\": 2, \"Wed\": 3, \"Thu\": 4, \"Fri\": 5, \"Sat\": 6 }`\n  for (i = 0; i < DAYS.length; i++) {\n    SHORT_DAYS[DAYS[i].substr(0, 3)] = i;\n  }\n\n\n  //Handle array indexOf in IE\n  if (!Array.prototype.indexOf) {\n    Array.prototype.indexOf = function (el) {\n      for (var i = 0; i < this.length; i++ ) {\n        if (el === this[i]) return i;\n      }\n      return -1;\n    }\n  }\n\n  // Format a number to the length = digits. For ex:\n  //\n  // `_fixWidth(2, 2) = '02'`\n  //\n  // `_fixWidth(1998, 2) = '98'`\n  //\n  // This is used to pad numbers in converting date to string in ISO standard.\n  var _fixWidth = function (number, digits) {\n    if (typeof number !== \"number\") { throw \"not a number: \" + number; }\n    var s = number.toString();\n    if (number.length > digits) {\n      return number.substr(number.length - digits, number.length);\n    }\n    while (s.length < digits) {\n      s = '0' + s;\n    }\n    return s;\n  };\n\n  // Abstraction layer for different transport layers, including fleegix/jQuery/Zepto\n  //\n  // Object `opts` include\n  //\n  // - `url`: url to ajax query\n  //\n  // - `async`: true for asynchronous, false otherwise. If false, return value will be response from URL. This is true by default\n  //\n  // - `success`: success callback function\n  //\n  // - `error`: error callback function\n  // Returns response from URL if async is false, otherwise the AJAX request object itself\n  var _transport = function (opts) {\n    if ((!fleegix || typeof fleegix.xhr === 'undefined') && (!$ || typeof $.ajax === 'undefined')) {\n      throw new Error('Please use the Fleegix.js XHR module, jQuery ajax, Zepto ajax, or define your own transport mechanism for downloading zone files.');\n    }\n    if (!opts) return;\n    if (!opts.url) throw new Error ('URL must be specified');\n    if (!('async' in opts)) opts.async = true;\n    if (!opts.async) {\n      return fleegix && fleegix.xhr\n      ? fleegix.xhr.doReq({ url: opts.url, async: false })\n      : $.ajax({ url : opts.url, async : false }).responseText;\n    }\n    return fleegix && fleegix.xhr\n    ? fleegix.xhr.send({\n      url : opts.url,\n      method : 'get',\n      handleSuccess : opts.success,\n      handleErr : opts.error\n    })\n    : $.ajax({\n      url : opts.url,\n      dataType: 'text',\n      method : 'GET',\n      error : opts.error,\n      success : opts.success\n    });\n  };\n\n  // Constructor, which is similar to that of the native Date object itself\n  timezoneJS.Date = function () {\n    var args = Array.prototype.slice.apply(arguments)\n    , dt = null\n    , tz = null\n    , arr = [];\n\n\n    //We support several different constructors, including all the ones from `Date` object\n    // with a timezone string at the end.\n    //\n    //- `[tz]`: Returns object with time in `tz` specified.\n    //\n    // - `utcMillis`, `[tz]`: Return object with UTC time = `utcMillis`, in `tz`.\n    //\n    // - `Date`, `[tz]`: Returns object with UTC time = `Date.getTime()`, in `tz`.\n    //\n    // - `year, month, [date,] [hours,] [minutes,] [seconds,] [millis,] [tz]: Same as `Date` object\n    // with tz.\n    //\n    // - `Array`: Can be any combo of the above.\n    //\n    //If 1st argument is an array, we can use it as a list of arguments itself\n    if (Object.prototype.toString.call(args[0]) === '[object Array]') {\n      args = args[0];\n    }\n    if (typeof args[args.length - 1] === 'string' && TZ_REGEXP.test(args[args.length - 1])) {\n      tz = args.pop();\n    }\n    switch (args.length) {\n      case 0:\n        dt = new Date();\n        break;\n      case 1:\n        dt = new Date(args[0]);\n        break;\n      default:\n        for (var i = 0; i < 7; i++) {\n          arr[i] = args[i] || 0;\n        }\n        dt = new Date(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6]);\n        break;\n    }\n\n    this._useCache = false;\n    this._tzInfo = {};\n    this._day = 0;\n    this.year = 0;\n    this.month = 0;\n    this.date = 0;\n    this.hours = 0;\n    this.minutes = 0;\n    this.seconds = 0;\n    this.milliseconds = 0;\n    this.timezone = tz || null;\n    //Tricky part:\n    // For the cases where there are 1/2 arguments: `timezoneJS.Date(millis, [tz])` and `timezoneJS.Date(Date, [tz])`. The\n    // Date `dt` created should be in UTC. Thus the way I detect such cases is to determine if `arr` is not populated & `tz`\n    // is specified. Because if `tz` is not specified, `dt` can be in local time.\n    if (arr.length) {\n       this.setFromDateObjProxy(dt);\n    } else {\n       this.setFromTimeProxy(dt.getTime(), tz);\n    }\n  };\n\n  // Implements most of the native Date object\n  timezoneJS.Date.prototype = {\n    getDate: function () { return this.date; },\n    getDay: function () { return this._day; },\n    getFullYear: function () { return this.year; },\n    getMonth: function () { return this.month; },\n    getYear: function () { return this.year; },\n    getHours: function () { return this.hours; },\n    getMilliseconds: function () { return this.milliseconds; },\n    getMinutes: function () { return this.minutes; },\n    getSeconds: function () { return this.seconds; },\n    getUTCDate: function () { return this.getUTCDateProxy().getUTCDate(); },\n    getUTCDay: function () { return this.getUTCDateProxy().getUTCDay(); },\n    getUTCFullYear: function () { return this.getUTCDateProxy().getUTCFullYear(); },\n    getUTCHours: function () { return this.getUTCDateProxy().getUTCHours(); },\n    getUTCMilliseconds: function () { return this.getUTCDateProxy().getUTCMilliseconds(); },\n    getUTCMinutes: function () { return this.getUTCDateProxy().getUTCMinutes(); },\n    getUTCMonth: function () { return this.getUTCDateProxy().getUTCMonth(); },\n    getUTCSeconds: function () { return this.getUTCDateProxy().getUTCSeconds(); },\n    // Time adjusted to user-specified timezone\n    getTime: function () {\n      return this._timeProxy + (this.getTimezoneOffset() * 60 * 1000);\n    },\n    getTimezone: function () { return this.timezone; },\n    getTimezoneOffset: function () { return this.getTimezoneInfo().tzOffset; },\n    getTimezoneAbbreviation: function () { return this.getTimezoneInfo().tzAbbr; },\n    getTimezoneInfo: function () {\n      if (this._useCache) return this._tzInfo;\n      var res;\n      // If timezone is specified, get the correct timezone info based on the Date given\n      if (this.timezone) {\n        res = this.timezone === 'Etc/UTC' || this.timezone === 'Etc/GMT'\n          ? { tzOffset: 0, tzAbbr: 'UTC' }\n          : timezoneJS.timezone.getTzInfo(this._timeProxy, this.timezone);\n      }\n      // If no timezone was specified, use the local browser offset\n      else {\n        res = { tzOffset: this.getLocalOffset(), tzAbbr: null };\n      }\n      this._tzInfo = res;\n      this._useCache = true;\n      return res\n    },\n    getUTCDateProxy: function () {\n      var dt = new Date(this._timeProxy);\n      dt.setUTCMinutes(dt.getUTCMinutes() + this.getTimezoneOffset());\n      return dt;\n    },\n    setDate: function (n) { this.setAttribute('date', n); },\n    setFullYear: function (n) { this.setAttribute('year', n); },\n    setMonth: function (n) { this.setAttribute('month', n); },\n    setYear: function (n) { this.setUTCAttribute('year', n); },\n    setHours: function (n) { this.setAttribute('hours', n); },\n    setMilliseconds: function (n) { this.setAttribute('milliseconds', n); },\n    setMinutes: function (n) { this.setAttribute('minutes', n); },\n    setSeconds: function (n) { this.setAttribute('seconds', n); },\n    setTime: function (n) {\n      if (isNaN(n)) { throw new Error('Units must be a number.'); }\n      this.setFromTimeProxy(n, this.timezone);\n    },\n    setUTCDate: function (n) { this.setUTCAttribute('date', n); },\n    setUTCFullYear: function (n) { this.setUTCAttribute('year', n); },\n    setUTCHours: function (n) { this.setUTCAttribute('hours', n); },\n    setUTCMilliseconds: function (n) { this.setUTCAttribute('milliseconds', n); },\n    setUTCMinutes: function (n) { this.setUTCAttribute('minutes', n); },\n    setUTCMonth: function (n) { this.setUTCAttribute('month', n); },\n    setUTCSeconds: function (n) { this.setUTCAttribute('seconds', n); },\n    setFromDateObjProxy: function (dt) {\n      this.year = dt.getFullYear();\n      this.month = dt.getMonth();\n      this.date = dt.getDate();\n      this.hours = dt.getHours();\n      this.minutes = dt.getMinutes();\n      this.seconds = dt.getSeconds();\n      this.milliseconds = dt.getMilliseconds();\n      this._day =  dt.getDay();\n      this._dateProxy = dt;\n      this._timeProxy = Date.UTC(this.year, this.month, this.date, this.hours, this.minutes, this.seconds, this.milliseconds);\n      this._useCache = false;\n    },\n    setFromTimeProxy: function (utcMillis, tz) {\n      var dt = new Date(utcMillis);\n      var tzOffset;\n      tzOffset = tz ? timezoneJS.timezone.getTzInfo(dt, tz).tzOffset : dt.getTimezoneOffset();\n      dt.setTime(utcMillis + (dt.getTimezoneOffset() - tzOffset) * 60000);\n      this.setFromDateObjProxy(dt);\n    },\n    setAttribute: function (unit, n) {\n      if (isNaN(n)) { throw new Error('Units must be a number.'); }\n      var dt = this._dateProxy;\n      var meth = unit === 'year' ? 'FullYear' : unit.substr(0, 1).toUpperCase() + unit.substr(1);\n      dt['set' + meth](n);\n      this.setFromDateObjProxy(dt);\n    },\n    setUTCAttribute: function (unit, n) {\n      if (isNaN(n)) { throw new Error('Units must be a number.'); }\n      var meth = unit === 'year' ? 'FullYear' : unit.substr(0, 1).toUpperCase() + unit.substr(1);\n      var dt = this.getUTCDateProxy();\n      dt['setUTC' + meth](n);\n      dt.setUTCMinutes(dt.getUTCMinutes() - this.getTimezoneOffset());\n      this.setFromTimeProxy(dt.getTime() + this.getTimezoneOffset() * 60000, this.timezone);\n    },\n    setTimezone: function (tz) {\n      var previousOffset = this.getTimezoneInfo().tzOffset;\n      this.timezone = tz;\n      this._useCache = false;\n      // Set UTC minutes offsets by the delta of the two timezones\n      this.setUTCMinutes(this.getUTCMinutes() - this.getTimezoneInfo().tzOffset + previousOffset);\n    },\n    removeTimezone: function () {\n      this.timezone = null;\n      this._useCache = false;\n    },\n    valueOf: function () { return this.getTime(); },\n    clone: function () {\n      return this.timezone ? new timezoneJS.Date(this.getTime(), this.timezone) : new timezoneJS.Date(this.getTime());\n    },\n    toGMTString: function () { return this.toString('EEE, dd MMM yyyy HH:mm:ss Z', 'Etc/GMT'); },\n    toLocaleString: function () {},\n    toLocaleDateString: function () {},\n    toLocaleTimeString: function () {},\n    toSource: function () {},\n    toISOString: function () { return this.toString('yyyy-MM-ddTHH:mm:ss.SSS', 'Etc/UTC') + 'Z'; },\n    toJSON: function () { return this.toISOString(); },\n    // Allows different format following ISO8601 format:\n    toString: function (format, tz) {\n      // Default format is the same as toISOString\n      if (!format) format = 'yyyy-MM-dd HH:mm:ss';\n      var result = format;\n      var tzInfo = tz ? timezoneJS.timezone.getTzInfo(this.getTime(), tz) : this.getTimezoneInfo();\n      var _this = this;\n      // If timezone is specified, get a clone of the current Date object and modify it\n      if (tz) {\n        _this = this.clone();\n        _this.setTimezone(tz);\n      }\n      var hours = _this.getHours();\n      return result\n      // fix the same characters in Month names\n      .replace(/a+/g, function () { return 'k'; })\n      // `y`: year\n      .replace(/y+/g, function (token) { return _fixWidth(_this.getFullYear(), token.length); })\n      // `d`: date\n      .replace(/d+/g, function (token) { return _fixWidth(_this.getDate(), token.length); })\n      // `m`: minute\n      .replace(/m+/g, function (token) { return _fixWidth(_this.getMinutes(), token.length); })\n      // `s`: second\n      .replace(/s+/g, function (token) { return _fixWidth(_this.getSeconds(), token.length); })\n      // `S`: millisecond\n      .replace(/S+/g, function (token) { return _fixWidth(_this.getMilliseconds(), token.length); })\n      // `M`: month. Note: `MM` will be the numeric representation (e.g February is 02) but `MMM` will be text representation (e.g February is Feb)\n      .replace(/M+/g, function (token) {\n        var _month = _this.getMonth(),\n        _len = token.length;\n        if (_len > 3) {\n          return timezoneJS.Months[_month];\n        } else if (_len > 2) {\n          return timezoneJS.Months[_month].substring(0, _len);\n        }\n        return _fixWidth(_month + 1, _len);\n      })\n      // `k`: AM/PM\n      .replace(/k+/g, function () {\n        if (hours >= 12) {\n          if (hours > 12) {\n            hours -= 12;\n          }\n          return 'PM';\n        }\n        return 'AM';\n      })\n      // `H`: hour\n      .replace(/H+/g, function (token) { return _fixWidth(hours, token.length); })\n      // `E`: day\n      .replace(/E+/g, function (token) { return DAYS[_this.getDay()].substring(0, token.length); })\n      // `Z`: timezone abbreviation\n      .replace(/Z+/gi, function () { return tzInfo.tzAbbr; });\n    },\n    toUTCString: function () { return this.toGMTString(); },\n    civilToJulianDayNumber: function (y, m, d) {\n      var a;\n      // Adjust for zero-based JS-style array\n      m++;\n      if (m > 12) {\n        a = parseInt(m/12, 10);\n        m = m % 12;\n        y += a;\n      }\n      if (m <= 2) {\n        y -= 1;\n        m += 12;\n      }\n      a = Math.floor(y / 100);\n      var b = 2 - a + Math.floor(a / 4)\n        , jDt = Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + d + b - 1524;\n      return jDt;\n    },\n    getLocalOffset: function () {\n      return this._dateProxy.getTimezoneOffset();\n    }\n  };\n\n\n  timezoneJS.timezone = new function () {\n    var _this = this\n      , regionMap = {'Etc':'etcetera','EST':'northamerica','MST':'northamerica','HST':'northamerica','EST5EDT':'northamerica','CST6CDT':'northamerica','MST7MDT':'northamerica','PST8PDT':'northamerica','America':'northamerica','Pacific':'australasia','Atlantic':'europe','Africa':'africa','Indian':'africa','Antarctica':'antarctica','Asia':'asia','Australia':'australasia','Europe':'europe','WET':'europe','CET':'europe','MET':'europe','EET':'europe'}\n      , regionExceptions = {'Pacific/Honolulu':'northamerica','Atlantic/Bermuda':'northamerica','Atlantic/Cape_Verde':'africa','Atlantic/St_Helena':'africa','Indian/Kerguelen':'antarctica','Indian/Chagos':'asia','Indian/Maldives':'asia','Indian/Christmas':'australasia','Indian/Cocos':'australasia','America/Danmarkshavn':'europe','America/Scoresbysund':'europe','America/Godthab':'europe','America/Thule':'europe','Asia/Yekaterinburg':'europe','Asia/Omsk':'europe','Asia/Novosibirsk':'europe','Asia/Krasnoyarsk':'europe','Asia/Irkutsk':'europe','Asia/Yakutsk':'europe','Asia/Vladivostok':'europe','Asia/Sakhalin':'europe','Asia/Magadan':'europe','Asia/Kamchatka':'europe','Asia/Anadyr':'europe','Africa/Ceuta':'europe','America/Argentina/Buenos_Aires':'southamerica','America/Argentina/Cordoba':'southamerica','America/Argentina/Tucuman':'southamerica','America/Argentina/La_Rioja':'southamerica','America/Argentina/San_Juan':'southamerica','America/Argentina/Jujuy':'southamerica','America/Argentina/Catamarca':'southamerica','America/Argentina/Mendoza':'southamerica','America/Argentina/Rio_Gallegos':'southamerica','America/Argentina/Ushuaia':'southamerica','America/Aruba':'southamerica','America/La_Paz':'southamerica','America/Noronha':'southamerica','America/Belem':'southamerica','America/Fortaleza':'southamerica','America/Recife':'southamerica','America/Araguaina':'southamerica','America/Maceio':'southamerica','America/Bahia':'southamerica','America/Sao_Paulo':'southamerica','America/Campo_Grande':'southamerica','America/Cuiaba':'southamerica','America/Porto_Velho':'southamerica','America/Boa_Vista':'southamerica','America/Manaus':'southamerica','America/Eirunepe':'southamerica','America/Rio_Branco':'southamerica','America/Santiago':'southamerica','Pacific/Easter':'southamerica','America/Bogota':'southamerica','America/Curacao':'southamerica','America/Guayaquil':'southamerica','Pacific/Galapagos':'southamerica','Atlantic/Stanley':'southamerica','America/Cayenne':'southamerica','America/Guyana':'southamerica','America/Asuncion':'southamerica','America/Lima':'southamerica','Atlantic/South_Georgia':'southamerica','America/Paramaribo':'southamerica','America/Port_of_Spain':'southamerica','America/Montevideo':'southamerica','America/Caracas':'southamerica'};\n    function invalidTZError(t) { throw new Error('Timezone \"' + t + '\" is either incorrect, or not loaded in the timezone registry.'); }\n    function builtInLoadZoneFile(fileName, opts) {\n      var url = _this.zoneFileBasePath + '/' + fileName;\n      return !opts || !opts.async\n      ? _this.parseZones(_this.transport({ url : url, async : false }))\n      : _this.transport({\n        async: true,\n        url : url,\n        success : function (str) {\n          if (_this.parseZones(str) && typeof opts.callback === 'function') {\n            opts.callback();\n          }\n          return true;\n        },\n        error : function () {\n          throw new Error('Error retrieving \"' + url + '\" zoneinfo files');\n        }\n      });\n    }\n    function getRegionForTimezone(tz) {\n      var exc = regionExceptions[tz]\n        , reg\n        , ret;\n      if (exc) return exc;\n      reg = tz.split('/')[0];\n      ret = regionMap[reg];\n      // If there's nothing listed in the main regions for this TZ, check the 'backward' links\n      if (ret) return ret;\n      var link = _this.zones[tz];\n      if (typeof link === 'string') {\n        return getRegionForTimezone(link);\n      }\n      // Backward-compat file hasn't loaded yet, try looking in there\n      if (!_this.loadedZones.backward) {\n        // This is for obvious legacy zones (e.g., Iceland) that don't even have a prefix like \"America/\" that look like normal zones\n        _this.loadZoneFile('backward');\n        return getRegionForTimezone(tz);\n      }\n      invalidTZError(tz);\n    }\n    function parseTimeString(str) {\n      var pat = /(\\d+)(?::0*(\\d*))?(?::0*(\\d*))?([wsugz])?$/;\n      var hms = str.match(pat);\n      hms[1] = parseInt(hms[1], 10);\n      hms[2] = hms[2] ? parseInt(hms[2], 10) : 0;\n      hms[3] = hms[3] ? parseInt(hms[3], 10) : 0;\n\n      return hms;\n    }\n    function processZone(z) {\n      if (!z[3]) { return; }\n      var yea = parseInt(z[3], 10);\n      var mon = 11;\n      var dat = 31;\n      if (z[4]) {\n        mon = SHORT_MONTHS[z[4].substr(0, 3)];\n        dat = parseInt(z[5], 10) || 1;\n      }\n      var string = z[6] ? z[6] : '00:00:00'\n        , t = parseTimeString(string);\n      return [yea, mon, dat, t[1], t[2], t[3]];\n    }\n    function getZone(dt, tz) {\n      var utcMillis = typeof dt === 'number' ? dt : new Date(dt).getTime();\n      var t = tz;\n      var zoneList = _this.zones[t];\n      // Follow links to get to an actual zone\n      while (typeof zoneList === \"string\") {\n        t = zoneList;\n        zoneList = _this.zones[t];\n      }\n      if (!zoneList) {\n        // Backward-compat file hasn't loaded yet, try looking in there\n        if (!_this.loadedZones.backward) {\n          //This is for backward entries like \"America/Fort_Wayne\" that\n          // getRegionForTimezone *thinks* it has a region file and zone\n          // for (e.g., America => 'northamerica'), but in reality it's a\n          // legacy zone we need the backward file for.\n          _this.loadZoneFile('backward');\n          return getZone(dt, tz);\n        }\n        invalidTZError(t);\n      }\n      if (zoneList.length === 0) {\n        throw new Error('No Zone found for \"' + tz + '\" on ' + dt);\n      }\n      //Do backwards lookup since most use cases deal with newer dates.\n      for (var i = zoneList.length - 1; i >= 0; i--) {\n        var z = zoneList[i];\n        if (z[3] && utcMillis > z[3]) break;\n      }\n      return zoneList[i+1];\n    }\n    function getBasicOffset(time) {\n      var off = parseTimeString(time)\n        , adj = time.indexOf('-') === 0 ? -1 : 1;\n      off = adj * (((off[1] * 60 + off[2]) * 60 + off[3]) * 1000);\n      return off/60/1000;\n    }\n\n    //if isUTC is true, date is given in UTC, otherwise it's given\n    // in local time (ie. date.getUTC*() returns local time components)\n    function getRule(dt, zone, isUTC) {\n      var date = typeof dt === 'number' ? new Date(dt) : dt;\n      var ruleset = zone[1];\n      var basicOffset = zone[0];\n\n      //Convert a date to UTC. Depending on the 'type' parameter, the date\n      // parameter may be:\n      //\n      // - `u`, `g`, `z`: already UTC (no adjustment).\n      //\n      // - `s`: standard time (adjust for time zone offset but not for DST)\n      //\n    // - `w`: wall clock time (adjust for both time zone and DST offset).\n      //\n      // DST adjustment is done using the rule given as third argument.\n      var convertDateToUTC = function (date, type, rule) {\n        var offset = 0;\n\n        if (type === 'u' || type === 'g' || type === 'z') { // UTC\n          offset = 0;\n        } else if (type === 's') { // Standard Time\n          offset = basicOffset;\n        } else if (type === 'w' || !type) { // Wall Clock Time\n          offset = getAdjustedOffset(basicOffset, rule);\n        } else {\n          throw(\"unknown type \" + type);\n        }\n        offset *= 60 * 1000; // to millis\n\n        return new Date(date.getTime() + offset);\n      };\n\n      //Step 1:  Find applicable rules for this year.\n      //\n      //Step 2:  Sort the rules by effective date.\n      //\n      //Step 3:  Check requested date to see if a rule has yet taken effect this year.  If not,\n      //\n      //Step 4:  Get the rules for the previous year.  If there isn't an applicable rule for last year, then\n      // there probably is no current time offset since they seem to explicitly turn off the offset\n      // when someone stops observing DST.\n      //\n      // FIXME if this is not the case and we'll walk all the way back (ugh).\n      //\n      //Step 5:  Sort the rules by effective date.\n      //Step 6:  Apply the most recent rule before the current time.\n      var convertRuleToExactDateAndTime = function (yearAndRule, prevRule) {\n        var year = yearAndRule[0]\n          , rule = yearAndRule[1];\n          // Assume that the rule applies to the year of the given date.\n\n        var hms = rule[5];\n        var effectiveDate;\n\n        if (!EXACT_DATE_TIME[year])\n          EXACT_DATE_TIME[year] = {};\n\n        // Result for given parameters is already stored\n        if (EXACT_DATE_TIME[year][rule])\n          effectiveDate = EXACT_DATE_TIME[year][rule];\n        else {\n          //If we have a specific date, use that!\n          if (!isNaN(rule[4])) {\n            effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4], hms[1], hms[2], hms[3], 0));\n          }\n          //Let's hunt for the date.\n          else {\n            var targetDay\n              , operator;\n            //Example: `lastThu`\n            if (rule[4].substr(0, 4) === \"last\") {\n              // Start at the last day of the month and work backward.\n              effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]] + 1, 1, hms[1] - 24, hms[2], hms[3], 0));\n              targetDay = SHORT_DAYS[rule[4].substr(4, 3)];\n              operator = \"<=\";\n            }\n            //Example: `Sun>=15`\n            else {\n              //Start at the specified date.\n              effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4].substr(5), hms[1], hms[2], hms[3], 0));\n              targetDay = SHORT_DAYS[rule[4].substr(0, 3)];\n              operator = rule[4].substr(3, 2);\n            }\n            var ourDay = effectiveDate.getUTCDay();\n            //Go forwards.\n            if (operator === \">=\") {\n              effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay + ((targetDay < ourDay) ? 7 : 0)));\n            }\n            //Go backwards.  Looking for the last of a certain day, or operator is \"<=\" (less likely).\n            else {\n              effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay - ((targetDay > ourDay) ? 7 : 0)));\n            }\n          }\n          EXACT_DATE_TIME[year][rule] = effectiveDate;\n        }\n\n\n        //If previous rule is given, correct for the fact that the starting time of the current\n        // rule may be specified in local time.\n        if (prevRule) {\n          effectiveDate = convertDateToUTC(effectiveDate, hms[4], prevRule);\n        }\n        return effectiveDate;\n      };\n\n      var findApplicableRules = function (year, ruleset) {\n        var applicableRules = [];\n        for (var i = 0; ruleset && i < ruleset.length; i++) {\n          //Exclude future rules.\n          if (ruleset[i][0] <= year &&\n              (\n                // Date is in a set range.\n                ruleset[i][1] >= year ||\n                // Date is in an \"only\" year.\n                  (ruleset[i][0] === year && ruleset[i][1] === \"only\") ||\n                //We're in a range from the start year to infinity.\n                    ruleset[i][1] === \"max\"\n          )\n             ) {\n               //It's completely okay to have any number of matches here.\n               // Normally we should only see two, but that doesn't preclude other numbers of matches.\n               // These matches are applicable to this year.\n               applicableRules.push([year, ruleset[i]]);\n             }\n        }\n        return applicableRules;\n      };\n\n      var compareDates = function (a, b, prev) {\n        var year, rule;\n        if (a.constructor !== Date) {\n          year = a[0];\n          rule = a[1];\n          a = (!prev && EXACT_DATE_TIME[year] && EXACT_DATE_TIME[year][rule])\n            ? EXACT_DATE_TIME[year][rule]\n            : convertRuleToExactDateAndTime(a, prev);\n        } else if (prev) {\n          a = convertDateToUTC(a, isUTC ? 'u' : 'w', prev);\n        }\n        if (b.constructor !== Date) {\n          year = b[0];\n          rule = b[1];\n          b = (!prev && EXACT_DATE_TIME[year] && EXACT_DATE_TIME[year][rule]) ? EXACT_DATE_TIME[year][rule]\n            : convertRuleToExactDateAndTime(b, prev);\n        } else if (prev) {\n          b = convertDateToUTC(b, isUTC ? 'u' : 'w', prev);\n        }\n        a = Number(a);\n        b = Number(b);\n        return a - b;\n      };\n\n      var year = date.getUTCFullYear();\n      var applicableRules;\n\n      applicableRules = findApplicableRules(year, _this.rules[ruleset]);\n      applicableRules.push(date);\n      //While sorting, the time zone in which the rule starting time is specified\n      // is ignored. This is ok as long as the timespan between two DST changes is\n      // larger than the DST offset, which is probably always true.\n      // As the given date may indeed be close to a DST change, it may get sorted\n      // to a wrong position (off by one), which is corrected below.\n      applicableRules.sort(compareDates);\n\n      //If there are not enough past DST rules...\n      if (applicableRules.indexOf(date) < 2) {\n        applicableRules = applicableRules.concat(findApplicableRules(year-1, _this.rules[ruleset]));\n        applicableRules.sort(compareDates);\n      }\n      var pinpoint = applicableRules.indexOf(date);\n      if (pinpoint > 1 && compareDates(date, applicableRules[pinpoint-1], applicableRules[pinpoint-2][1]) < 0) {\n        //The previous rule does not really apply, take the one before that.\n        return applicableRules[pinpoint - 2][1];\n      } else if (pinpoint > 0 && pinpoint < applicableRules.length - 1 && compareDates(date, applicableRules[pinpoint+1], applicableRules[pinpoint-1][1]) > 0) {\n\n        //The next rule does already apply, take that one.\n        return applicableRules[pinpoint + 1][1];\n      } else if (pinpoint === 0) {\n        //No applicable rule found in this and in previous year.\n        return null;\n      }\n      return applicableRules[pinpoint - 1][1];\n    }\n    function getAdjustedOffset(off, rule) {\n      return -Math.ceil(rule[6] - off);\n    }\n    function getAbbreviation(zone, rule) {\n      var res;\n      var base = zone[2];\n      if (base.indexOf('%s') > -1) {\n        var repl;\n        if (rule) {\n          repl = rule[7] === '-' ? '' : rule[7];\n        }\n        //FIXME: Right now just falling back to Standard --\n        // apparently ought to use the last valid rule,\n        // although in practice that always ought to be Standard\n        else {\n          repl = 'S';\n        }\n        res = base.replace('%s', repl);\n      }\n      else if (base.indexOf('/') > -1) {\n        //Chose one of two alternative strings.\n        res = base.split(\"/\", 2)[rule[6] ? 1 : 0];\n      } else {\n        res = base;\n      }\n      return res;\n    }\n\n    this.zoneFileBasePath;\n    this.zoneFiles = ['africa', 'antarctica', 'asia', 'australasia', 'backward', 'etcetera', 'europe', 'northamerica', 'pacificnew', 'southamerica'];\n    this.loadingSchemes = {\n      PRELOAD_ALL: 'preloadAll',\n      LAZY_LOAD: 'lazyLoad',\n      MANUAL_LOAD: 'manualLoad'\n    };\n    this.loadingScheme = this.loadingSchemes.LAZY_LOAD;\n    this.loadedZones = {};\n    this.zones = {};\n    this.rules = {};\n\n    this.init = function (o) {\n      var opts = { async: true }\n        , def = this.defaultZoneFile = this.loadingScheme === this.loadingSchemes.PRELOAD_ALL\n          ? this.zoneFiles\n          : 'northamerica'\n        , done = 0\n        , callbackFn;\n      //Override default with any passed-in opts\n      for (var p in o) {\n        opts[p] = o[p];\n      }\n      if (typeof def === 'string') {\n        return this.loadZoneFile(def, opts);\n      }\n      //Wraps callback function in another one that makes\n      // sure all files have been loaded.\n      callbackFn = opts.callback;\n      opts.callback = function () {\n        done++;\n        (done === def.length) && typeof callbackFn === 'function' && callbackFn();\n      };\n      for (var i = 0; i < def.length; i++) {\n        this.loadZoneFile(def[i], opts);\n      }\n    };\n\n    //Get the zone files via XHR -- if the sync flag\n    // is set to true, it's being called by the lazy-loading\n    // mechanism, so the result needs to be returned inline.\n    this.loadZoneFile = function (fileName, opts) {\n      if (typeof this.zoneFileBasePath === 'undefined') {\n        throw new Error('Please define a base path to your zone file directory -- timezoneJS.timezone.zoneFileBasePath.');\n      }\n      //Ignore already loaded zones.\n      if (this.loadedZones[fileName]) {\n        return;\n      }\n      this.loadedZones[fileName] = true;\n      return builtInLoadZoneFile(fileName, opts);\n    };\n    this.loadZoneJSONData = function (url, sync) {\n      var processData = function (data) {\n        data = eval('('+ data +')');\n        for (var z in data.zones) {\n          _this.zones[z] = data.zones[z];\n        }\n        for (var r in data.rules) {\n          _this.rules[r] = data.rules[r];\n        }\n      };\n      return sync\n      ? processData(_this.transport({ url : url, async : false }))\n      : _this.transport({ url : url, success : processData });\n    };\n    this.loadZoneDataFromObject = function (data) {\n      if (!data) { return; }\n      for (var z in data.zones) {\n        _this.zones[z] = data.zones[z];\n      }\n      for (var r in data.rules) {\n        _this.rules[r] = data.rules[r];\n      }\n    };\n    this.getAllZones = function () {\n      var arr = [];\n      for (var z in this.zones) { arr.push(z); }\n      return arr.sort();\n    };\n    this.parseZones = function (str) {\n      var lines = str.split('\\n')\n        , arr = []\n        , chunk = ''\n        , l\n        , zone = null\n        , rule = null;\n      for (var i = 0; i < lines.length; i++) {\n        l = lines[i];\n        if (l.match(/^\\s/)) {\n          l = \"Zone \" + zone + l;\n        }\n        l = l.split(\"#\")[0];\n        if (l.length > 3) {\n          arr = l.split(/\\s+/);\n          chunk = arr.shift();\n          //Ignore Leap.\n          switch (chunk) {\n            case 'Zone':\n              zone = arr.shift();\n              if (!_this.zones[zone]) {\n                _this.zones[zone] = [];\n              }\n              if (arr.length < 3) break;\n              //Process zone right here and replace 3rd element with the processed array.\n              arr.splice(3, arr.length, processZone(arr));\n              if (arr[3]) arr[3] = Date.UTC.apply(null, arr[3]);\n              arr[0] = -getBasicOffset(arr[0]);\n              _this.zones[zone].push(arr);\n              break;\n            case 'Rule':\n              rule = arr.shift();\n              if (!_this.rules[rule]) {\n                _this.rules[rule] = [];\n              }\n              //Parse int FROM year and TO year\n              arr[0] = parseInt(arr[0], 10);\n              arr[1] = parseInt(arr[1], 10) || arr[1];\n              //Parse time string AT\n              arr[5] = parseTimeString(arr[5]);\n              //Parse offset SAVE\n              arr[6] = getBasicOffset(arr[6]);\n              _this.rules[rule].push(arr);\n              break;\n            case 'Link':\n              //No zones for these should already exist.\n              if (_this.zones[arr[1]]) {\n                throw new Error('Error with Link ' + arr[1] + '. Cannot create link of a preexisted zone.');\n              }\n              //Create the link.\n              _this.zones[arr[1]] = arr[0];\n              break;\n          }\n        }\n      }\n      return true;\n    };\n    //Expose transport mechanism and allow overwrite.\n    this.transport = _transport;\n    this.getTzInfo = function (dt, tz, isUTC) {\n      //Lazy-load any zones not yet loaded.\n      if (this.loadingScheme === this.loadingSchemes.LAZY_LOAD) {\n        //Get the correct region for the zone.\n        var zoneFile = getRegionForTimezone(tz);\n        if (!zoneFile) {\n          throw new Error('Not a valid timezone ID.');\n        }\n        if (!this.loadedZones[zoneFile]) {\n          //Get the file and parse it -- use synchronous XHR.\n          this.loadZoneFile(zoneFile);\n        }\n      }\n      var z = getZone(dt, tz);\n      var off = z[0];\n      //See if the offset needs adjustment.\n      var rule = getRule(dt, z, isUTC);\n      if (rule) {\n        off = getAdjustedOffset(off, rule);\n      }\n      var abbr = getAbbreviation(z, rule);\n      return { tzOffset: off, tzAbbr: abbr };\n    };\n  };\n}).call(this);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Time zones</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.time.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"date.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\ttimezoneJS.timezone.zoneFileBasePath = \"tz\";\n\t\ttimezoneJS.timezone.defaultZoneFile = [];\n\t\ttimezoneJS.timezone.init({async: false});\n\n\t\tvar d = [\n\t\t\t[Date.UTC(2011, 2, 12, 14, 0, 0), 28],\n\t\t\t[Date.UTC(2011, 2, 12, 15, 0, 0), 27],\n\t\t\t[Date.UTC(2011, 2, 12, 16, 0, 0), 25],\n\t\t\t[Date.UTC(2011, 2, 12, 17, 0, 0), 19],\n\t\t\t[Date.UTC(2011, 2, 12, 18, 0, 0), 16],\n\t\t\t[Date.UTC(2011, 2, 12, 19, 0, 0), 14],\n\t\t\t[Date.UTC(2011, 2, 12, 20, 0, 0), 11],\n\t\t\t[Date.UTC(2011, 2, 12, 21, 0, 0), 9],\n\t\t\t[Date.UTC(2011, 2, 12, 22, 0, 0), 7.5],\n\t\t\t[Date.UTC(2011, 2, 12, 23, 0, 0), 6],\n\t\t\t[Date.UTC(2011, 2, 13, 0, 0, 0), 5],\n\t\t\t[Date.UTC(2011, 2, 13, 1, 0, 0), 6],\n\t\t\t[Date.UTC(2011, 2, 13, 2, 0, 0), 7.5],\n\t\t\t[Date.UTC(2011, 2, 13, 3, 0, 0), 9],\n\t\t\t[Date.UTC(2011, 2, 13, 4, 0, 0), 11],\n\t\t\t[Date.UTC(2011, 2, 13, 5, 0, 0), 14],\n\t\t\t[Date.UTC(2011, 2, 13, 6, 0, 0), 16],\n\t\t\t[Date.UTC(2011, 2, 13, 7, 0, 0), 19],\n\t\t\t[Date.UTC(2011, 2, 13, 8, 0, 0), 25],\n\t\t\t[Date.UTC(2011, 2, 13, 9, 0, 0), 27],\n\t\t\t[Date.UTC(2011, 2, 13, 10, 0, 0), 28],\n\t\t\t[Date.UTC(2011, 2, 13, 11, 0, 0), 29],\n\t\t\t[Date.UTC(2011, 2, 13, 12, 0, 0), 29.5],\n\t\t\t[Date.UTC(2011, 2, 13, 13, 0, 0), 29],\n\t\t\t[Date.UTC(2011, 2, 13, 14, 0, 0), 28],\n\t\t\t[Date.UTC(2011, 2, 13, 15, 0, 0), 27],\n\t\t\t[Date.UTC(2011, 2, 13, 16, 0, 0), 25],\n\t\t\t[Date.UTC(2011, 2, 13, 17, 0, 0), 19],\n\t\t\t[Date.UTC(2011, 2, 13, 18, 0, 0), 16],\n\t\t\t[Date.UTC(2011, 2, 13, 19, 0, 0), 14],\n\t\t\t[Date.UTC(2011, 2, 13, 20, 0, 0), 11],\n\t\t\t[Date.UTC(2011, 2, 13, 21, 0, 0), 9],\n\t\t\t[Date.UTC(2011, 2, 13, 22, 0, 0), 7.5],\n\t\t\t[Date.UTC(2011, 2, 13, 23, 0, 0), 6]\n\t\t];\n\n\t\tvar plot = $.plot(\"#placeholderUTC\", [d], {\n\t\t\txaxis: {\n\t\t\t\tmode: \"time\"\n\t\t\t}\n\t\t});\n\n\t\tvar plot = $.plot(\"#placeholderLocal\", [d], {\n\t\t\txaxis: {\n\t\t\t\tmode: \"time\",\n\t\t\t\ttimezone: \"browser\"\n\t\t\t}\n\t\t});\n\n\t\tvar plot = $.plot(\"#placeholderChicago\", [d], {\n\t\t\txaxis: {\n\t\t\t\tmode: \"time\",\n\t\t\t\ttimezone: \"America/Chicago\"\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Time zones</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<h3>UTC</h3>\n\t\t<div class=\"demo-container\" style=\"height: 300px;\">\n\t\t\t<div id=\"placeholderUTC\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<h3>Browser</h3>\n\t\t<div class=\"demo-container\" style=\"height: 300px;\">\n\t\t\t<div id=\"placeholderLocal\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<h3>Chicago</h3>\n\t\t<div class=\"demo-container\" style=\"height: 300px;\">\n\t\t\t<div id=\"placeholderChicago\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/africa",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by no means authoritative; if you think you know better,\n# go ahead and edit the file (and please send any changes to\n# tz@iana.org for general use in the future).\n\n# From Paul Eggert (2006-03-22):\n#\n# A good source for time zone historical data outside the U.S. is\n# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),\n# San Diego: ACS Publications, Inc. (2003).\n#\n# Gwillim Law writes that a good source\n# for recent time zone data is the International Air Transport\n# Association's Standard Schedules Information Manual (IATA SSIM),\n# published semiannually.  Law sent in several helpful summaries\n# of the IATA's data after 1990.\n#\n# Except where otherwise noted, Shanks & Pottenger is the source for\n# entries through 1990, and IATA SSIM is the source for entries afterwards.\n#\n# Another source occasionally used is Edward W. Whitman, World Time Differences,\n# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which\n# I found in the UCLA library.\n#\n# A reliable and entertaining source about time zones is\n# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).\n#\n# Previous editions of this database used WAT, CAT, SAT, and EAT\n# for +0:00 through +3:00, respectively,\n# but Mark R V Murray reports that\n# `SAST' is the official abbreviation for +2:00 in the country of South Africa,\n# `CAT' is commonly used for +2:00 in countries north of South Africa, and\n# `WAT' is probably the best name for +1:00, as the common phrase for\n# the area that includes Nigeria is ``West Africa''.\n# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.\n#\n# To make things confusing, `WAT' seems to have been used for -1:00 long ago;\n# I'd guess that this was because people needed _some_ name for -1:00,\n# and at the time, far west Africa was the only major land area in -1:00.\n# This usage is now obsolete, as the last use of -1:00 on the African\n# mainland seems to have been 1976 in Western Sahara.\n#\n# To summarize, the following abbreviations seem to have some currency:\n#\t-1:00\tWAT\tWest Africa Time (no longer used)\n#\t 0:00\tGMT\tGreenwich Mean Time\n#\t 2:00\tCAT\tCentral Africa Time\n#\t 2:00\tSAST\tSouth Africa Standard Time\n# and Murray suggests the following abbreviation:\n#\t 1:00\tWAT\tWest Africa Time\n# I realize that this leads to `WAT' being used for both -1:00 and 1:00\n# for times before 1976, but this is the best I can think of\n# until we get more information.\n#\n# I invented the following abbreviations; corrections are welcome!\n#\t 2:00\tWAST\tWest Africa Summer Time\n#\t 2:30\tBEAT\tBritish East Africa Time (no longer used)\n#\t 2:45\tBEAUT\tBritish East Africa Unified Time (no longer used)\n#\t 3:00\tCAST\tCentral Africa Summer Time (no longer used)\n#\t 3:00\tSAST\tSouth Africa Summer Time (no longer used)\n#\t 3:00\tEAT\tEast Africa Time\n#\t 4:00\tEAST\tEast Africa Summer Time (no longer used)\n\n# Algeria\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAlgeria\t1916\tonly\t-\tJun\t14\t23:00s\t1:00\tS\nRule\tAlgeria\t1916\t1919\t-\tOct\tSun>=1\t23:00s\t0\t-\nRule\tAlgeria\t1917\tonly\t-\tMar\t24\t23:00s\t1:00\tS\nRule\tAlgeria\t1918\tonly\t-\tMar\t 9\t23:00s\t1:00\tS\nRule\tAlgeria\t1919\tonly\t-\tMar\t 1\t23:00s\t1:00\tS\nRule\tAlgeria\t1920\tonly\t-\tFeb\t14\t23:00s\t1:00\tS\nRule\tAlgeria\t1920\tonly\t-\tOct\t23\t23:00s\t0\t-\nRule\tAlgeria\t1921\tonly\t-\tMar\t14\t23:00s\t1:00\tS\nRule\tAlgeria\t1921\tonly\t-\tJun\t21\t23:00s\t0\t-\nRule\tAlgeria\t1939\tonly\t-\tSep\t11\t23:00s\t1:00\tS\nRule\tAlgeria\t1939\tonly\t-\tNov\t19\t 1:00\t0\t-\nRule\tAlgeria\t1944\t1945\t-\tApr\tMon>=1\t 2:00\t1:00\tS\nRule\tAlgeria\t1944\tonly\t-\tOct\t 8\t 2:00\t0\t-\nRule\tAlgeria\t1945\tonly\t-\tSep\t16\t 1:00\t0\t-\nRule\tAlgeria\t1971\tonly\t-\tApr\t25\t23:00s\t1:00\tS\nRule\tAlgeria\t1971\tonly\t-\tSep\t26\t23:00s\t0\t-\nRule\tAlgeria\t1977\tonly\t-\tMay\t 6\t 0:00\t1:00\tS\nRule\tAlgeria\t1977\tonly\t-\tOct\t21\t 0:00\t0\t-\nRule\tAlgeria\t1978\tonly\t-\tMar\t24\t 1:00\t1:00\tS\nRule\tAlgeria\t1978\tonly\t-\tSep\t22\t 3:00\t0\t-\nRule\tAlgeria\t1980\tonly\t-\tApr\t25\t 0:00\t1:00\tS\nRule\tAlgeria\t1980\tonly\t-\tOct\t31\t 2:00\t0\t-\n# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's\n# more precise 0:09:21.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Algiers\t0:12:12 -\tLMT\t1891 Mar 15 0:01\n\t\t\t0:09:21\t-\tPMT\t1911 Mar 11    # Paris Mean Time\n\t\t\t0:00\tAlgeria\tWE%sT\t1940 Feb 25 2:00\n\t\t\t1:00\tAlgeria\tCE%sT\t1946 Oct  7\n\t\t\t0:00\t-\tWET\t1956 Jan 29\n\t\t\t1:00\t-\tCET\t1963 Apr 14\n\t\t\t0:00\tAlgeria\tWE%sT\t1977 Oct 21\n\t\t\t1:00\tAlgeria\tCE%sT\t1979 Oct 26\n\t\t\t0:00\tAlgeria\tWE%sT\t1981 May\n\t\t\t1:00\t-\tCET\n\n# Angola\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Luanda\t0:52:56\t-\tLMT\t1892\n\t\t\t0:52:04\t-\tAOT\t1911 May 26 # Angola Time\n\t\t\t1:00\t-\tWAT\n\n# Benin\n# Whitman says they switched to 1:00 in 1946, not 1934;\n# go with Shanks & Pottenger.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Porto-Novo\t0:10:28\t-\tLMT\t1912\n\t\t\t0:00\t-\tGMT\t1934 Feb 26\n\t\t\t1:00\t-\tWAT\n\n# Botswana\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Gaborone\t1:43:40 -\tLMT\t1885\n\t\t\t2:00\t-\tCAT\t1943 Sep 19 2:00\n\t\t\t2:00\t1:00\tCAST\t1944 Mar 19 2:00\n\t\t\t2:00\t-\tCAT\n\n# Burkina Faso\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Ouagadougou\t-0:06:04 -\tLMT\t1912\n\t\t\t 0:00\t-\tGMT\n\n# Burundi\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Bujumbura\t1:57:28\t-\tLMT\t1890\n\t\t\t2:00\t-\tCAT\n\n# Cameroon\n# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Douala\t0:38:48\t-\tLMT\t1912\n\t\t\t1:00\t-\tWAT\n\n# Cape Verde\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Atlantic/Cape_Verde -1:34:04 -\tLMT\t1907\t\t\t# Praia\n\t\t\t-2:00\t-\tCVT\t1942 Sep\n\t\t\t-2:00\t1:00\tCVST\t1945 Oct 15\n\t\t\t-2:00\t-\tCVT\t1975 Nov 25 2:00\n\t\t\t-1:00\t-\tCVT\n\n# Central African Republic\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Bangui\t1:14:20\t-\tLMT\t1912\n\t\t\t1:00\t-\tWAT\n\n# Chad\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Ndjamena\t1:00:12 -\tLMT\t1912\n\t\t\t1:00\t-\tWAT\t1979 Oct 14\n\t\t\t1:00\t1:00\tWAST\t1980 Mar  8\n\t\t\t1:00\t-\tWAT\n\n# Comoros\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tIndian/Comoro\t2:53:04 -\tLMT\t1911 Jul   # Moroni, Gran Comoro\n\t\t\t3:00\t-\tEAT\n\n# Democratic Republic of Congo\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Kinshasa\t1:01:12 -\tLMT\t1897 Nov 9\n\t\t\t1:00\t-\tWAT\nZone Africa/Lubumbashi\t1:49:52 -\tLMT\t1897 Nov 9\n\t\t\t2:00\t-\tCAT\n\n# Republic of the Congo\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Brazzaville\t1:01:08 -\tLMT\t1912\n\t\t\t1:00\t-\tWAT\n\n# Cote D'Ivoire\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Abidjan\t-0:16:08 -\tLMT\t1912\n\t\t\t 0:00\t-\tGMT\n\n# Djibouti\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Djibouti\t2:52:36 -\tLMT\t1911 Jul\n\t\t\t3:00\t-\tEAT\n\n###############################################################################\n\n# Egypt\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tEgypt\t1940\tonly\t-\tJul\t15\t0:00\t1:00\tS\nRule\tEgypt\t1940\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tEgypt\t1941\tonly\t-\tApr\t15\t0:00\t1:00\tS\nRule\tEgypt\t1941\tonly\t-\tSep\t16\t0:00\t0\t-\nRule\tEgypt\t1942\t1944\t-\tApr\t 1\t0:00\t1:00\tS\nRule\tEgypt\t1942\tonly\t-\tOct\t27\t0:00\t0\t-\nRule\tEgypt\t1943\t1945\t-\tNov\t 1\t0:00\t0\t-\nRule\tEgypt\t1945\tonly\t-\tApr\t16\t0:00\t1:00\tS\nRule\tEgypt\t1957\tonly\t-\tMay\t10\t0:00\t1:00\tS\nRule\tEgypt\t1957\t1958\t-\tOct\t 1\t0:00\t0\t-\nRule\tEgypt\t1958\tonly\t-\tMay\t 1\t0:00\t1:00\tS\nRule\tEgypt\t1959\t1981\t-\tMay\t 1\t1:00\t1:00\tS\nRule\tEgypt\t1959\t1965\t-\tSep\t30\t3:00\t0\t-\nRule\tEgypt\t1966\t1994\t-\tOct\t 1\t3:00\t0\t-\nRule\tEgypt\t1982\tonly\t-\tJul\t25\t1:00\t1:00\tS\nRule\tEgypt\t1983\tonly\t-\tJul\t12\t1:00\t1:00\tS\nRule\tEgypt\t1984\t1988\t-\tMay\t 1\t1:00\t1:00\tS\nRule\tEgypt\t1989\tonly\t-\tMay\t 6\t1:00\t1:00\tS\nRule\tEgypt\t1990\t1994\t-\tMay\t 1\t1:00\t1:00\tS\n# IATA (after 1990) says transitions are at 0:00.\n# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.\n\n# From Alexander Krivenyshev (2011-04-20):\n# \"...Egypt's interim cabinet decided on Wednesday to cancel daylight\n# saving time after a poll posted on its website showed the majority of\n# Egyptians would approve the cancellation.\"\n#\n# Egypt to cancel daylight saving time\n# <a href=\"http://www.almasryalyoum.com/en/node/407168\">\n# http://www.almasryalyoum.com/en/node/407168\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_egypt04.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_egypt04.html\n# </a>\nRule\tEgypt\t1995\t2010\t-\tApr\tlastFri\t 0:00s\t1:00\tS\nRule\tEgypt\t1995\t2005\t-\tSep\tlastThu\t23:00s\t0\t-\n# From Steffen Thorsen (2006-09-19):\n# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:\n# Egypt will turn back clocks by one hour at the midnight of Thursday\n# after observing the daylight saving time since May.\n# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf\nRule\tEgypt\t2006\tonly\t-\tSep\t21\t23:00s\t0\t-\n# From Dirk Losch (2007-08-14):\n# I received a mail from an airline which says that the daylight\n# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.\n# From Jesper Norgaard Welen (2007-08-15): [The following agree:]\n# http://www.nentjes.info/Bill/bill5.htm\n# http://www.timeanddate.com/worldclock/city.html?n=53\n# From Steffen Thorsen (2007-09-04): The official information...:\n# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm\nRule\tEgypt\t2007\tonly\t-\tSep\tThu>=1\t23:00s\t0\t-\n# From Abdelrahman Hassan (2007-09-06):\n# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter\n# than the year of the Gregorian calendar, Ramadan shifts earlier each\n# year. This year it will be observed September 13 (September is quite\n# hot in Egypt), and the idea is to make fasting easier for workers by\n# shifting business hours one hour out of daytime heat. Consequently,\n# unless discontinued, next DST may end Thursday 28 August 2008.\n# From Paul Eggert (2007-08-17):\n# For lack of better info, assume the new rule is last Thursday in August.\n\n# From Petr Machata (2009-04-06):\n# The following appeared in Red Hat bugzilla[1] (edited):\n#\n# > $ zdump -v /usr/share/zoneinfo/Africa/Cairo | grep 2009\n# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 21:59:59 2009 UTC = Thu =\n# Apr 23\n# > 23:59:59 2009 EET isdst=0 gmtoff=7200\n# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 22:00:00 2009 UTC = Fri =\n# Apr 24\n# > 01:00:00 2009 EEST isdst=1 gmtoff=10800\n# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 20:59:59 2009 UTC = Thu =\n# Aug 27\n# > 23:59:59 2009 EEST isdst=1 gmtoff=10800\n# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 21:00:00 2009 UTC = Thu =\n# Aug 27\n# > 23:00:00 2009 EET isdst=0 gmtoff=7200\n#\n# > end date should be Thu Sep 24 2009 (Last Thursday in September at 23:59=\n# :59)\n# > http://support.microsoft.com/kb/958729/\n#\n# timeanddate[2] and another site I've found[3] also support that.\n#\n# [1] <a href=\"https://bugzilla.redhat.com/show_bug.cgi?id=492263\">\n# https://bugzilla.redhat.com/show_bug.cgi?id=492263\n# </a>\n# [2] <a href=\"http://www.timeanddate.com/worldclock/clockchange.html?n=53\">\n# http://www.timeanddate.com/worldclock/clockchange.html?n=53\n# </a>\n# [3] <a href=\"http://wwp.greenwichmeantime.com/time-zone/africa/egypt/\">\n# http://wwp.greenwichmeantime.com/time-zone/africa/egypt/\n# </a>\n\n# From Arthur David Olson (2009-04-20):\n# In 2009 (and for the next several years), Ramadan ends before the fourth\n# Thursday in September; Egypt is expected to revert to the last Thursday\n# in September.\n\n# From Steffen Thorsen (2009-08-11):\n# We have been able to confirm the August change with the Egyptian Cabinet\n# Information and Decision Support Center:\n# <a href=\"http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html\">\n# http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html\n# </a>\n#\n# The Middle East News Agency\n# <a href=\"http://www.mena.org.eg/index.aspx\">\n# http://www.mena.org.eg/index.aspx\n# </a>\n# also reports \"Egypt starts winter time on August 21\"\n# today in article numbered \"71, 11/08/2009 12:25 GMT.\"\n# Only the title above is available without a subscription to their service,\n# and can be found by searching for \"winter\" in their search engine\n# (at least today).\n\n# From Alexander Krivenyshev (2010-07-20):\n# According to News from Egypt -  Al-Masry Al-Youm Egypt's cabinet has\n# decided that Daylight Saving Time will not be used in Egypt during\n# Ramadan.\n#\n# Arabic translation:\n# \"Clocks to go back during Ramadan--and then forward again\"\n# <a href=\"http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again\">\n# http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_egypt02.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html\n# </a>\n\nRule\tEgypt\t2008\tonly\t-\tAug\tlastThu\t23:00s\t0\t-\nRule\tEgypt\t2009\tonly\t-\tAug\t20\t23:00s\t0\t-\nRule\tEgypt\t2010\tonly\t-\tAug\t11\t0:00\t0\t-\nRule\tEgypt\t2010\tonly\t-\tSep\t10\t0:00\t1:00\tS\nRule\tEgypt\t2010\tonly\t-\tSep\tlastThu\t23:00s\t0\t-\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Cairo\t2:05:00 -\tLMT\t1900 Oct\n\t\t\t2:00\tEgypt\tEE%sT\n\n# Equatorial Guinea\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Malabo\t0:35:08 -\tLMT\t1912\n\t\t\t0:00\t-\tGMT\t1963 Dec 15\n\t\t\t1:00\t-\tWAT\n\n# Eritrea\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Asmara\t2:35:32 -\tLMT\t1870\n\t\t\t2:35:32\t-\tAMT\t1890\t      # Asmara Mean Time\n\t\t\t2:35:20\t-\tADMT\t1936 May 5    # Adis Dera MT\n\t\t\t3:00\t-\tEAT\n\n# Ethiopia\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones\n# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.\n# We'll guess that 38E50 is for Adis Dera.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Addis_Ababa\t2:34:48 -\tLMT\t1870\n\t\t\t2:35:20\t-\tADMT\t1936 May 5    # Adis Dera MT\n\t\t\t3:00\t-\tEAT\n\n# Gabon\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Libreville\t0:37:48 -\tLMT\t1912\n\t\t\t1:00\t-\tWAT\n\n# Gambia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Banjul\t-1:06:36 -\tLMT\t1912\n\t\t\t-1:06:36 -\tBMT\t1935\t# Banjul Mean Time\n\t\t\t-1:00\t-\tWAT\t1964\n\t\t\t 0:00\t-\tGMT\n\n# Ghana\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# Whitman says DST was observed from 1931 to ``the present'';\n# go with Shanks & Pottenger.\nRule\tGhana\t1936\t1942\t-\tSep\t 1\t0:00\t0:20\tGHST\nRule\tGhana\t1936\t1942\t-\tDec\t31\t0:00\t0\tGMT\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Accra\t-0:00:52 -\tLMT\t1918\n\t\t\t 0:00\tGhana\t%s\n\n# Guinea\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Conakry\t-0:54:52 -\tLMT\t1912\n\t\t\t 0:00\t-\tGMT\t1934 Feb 26\n\t\t\t-1:00\t-\tWAT\t1960\n\t\t\t 0:00\t-\tGMT\n\n# Guinea-Bissau\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Bissau\t-1:02:20 -\tLMT\t1911 May 26\n\t\t\t-1:00\t-\tWAT\t1975\n\t\t\t 0:00\t-\tGMT\n\n# Kenya\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Nairobi\t2:27:16\t-\tLMT\t1928 Jul\n\t\t\t3:00\t-\tEAT\t1930\n\t\t\t2:30\t-\tBEAT\t1940\n\t\t\t2:45\t-\tBEAUT\t1960\n\t\t\t3:00\t-\tEAT\n\n# Lesotho\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Maseru\t1:50:00 -\tLMT\t1903 Mar\n\t\t\t2:00\t-\tSAST\t1943 Sep 19 2:00\n\t\t\t2:00\t1:00\tSAST\t1944 Mar 19 2:00\n\t\t\t2:00\t-\tSAST\n\n# Liberia\n# From Paul Eggert (2006-03-22):\n# In 1972 Liberia was the last country to switch\n# from a UTC offset that was not a multiple of 15 or 20 minutes.\n# Howse reports that it was in honor of their president's birthday.\n# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;\n# go with Shanks & Pottenger.\n# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and\n# Whitman each report -0:44:30; go with the more precise figure.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Monrovia\t-0:43:08 -\tLMT\t1882\n\t\t\t-0:43:08 -\tMMT\t1919 Mar # Monrovia Mean Time\n\t\t\t-0:44:30 -\tLRT\t1972 May # Liberia Time\n\t\t\t 0:00\t-\tGMT\n\n###############################################################################\n\n# Libya\n\n# From Even Scharning (2012-11-10):\n# Libya set their time one hour back at 02:00 on Saturday November 10.\n# http://www.libyaherald.com/2012/11/04/clocks-to-go-back-an-hour-on-saturday/\n# Here is an official source [in Arabic]: http://ls.ly/fb6Yc\n#\n# Steffen Thorsen forwarded a translation (2012-11-10) in\n# http://mm.icann.org/pipermail/tz/2012-November/018451.html\n#\n# From Tim Parenti (2012-11-11):\n# Treat the 2012-11-10 change as a zone change from UTC+2 to UTC+1.\n# The DST rules planned for 2013 and onward roughly mirror those of Europe\n# (either two days before them or five days after them, so as to fall on\n# lastFri instead of lastSun).\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tLibya\t1951\tonly\t-\tOct\t14\t2:00\t1:00\tS\nRule\tLibya\t1952\tonly\t-\tJan\t 1\t0:00\t0\t-\nRule\tLibya\t1953\tonly\t-\tOct\t 9\t2:00\t1:00\tS\nRule\tLibya\t1954\tonly\t-\tJan\t 1\t0:00\t0\t-\nRule\tLibya\t1955\tonly\t-\tSep\t30\t0:00\t1:00\tS\nRule\tLibya\t1956\tonly\t-\tJan\t 1\t0:00\t0\t-\nRule\tLibya\t1982\t1984\t-\tApr\t 1\t0:00\t1:00\tS\nRule\tLibya\t1982\t1985\t-\tOct\t 1\t0:00\t0\t-\nRule\tLibya\t1985\tonly\t-\tApr\t 6\t0:00\t1:00\tS\nRule\tLibya\t1986\tonly\t-\tApr\t 4\t0:00\t1:00\tS\nRule\tLibya\t1986\tonly\t-\tOct\t 3\t0:00\t0\t-\nRule\tLibya\t1987\t1989\t-\tApr\t 1\t0:00\t1:00\tS\nRule\tLibya\t1987\t1989\t-\tOct\t 1\t0:00\t0\t-\nRule\tLibya\t1997\tonly\t-\tApr\t 4\t0:00\t1:00\tS\nRule\tLibya\t1997\tonly\t-\tOct\t 4\t0:00\t0\t-\nRule\tLibya\t2013\tmax\t-\tMar\tlastFri\t1:00\t1:00\tS\nRule\tLibya\t2013\tmax\t-\tOct\tlastFri\t2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Tripoli\t0:52:44 -\tLMT\t1920\n\t\t\t1:00\tLibya\tCE%sT\t1959\n\t\t\t2:00\t-\tEET\t1982\n\t\t\t1:00\tLibya\tCE%sT\t1990 May  4\n# The 1996 and 1997 entries are from Shanks & Pottenger;\n# the IATA SSIM data contain some obvious errors.\n\t\t\t2:00\t-\tEET\t1996 Sep 30\n\t\t\t1:00\tLibya\tCE%sT\t1997 Oct  4\n\t\t\t2:00\t-\tEET\t2012 Nov 10 2:00\n\t\t\t1:00\tLibya\tCE%sT\n\n# Madagascar\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Indian/Antananarivo 3:10:04 -\tLMT\t1911 Jul\n\t\t\t3:00\t-\tEAT\t1954 Feb 27 23:00s\n\t\t\t3:00\t1:00\tEAST\t1954 May 29 23:00s\n\t\t\t3:00\t-\tEAT\n\n# Malawi\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Blantyre\t2:20:00 -\tLMT\t1903 Mar\n\t\t\t2:00\t-\tCAT\n\n# Mali\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Bamako\t-0:32:00 -\tLMT\t1912\n\t\t\t 0:00\t-\tGMT\t1934 Feb 26\n\t\t\t-1:00\t-\tWAT\t1960 Jun 20\n\t\t\t 0:00\t-\tGMT\n\n# Mauritania\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Nouakchott\t-1:03:48 -\tLMT\t1912\n\t\t\t 0:00\t-\tGMT\t1934 Feb 26\n\t\t\t-1:00\t-\tWAT\t1960 Nov 28\n\t\t\t 0:00\t-\tGMT\n\n# Mauritius\n\n# From Steffen Thorsen (2008-06-25):\n# Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial\n# basis....\n# It seems that Mauritius observed daylight saving time from 1982-10-10 to\n# 1983-03-20 as well, but that was not successful....\n# http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html\n\n# From Alex Krivenyshev (2008-06-25):\n# http://economicdevelopment.gov.mu/portal/site/Mainhomepage/menuitem.a42b24128104d9845dabddd154508a0c/?content_id=0a7cee8b5d69a110VgnVCM1000000a04a8c0RCRD\n\n# From Arthur David Olson (2008-06-30):\n# The www.timeanddate.com article cited by Steffen Thorsen notes that \"A\n# final decision has yet to be made on the times that daylight saving\n# would begin and end on these dates.\" As a place holder, use midnight.\n\n# From Paul Eggert (2008-06-30):\n# Follow Thorsen on DST in 1982/1983, instead of Shanks & Pottenger.\n\n# From Steffen Thorsen (2008-07-10):\n# According to\n# <a href=\"http://www.lexpress.mu/display_article.php?news_id=111216\">\n# http://www.lexpress.mu/display_article.php?news_id=111216\n# </a>\n# (in French), Mauritius will start and end their DST a few days earlier\n# than previously announced (2008-11-01 to 2009-03-31).  The new start\n# date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time\n# given, but it is probably at either 2 or 3 wall clock time).\n#\n# A little strange though, since the article says that they moved the date\n# to align itself with Europe and USA which also change time on that date,\n# but that means they have not paid attention to what happened in\n# USA/Canada last year (DST ends first Sunday in November). I also wonder\n# why that they end on a Friday, instead of aligning with Europe which\n# changes two days later.\n\n# From Alex Krivenyshev (2008-07-11):\n# Seems that English language article \"The revival of daylight saving\n# time:  Energy conservation?\"-# No. 16578 (07/11/2008) was originally\n# published on Monday, June 30, 2008...\n#\n# I guess that article in French \"Le gouvernement avance l'introduction\n# de l'heure d'ete\" stating that DST in Mauritius starting on October 26\n# and ending on March 27, 2009 is the most recent one.\n# ...\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html\n# </a>\n\n# From Riad M. Hossen Ally (2008-08-03):\n# The Government of Mauritius weblink\n# <a href=\"http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD\">\n# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD\n# </a>\n# Cabinet Decision of July 18th, 2008 states as follows:\n#\n# 4. ...Cabinet has agreed to the introduction into the National Assembly\n# of the Time Bill which provides for the introduction of summer time in\n# Mauritius. The summer time period which will be of one hour ahead of\n# the standard time, will be aligned with that in Europe and the United\n# States of America. It will start at two o'clock in the morning on the\n# last Sunday of October and will end at two o'clock in the morning on\n# the last Sunday of March the following year. The summer time for the\n# year 2008 - 2009 will, therefore, be effective as from 26 October 2008\n# and end on 29 March 2009.\n\n# From Ed Maste (2008-10-07):\n# THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the\n# beginning / ending of summer time is 2 o'clock standard time in the\n# morning of the last Sunday of October / last Sunday of March.\n# <a href=\"http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf\">\n# http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf\n# </a>\n\n# From Steffen Thorsen (2009-06-05):\n# According to several sources, Mauritius will not continue to observe\n# DST the coming summer...\n#\n# Some sources, in French:\n# <a href=\"http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB\">\n# http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB\n# </a>\n# <a href=\"http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints-\">\n# http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints-\n# </a>\n#\n# Our wrap-up:\n# <a href=\"http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html\">\n# http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html\n# </a>\n\n# From Arthur David Olson (2009-07-11):\n# The \"mauritius-dst-will-not-repeat\" wrapup includes this:\n# \"The trial ended on March 29, 2009, when the clocks moved back by one hour\n# at 2am (or 02:00) local time...\"\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule Mauritius\t1982\tonly\t-\tOct\t10\t0:00\t1:00\tS\nRule Mauritius\t1983\tonly\t-\tMar\t21\t0:00\t0\t-\nRule Mauritius\t2008\tonly\t-\tOct\tlastSun\t2:00\t1:00\tS\nRule Mauritius\t2009\tonly\t-\tMar\tlastSun\t2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Indian/Mauritius\t3:50:00 -\tLMT\t1907\t\t# Port Louis\n\t\t\t4:00 Mauritius\tMU%sT\t# Mauritius Time\n# Agalega Is, Rodriguez\n# no information; probably like Indian/Mauritius\n\n# Mayotte\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tIndian/Mayotte\t3:00:56 -\tLMT\t1911 Jul\t# Mamoutzou\n\t\t\t3:00\t-\tEAT\n\n# Morocco\n# See the `europe' file for Spanish Morocco (Africa/Ceuta).\n\n# From Alex Krivenyshev (2008-05-09):\n# Here is an article that Morocco plan to introduce Daylight Saving Time between\n# 1 June, 2008 and 27 September, 2008.\n#\n# \"... Morocco is to save energy by adjusting its clock during summer so it will\n# be one hour ahead of GMT between 1 June and 27 September, according to\n# Communication Minister and Gov ernment Spokesman, Khalid Naciri....\"\n#\n# <a href=\"http://www.worldtimezone.net/dst_news/dst_news_morocco01.html\">\n# http://www.worldtimezone.net/dst_news/dst_news_morocco01.html\n# </a>\n# OR\n# <a href=\"http://en.afrik.com/news11892.html\">\n# http://en.afrik.com/news11892.html\n# </a>\n\n# From Alex Krivenyshev (2008-05-09):\n# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe Presse:\n# <a href=\"http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view\">\n# http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view\n# </a>\n#\n# Morocco shifts to daylight time on June 1st through September 27, Govt.\n# spokesman.\n\n# From Patrice Scattolin (2008-05-09):\n# According to this article:\n# <a href=\"http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html\">\n# http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html\n# </a>\n# (and republished here:\n# <a href=\"http://www.actu.ma/heure-dete-comment_i127896_0.html\">\n# http://www.actu.ma/heure-dete-comment_i127896_0.html\n# </a>\n# )\n# the changes occurs at midnight:\n#\n# saturday night may 31st at midnight (which in french is to be\n# intrepreted as the night between saturday and sunday)\n# sunday night the 28th  at midnight\n#\n# Seeing that the 28th is monday, I am guessing that she intends to say\n# the midnight of the 28th which is the midnight between sunday and\n# monday, which jives with other sources that say that it's inclusive\n# june1st to sept 27th.\n#\n# The decision was taken by decree *2-08-224 *but I can't find the decree\n# published on the web.\n#\n# It's also confirmed here:\n# <a href=\"http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm\">\n# http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm\n# </a>\n# on a government portal as being  between june 1st and sept 27th (not yet\n# posted in english).\n#\n# The following google query will generate many relevant hits:\n# <a href=\"http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search\">\n# http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search\n# </a>\n\n# From Alex Krivenyshev (2008-05-09):\n# Is Western Sahara (part which administrated by Morocco) going to follow\n# Morocco DST changes?  Any information?  What about other part of\n# Western Sahara - under administration of POLISARIO Front (also named\n# SADR Saharawi Arab Democratic Republic)?\n\n# From Arthur David Olson (2008-05-09):\n# XXX--guess that it is only Morocco for now; guess only 2008 for now.\n\n# From Steffen Thorsen (2008-08-27):\n# Morocco will change the clocks back on the midnight between August 31\n# and September 1. They originally planned to observe DST to near the end\n# of September:\n#\n# One article about it (in French):\n# <a href=\"http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default\">\n# http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default\n# </a>\n#\n# We have some further details posted here:\n# <a href=\"http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html\">\n# http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html\n# </a>\n\n# From Steffen Thorsen (2009-03-17):\n# Morocco will observe DST from 2009-06-01 00:00 to 2009-08-21 00:00 according\n# to many sources, such as\n# <a href=\"http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html\">\n# http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html\n# </a>\n# <a href=\"http://www.medi1sat.ma/fr/depeche.aspx?idp=2312\">\n# http://www.medi1sat.ma/fr/depeche.aspx?idp=2312\n# </a>\n# (French)\n#\n# Our summary:\n# <a href=\"http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html\">\n# http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html\n# </a>\n\n# From Alexander Krivenyshev (2009-03-17):\n# Here is a link to official document from Royaume du Maroc Premier Ministre,\n# Ministere de la Modernisation des Secteurs Publics\n#\n# Under Article 1 of Royal Decree No. 455-67 of Act 23 safar 1387 (2 june 1967)\n# concerning the amendment of the legal time, the Ministry of Modernization of\n# Public Sectors announced that the official time in the Kingdom will be\n# advanced 60 minutes from Sunday 31 May 2009 at midnight.\n#\n# <a href=\"http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf\">\n# http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf\n# </a>\n#\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_morocco03.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_morocco03.html\n# </a>\n\n# From Steffen Thorsen (2010-04-13):\n# Several news media in Morocco report that the Ministry of Modernization\n# of Public Sectors has announced that Morocco will have DST from\n# 2010-05-02 to 2010-08-08.\n#\n# Example:\n# <a href=\"http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html\">\n# http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html\n# </a>\n# (French)\n# Our page:\n# <a href=\"http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html\">\n# http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html\n# </a>\n\n# From Dan Abitol (2011-03-30):\n# ...Rules for Africa/Casablanca are the following (24h format)\n# The 3rd april 2011 at 00:00:00, [it] will be 3rd april 1:00:00\n# The 31th july 2011 at 00:59:59,  [it] will be 31th July 00:00:00\n# ...Official links of change in morocco\n# The change was broadcast on the FM Radio\n# I ve called ANRT (telecom regulations in Morocco) at\n# +212.537.71.84.00\n# <a href=\"http://www.anrt.net.ma/fr/\">\n# http://www.anrt.net.ma/fr/\n# </a>\n# They said that\n# <a href=\"http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view\">\n# http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view\n# </a>\n# is the official publication to look at.\n# They said that the decision was already taken.\n#\n# More articles in the press\n# <a href=\"http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev\">\n# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev\n# </a>\n# e.html\n# <a href=\"http://www.lematin.ma/Actualite/Express/Article.asp?id=148923\">\n# http://www.lematin.ma/Actualite/Express/Article.asp?id=148923\n# </a>\n# <a href=\"http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim\">\n# http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim\n# anche-prochain-5538.html\n# </a>\n\n# From Petr Machata (2011-03-30):\n# They have it written in English here:\n# <a href=\"http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view\">\n# http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view\n# </a>\n#\n# It says there that \"Morocco will resume its standard time on July 31,\n# 2011 at midnight.\" Now they don't say whether they mean midnight of\n# wall clock time (i.e. 11pm UTC), but that's what I would assume. It has\n# also been like that in the past.\n\n# From Alexander Krivenyshev (2012-03-09):\n# According to Infom&eacute;diaire web site from Morocco (infomediaire.ma),\n# on March 9, 2012, (in French) Heure l&eacute;gale:\n# Le Maroc adopte officiellement l'heure d'&eacute;t&eacute;\n# <a href=\"http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9\">\n# http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9\n# </a>\n# Governing Council adopted draft decree, that Morocco DST starts on\n# the last Sunday of March (March 25, 2012) and ends on\n# last Sunday of September (September 30, 2012)\n# except the month of Ramadan.\n# or (brief)\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_morocco06.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_morocco06.html\n# </a>\n\n# From Arthur David Olson (2012-03-10):\n# The infomediaire.ma source indicates that the system is to be in\n# effect every year. It gives 03H00 as the \"fall back\" time of day;\n# it lacks a \"spring forward\" time of day; assume 2:00 XXX.\n# Wait on specifying the Ramadan exception for details about\n# start date, start time of day, end date, and end time of day XXX.\n\n# From Christophe Tropamer (2012-03-16):\n# Seen Morocco change again:\n# <a href=\"http://www.le2uminutes.com/actualite.php\">\n# http://www.le2uminutes.com/actualite.php\n# </a>\n# \"...&agrave; partir du dernier dimance d'avril et non fins mars,\n# comme annonc&eacute; pr&eacute;c&eacute;demment.\"\n\n# From Milamber Space Network (2012-07-17):\n# The official return to GMT is announced by the Moroccan government:\n# <a href=\"http://www.mmsp.gov.ma/fr/actualites.aspx?id=288\">\n# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]\n# </a>\n#\n# Google translation, lightly edited:\n# Back to the standard time of the Kingdom (GMT)\n# Pursuant to Decree No. 2-12-126 issued on 26 Jumada (I) 1433 (April 18,\n# 2012) and in accordance with the order of Mr. President of the\n# Government No. 3-47-12 issued on 24 Sha'ban (11 July 2012), the Ministry\n# of Public Service and Administration Modernization announces the return\n# of the legal time of the Kingdom (GMT) from Friday, July 20, 2012 until\n# Monday, August 20, 2012.  So the time will be delayed by 60 minutes from\n# 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes\n# August 20, 2012 from 2:00 am.\n\n# RULE\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n\nRule\tMorocco\t1939\tonly\t-\tSep\t12\t 0:00\t1:00\tS\nRule\tMorocco\t1939\tonly\t-\tNov\t19\t 0:00\t0\t-\nRule\tMorocco\t1940\tonly\t-\tFeb\t25\t 0:00\t1:00\tS\nRule\tMorocco\t1945\tonly\t-\tNov\t18\t 0:00\t0\t-\nRule\tMorocco\t1950\tonly\t-\tJun\t11\t 0:00\t1:00\tS\nRule\tMorocco\t1950\tonly\t-\tOct\t29\t 0:00\t0\t-\nRule\tMorocco\t1967\tonly\t-\tJun\t 3\t12:00\t1:00\tS\nRule\tMorocco\t1967\tonly\t-\tOct\t 1\t 0:00\t0\t-\nRule\tMorocco\t1974\tonly\t-\tJun\t24\t 0:00\t1:00\tS\nRule\tMorocco\t1974\tonly\t-\tSep\t 1\t 0:00\t0\t-\nRule\tMorocco\t1976\t1977\t-\tMay\t 1\t 0:00\t1:00\tS\nRule\tMorocco\t1976\tonly\t-\tAug\t 1\t 0:00\t0\t-\nRule\tMorocco\t1977\tonly\t-\tSep\t28\t 0:00\t0\t-\nRule\tMorocco\t1978\tonly\t-\tJun\t 1\t 0:00\t1:00\tS\nRule\tMorocco\t1978\tonly\t-\tAug\t 4\t 0:00\t0\t-\nRule\tMorocco\t2008\tonly\t-\tJun\t 1\t 0:00\t1:00\tS\nRule\tMorocco\t2008\tonly\t-\tSep\t 1\t 0:00\t0\t-\nRule\tMorocco\t2009\tonly\t-\tJun\t 1\t 0:00\t1:00\tS\nRule\tMorocco\t2009\tonly\t-\tAug\t 21\t 0:00\t0\t-\nRule\tMorocco\t2010\tonly\t-\tMay\t 2\t 0:00\t1:00\tS\nRule\tMorocco\t2010\tonly\t-\tAug\t 8\t 0:00\t0\t-\nRule\tMorocco\t2011\tonly\t-\tApr\t 3\t 0:00\t1:00\tS\nRule\tMorocco\t2011\tonly\t-\tJul\t 31\t 0\t0\t-\nRule\tMorocco\t2012\tmax\t-\tApr\t lastSun 2:00\t1:00\tS\nRule\tMorocco\t2012\tmax\t-\tSep\t lastSun 3:00\t0\t-\nRule\tMorocco\t2012\tonly\t-\tJul\t 20\t 3:00\t0\t-\nRule\tMorocco\t2012\tonly\t-\tAug\t 20\t 2:00\t1:00\tS\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Casablanca\t-0:30:20 -\tLMT\t1913 Oct 26\n\t\t\t 0:00\tMorocco\tWE%sT\t1984 Mar 16\n\t\t\t 1:00\t-\tCET\t1986\n\t\t\t 0:00\tMorocco\tWE%sT\n# Western Sahara\nZone Africa/El_Aaiun\t-0:52:48 -\tLMT\t1934 Jan\n\t\t\t-1:00\t-\tWAT\t1976 Apr 14\n\t\t\t 0:00\t-\tWET\n\n# Mozambique\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Maputo\t2:10:20 -\tLMT\t1903 Mar\n\t\t\t2:00\t-\tCAT\n\n# Namibia\n# The 1994-04-03 transition is from Shanks & Pottenger.\n# Shanks & Pottenger report no DST after 1998-04; go with IATA.\n\n# From Petronella Sibeene (2007-03-30) in\n# <http://allafrica.com/stories/200703300178.html>:\n# While the entire country changes its time, Katima Mulilo and other\n# settlements in Caprivi unofficially will not because the sun there\n# rises and sets earlier compared to other regions.  Chief of\n# Forecasting Riaan van Zyl explained that the far eastern parts of\n# the country are close to 40 minutes earlier in sunrise than the rest\n# of the country.\n#\n# From Paul Eggert (2007-03-31):\n# Apparently the Caprivi Strip informally observes Botswana time, but\n# we have no details.  In the meantime people there can use Africa/Gaborone.\n\n# RULE\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNamibia\t1994\tmax\t-\tSep\tSun>=1\t2:00\t1:00\tS\nRule\tNamibia\t1995\tmax\t-\tApr\tSun>=1\t2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Windhoek\t1:08:24 -\tLMT\t1892 Feb 8\n\t\t\t1:30\t-\tSWAT\t1903 Mar\t# SW Africa Time\n\t\t\t2:00\t-\tSAST\t1942 Sep 20 2:00\n\t\t\t2:00\t1:00\tSAST\t1943 Mar 21 2:00\n\t\t\t2:00\t-\tSAST\t1990 Mar 21 # independence\n\t\t\t2:00\t-\tCAT\t1994 Apr  3\n\t\t\t1:00\tNamibia\tWA%sT\n\n# Niger\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Niamey\t 0:08:28 -\tLMT\t1912\n\t\t\t-1:00\t-\tWAT\t1934 Feb 26\n\t\t\t 0:00\t-\tGMT\t1960\n\t\t\t 1:00\t-\tWAT\n\n# Nigeria\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Lagos\t0:13:36 -\tLMT\t1919 Sep\n\t\t\t1:00\t-\tWAT\n\n# Reunion\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tIndian/Reunion\t3:41:52 -\tLMT\t1911 Jun\t# Saint-Denis\n\t\t\t4:00\t-\tRET\t# Reunion Time\n#\n# Scattered Islands (Iles Eparses) administered from Reunion are as follows.\n# The following information about them is taken from\n# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;\n# no longer available as of 1999-08-17).\n# We have no info about their time zone histories.\n#\n# Bassas da India - uninhabited\n# Europa Island - inhabited from 1905 to 1910 by two families\n# Glorioso Is - inhabited until at least 1958\n# Juan de Nova - uninhabited\n# Tromelin - inhabited until at least 1958\n\n# Rwanda\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Kigali\t2:00:16 -\tLMT\t1935 Jun\n\t\t\t2:00\t-\tCAT\n\n# St Helena\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Atlantic/St_Helena\t-0:22:48 -\tLMT\t1890\t\t# Jamestown\n\t\t\t-0:22:48 -\tJMT\t1951\t# Jamestown Mean Time\n\t\t\t 0:00\t-\tGMT\n# The other parts of the St Helena territory are similar:\n#\tTristan da Cunha: on GMT, say Whitman and the CIA\n#\tAscension: on GMT, says usno1995 and the CIA\n#\tGough (scientific station since 1955; sealers wintered previously):\n#\t\ton GMT, says the CIA\n#\tInaccessible, Nightingale: no information, but probably GMT\n\n# Sao Tome and Principe\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Sao_Tome\t 0:26:56 -\tLMT\t1884\n\t\t\t-0:36:32 -\tLMT\t1912\t# Lisbon Mean Time\n\t\t\t 0:00\t-\tGMT\n\n# Senegal\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Dakar\t-1:09:44 -\tLMT\t1912\n\t\t\t-1:00\t-\tWAT\t1941 Jun\n\t\t\t 0:00\t-\tGMT\n\n# Seychelles\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tIndian/Mahe\t3:41:48 -\tLMT\t1906 Jun\t# Victoria\n\t\t\t4:00\t-\tSCT\t# Seychelles Time\n# From Paul Eggert (2001-05-30):\n# Aldabra, Farquhar, and Desroches, originally dependencies of the\n# Seychelles, were transferred to the British Indian Ocean Territory\n# in 1965 and returned to Seychelles control in 1976.  We don't know\n# whether this affected their time zone, so omit this for now.\n# Possibly the islands were uninhabited.\n\n# Sierra Leone\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.\nRule\tSL\t1935\t1942\t-\tJun\t 1\t0:00\t0:40\tSLST\nRule\tSL\t1935\t1942\t-\tOct\t 1\t0:00\t0\tWAT\nRule\tSL\t1957\t1962\t-\tJun\t 1\t0:00\t1:00\tSLST\nRule\tSL\t1957\t1962\t-\tSep\t 1\t0:00\t0\tGMT\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Freetown\t-0:53:00 -\tLMT\t1882\n\t\t\t-0:53:00 -\tFMT\t1913 Jun # Freetown Mean Time\n\t\t\t-1:00\tSL\t%s\t1957\n\t\t\t 0:00\tSL\t%s\n\n# Somalia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Mogadishu\t3:01:28 -\tLMT\t1893 Nov\n\t\t\t3:00\t-\tEAT\t1931\n\t\t\t2:30\t-\tBEAT\t1957\n\t\t\t3:00\t-\tEAT\n\n# South Africa\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tSA\t1942\t1943\t-\tSep\tSun>=15\t2:00\t1:00\t-\nRule\tSA\t1943\t1944\t-\tMar\tSun>=15\t2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Johannesburg 1:52:00 -\tLMT\t1892 Feb 8\n\t\t\t1:30\t-\tSAST\t1903 Mar\n\t\t\t2:00\tSA\tSAST\n# Marion and Prince Edward Is\n# scientific station since 1947\n# no information\n\n# Sudan\n#\n# From <a href=\"http://www.sunanews.net/sn13jane.html\">\n# Sudan News Agency (2000-01-13)\n# </a>, also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:\n# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon\n# Saturday....  This was announced Thursday by Caretaker State Minister for\n# Manpower Abdul-Rahman Nur-Eddin.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tSudan\t1970\tonly\t-\tMay\t 1\t0:00\t1:00\tS\nRule\tSudan\t1970\t1985\t-\tOct\t15\t0:00\t0\t-\nRule\tSudan\t1971\tonly\t-\tApr\t30\t0:00\t1:00\tS\nRule\tSudan\t1972\t1985\t-\tApr\tlastSun\t0:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Khartoum\t2:10:08 -\tLMT\t1931\n\t\t\t2:00\tSudan\tCA%sT\t2000 Jan 15 12:00\n\t\t\t3:00\t-\tEAT\n\n# South Sudan\nZone\tAfrica/Juba\t2:06:24 -\tLMT\t1931\n\t\t\t2:00\tSudan\tCA%sT\t2000 Jan 15 12:00\n\t\t\t3:00\t-\tEAT\n\n# Swaziland\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Mbabane\t2:04:24 -\tLMT\t1903 Mar\n\t\t\t2:00\t-\tSAST\n\n# Tanzania\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Africa/Dar_es_Salaam 2:37:08 -\tLMT\t1931\n\t\t\t3:00\t-\tEAT\t1948\n\t\t\t2:45\t-\tBEAUT\t1961\n\t\t\t3:00\t-\tEAT\n\n# Togo\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Lome\t0:04:52 -\tLMT\t1893\n\t\t\t0:00\t-\tGMT\n\n# Tunisia\n\n# From Gwillim Law (2005-04-30):\n# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,\n# this time in Tunisia.  According to Yahoo France News\n# <http://fr.news.yahoo.com/050426/5/4dumk.html>, in a story attributed to AP\n# and dated 2005-04-26, \"Tunisia has decided to advance its official time by\n# one hour, starting on Sunday, May 1.  Henceforth, Tunisian time will be\n# UTC+2 instead of UTC+1.  The change will take place at 23:00 UTC next\n# Saturday.\"  (My translation)\n#\n# From Oscar van Vlijmen (2005-05-02):\n# LaPresse, the first national daily newspaper ...\n# <http://www.lapresse.tn/archives/archives280405/actualites/lheure.html>\n# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,\n# 1h standard time.\n#\n# From Atef Loukil (2006-03-28):\n# The daylight saving time will be the same each year:\n# Beginning      : the last Sunday of March at 02:00\n# Ending         : the last Sunday of October at 03:00 ...\n# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50\n\n# From Steffen Thorsen (2009-03-16):\n# According to several news sources, Tunisia will not observe DST this year.\n# (Arabic)\n# <a href=\"http://www.elbashayer.com/?page=viewn&nid=42546\">\n# http://www.elbashayer.com/?page=viewn&nid=42546\n# </a>\n# <a href=\"http://www.babnet.net/kiwidetail-15295.asp\">\n# http://www.babnet.net/kiwidetail-15295.asp\n# </a>\n#\n# We have also confirmed this with the US embassy in Tunisia.\n# We have a wrap-up about this on the following page:\n# <a href=\"http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html\">\n# http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html\n# </a>\n\n# From Alexander Krivenyshev (2009-03-17):\n# Here is a link to Tunis Afrique Presse News Agency\n#\n# Standard time to be kept the whole year long (tap.info.tn):\n#\n# (in English)\n# <a href=\"http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157\">\n# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157\n# </a>\n#\n# (in Arabic)\n# <a href=\"http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1\">\n# http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1\n# </a>\n\n# From Arthur David Olson (2009--3-18):\n# The Tunis Afrique Presse News Agency notice contains this: \"This measure is due to the fact\n# that the fasting month of ramadan coincides with the period concerned by summer time.\n# Therefore, the standard time will be kept unchanged the whole year long.\"\n# So foregoing DST seems to be an exception (albeit one that may be repeated in the  future).\n\n# From Alexander Krivenyshev (2010-03-27):\n# According to some news reports Tunis confirmed not to use DST in 2010\n#\n# (translation):\n# \"The Tunisian government has decided to abandon DST, which was scheduled on\n# Sunday...\n# Tunisian authorities had suspended the DST for the first time last year also\n# coincided with the month of Ramadan...\"\n#\n# (in Arabic)\n# <a href=\"http://www.moheet.com/show_news.aspx?nid=358861&pg=1\">\n# http://www.moheet.com/show_news.aspx?nid=358861&pg=1\n# <a href=\"http://www.almadenahnews.com/newss/news.php?c=118&id=38036\">\n# http://www.almadenahnews.com/newss/news.php?c=118&id=38036\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_tunis02.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tTunisia\t1939\tonly\t-\tApr\t15\t23:00s\t1:00\tS\nRule\tTunisia\t1939\tonly\t-\tNov\t18\t23:00s\t0\t-\nRule\tTunisia\t1940\tonly\t-\tFeb\t25\t23:00s\t1:00\tS\nRule\tTunisia\t1941\tonly\t-\tOct\t 6\t 0:00\t0\t-\nRule\tTunisia\t1942\tonly\t-\tMar\t 9\t 0:00\t1:00\tS\nRule\tTunisia\t1942\tonly\t-\tNov\t 2\t 3:00\t0\t-\nRule\tTunisia\t1943\tonly\t-\tMar\t29\t 2:00\t1:00\tS\nRule\tTunisia\t1943\tonly\t-\tApr\t17\t 2:00\t0\t-\nRule\tTunisia\t1943\tonly\t-\tApr\t25\t 2:00\t1:00\tS\nRule\tTunisia\t1943\tonly\t-\tOct\t 4\t 2:00\t0\t-\nRule\tTunisia\t1944\t1945\t-\tApr\tMon>=1\t 2:00\t1:00\tS\nRule\tTunisia\t1944\tonly\t-\tOct\t 8\t 0:00\t0\t-\nRule\tTunisia\t1945\tonly\t-\tSep\t16\t 0:00\t0\t-\nRule\tTunisia\t1977\tonly\t-\tApr\t30\t 0:00s\t1:00\tS\nRule\tTunisia\t1977\tonly\t-\tSep\t24\t 0:00s\t0\t-\nRule\tTunisia\t1978\tonly\t-\tMay\t 1\t 0:00s\t1:00\tS\nRule\tTunisia\t1978\tonly\t-\tOct\t 1\t 0:00s\t0\t-\nRule\tTunisia\t1988\tonly\t-\tJun\t 1\t 0:00s\t1:00\tS\nRule\tTunisia\t1988\t1990\t-\tSep\tlastSun\t 0:00s\t0\t-\nRule\tTunisia\t1989\tonly\t-\tMar\t26\t 0:00s\t1:00\tS\nRule\tTunisia\t1990\tonly\t-\tMay\t 1\t 0:00s\t1:00\tS\nRule\tTunisia\t2005\tonly\t-\tMay\t 1\t 0:00s\t1:00\tS\nRule\tTunisia\t2005\tonly\t-\tSep\t30\t 1:00s\t0\t-\nRule\tTunisia\t2006\t2008\t-\tMar\tlastSun\t 2:00s\t1:00\tS\nRule\tTunisia\t2006\t2008\t-\tOct\tlastSun\t 2:00s\t0\t-\n\n# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's\n# more precise 0:09:21.\n# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Tunis\t0:40:44 -\tLMT\t1881 May 12\n\t\t\t0:09:21\t-\tPMT\t1911 Mar 11    # Paris Mean Time\n\t\t\t1:00\tTunisia\tCE%sT\n\n# Uganda\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Kampala\t2:09:40 -\tLMT\t1928 Jul\n\t\t\t3:00\t-\tEAT\t1930\n\t\t\t2:30\t-\tBEAT\t1948\n\t\t\t2:45\t-\tBEAUT\t1957\n\t\t\t3:00\t-\tEAT\n\n# Zambia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Lusaka\t1:53:08 -\tLMT\t1903 Mar\n\t\t\t2:00\t-\tCAT\n\n# Zimbabwe\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAfrica/Harare\t2:04:12 -\tLMT\t1903 Mar\n\t\t\t2:00\t-\tCAT\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/antarctica",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# From Paul Eggert (1999-11-15):\n# To keep things manageable, we list only locations occupied year-round; see\n# <a href=\"http://www.comnap.aq/comnap/comnap.nsf/P/Stations/\">\n# COMNAP - Stations and Bases\n# </a>\n# and\n# <a href=\"http://www.spri.cam.ac.uk/bob/periant.htm\">\n# Summary of the Peri-Antarctic Islands (1998-07-23)\n# </a>\n# for information.\n# Unless otherwise specified, we have no time zone information.\n#\n# Except for the French entries,\n# I made up all time zone abbreviations mentioned here; corrections welcome!\n# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.\n\n# These rules are stolen from the `southamerica' file.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tArgAQ\t1964\t1966\t-\tMar\t 1\t0:00\t0\t-\nRule\tArgAQ\t1964\t1966\t-\tOct\t15\t0:00\t1:00\tS\nRule\tArgAQ\t1967\tonly\t-\tApr\t 2\t0:00\t0\t-\nRule\tArgAQ\t1967\t1968\t-\tOct\tSun>=1\t0:00\t1:00\tS\nRule\tArgAQ\t1968\t1969\t-\tApr\tSun>=1\t0:00\t0\t-\nRule\tArgAQ\t1974\tonly\t-\tJan\t23\t0:00\t1:00\tS\nRule\tArgAQ\t1974\tonly\t-\tMay\t 1\t0:00\t0\t-\nRule\tChileAQ\t1972\t1986\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChileAQ\t1974\t1987\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChileAQ\t1987\tonly\t-\tApr\t12\t3:00u\t0\t-\nRule\tChileAQ\t1988\t1989\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChileAQ\t1988\tonly\t-\tOct\tSun>=1\t4:00u\t1:00\tS\nRule\tChileAQ\t1989\tonly\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChileAQ\t1990\tonly\t-\tMar\t18\t3:00u\t0\t-\nRule\tChileAQ\t1990\tonly\t-\tSep\t16\t4:00u\t1:00\tS\nRule\tChileAQ\t1991\t1996\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChileAQ\t1991\t1997\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChileAQ\t1997\tonly\t-\tMar\t30\t3:00u\t0\t-\nRule\tChileAQ\t1998\tonly\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChileAQ\t1998\tonly\t-\tSep\t27\t4:00u\t1:00\tS\nRule\tChileAQ\t1999\tonly\t-\tApr\t 4\t3:00u\t0\t-\nRule\tChileAQ\t1999\t2010\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChileAQ\t2000\t2007\t-\tMar\tSun>=9\t3:00u\t0\t-\n# N.B.: the end of March 29 in Chile is March 30 in Universal time,\n# which is used below in specifying the transition.\nRule\tChileAQ\t2008\tonly\t-\tMar\t30\t3:00u\t0\t-\nRule\tChileAQ\t2009\tonly\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChileAQ\t2010\tonly\t-\tApr\tSun>=1\t3:00u\t0\t-\nRule\tChileAQ\t2011\tonly\t-\tMay\tSun>=2\t3:00u\t0\t-\nRule\tChileAQ\t2011\tonly\t-\tAug\tSun>=16\t4:00u\t1:00\tS\nRule\tChileAQ\t2012\tonly\t-\tApr\tSun>=23\t3:00u\t0\t-\nRule\tChileAQ\t2012\tonly\t-\tSep\tSun>=2\t4:00u\t1:00\tS\nRule\tChileAQ\t2013\tmax\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChileAQ\t2013\tmax\t-\tOct\tSun>=9\t4:00u\t1:00\tS\n\n# These rules are stolen from the `australasia' file.\nRule\tAusAQ\t1917\tonly\t-\tJan\t 1\t0:01\t1:00\t-\nRule\tAusAQ\t1917\tonly\t-\tMar\t25\t2:00\t0\t-\nRule\tAusAQ\t1942\tonly\t-\tJan\t 1\t2:00\t1:00\t-\nRule\tAusAQ\t1942\tonly\t-\tMar\t29\t2:00\t0\t-\nRule\tAusAQ\t1942\tonly\t-\tSep\t27\t2:00\t1:00\t-\nRule\tAusAQ\t1943\t1944\t-\tMar\tlastSun\t2:00\t0\t-\nRule\tAusAQ\t1943\tonly\t-\tOct\t 3\t2:00\t1:00\t-\nRule\tATAQ\t1967\tonly\t-\tOct\tSun>=1\t2:00s\t1:00\t-\nRule\tATAQ\t1968\tonly\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tATAQ\t1968\t1985\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tATAQ\t1969\t1971\t-\tMar\tSun>=8\t2:00s\t0\t-\nRule\tATAQ\t1972\tonly\t-\tFeb\tlastSun\t2:00s\t0\t-\nRule\tATAQ\t1973\t1981\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tATAQ\t1982\t1983\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tATAQ\t1984\t1986\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tATAQ\t1986\tonly\t-\tOct\tSun>=15\t2:00s\t1:00\t-\nRule\tATAQ\t1987\t1990\t-\tMar\tSun>=15\t2:00s\t0\t-\nRule\tATAQ\t1987\tonly\t-\tOct\tSun>=22\t2:00s\t1:00\t-\nRule\tATAQ\t1988\t1990\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tATAQ\t1991\t1999\t-\tOct\tSun>=1\t2:00s\t1:00\t-\nRule\tATAQ\t1991\t2005\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tATAQ\t2000\tonly\t-\tAug\tlastSun\t2:00s\t1:00\t-\nRule\tATAQ\t2001\tmax\t-\tOct\tSun>=1\t2:00s\t1:00\t-\nRule\tATAQ\t2006\tonly\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tATAQ\t2007\tonly\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tATAQ\t2008\tmax\t-\tApr\tSun>=1\t2:00s\t0\t-\n\n# Argentina - year-round bases\n# Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05\n# Esperanza, San Martin Land, -6323-05659, since 1952-12-17\n# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01\n# Marambio, Seymour I, -6414-05637, since 1969-10-29\n# Orcadas, Laurie I, -6016-04444, since 1904-02-22\n# San Martin, Debenham I, -6807-06708, since 1951-03-21\n#\t(except 1960-03 / 1976-03-21)\n\n# Australia - territories\n# Heard Island, McDonald Islands (uninhabited)\n#\tpreviously sealers and scientific personnel wintered\n#\t<a href=\"http://web.archive.org/web/20021204222245/http://www.dstc.qut.edu.au/DST/marg/daylight.html\">\n#\tMargaret Turner reports\n#\t</a> (1999-09-30) that they're UTC+5, with no DST;\n#\tpresumably this is when they have visitors.\n#\n# year-round bases\n# Casey, Bailey Peninsula, -6617+11032, since 1969\n# Davis, Vestfold Hills, -6835+07759, since 1957-01-13\n#\t(except 1964-11 - 1969-02)\n# Mawson, Holme Bay, -6736+06253, since 1954-02-13\n\n# From Steffen Thorsen (2009-03-11):\n# Three Australian stations in Antarctica have changed their time zone:\n# Casey moved from UTC+8 to UTC+11\n# Davis moved from UTC+7 to UTC+5\n# Mawson moved from UTC+6 to UTC+5\n# The changes occurred on 2009-10-18 at 02:00 (local times).\n#\n# Government source: (Australian Antarctic Division)\n# <a href=\"http://www.aad.gov.au/default.asp?casid=37079\">\n# http://www.aad.gov.au/default.asp?casid=37079\n# </a>\n#\n# We have more background information here:\n# <a href=\"http://www.timeanddate.com/news/time/antarctica-new-times.html\">\n# http://www.timeanddate.com/news/time/antarctica-new-times.html\n# </a>\n\n# From Steffen Thorsen (2010-03-10):\n# We got these changes from the Australian Antarctic Division:\n# - Macquarie Island will stay on UTC+11 for winter and therefore not\n# switch back from daylight savings time when other parts of Australia do\n# on 4 April.\n#\n# - Casey station reverted to its normal time of UTC+8 on 5 March 2010.\n# The change to UTC+11 is being considered as a regular summer thing but\n# has not been decided yet.\n#\n# - Davis station will revert to its normal time of UTC+7 at 10 March 2010\n# 20:00 UTC.\n#\n# - Mawson station stays on UTC+5.\n#\n# In addition to the Rule changes for Casey/Davis, it means that Macquarie\n# will no longer be like Hobart and will have to have its own Zone created.\n#\n# Background:\n# <a href=\"http://www.timeanddate.com/news/time/antartica-time-changes-2010.html\">\n# http://www.timeanddate.com/news/time/antartica-time-changes-2010.html\n# </a>\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Antarctica/Casey\t0\t-\tzzz\t1969\n\t\t\t8:00\t-\tWST\t2009 Oct 18 2:00\n\t\t\t\t\t\t# Western (Aus) Standard Time\n\t\t\t11:00\t-\tCAST\t2010 Mar 5 2:00\n\t\t\t\t\t\t# Casey Time\n\t\t\t8:00\t-\tWST\t2011 Oct 28 2:00\n\t\t\t11:00\t-\tCAST\t2012 Feb 21 17:00u\n\t\t\t8:00\t-\tWST\nZone Antarctica/Davis\t0\t-\tzzz\t1957 Jan 13\n\t\t\t7:00\t-\tDAVT\t1964 Nov # Davis Time\n\t\t\t0\t-\tzzz\t1969 Feb\n\t\t\t7:00\t-\tDAVT\t2009 Oct 18 2:00\n\t\t\t5:00\t-\tDAVT\t2010 Mar 10 20:00u\n\t\t\t7:00\t-\tDAVT\t2011 Oct 28 2:00\n\t\t\t5:00\t-\tDAVT\t2012 Feb 21 20:00u\n\t\t\t7:00\t-\tDAVT\nZone Antarctica/Mawson\t0\t-\tzzz\t1954 Feb 13\n\t\t\t6:00\t-\tMAWT\t2009 Oct 18 2:00\n\t\t\t\t\t\t# Mawson Time\n\t\t\t5:00\t-\tMAWT\nZone Antarctica/Macquarie 0\t-\tzzz\t1911\n\t\t\t10:00\t-\tEST\t1916 Oct 1 2:00\n\t\t\t10:00\t1:00\tEST\t1917 Feb\n\t\t\t10:00\tAusAQ\tEST\t1967\n\t\t\t10:00\tATAQ\tEST\t2010 Apr 4 3:00\n\t\t\t11:00\t-\tMIST\t# Macquarie Island Time\n# References:\n# <a href=\"http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html\">\n# Casey Weather (1998-02-26)\n# </a>\n# <a href=\"http://www.antdiv.gov.au/aad/exop/sfo/davis/video.html\">\n# Davis Station, Antarctica (1998-02-26)\n# </a>\n# <a href=\"http://www.antdiv.gov.au/aad/exop/sfo/mawson/video.html\">\n# Mawson Station, Antarctica (1998-02-25)\n# </a>\n\n# Brazil - year-round base\n# Comandante Ferraz, King George Island, -6205+05824, since 1983/4\n\n# Chile - year-round bases and towns\n# Escudero, South Shetland Is, -621157-0585735, since 1994\n# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07\n# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02\n# Capitan Arturo Prat, -6230-05941\n# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09\n# These locations have always used Santiago time; use TZ='America/Santiago'.\n\n# China - year-round bases\n# Great Wall, King George Island, -6213-05858, since 1985-02-20\n# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26\n\n# France - year-round bases\n#\n# From Antoine Leca (1997-01-20):\n# Time data are from Nicole Pailleau at the IFRTP\n# (French Institute for Polar Research and Technology).\n# She confirms that French Southern Territories and Terre Adelie bases\n# don't observe daylight saving time, even if Terre Adelie supplies came\n# from Tasmania.\n#\n# French Southern Territories with year-round inhabitants\n#\n# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950\n# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964\n# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;\n#\twhaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956\n#\n# St Paul Island - near Amsterdam, uninhabited\n#\tfishing stations operated variously 1819/1931\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Indian/Kerguelen\t0\t-\tzzz\t1950\t# Port-aux-Francais\n\t\t\t5:00\t-\tTFT\t# ISO code TF Time\n#\n# year-round base in the main continent\n# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11\n#\n# Another base at Port-Martin, 50km east, began operation in 1947.\n# It was destroyed by fire on 1952-01-14.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Antarctica/DumontDUrville 0 -\tzzz\t1947\n\t\t\t10:00\t-\tPMT\t1952 Jan 14 # Port-Martin Time\n\t\t\t0\t-\tzzz\t1956 Nov\n\t\t\t10:00\t-\tDDUT\t# Dumont-d'Urville Time\n# Reference:\n# <a href=\"http://en.wikipedia.org/wiki/Dumont_d'Urville_Station\">\n# Dumont d'Urville Station (2005-12-05)\n# </a>\n\n# Germany - year-round base\n# Georg von Neumayer, -7039-00815\n\n# India - year-round base\n# Dakshin Gangotri, -7005+01200\n\n# Japan - year-round bases\n# Dome Fuji, -7719+03942\n# Syowa, -690022+0393524\n#\n# From Hideyuki Suzuki (1999-02-06):\n# In all Japanese stations, +0300 is used as the standard time.\n#\n# Syowa station, which is the first antarctic station of Japan,\n# was established on 1957-01-29.  Since Syowa station is still the main\n# station of Japan, it's appropriate for the principal location.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Antarctica/Syowa\t0\t-\tzzz\t1957 Jan 29\n\t\t\t3:00\t-\tSYOT\t# Syowa Time\n# See:\n# <a href=\"http://www.nipr.ac.jp/english/ara01.html\">\n# NIPR Antarctic Research Activities (1999-08-17)\n# </a>\n\n# S Korea - year-round base\n# King Sejong, King George Island, -6213-05847, since 1988\n\n# New Zealand - claims\n# Balleny Islands (never inhabited)\n# Scott Island (never inhabited)\n#\n# year-round base\n# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.\n#\n# These rules for New Zealand are stolen from the `australasia' file.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNZAQ\t1974\tonly\t-\tNov\t 3\t2:00s\t1:00\tD\nRule\tNZAQ\t1975\t1988\t-\tOct\tlastSun\t2:00s\t1:00\tD\nRule\tNZAQ\t1989\tonly\t-\tOct\t 8\t2:00s\t1:00\tD\nRule\tNZAQ\t1990\t2006\t-\tOct\tSun>=1\t2:00s\t1:00\tD\nRule\tNZAQ\t1975\tonly\t-\tFeb\t23\t2:00s\t0\tS\nRule\tNZAQ\t1976\t1989\t-\tMar\tSun>=1\t2:00s\t0\tS\nRule\tNZAQ\t1990\t2007\t-\tMar\tSun>=15\t2:00s\t0\tS\nRule\tNZAQ\t2007\tmax\t-\tSep\tlastSun\t2:00s\t1:00\tD\nRule\tNZAQ\t2008\tmax\t-\tApr\tSun>=1\t2:00s\t0\tS\n\n# Norway - territories\n# Bouvet (never inhabited)\n#\n# claims\n# Peter I Island (never inhabited)\n\n# Poland - year-round base\n# Arctowski, King George Island, -620945-0582745, since 1977\n\n# Russia - year-round bases\n# Bellingshausen, King George Island, -621159-0585337, since 1968-02-22\n# Mirny, Davis coast, -6633+09301, since 1956-02\n# Molodezhnaya, Alasheyev Bay, -6740+04551,\n#\tyear-round from 1962-02 to 1999-07-01\n# Novolazarevskaya, Queen Maud Land, -7046+01150,\n#\tyear-round from 1960/61 to 1992\n\n# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11\n# <a href=\"http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP\">\n# From Craig Mundell (1994-12-15)</a>:\n# Vostok, which is one of the Russian stations, is set on the same\n# time as Moscow, Russia.\n#\n# From Lee Hotz (2001-03-08):\n# I queried the folks at Columbia who spent the summer at Vostok and this is\n# what they had to say about time there:\n# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)\n# time, which is 12 hours ahead of GMT. The Russian Station Vostok was\n# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead\n# of GMT). This is a time zone I think two hours east of Moscow. The\n# natural time zone is in between the two: 8 hours ahead of GMT.''\n#\n# From Paul Eggert (2001-05-04):\n# This seems to be hopelessly confusing, so I asked Lee Hotz about it\n# in person.  He said that some Antartic locations set their local\n# time so that noon is the warmest part of the day, and that this\n# changes during the year and does not necessarily correspond to mean\n# solar noon.  So the Vostok time might have been whatever the clocks\n# happened to be during their visit.  So we still don't really know what time\n# it is at Vostok.  But we'll guess UTC+6.\n#\nZone Antarctica/Vostok\t0\t-\tzzz\t1957 Dec 16\n\t\t\t6:00\t-\tVOST\t# Vostok time\n\n# S Africa - year-round bases\n# Marion Island, -4653+03752\n# Sanae, -7141-00250\n\n# UK\n#\n# British Antarctic Territories (BAT) claims\n# South Orkney Islands\n#\tscientific station from 1903\n#\twhaling station at Signy I 1920/1926\n# South Shetland Islands\n#\n# year-round bases\n# Bird Island, South Georgia, -5400-03803, since 1983\n# Deception Island, -6259-06034, whaling station 1912/1931,\n#\tscientific station 1943/1967,\n#\tpreviously sealers and a scientific expedition wintered by accident,\n#\tand a garrison was deployed briefly\n# Halley, Coates Land, -7535-02604, since 1956-01-06\n#\tHalley is on a moving ice shelf and is periodically relocated\n#\tso that it is never more than 10km from its nominal location.\n# Rothera, Adelaide Island, -6734-6808, since 1976-12-01\n#\n# From Paul Eggert (2002-10-22)\n# <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Antarctica/Rothera\t0\t-\tzzz\t1976 Dec  1\n\t\t\t-3:00\t-\tROTT\t# Rothera time\n\n# Uruguay - year round base\n# Artigas, King George Island, -621104-0585107\n\n# USA - year-round bases\n#\n# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)\n#\n# From Ethan Dicks (1996-10-06):\n# It keeps the same time as Punta Arenas, Chile, because, just like us\n# and the South Pole, that's the other end of their supply line....\n# I verified with someone who was there that since 1980,\n# Palmer has followed Chile.  Prior to that, before the Falklands War,\n# Palmer used to be supplied from Argentina.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Antarctica/Palmer\t0\t-\tzzz\t1965\n\t\t\t-4:00\tArgAQ\tAR%sT\t1969 Oct 5\n\t\t\t-3:00\tArgAQ\tAR%sT\t1982 May\n\t\t\t-4:00\tChileAQ\tCL%sT\n#\n#\n# McMurdo, Ross Island, since 1955-12\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Antarctica/McMurdo\t0\t-\tzzz\t1956\n\t\t\t12:00\tNZAQ\tNZ%sT\n#\n# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20\n#\n# From Paul Eggert (1996-09-03):\n# Normally it wouldn't have a separate entry, since it's like the\n# larger Antarctica/McMurdo since 1970, but it's too famous to omit.\n#\n# From Chris Carrier (1996-06-27):\n# Siple, the first commander of the South Pole station,\n# stated that he would have liked to have kept GMT at the station,\n# but that he found it more convenient to keep GMT+12\n# as supplies for the station were coming from McMurdo Sound,\n# which was on GMT+12 because New Zealand was on GMT+12 all year\n# at that time (1957).  (Source: Siple's book 90 degrees SOUTH.)\n#\n# From Susan Smith\n# http://www.cybertours.com/whs/pole10.html\n# (1995-11-13 16:24:56 +1300, no longer available):\n# We use the same time as McMurdo does.\n# And they use the same time as Christchurch, NZ does....\n# One last quirk about South Pole time.\n# All the electric clocks are usually wrong.\n# Something about the generators running at 60.1hertz or something\n# makes all of the clocks run fast.  So every couple of days,\n# we have to go around and set them back 5 minutes or so.\n# Maybe if we let them run fast all of the time, we'd get to leave here sooner!!\n#\nLink\tAntarctica/McMurdo\tAntarctica/South_Pole\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/asia",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by no means authoritative; if you think you know better,\n# go ahead and edit the file (and please send any changes to\n# tz@iana.org for general use in the future).\n\n# From Paul Eggert (2006-03-22):\n#\n# A good source for time zone historical data outside the U.S. is\n# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),\n# San Diego: ACS Publications, Inc. (2003).\n#\n# Gwillim Law writes that a good source\n# for recent time zone data is the International Air Transport\n# Association's Standard Schedules Information Manual (IATA SSIM),\n# published semiannually.  Law sent in several helpful summaries\n# of the IATA's data after 1990.\n#\n# Except where otherwise noted, Shanks & Pottenger is the source for\n# entries through 1990, and IATA SSIM is the source for entries afterwards.\n#\n# Another source occasionally used is Edward W. Whitman, World Time Differences,\n# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which\n# I found in the UCLA library.\n#\n# A reliable and entertaining source about time zones is\n# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).\n#\n# I invented the abbreviations marked `*' in the following table;\n# the rest are from earlier versions of this file, or from other sources.\n# Corrections are welcome!\n#\t     std  dst\n#\t     LMT\tLocal Mean Time\n#\t2:00 EET  EEST\tEastern European Time\n#\t2:00 IST  IDT\tIsrael\n#\t3:00 AST  ADT\tArabia*\n#\t3:30 IRST IRDT\tIran\n#\t4:00 GST\tGulf*\n#\t5:30 IST\tIndia\n#\t7:00 ICT\tIndochina*\n#\t7:00 WIT\twest Indonesia\n#\t8:00 CIT\tcentral Indonesia\n#\t8:00 CST\tChina\n#\t9:00 CJT\tCentral Japanese Time (1896/1937)*\n#\t9:00 EIT\teast Indonesia\n#\t9:00 JST  JDT\tJapan\n#\t9:00 KST  KDT\tKorea\n#\t9:30 CST\t(Australian) Central Standard Time\n#\n# See the `europe' file for Russia and Turkey in Asia.\n\n# From Guy Harris:\n# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as\n# additional information from Tom Yap, Sun Microsystems Intercontinental\n# Technical Support (including a page from the Official Airline Guide -\n# Worldwide Edition).  The names for time zones are guesses.\n\n###############################################################################\n\n# These rules are stolen from the `europe' file.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tEUAsia\t1981\tmax\t-\tMar\tlastSun\t 1:00u\t1:00\tS\nRule\tEUAsia\t1979\t1995\t-\tSep\tlastSun\t 1:00u\t0\t-\nRule\tEUAsia\t1996\tmax\t-\tOct\tlastSun\t 1:00u\t0\t-\nRule E-EurAsia\t1981\tmax\t-\tMar\tlastSun\t 0:00\t1:00\tS\nRule E-EurAsia\t1979\t1995\t-\tSep\tlastSun\t 0:00\t0\t-\nRule E-EurAsia\t1996\tmax\t-\tOct\tlastSun\t 0:00\t0\t-\nRule RussiaAsia\t1981\t1984\t-\tApr\t1\t 0:00\t1:00\tS\nRule RussiaAsia\t1981\t1983\t-\tOct\t1\t 0:00\t0\t-\nRule RussiaAsia\t1984\t1991\t-\tSep\tlastSun\t 2:00s\t0\t-\nRule RussiaAsia\t1985\t1991\t-\tMar\tlastSun\t 2:00s\t1:00\tS\nRule RussiaAsia\t1992\tonly\t-\tMar\tlastSat\t23:00\t1:00\tS\nRule RussiaAsia\t1992\tonly\t-\tSep\tlastSat\t23:00\t0\t-\nRule RussiaAsia\t1993\tmax\t-\tMar\tlastSun\t 2:00s\t1:00\tS\nRule RussiaAsia\t1993\t1995\t-\tSep\tlastSun\t 2:00s\t0\t-\nRule RussiaAsia\t1996\tmax\t-\tOct\tlastSun\t 2:00s\t0\t-\n\n# Afghanistan\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Kabul\t4:36:48 -\tLMT\t1890\n\t\t\t4:00\t-\tAFT\t1945\n\t\t\t4:30\t-\tAFT\n\n# Armenia\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger have Yerevan switching to 3:00 (with Russian DST)\n# in spring 1991, then to 4:00 with no DST in fall 1995, then\n# readopting Russian DST in 1997.  Go with Shanks & Pottenger, even\n# when they disagree with others.  Edgar Der-Danieliantz\n# reported (1996-05-04) that Yerevan probably wouldn't use DST\n# in 1996, though it did use DST in 1995.  IATA SSIM (1991/1998) reports that\n# Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,\n# but started switching at 3:00s in 1998.\n\n# From Arthur David Olson (2011-06-15):\n# While Russia abandoned DST in 2011, Armenia may choose to\n# follow Russia's \"old\" rules.\n\n# From Alexander Krivenyshev (2012-02-10):\n# According to News Armenia, on Feb 9, 2012,\n# http://newsarmenia.ru/society/20120209/42609695.html\n#\n# The Armenia National Assembly adopted final reading of Amendments to the\n# Law \"On procedure of calculation time on the territory of the Republic of\n# Armenia\" according to which Armenia [is] abolishing Daylight Saving Time.\n# or\n# (brief)\n# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Yerevan\t2:58:00 -\tLMT\t1924 May  2\n\t\t\t3:00\t-\tYERT\t1957 Mar    # Yerevan Time\n\t\t\t4:00 RussiaAsia YER%sT\t1991 Mar 31 2:00s\n\t\t\t3:00\t1:00\tYERST\t1991 Sep 23 # independence\n\t\t\t3:00 RussiaAsia\tAM%sT\t1995 Sep 24 2:00s\n\t\t\t4:00\t-\tAMT\t1997\n\t\t\t4:00 RussiaAsia\tAM%sT\t2012 Mar 25 2:00s\n\t\t\t4:00\t-\tAMT\n\n# Azerbaijan\n# From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):\n# According to the resolution of Cabinet of Ministers, 1997\n# Resolution available at: http://aif.az/docs/daylight_res.pdf\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAzer\t1997\tmax\t-\tMar\tlastSun\t 4:00\t1:00\tS\nRule\tAzer\t1997\tmax\t-\tOct\tlastSun\t 5:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Baku\t3:19:24 -\tLMT\t1924 May  2\n\t\t\t3:00\t-\tBAKT\t1957 Mar    # Baku Time\n\t\t\t4:00 RussiaAsia BAK%sT\t1991 Mar 31 2:00s\n\t\t\t3:00\t1:00\tBAKST\t1991 Aug 30 # independence\n\t\t\t3:00 RussiaAsia\tAZ%sT\t1992 Sep lastSat 23:00\n\t\t\t4:00\t-\tAZT\t1996 # Azerbaijan time\n\t\t\t4:00\tEUAsia\tAZ%sT\t1997\n\t\t\t4:00\tAzer\tAZ%sT\n\n# Bahrain\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Bahrain\t3:22:20 -\tLMT\t1920\t\t# Al Manamah\n\t\t\t4:00\t-\tGST\t1972 Jun\n\t\t\t3:00\t-\tAST\n\n# Bangladesh\n# From Alexander Krivenyshev (2009-05-13):\n# According to newspaper Asian Tribune (May 6, 2009) Bangladesh may introduce\n# Daylight Saving Time from June 16 to Sept 30\n#\n# Bangladesh to introduce daylight saving time likely from June 16\n# <a href=\"http://www.asiantribune.com/?q=node/17288\">\n# http://www.asiantribune.com/?q=node/17288\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html\n# </a>\n#\n# \"... Bangladesh government has decided to switch daylight saving time from\n# June\n# 16 till September 30 in a bid to ensure maximum use of daylight to cope with\n# crippling power crisis. \"\n#\n# The switch will remain in effect from June 16 to Sept 30 (2009) but if\n# implemented the next year, it will come in force from April 1, 2010\n\n# From Steffen Thorsen (2009-06-02):\n# They have finally decided now, but changed the start date to midnight between\n# the 19th and 20th, and they have not set the end date yet.\n#\n# Some sources:\n# <a href=\"http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601\">\n# http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601\n# </a>\n# <a href=\"http://bdnews24.com/details.php?id=85889&cid=2\">\n# http://bdnews24.com/details.php?id=85889&cid=2\n# </a>\n#\n# Our wrap-up:\n# <a href=\"http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html\">\n# http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html\n# </a>\n\n# From A. N. M. Kamrus Saadat (2009-06-15):\n# Finally we've got the official mail regarding DST start time where DST start\n# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh\n# Telecommunication Regulatory Commission).\n#\n# No DST end date has been announced yet.\n\n# From Alexander Krivenyshev (2009-09-25):\n# Bangladesh won't go back to Standard Time from October 1, 2009,\n# instead it will continue DST measure till the cabinet makes a fresh decision.\n#\n# Following report by same newspaper-\"The Daily Star Friday\":\n# \"DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1\"\n# <a href=\"http://www.thedailystar.net/newDesign/news-details.php?nid=107021\">\n# http://www.thedailystar.net/newDesign/news-details.php?nid=107021\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html\n# </a>\n\n# From Steffen Thorsen (2009-10-13):\n# IANS (Indo-Asian News Service) now reports:\n# Bangladesh has decided that the clock advanced by an hour to make\n# maximum use of daylight hours as an energy saving measure would\n# \"continue for an indefinite period.\"\n#\n# One of many places where it is published:\n# <a href=\"http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html\">\n# http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html\n# </a>\n\n# From Alexander Krivenyshev (2009-12-24):\n# According to Bangladesh newspaper \"The Daily Star,\"\n# Bangladesh will change its clock back to Standard Time on Dec 31, 2009.\n#\n# Clock goes back 1-hr on Dec 31 night.\n# <a href=\"http://www.thedailystar.net/newDesign/news-details.php?nid=119228\">\n# http://www.thedailystar.net/newDesign/news-details.php?nid=119228\n# </a>\n# and\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_bangladesh05.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_bangladesh05.html\n# </a>\n#\n# \"...The government yesterday decided to put the clock back by one hour\n# on December 31 midnight and the new time will continue until March 31,\n# 2010 midnight. The decision came at a cabinet meeting at the Prime\n# Minister's Office last night...\"\n\n# From Alexander Krivenyshev (2010-03-22):\n# According to Bangladesh newspaper \"The Daily Star,\"\n# Cabinet cancels Daylight Saving Time\n# <a href=\"http://www.thedailystar.net/newDesign/latest_news.php?nid=22817\">\n# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html\n# </a>\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tDhaka\t2009\tonly\t-\tJun\t19\t23:00\t1:00\tS\nRule\tDhaka\t2009\tonly\t-\tDec\t31\t23:59\t0\t-\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Dhaka\t6:01:40 -\tLMT\t1890\n\t\t\t5:53:20\t-\tHMT\t1941 Oct    # Howrah Mean Time?\n\t\t\t6:30\t-\tBURT\t1942 May 15 # Burma Time\n\t\t\t5:30\t-\tIST\t1942 Sep\n\t\t\t6:30\t-\tBURT\t1951 Sep 30\n\t\t\t6:00\t-\tDACT\t1971 Mar 26 # Dacca Time\n\t\t\t6:00\t-\tBDT\t2009\n\t\t\t6:00\tDhaka\tBD%sT\n\n# Bhutan\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Thimphu\t5:58:36 -\tLMT\t1947 Aug 15 # or Thimbu\n\t\t\t5:30\t-\tIST\t1987 Oct\n\t\t\t6:00\t-\tBTT\t# Bhutan Time\n\n# British Indian Ocean Territory\n# Whitman and the 1995 CIA time zone map say 5:00, but the\n# 1997 and later maps say 6:00.  Assume the switch occurred in 1996.\n# We have no information as to when standard time was introduced;\n# assume it occurred in 1907, the same year as Mauritius (which\n# then contained the Chagos Archipelago).\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tIndian/Chagos\t4:49:40\t-\tLMT\t1907\n\t\t\t5:00\t-\tIOT\t1996 # BIOT Time\n\t\t\t6:00\t-\tIOT\n\n# Brunei\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Brunei\t7:39:40 -\tLMT\t1926 Mar   # Bandar Seri Begawan\n\t\t\t7:30\t-\tBNT\t1933\n\t\t\t8:00\t-\tBNT\n\n# Burma / Myanmar\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Rangoon\t6:24:40 -\tLMT\t1880\t\t# or Yangon\n\t\t\t6:24:36\t-\tRMT\t1920\t   # Rangoon Mean Time?\n\t\t\t6:30\t-\tBURT\t1942 May   # Burma Time\n\t\t\t9:00\t-\tJST\t1945 May 3\n\t\t\t6:30\t-\tMMT\t\t   # Myanmar Time\n\n# Cambodia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Phnom_Penh\t6:59:40 -\tLMT\t1906 Jun  9\n\t\t\t7:06:20\t-\tSMT\t1911 Mar 11 0:01 # Saigon MT?\n\t\t\t7:00\t-\tICT\t1912 May\n\t\t\t8:00\t-\tICT\t1931 May\n\t\t\t7:00\t-\tICT\n\n# China\n\n# From Guy Harris:\n# People's Republic of China.  Yes, they really have only one time zone.\n\n# From Bob Devine (1988-01-28):\n# No they don't.  See TIME mag, 1986-02-17 p.52.  Even though\n# China is across 4 physical time zones, before Feb 1, 1986 only the\n# Peking (Bejing) time zone was recognized.  Since that date, China\n# has two of 'em -- Peking's and Urumqi (named after the capital of\n# the Xinjiang Uyghur Autonomous Region).  I don't know about DST for it.\n#\n# . . .I just deleted the DST table and this editor makes it too\n# painful to suck in another copy..  So, here is what I have for\n# DST start/end dates for Peking's time zone (info from AP):\n#\n#     1986 May 4 - Sept 14\n#     1987 mid-April - ??\n\n# From U. S. Naval Observatory (1989-01-19):\n# CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN\n# CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10\n\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger write that China (except for Hong Kong and Macau)\n# has had a single time zone since 1980 May 1, observing summer DST\n# from 1986 through 1991; this contradicts Devine's\n# note about Time magazine, though apparently _something_ happened in 1986.\n# Go with Shanks & Pottenger for now.  I made up names for the other\n# pre-1980 time zones.\n\n# From Shanks & Pottenger:\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tShang\t1940\tonly\t-\tJun\t 3\t0:00\t1:00\tD\nRule\tShang\t1940\t1941\t-\tOct\t 1\t0:00\t0\tS\nRule\tShang\t1941\tonly\t-\tMar\t16\t0:00\t1:00\tD\nRule\tPRC\t1986\tonly\t-\tMay\t 4\t0:00\t1:00\tD\nRule\tPRC\t1986\t1991\t-\tSep\tSun>=11\t0:00\t0\tS\nRule\tPRC\t1987\t1991\t-\tApr\tSun>=10\t0:00\t1:00\tD\n\n# From Anthony Fok (2001-12-20):\n# BTW, I did some research on-line and found some info regarding these five\n# historic timezones from some Taiwan websites.  And yes, there are official\n# Chinese names for these locales (before 1949).\n#\n# From Jesper Norgaard Welen (2006-07-14):\n# I have investigated the timezones around 1970 on the\n# http://www.astro.com/atlas site [with provinces and county\n# boundaries summarized below]....  A few other exceptions were two\n# counties on the Sichuan side of the Xizang-Sichuan border,\n# counties Dege and Baiyu which lies on the Sichuan side and are\n# therefore supposed to be GMT+7, Xizang region being GMT+6, but Dege\n# county is GMT+8 according to astro.com while Baiyu county is GMT+6\n# (could be true), for the moment I am assuming that those two\n# counties are mistakes in the astro.com data.\n\n# From Paul Eggert (2008-02-11):\n# I just now checked Google News for western news sources that talk\n# about China's single time zone, and couldn't find anything before 1986\n# talking about China being in one time zone.  (That article was: Jim\n# Mann, \"A clumsy embrace for another western custom: China on daylight\n# time--sort of\", Los Angeles Times, 1986-05-05.  By the way, this\n# article confirms the tz database's data claiming that China began\n# observing daylight saving time in 1986.\n#\n# From Thomas S. Mullaney (2008-02-11):\n# I think you're combining two subjects that need to treated\n# separately: daylight savings (which, you're correct, wasn't\n# implemented until the 1980s) and the unified time zone centered near\n# Beijing (which was implemented in 1949). Briefly, there was also a\n# \"Lhasa Time\" in Tibet and \"Urumqi Time\" in Xinjiang. The first was\n# ceased, and the second eventually recognized (again, in the 1980s).\n#\n# From Paul Eggert (2008-06-30):\n# There seems to be a good chance China switched to a single time zone in 1949\n# rather than in 1980 as Shanks & Pottenger have it, but we don't have a\n# reliable documentary source saying so yet, so for now we still go with\n# Shanks & Pottenger.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# Changbai Time (\"Long-white Time\", Long-white = Heilongjiang area)\n# Heilongjiang (except Mohe county), Jilin\nZone\tAsia/Harbin\t8:26:44\t-\tLMT\t1928 # or Haerbin\n\t\t\t8:30\t-\tCHAT\t1932 Mar # Changbai Time\n\t\t\t8:00\t-\tCST\t1940\n\t\t\t9:00\t-\tCHAT\t1966 May\n\t\t\t8:30\t-\tCHAT\t1980 May\n\t\t\t8:00\tPRC\tC%sT\n# Zhongyuan Time (\"Central plain Time\")\n# most of China\nZone\tAsia/Shanghai\t8:05:52\t-\tLMT\t1928\n\t\t\t8:00\tShang\tC%sT\t1949\n\t\t\t8:00\tPRC\tC%sT\n# Long-shu Time (probably due to Long and Shu being two names of that area)\n# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;\n# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong\n# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,\n# Yangchun, Yangjiang, Yu'nan, and Yunfu.\nZone\tAsia/Chongqing\t7:06:20\t-\tLMT\t1928 # or Chungking\n\t\t\t7:00\t-\tLONT\t1980 May # Long-shu Time\n\t\t\t8:00\tPRC\tC%sT\n# Xin-zang Time (\"Xinjiang-Tibet Time\")\n# The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;\n# the Guangdong counties  Xuwen, Haikang, Suixi, Lianjiang,\n# Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;\n# east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;\n# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,\n# Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,\n# Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,\n# Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.\nZone\tAsia/Urumqi\t5:50:20\t-\tLMT\t1928 # or Urumchi\n\t\t\t6:00\t-\tURUT\t1980 May # Urumqi Time\n\t\t\t8:00\tPRC\tC%sT\n# Kunlun Time\n# West Tibet, including Pulan, Aheqi, Shufu, Shule;\n# West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,\n# Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,\n# and Yarkand.\n\n# From Luther Ma (2009-10-17):\n# Almost all (>99.9%) ethnic Chinese (properly ethnic Han) living in\n# Xinjiang use Chinese Standard Time. Some are aware of Xinjiang time,\n# but have no need of it. All planes, trains, and schools function on\n# what is called \"Beijing time.\" When Han make an appointment in Chinese\n# they implicitly use Beijing time.\n#\n# On the other hand, ethnic Uyghurs, who make up about half the\n# population of Xinjiang, typically use \"Xinjiang time\" which is two\n# hours behind Beijing time, or UTC +0600. The government of the Xinjiang\n# Uyghur Autonomous Region, (XAUR, or just Xinjiang for short) as well as\n# local governments such as the Urumqi city government use both times in\n# publications, referring to what is popularly called Xinjiang time as\n# \"Urumqi time.\" When Uyghurs make an appointment in the Uyghur language\n# they almost invariably use Xinjiang time.\n#\n# (Their ethnic Han compatriots would typically have no clue of its\n# widespread use, however, because so extremely few of them are fluent in\n# Uyghur, comparable to the number of Anglo-Americans fluent in Navajo.)\n#\n# (...As with the rest of China there was a brief interval ending in 1990\n# or 1991 when summer time was in use.  The confusion was severe, with\n# the province not having dual times but four times in use at the same\n# time. Some areas remained on standard Xinjiang time or Beijing time and\n# others moving their clocks ahead.)\n#\n# ...an example of an official website using of Urumqi time.\n#\n# The first few lines of the Google translation of\n# <a href=\"http://www.fjysgl.gov.cn/show.aspx?id=2379&cid=39\">\n# http://www.fjysgl.gov.cn/show.aspx?id=2379&cid=39\n# </a>\n# (retrieved 2009-10-13)\n# > Urumqi fire seven people are missing the alleged losses of at least\n# > 500 million yuan\n# >\n# > (Reporter Dong Liu) the day before 20:20 or so (Urumqi Time 18:20),\n# > Urumqi City Department of International Plaza Luther Qiantang River\n# > burst fire. As of yesterday, 18:30, Urumqi City Fire officers and men\n# > have worked continuously for 22 hours...\n\n# From Luther Ma (2009-11-19):\n# With the risk of being redundant to previous answers these are the most common\n# English \"transliterations\" (w/o using non-English symbols):\n#\n# 1. Wulumuqi...\n# 2. Kashi...\n# 3. Urumqi...\n# 4. Kashgar...\n# ...\n# 5. It seems that Uyghurs in Urumqi has been using Xinjiang since at least the\n# 1960's. I know of one Han, now over 50, who grew up in the surrounding\n# countryside and used Xinjiang time as a child.\n#\n# 6. Likewise for Kashgar and the rest of south Xinjiang I don't know of any\n# start date for Xinjiang time.\n#\n# Without having access to local historical records, nor the ability to legally\n# publish them, I would go with October 1, 1949, when Xinjiang became the Uyghur\n# Autonomous Region under the PRC. (Before that Uyghurs, of course, would also\n# not be using Beijing time, but some local time.)\n\nZone\tAsia/Kashgar\t5:03:56\t-\tLMT\t1928 # or Kashi or Kaxgar\n\t\t\t5:30\t-\tKAST\t1940\t # Kashgar Time\n\t\t\t5:00\t-\tKAST\t1980 May\n\t\t\t8:00\tPRC\tC%sT\n\n\n# From Lee Yiu Chung (2009-10-24):\n# I found there are some mistakes for the...DST rule for Hong\n# Kong. [According] to the DST record from Hong Kong Observatory (actually,\n# it is not [an] observatory, but the official meteorological agency of HK,\n# and also serves as the official timing agency), there are some missing\n# and incorrect rules. Although the exact switch over time is missing, I\n# think 3:30 is correct. The official DST record for Hong Kong can be\n# obtained from\n# <a href=\"http://www.hko.gov.hk/gts/time/Summertime.htm\">\n# http://www.hko.gov.hk/gts/time/Summertime.htm\n# </a>.\n\n# From Arthur David Olson (2009-10-28):\n# Here are the dates given at\n# <a href=\"http://www.hko.gov.hk/gts/time/Summertime.htm\">\n# http://www.hko.gov.hk/gts/time/Summertime.htm\n# </a>\n# as of 2009-10-28:\n# Year        Period\n# 1941        1 Apr to 30 Sep\n# 1942        Whole year\n# 1943        Whole year\n# 1944        Whole year\n# 1945        Whole year\n# 1946        20 Apr to 1 Dec\n# 1947        13 Apr to 30 Dec\n# 1948        2 May to 31 Oct\n# 1949        3 Apr to 30 Oct\n# 1950        2 Apr to 29 Oct\n# 1951        1 Apr to 28 Oct\n# 1952        6 Apr to 25 Oct\n# 1953        5 Apr to 1 Nov\n# 1954        21 Mar to 31 Oct\n# 1955        20 Mar to 6 Nov\n# 1956        18 Mar to 4 Nov\n# 1957        24 Mar to 3 Nov\n# 1958        23 Mar to 2 Nov\n# 1959        22 Mar to 1 Nov\n# 1960        20 Mar to 6 Nov\n# 1961        19 Mar to 5 Nov\n# 1962        18 Mar to 4 Nov\n# 1963        24 Mar to 3 Nov\n# 1964        22 Mar to 1 Nov\n# 1965        18 Apr to 17 Oct\n# 1966        17 Apr to 16 Oct\n# 1967        16 Apr to 22 Oct\n# 1968        21 Apr to 20 Oct\n# 1969        20 Apr to 19 Oct\n# 1970        19 Apr to 18 Oct\n# 1971        18 Apr to 17 Oct\n# 1972        16 Apr to 22 Oct\n# 1973        22 Apr to 21 Oct\n# 1973/74     30 Dec 73 to 20 Oct 74\n# 1975        20 Apr to 19 Oct\n# 1976        18 Apr to 17 Oct\n# 1977        Nil\n# 1978        Nil\n# 1979        13 May to 21 Oct\n# 1980 to Now Nil\n# The page does not give start or end times of day.\n# The page does not give a start date for 1942.\n# The page does not givw an end date for 1945.\n# The Japanese occupation of Hong Kong began on 1941-12-25.\n# The Japanese surrender of Hong Kong was signed 1945-09-15.\n# For lack of anything better, use start of those days as the transition times.\n\n# Hong Kong (Xianggang)\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tHK\t1941\tonly\t-\tApr\t1\t3:30\t1:00\tS\nRule\tHK\t1941\tonly\t-\tSep\t30\t3:30\t0\t-\nRule\tHK\t1946\tonly\t-\tApr\t20\t3:30\t1:00\tS\nRule\tHK\t1946\tonly\t-\tDec\t1\t3:30\t0\t-\nRule\tHK\t1947\tonly\t-\tApr\t13\t3:30\t1:00\tS\nRule\tHK\t1947\tonly\t-\tDec\t30\t3:30\t0\t-\nRule\tHK\t1948\tonly\t-\tMay\t2\t3:30\t1:00\tS\nRule\tHK\t1948\t1951\t-\tOct\tlastSun\t3:30\t0\t-\nRule\tHK\t1952\tonly\t-\tOct\t25\t3:30\t0\t-\nRule\tHK\t1949\t1953\t-\tApr\tSun>=1\t3:30\t1:00\tS\nRule\tHK\t1953\tonly\t-\tNov\t1\t3:30\t0\t-\nRule\tHK\t1954\t1964\t-\tMar\tSun>=18\t3:30\t1:00\tS\nRule\tHK\t1954\tonly\t-\tOct\t31\t3:30\t0\t-\nRule\tHK\t1955\t1964\t-\tNov\tSun>=1\t3:30\t0\t-\nRule\tHK\t1965\t1976\t-\tApr\tSun>=16\t3:30\t1:00\tS\nRule\tHK\t1965\t1976\t-\tOct\tSun>=16\t3:30\t0\t-\nRule\tHK\t1973\tonly\t-\tDec\t30\t3:30\t1:00\tS\nRule\tHK\t1979\tonly\t-\tMay\tSun>=8\t3:30\t1:00\tS\nRule\tHK\t1979\tonly\t-\tOct\tSun>=16\t3:30\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Hong_Kong\t7:36:36 -\tLMT\t1904 Oct 30\n\t\t\t8:00\tHK\tHK%sT\t1941 Dec 25\n\t\t\t9:00\t-\tJST\t1945 Sep 15\n\t\t\t8:00\tHK\tHK%sT\n\n###############################################################################\n\n# Taiwan\n\n# Shanks & Pottenger write that Taiwan observed DST during 1945, when it\n# was still controlled by Japan.  This is hard to believe, but we don't\n# have any other information.\n\n# From smallufo (2010-04-03):\n# According to Taiwan's CWB,\n# <a href=\"http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm\">\n# http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm\n# </a>\n# Taipei has DST in 1979 between July 1st and Sep 30.\n\n# From Arthur David Olson (2010-04-07):\n# Here's Google's translation of the table at the bottom of the \"summert.htm\" page:\n# Decade \t                                                    Name                      Start and end date\n# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30\n# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31\n# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31\n# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30\n# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30\n# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30\n# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time\n# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30\n# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time\n# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30\n# Republic of China since 69 years (AD 1980)                  Stop Daylight Saving Time\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tTaiwan\t1945\t1951\t-\tMay\t1\t0:00\t1:00\tD\nRule\tTaiwan\t1945\t1951\t-\tOct\t1\t0:00\t0\tS\nRule\tTaiwan\t1952\tonly\t-\tMar\t1\t0:00\t1:00\tD\nRule\tTaiwan\t1952\t1954\t-\tNov\t1\t0:00\t0\tS\nRule\tTaiwan\t1953\t1959\t-\tApr\t1\t0:00\t1:00\tD\nRule\tTaiwan\t1955\t1961\t-\tOct\t1\t0:00\t0\tS\nRule\tTaiwan\t1960\t1961\t-\tJun\t1\t0:00\t1:00\tD\nRule\tTaiwan\t1974\t1975\t-\tApr\t1\t0:00\t1:00\tD\nRule\tTaiwan\t1974\t1975\t-\tOct\t1\t0:00\t0\tS\nRule\tTaiwan\t1979\tonly\t-\tJun\t30\t0:00\t1:00\tD\nRule\tTaiwan\t1979\tonly\t-\tSep\t30\t0:00\t0\tS\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Taipei\t8:06:00 -\tLMT\t1896 # or Taibei or T'ai-pei\n\t\t\t8:00\tTaiwan\tC%sT\n\n# Macau (Macao, Aomen)\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tMacau\t1961\t1962\t-\tMar\tSun>=16\t3:30\t1:00\tS\nRule\tMacau\t1961\t1964\t-\tNov\tSun>=1\t3:30\t0\t-\nRule\tMacau\t1963\tonly\t-\tMar\tSun>=16\t0:00\t1:00\tS\nRule\tMacau\t1964\tonly\t-\tMar\tSun>=16\t3:30\t1:00\tS\nRule\tMacau\t1965\tonly\t-\tMar\tSun>=16\t0:00\t1:00\tS\nRule\tMacau\t1965\tonly\t-\tOct\t31\t0:00\t0\t-\nRule\tMacau\t1966\t1971\t-\tApr\tSun>=16\t3:30\t1:00\tS\nRule\tMacau\t1966\t1971\t-\tOct\tSun>=16\t3:30\t0\t-\nRule\tMacau\t1972\t1974\t-\tApr\tSun>=15\t0:00\t1:00\tS\nRule\tMacau\t1972\t1973\t-\tOct\tSun>=15\t0:00\t0\t-\nRule\tMacau\t1974\t1977\t-\tOct\tSun>=15\t3:30\t0\t-\nRule\tMacau\t1975\t1977\t-\tApr\tSun>=15\t3:30\t1:00\tS\nRule\tMacau\t1978\t1980\t-\tApr\tSun>=15\t0:00\t1:00\tS\nRule\tMacau\t1978\t1980\t-\tOct\tSun>=15\t0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Macau\t7:34:20 -\tLMT\t1912\n\t\t\t8:00\tMacau\tMO%sT\t1999 Dec 20 # return to China\n\t\t\t8:00\tPRC\tC%sT\n\n\n###############################################################################\n\n# Cyprus\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tCyprus\t1975\tonly\t-\tApr\t13\t0:00\t1:00\tS\nRule\tCyprus\t1975\tonly\t-\tOct\t12\t0:00\t0\t-\nRule\tCyprus\t1976\tonly\t-\tMay\t15\t0:00\t1:00\tS\nRule\tCyprus\t1976\tonly\t-\tOct\t11\t0:00\t0\t-\nRule\tCyprus\t1977\t1980\t-\tApr\tSun>=1\t0:00\t1:00\tS\nRule\tCyprus\t1977\tonly\t-\tSep\t25\t0:00\t0\t-\nRule\tCyprus\t1978\tonly\t-\tOct\t2\t0:00\t0\t-\nRule\tCyprus\t1979\t1997\t-\tSep\tlastSun\t0:00\t0\t-\nRule\tCyprus\t1981\t1998\t-\tMar\tlastSun\t0:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Nicosia\t2:13:28 -\tLMT\t1921 Nov 14\n\t\t\t2:00\tCyprus\tEE%sT\t1998 Sep\n\t\t\t2:00\tEUAsia\tEE%sT\n# IATA SSIM (1998-09) has Cyprus using EU rules for the first time.\n\n# Classically, Cyprus belongs to Asia; e.g. see Herodotus, Histories, I.72.\n# However, for various reasons many users expect to find it under Europe.\nLink\tAsia/Nicosia\tEurope/Nicosia\n\n# Georgia\n# From Paul Eggert (1994-11-19):\n# Today's _Economist_ (p 60) reports that Georgia moved its clocks forward\n# an hour recently, due to a law proposed by Zurab Murvanidze,\n# an MP who went on a hunger strike for 11 days to force discussion about it!\n# We have no details, but we'll guess they didn't move the clocks back in fall.\n#\n# From Mathew Englander, quoting AP (1996-10-23 13:05-04):\n# Instead of putting back clocks at the end of October, Georgia\n# will stay on daylight savings time this winter to save energy,\n# President Eduard Shevardnadze decreed Wednesday.\n#\n# From the BBC via Joseph S. Myers (2004-06-27):\n#\n# Georgia moved closer to Western Europe on Sunday...  The former Soviet\n# republic has changed its time zone back to that of Moscow.  As a result it\n# is now just four hours ahead of Greenwich Mean Time, rather than five hours\n# ahead.  The switch was decreed by the pro-Western president of Georgia,\n# Mikhail Saakashvili, who said the change was partly prompted by the process\n# of integration into Europe.\n\n# From Teimuraz Abashidze (2005-11-07):\n# Government of Georgia ... decided to NOT CHANGE daylight savings time on\n# [Oct.] 30, as it was done before during last more than 10 years.\n# Currently, we are in fact GMT +4:00, as before 30 October it was GMT\n# +3:00.... The problem is, there is NO FORMAL LAW or governmental document\n# about it.  As far as I can find, I was told, that there is no document,\n# because we just DIDN'T ISSUE document about switching to winter time....\n# I don't know what can be done, especially knowing that some years ago our\n# DST rules where changed THREE TIMES during one month.\n\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Tbilisi\t2:59:16 -\tLMT\t1880\n\t\t\t2:59:16\t-\tTBMT\t1924 May  2 # Tbilisi Mean Time\n\t\t\t3:00\t-\tTBIT\t1957 Mar    # Tbilisi Time\n\t\t\t4:00 RussiaAsia TBI%sT\t1991 Mar 31 2:00s\n\t\t\t3:00\t1:00\tTBIST\t1991 Apr  9 # independence\n\t\t\t3:00 RussiaAsia GE%sT\t1992 # Georgia Time\n\t\t\t3:00 E-EurAsia\tGE%sT\t1994 Sep lastSun\n\t\t\t4:00 E-EurAsia\tGE%sT\t1996 Oct lastSun\n\t\t\t4:00\t1:00\tGEST\t1997 Mar lastSun\n\t\t\t4:00 E-EurAsia\tGE%sT\t2004 Jun 27\n\t\t\t3:00 RussiaAsia\tGE%sT\t2005 Mar lastSun 2:00\n\t\t\t4:00\t-\tGET\n\n# East Timor\n\n# See Indonesia for the 1945 transition.\n\n# From Joao Carrascalao, brother of the former governor of East Timor, in\n# <a href=\"http://etan.org/et99c/december/26-31/30ETMAY.htm\">\n# East Timor may be late for its millennium\n# </a> (1999-12-26/31):\n# Portugal tried to change the time forward in 1974 because the sun\n# rises too early but the suggestion raised a lot of problems with the\n# Timorese and I still don't think it would work today because it\n# conflicts with their way of life.\n\n# From Paul Eggert (2000-12-04):\n# We don't have any record of the above attempt.\n# Most likely our records are incomplete, but we have no better data.\n\n# <a href=\"http://www.hri.org/news/world/undh/last/00-08-16.undh.html\">\n# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General\n# (2000-08-16)</a>:\n# The Cabinet of the East Timor Transition Administration decided\n# today to advance East Timor's time by one hour.  The time change,\n# which will be permanent, with no seasonal adjustment, will happen at\n# midnight on Saturday, September 16.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Dili\t8:22:20 -\tLMT\t1912\n\t\t\t8:00\t-\tTLT\t1942 Feb 21 23:00 # E Timor Time\n\t\t\t9:00\t-\tJST\t1945 Sep 23\n\t\t\t9:00\t-\tTLT\t1976 May  3\n\t\t\t8:00\t-\tCIT\t2000 Sep 17 00:00\n\t\t\t9:00\t-\tTLT\n\n# India\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Kolkata\t5:53:28 -\tLMT\t1880\t# Kolkata\n\t\t\t5:53:20\t-\tHMT\t1941 Oct    # Howrah Mean Time?\n\t\t\t6:30\t-\tBURT\t1942 May 15 # Burma Time\n\t\t\t5:30\t-\tIST\t1942 Sep\n\t\t\t5:30\t1:00\tIST\t1945 Oct 15\n\t\t\t5:30\t-\tIST\n# The following are like Asia/Kolkata:\n#\tAndaman Is\n#\tLakshadweep (Laccadive, Minicoy and Amindivi Is)\n#\tNicobar Is\n\n# Indonesia\n#\n# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:\n# <http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime>\n# says that Indonesia's time zones changed on 1988-01-01.  Looking at some\n# time zone maps, I think that must refer to Western Borneo (Kalimantan Barat\n# and Kalimantan Tengah) switching from UTC+8 to UTC+7.\n#\n# From Paul Eggert (2007-03-10):\n# Here is another correction to Shanks & Pottenger.\n# JohnTWB writes that Japanese forces did not surrender control in\n# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and\n# other formal surrender ceremonies were September 9, 11, and 13, plus\n# September 12 for the regional surrender to Mountbatten in Singapore.\n# These would be the earliest possible times for a change.\n# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions\n# Traditionnelles, 1987, Paris) says that Java and Madura switched\n# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura\n# (Hollandia).  For now, assume all Indonesian locations other than Jayapura\n# switched on 1945-09-23.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Asia/Jakarta\t7:07:12 -\tLMT\t1867 Aug 10\n# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,\n# but this must be a typo.\n\t\t\t7:07:12\t-\tJMT\t1923 Dec 31 23:47:12 # Jakarta\n\t\t\t7:20\t-\tJAVT\t1932 Nov\t # Java Time\n\t\t\t7:30\t-\tWIT\t1942 Mar 23\n\t\t\t9:00\t-\tJST\t1945 Sep 23\n\t\t\t7:30\t-\tWIT\t1948 May\n\t\t\t8:00\t-\tWIT\t1950 May\n\t\t\t7:30\t-\tWIT\t1964\n\t\t\t7:00\t-\tWIT\nZone Asia/Pontianak\t7:17:20\t-\tLMT\t1908 May\n\t\t\t7:17:20\t-\tPMT\t1932 Nov    # Pontianak MT\n\t\t\t7:30\t-\tWIT\t1942 Jan 29\n\t\t\t9:00\t-\tJST\t1945 Sep 23\n\t\t\t7:30\t-\tWIT\t1948 May\n\t\t\t8:00\t-\tWIT\t1950 May\n\t\t\t7:30\t-\tWIT\t1964\n\t\t\t8:00\t-\tCIT\t1988 Jan  1\n\t\t\t7:00\t-\tWIT\nZone Asia/Makassar\t7:57:36 -\tLMT\t1920\n\t\t\t7:57:36\t-\tMMT\t1932 Nov    # Macassar MT\n\t\t\t8:00\t-\tCIT\t1942 Feb  9\n\t\t\t9:00\t-\tJST\t1945 Sep 23\n\t\t\t8:00\t-\tCIT\nZone Asia/Jayapura\t9:22:48 -\tLMT\t1932 Nov\n\t\t\t9:00\t-\tEIT\t1944 Sep  1\n\t\t\t9:30\t-\tCST\t1964\n\t\t\t9:00\t-\tEIT\n\n# Iran\n\n# From Roozbeh Pournader (2003-03-15):\n# This is an English translation of what I just found (originally in Persian).\n# The Gregorian dates in brackets are mine:\n#\n#\tOfficial Newspaper No. 13548-1370/6/25 [1991-09-16]\n#\tNo. 16760/T233 H\t\t\t\t1370/6/10 [1991-09-01]\n#\n#\tThe Rule About Change of the Official Time of the Country\n#\n#\tThe Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],\n#\tbased on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]\n#\tof the Country's Organization for Official and Employment Affairs,\n#\tand referring to the law for equating the working hours of workers\n#\tand officers in the whole country dated 1359/4/23 [1980-07-14], and\n#\tfor synchronizing the official times of the country, agreed that:\n#\n#\tThe official time of the country will should move forward one hour\n#\tat the 24[:00] hours of the first day of Farvardin and should return\n#\tto its previous state at the 24[:00] hours of the 30th day of\n#\tShahrivar.\n#\n#\tFirst Deputy to the President - Hassan Habibi\n#\n# From personal experience, that agrees with what has been followed\n# for at least the last 5 years.  Before that, for a few years, the\n# date used was the first Thursday night of Farvardin and the last\n# Thursday night of Shahrivar, but I can't give exact dates....\n# I have also changed the abbreviations to what is considered correct\n# here in Iran, IRST for regular time and IRDT for daylight saving time.\n#\n# From Roozbeh Pournader (2005-04-05):\n# The text of the Iranian law, in effect since 1925, clearly mentions\n# that the true solar year is the measure, and there is no arithmetic\n# leap year calculation involved.  There has never been any serious\n# plan to change that law....\n#\n# From Paul Eggert (2006-03-22):\n# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter.\n# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates,\n# stopping after 2037 when 32-bit time_t's overflow.\n# That cal-persia used Birashk's approximation, which disagrees with the solar\n# calendar predictions for the year 2025, so I corrected those dates by hand.\n#\n# From Oscar van Vlijmen (2005-03-30), writing about future\n# discrepancies between cal-persia and the Iranian calendar:\n# For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for\n# the vernal equinox and that gets so close to 12:00 some local\n# Iranian time that the definition of the correct location needs to be\n# known exactly, amongst other factors.  2157 is even closer:\n# 2157-03-20 08:37:15.5 UT.  But the Gregorian year 2025 should give\n# no interpretation problem whatsoever.  By the way, another instant\n# in the near future where there will be a discrepancy between\n# arithmetical and astronomical Iranian calendars will be in 2058:\n# vernal equinox on 2058-03-20 09:03:05.9 UT.  The Java version of\n# Reingold's/Dershowitz' calculator gives correctly the Gregorian date\n# 2058-03-21 for 1 Farvardin 1437 (astronomical).\n#\n# From Steffen Thorsen (2006-03-22):\n# Several of my users have reported that Iran will not observe DST anymore:\n# http://www.irna.ir/en/news/view/line-17/0603193812164948.htm\n#\n# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:\n# ... the Guardian Council ... approved a law on Sunday to re-introduce\n# daylight saving time ...\n# http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916\n#\n# From Roozbeh Pournader (2007-11-05):\n# This is quoted from Official Gazette of the Islamic Republic of\n# Iran, Volume 63, Number 18242, dated Tuesday 1386/6/24\n# [2007-10-16]. I am doing the best translation I can:...\n# The official time of the country will be moved forward for one hour\n# on the 24 hours of the first day of the month of Farvardin and will\n# be changed back to its previous state on the 24 hours of the\n# thirtieth day of Shahrivar.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tIran\t1978\t1980\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t1978\tonly\t-\tOct\t21\t0:00\t0\tS\nRule\tIran\t1979\tonly\t-\tSep\t19\t0:00\t0\tS\nRule\tIran\t1980\tonly\t-\tSep\t23\t0:00\t0\tS\nRule\tIran\t1991\tonly\t-\tMay\t 3\t0:00\t1:00\tD\nRule\tIran\t1992\t1995\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t1991\t1995\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t1996\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t1996\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t1997\t1999\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t1997\t1999\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2000\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2000\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2001\t2003\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2001\t2003\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2004\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2004\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2005\tonly\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2005\tonly\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2008\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2008\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2009\t2011\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2009\t2011\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2012\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2012\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2013\t2015\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2013\t2015\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2016\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2016\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2017\t2019\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2017\t2019\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2020\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2020\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2021\t2023\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2021\t2023\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2024\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2024\tonly\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2025\t2027\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2025\t2027\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2028\t2029\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2028\t2029\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2030\t2031\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2030\t2031\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2032\t2033\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2032\t2033\t-\tSep\t21\t0:00\t0\tS\nRule\tIran\t2034\t2035\t-\tMar\t22\t0:00\t1:00\tD\nRule\tIran\t2034\t2035\t-\tSep\t22\t0:00\t0\tS\nRule\tIran\t2036\t2037\t-\tMar\t21\t0:00\t1:00\tD\nRule\tIran\t2036\t2037\t-\tSep\t21\t0:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Tehran\t3:25:44\t-\tLMT\t1916\n\t\t\t3:25:44\t-\tTMT\t1946\t# Tehran Mean Time\n\t\t\t3:30\t-\tIRST\t1977 Nov\n\t\t\t4:00\tIran\tIR%sT\t1979\n\t\t\t3:30\tIran\tIR%sT\n\n\n# Iraq\n#\n# From Jonathan Lennox (2000-06-12):\n# An article in this week's Economist (\"Inside the Saddam-free zone\", p. 50 in\n# the U.S. edition) on the Iraqi Kurds contains a paragraph:\n# \"The three northern provinces ... switched their clocks this spring and\n# are an hour ahead of Baghdad.\"\n#\n# But Rives McDow (2000-06-18) quotes a contact in Iraqi-Kurdistan as follows:\n# In the past, some Kurdish nationalists, as a protest to the Iraqi\n# Government, did not adhere to daylight saving time.  They referred\n# to daylight saving as Saddam time.  But, as of today, the time zone\n# in Iraqi-Kurdistan is on standard time with Baghdad, Iraq.\n#\n# So we'll ignore the Economist's claim.\n\n# From Steffen Thorsen (2008-03-10):\n# The cabinet in Iraq abolished DST last week, according to the following\n# news sources (in Arabic):\n# <a href=\"http://www.aljeeran.net/wesima_articles/news-20080305-98602.html\">\n# http://www.aljeeran.net/wesima_articles/news-20080305-98602.html\n# </a>\n# <a href=\"http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10\">\n# http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10\n# </a>\n#\n# We have published a short article in English about the change:\n# <a href=\"http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html\">\n# http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html\n# </a>\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tIraq\t1982\tonly\t-\tMay\t1\t0:00\t1:00\tD\nRule\tIraq\t1982\t1984\t-\tOct\t1\t0:00\t0\tS\nRule\tIraq\t1983\tonly\t-\tMar\t31\t0:00\t1:00\tD\nRule\tIraq\t1984\t1985\t-\tApr\t1\t0:00\t1:00\tD\nRule\tIraq\t1985\t1990\t-\tSep\tlastSun\t1:00s\t0\tS\nRule\tIraq\t1986\t1990\t-\tMar\tlastSun\t1:00s\t1:00\tD\n# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.\n# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.\n#\nRule\tIraq\t1991\t2007\t-\tApr\t 1\t3:00s\t1:00\tD\nRule\tIraq\t1991\t2007\t-\tOct\t 1\t3:00s\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Baghdad\t2:57:40\t-\tLMT\t1890\n\t\t\t2:57:36\t-\tBMT\t1918\t    # Baghdad Mean Time?\n\t\t\t3:00\t-\tAST\t1982 May\n\t\t\t3:00\tIraq\tA%sT\n\n\n###############################################################################\n\n# Israel\n\n# From Ephraim Silverberg (2001-01-11):\n#\n# I coined \"IST/IDT\" circa 1988.  Until then there were three\n# different abbreviations in use:\n#\n# JST  Jerusalem Standard Time [Danny Braniss, Hebrew University]\n# IZT  Israel Zonal (sic) Time [Prof. Haim Papo, Technion]\n# EEST Eastern Europe Standard Time [used by almost everyone else]\n#\n# Since timezones should be called by country and not capital cities,\n# I ruled out JST.  As Israel is in Asia Minor and not Eastern Europe,\n# EEST was equally unacceptable.  Since \"zonal\" was not compatible with\n# any other timezone abbreviation, I felt that 'IST' was the way to go\n# and, indeed, it has received almost universal acceptance in timezone\n# settings in Israeli computers.\n#\n# In any case, I am happy to share timezone abbreviations with India,\n# high on my favorite-country list (and not only because my wife's\n# family is from India).\n\n# From Shanks & Pottenger:\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tZion\t1940\tonly\t-\tJun\t 1\t0:00\t1:00\tD\nRule\tZion\t1942\t1944\t-\tNov\t 1\t0:00\t0\tS\nRule\tZion\t1943\tonly\t-\tApr\t 1\t2:00\t1:00\tD\nRule\tZion\t1944\tonly\t-\tApr\t 1\t0:00\t1:00\tD\nRule\tZion\t1945\tonly\t-\tApr\t16\t0:00\t1:00\tD\nRule\tZion\t1945\tonly\t-\tNov\t 1\t2:00\t0\tS\nRule\tZion\t1946\tonly\t-\tApr\t16\t2:00\t1:00\tD\nRule\tZion\t1946\tonly\t-\tNov\t 1\t0:00\t0\tS\nRule\tZion\t1948\tonly\t-\tMay\t23\t0:00\t2:00\tDD\nRule\tZion\t1948\tonly\t-\tSep\t 1\t0:00\t1:00\tD\nRule\tZion\t1948\t1949\t-\tNov\t 1\t2:00\t0\tS\nRule\tZion\t1949\tonly\t-\tMay\t 1\t0:00\t1:00\tD\nRule\tZion\t1950\tonly\t-\tApr\t16\t0:00\t1:00\tD\nRule\tZion\t1950\tonly\t-\tSep\t15\t3:00\t0\tS\nRule\tZion\t1951\tonly\t-\tApr\t 1\t0:00\t1:00\tD\nRule\tZion\t1951\tonly\t-\tNov\t11\t3:00\t0\tS\nRule\tZion\t1952\tonly\t-\tApr\t20\t2:00\t1:00\tD\nRule\tZion\t1952\tonly\t-\tOct\t19\t3:00\t0\tS\nRule\tZion\t1953\tonly\t-\tApr\t12\t2:00\t1:00\tD\nRule\tZion\t1953\tonly\t-\tSep\t13\t3:00\t0\tS\nRule\tZion\t1954\tonly\t-\tJun\t13\t0:00\t1:00\tD\nRule\tZion\t1954\tonly\t-\tSep\t12\t0:00\t0\tS\nRule\tZion\t1955\tonly\t-\tJun\t11\t2:00\t1:00\tD\nRule\tZion\t1955\tonly\t-\tSep\t11\t0:00\t0\tS\nRule\tZion\t1956\tonly\t-\tJun\t 3\t0:00\t1:00\tD\nRule\tZion\t1956\tonly\t-\tSep\t30\t3:00\t0\tS\nRule\tZion\t1957\tonly\t-\tApr\t29\t2:00\t1:00\tD\nRule\tZion\t1957\tonly\t-\tSep\t22\t0:00\t0\tS\nRule\tZion\t1974\tonly\t-\tJul\t 7\t0:00\t1:00\tD\nRule\tZion\t1974\tonly\t-\tOct\t13\t0:00\t0\tS\nRule\tZion\t1975\tonly\t-\tApr\t20\t0:00\t1:00\tD\nRule\tZion\t1975\tonly\t-\tAug\t31\t0:00\t0\tS\nRule\tZion\t1985\tonly\t-\tApr\t14\t0:00\t1:00\tD\nRule\tZion\t1985\tonly\t-\tSep\t15\t0:00\t0\tS\nRule\tZion\t1986\tonly\t-\tMay\t18\t0:00\t1:00\tD\nRule\tZion\t1986\tonly\t-\tSep\t 7\t0:00\t0\tS\nRule\tZion\t1987\tonly\t-\tApr\t15\t0:00\t1:00\tD\nRule\tZion\t1987\tonly\t-\tSep\t13\t0:00\t0\tS\nRule\tZion\t1988\tonly\t-\tApr\t 9\t0:00\t1:00\tD\nRule\tZion\t1988\tonly\t-\tSep\t 3\t0:00\t0\tS\n\n# From Ephraim Silverberg\n# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,\n# and 2005-02-17):\n\n# According to the Office of the Secretary General of the Ministry of\n# Interior, there is NO set rule for Daylight-Savings/Standard time changes.\n# One thing is entrenched in law, however: that there must be at least 150\n# days of daylight savings time annually.  From 1993-1998, the change to\n# daylight savings time was on a Friday morning from midnight IST to\n# 1 a.m IDT; up until 1998, the change back to standard time was on a\n# Saturday night from midnight daylight savings time to 11 p.m. standard\n# time.  1996 is an exception to this rule where the change back to standard\n# time took place on Sunday night instead of Saturday night to avoid\n# conflicts with the Jewish New Year.  In 1999, the change to\n# daylight savings time was still on a Friday morning but from\n# 2 a.m. IST to 3 a.m. IDT; furthermore, the change back to standard time\n# was also on a Friday morning from 2 a.m. IDT to 1 a.m. IST for\n# 1999 only.  In the year 2000, the change to daylight savings time was\n# similar to 1999, but although the change back will be on a Friday, it\n# will take place from 1 a.m. IDT to midnight IST.  Starting in 2001, all\n# changes to/from will take place at 1 a.m. old time, but now there is no\n# rule as to what day of the week it will take place in as the start date\n# (except in 2003) is the night after the Passover Seder (i.e. the eve\n# of the 16th of Nisan in the lunar Hebrew calendar) and the end date\n# (except in 2002) is three nights before Yom Kippur [Day of Atonement]\n# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tZion\t1989\tonly\t-\tApr\t30\t0:00\t1:00\tD\nRule\tZion\t1989\tonly\t-\tSep\t 3\t0:00\t0\tS\nRule\tZion\t1990\tonly\t-\tMar\t25\t0:00\t1:00\tD\nRule\tZion\t1990\tonly\t-\tAug\t26\t0:00\t0\tS\nRule\tZion\t1991\tonly\t-\tMar\t24\t0:00\t1:00\tD\nRule\tZion\t1991\tonly\t-\tSep\t 1\t0:00\t0\tS\nRule\tZion\t1992\tonly\t-\tMar\t29\t0:00\t1:00\tD\nRule\tZion\t1992\tonly\t-\tSep\t 6\t0:00\t0\tS\nRule\tZion\t1993\tonly\t-\tApr\t 2\t0:00\t1:00\tD\nRule\tZion\t1993\tonly\t-\tSep\t 5\t0:00\t0\tS\n\n# The dates for 1994-1995 were obtained from Office of the Spokeswoman for the\n# Ministry of Interior, Jerusalem, Israel.  The spokeswoman can be reached by\n# calling the office directly at 972-2-6701447 or 972-2-6701448.\n\n# Rule\tNAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S\nRule\tZion\t1994\tonly\t-\tApr\t 1\t0:00\t1:00\tD\nRule\tZion\t1994\tonly\t-\tAug\t28\t0:00\t0\tS\nRule\tZion\t1995\tonly\t-\tMar\t31\t0:00\t1:00\tD\nRule\tZion\t1995\tonly\t-\tSep\t 3\t0:00\t0\tS\n\n# The dates for 1996 were determined by the Minister of Interior of the\n# time, Haim Ramon.  The official announcement regarding 1996-1998\n# (with the dates for 1997-1998 no longer being relevant) can be viewed at:\n#\n#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz\n#\n# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.\n#\n# The official announcements for the years 1997-1999 can be viewed at:\n#\n#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz\n#\n#       where YYYY is the relevant year.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tZion\t1996\tonly\t-\tMar\t15\t0:00\t1:00\tD\nRule\tZion\t1996\tonly\t-\tSep\t16\t0:00\t0\tS\nRule\tZion\t1997\tonly\t-\tMar\t21\t0:00\t1:00\tD\nRule\tZion\t1997\tonly\t-\tSep\t14\t0:00\t0\tS\nRule\tZion\t1998\tonly\t-\tMar\t20\t0:00\t1:00\tD\nRule\tZion\t1998\tonly\t-\tSep\t 6\t0:00\t0\tS\nRule\tZion\t1999\tonly\t-\tApr\t 2\t2:00\t1:00\tD\nRule\tZion\t1999\tonly\t-\tSep\t 3\t2:00\t0\tS\n\n# The Knesset Interior Committee has changed the dates for 2000 for\n# the third time in just over a year and have set new dates for the\n# years 2001-2004 as well.\n#\n# The official announcement for the start date of 2000 can be viewed at:\n#\n#\tftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz\n#\n# The official announcement for the end date of 2000 and the dates\n# for the years 2001-2004 can be viewed at:\n#\n#\tftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tZion\t2000\tonly\t-\tApr\t14\t2:00\t1:00\tD\nRule\tZion\t2000\tonly\t-\tOct\t 6\t1:00\t0\tS\nRule\tZion\t2001\tonly\t-\tApr\t 9\t1:00\t1:00\tD\nRule\tZion\t2001\tonly\t-\tSep\t24\t1:00\t0\tS\nRule\tZion\t2002\tonly\t-\tMar\t29\t1:00\t1:00\tD\nRule\tZion\t2002\tonly\t-\tOct\t 7\t1:00\t0\tS\nRule\tZion\t2003\tonly\t-\tMar\t28\t1:00\t1:00\tD\nRule\tZion\t2003\tonly\t-\tOct\t 3\t1:00\t0\tS\nRule\tZion\t2004\tonly\t-\tApr\t 7\t1:00\t1:00\tD\nRule\tZion\t2004\tonly\t-\tSep\t22\t1:00\t0\tS\n\n# The proposed law agreed upon by the Knesset Interior Committee on\n# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the\n# last Friday before April 2nd (i.e. the last Friday in March or April\n# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday\n# night _before_ the fast of Yom Kippur.\n#\n# Those who can read Hebrew can view the announcement at:\n#\n#\tftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps\n\n# From Paul Eggert (2012-10-26):\n# I used Ephraim Silverberg's dst-israel.el program\n# <ftp://ftp.cs.huji.ac.il/pub/tz/software/dst-israel.el> (2005-02-20)\n# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,\n# to generate the transitions from 2005 through 2012.\n# (I replaced \"lastFri\" with \"Fri>=26\" by hand.)\n# The spring transitions all correspond to the following Rule:\n#\n# Rule\tZion\t2005\t2012\t-\tMar\tFri>=26\t2:00\t1:00\tD\n#\n# but older zic implementations (e.g., Solaris 8) do not support\n# \"Fri>=26\" to mean April 1 in years like 2005, so for now we list the\n# springtime transitions explicitly.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tZion\t2005\tonly\t-\tApr\t 1\t2:00\t1:00\tD\nRule\tZion\t2005\tonly\t-\tOct\t 9\t2:00\t0\tS\nRule\tZion\t2006\t2010\t-\tMar\tFri>=26\t2:00\t1:00\tD\nRule\tZion\t2006\tonly\t-\tOct\t 1\t2:00\t0\tS\nRule\tZion\t2007\tonly\t-\tSep\t16\t2:00\t0\tS\nRule\tZion\t2008\tonly\t-\tOct\t 5\t2:00\t0\tS\nRule\tZion\t2009\tonly\t-\tSep\t27\t2:00\t0\tS\nRule\tZion\t2010\tonly\t-\tSep\t12\t2:00\t0\tS\nRule\tZion\t2011\tonly\t-\tApr\t 1\t2:00\t1:00\tD\nRule\tZion\t2011\tonly\t-\tOct\t 2\t2:00\t0\tS\nRule\tZion\t2012\tonly\t-\tMar\tFri>=26\t2:00\t1:00\tD\nRule\tZion\t2012\tonly\t-\tSep\t23\t2:00\t0\tS\n\n# From Ephraim Silverberg (2012-10-18):\n# Yesterday, the Interior Ministry Committee, after more than a year\n# past, approved sending the proposed June 2011 changes to the Time\n# Decree Law back to the Knesset for second and third (final) votes\n# before the upcoming elections on Jan. 22, 2013.  Hence, although the\n# changes are not yet law, they are expected to be so before February 2013.\n#\n# As of 2013, DST starts at 02:00 on the Friday before the last Sunday in March.\n# DST ends at 02:00 on the first Sunday after October 1, unless it occurs on the\n# second day of the Jewish Rosh Hashana holiday, in which case DST ends a day\n# later (i.e. at 02:00 the first Monday after October 2).\n# [Rosh Hashana holidays are factored in until 2100.]\n\n# From Ephraim Silverberg (2012-11-05):\n# The Knesset passed today (in second and final readings) the amendment to the\n# Time Decree Law making the changes ... law.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tZion\t2013\tmax\t-\tMar\tFri>=23\t2:00\t1:00\tD\nRule\tZion\t2013\t2026\t-\tOct\tSun>=2\t2:00\t0\tS\nRule\tZion\t2027\tonly\t-\tOct\tMon>=3\t2:00\t0\tS\nRule\tZion\t2028\tmax\t-\tOct\tSun>=2\t2:00\t0\tS\n# The following rules are commented out for now, as they break older\n# versions of zic that support only signed 32-bit timestamps, i.e.,\n# through 2038-01-19 03:14:07 UTC.\n#Rule\tZion\t2028\t2053\t-\tOct\tSun>=2\t2:00\t0\tS\n#Rule\tZion\t2054\tonly\t-\tOct\tMon>=3\t2:00\t0\tS\n#Rule\tZion\t2055\t2080\t-\tOct\tSun>=2\t2:00\t0\tS\n#Rule\tZion\t2081\tonly\t-\tOct\tMon>=3\t2:00\t0\tS\n#Rule\tZion\t2082\tmax\t-\tOct\tSun>=2\t2:00\t0\tS\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Jerusalem\t2:20:56 -\tLMT\t1880\n\t\t\t2:20:40\t-\tJMT\t1918\t# Jerusalem Mean Time?\n\t\t\t2:00\tZion\tI%sT\n\n\n\n###############################################################################\n\n# Japan\n\n# `9:00' and `JST' is from Guy Harris.\n\n# From Paul Eggert (1995-03-06):\n# Today's _Asahi Evening News_ (page 4) reports that Japan had\n# daylight saving between 1948 and 1951, but ``the system was discontinued\n# because the public believed it would lead to longer working hours.''\n\n# From Mayumi Negishi in the 2005-08-10 Japan Times\n# <http://www.japantimes.co.jp/cgi-bin/getarticle.pl5?nn20050810f2.htm>:\n# Occupation authorities imposed daylight-saving time on Japan on\n# [1948-05-01]....  But lack of prior debate and the execution of\n# daylight-saving time just three days after the bill was passed generated\n# deep hatred of the concept....  The Diet unceremoniously passed a bill to\n# dump the unpopular system in October 1951, less than a month after the San\n# Francisco Peace Treaty was signed.  (A government poll in 1951 showed 53%\n# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who\n# wanted to keep it.)\n\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger write that DST in Japan during those years was as follows:\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tJapan\t1948\tonly\t-\tMay\tSun>=1\t2:00\t1:00\tD\nRule\tJapan\t1948\t1951\t-\tSep\tSat>=8\t2:00\t0\tS\nRule\tJapan\t1949\tonly\t-\tApr\tSun>=1\t2:00\t1:00\tD\nRule\tJapan\t1950\t1951\t-\tMay\tSun>=1\t2:00\t1:00\tD\n# but the only locations using it (for birth certificates, presumably, since\n# their audience is astrologers) were US military bases.  For now, assume\n# that for most purposes daylight-saving time was observed; otherwise, what\n# would have been the point of the 1951 poll?\n\n# From Hideyuki Suzuki (1998-11-09):\n# 'Tokyo' usually stands for the former location of Tokyo Astronomical\n# Observatory: E 139 44' 40\".90 (9h 18m 58s.727), N 35 39' 16\".0.\n# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'\n# edited by National Astronomical Observatory of Japan....\n# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).\n# The law is enacted on 1886-07-07.\n\n# From Hideyuki Suzuki (1998-11-16):\n# The ordinance No. 51 (1886) established \"standard time\" in Japan,\n# which stands for the time on E 135 degree.\n# In the ordinance No. 167 (1895), \"standard time\" was renamed to \"central\n# standard time\".  And the same ordinance also established \"western standard\n# time\", which stands for the time on E 120 degree....  But \"western standard\n# time\" was abolished in the ordinance No. 529 (1937).  In the ordinance No.\n# 167, there is no mention regarding for what place western standard time is\n# standard....\n#\n# I wrote \"ordinance\" above, but I don't know how to translate.\n# In Japanese it's \"chokurei\", which means ordinance from emperor.\n\n# Shanks & Pottenger claim JST in use since 1896, and that a few\n# places (e.g. Ishigaki) use +0800; go with Suzuki.  Guess that all\n# ordinances took effect on Jan 1.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Tokyo\t9:18:59\t-\tLMT\t1887 Dec 31 15:00u\n\t\t\t9:00\t-\tJST\t1896\n\t\t\t9:00\t-\tCJT\t1938\n\t\t\t9:00\tJapan\tJ%sT\n# Since 1938, all Japanese possessions have been like Asia/Tokyo.\n\n# Jordan\n#\n# From <a href=\"http://star.arabia.com/990701/JO9.html\">\n# Jordan Week (1999-07-01) </a> via Steffen Thorsen (1999-09-09):\n# Clocks in Jordan were forwarded one hour on Wednesday at midnight,\n# in accordance with the government's decision to implement summer time\n# all year round.\n#\n# From <a href=\"http://star.arabia.com/990930/JO9.html\">\n# Jordan Week (1999-09-30) </a> via Steffen Thorsen (1999-11-09):\n# Winter time starts today Thursday, 30 September. Clocks will be turned back\n# by one hour.  This is the latest government decision and it's final!\n# The decision was taken because of the increase in working hours in\n# government's departments from six to seven hours.\n#\n# From Paul Eggert (2005-11-22):\n# Starting 2003 transitions are from Steffen Thorsen's web site timeanddate.com.\n#\n# From Steffen Thorsen (2005-11-23):\n# For Jordan I have received multiple independent user reports every year\n# about DST end dates, as the end-rule is different every year.\n#\n# From Steffen Thorsen (2006-10-01), after a heads-up from Hilal Malawi:\n# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm\n# \"Jordan will switch to winter time on Friday, October 27\".\n#\n\n# From Phil Pizzey (2009-04-02):\n# ...I think I may have spotted an error in the timezone data for\n# Jordan.\n# The current (2009d) asia file shows Jordan going to daylight\n# saving\n# time on the last Thursday in March.\n#\n# Rule  Jordan      2000  max\t-  Mar   lastThu     0:00s 1:00  S\n#\n# However timeanddate.com, which I usually find reliable, shows Jordan\n# going to daylight saving time on the last Friday in March since 2002.\n# Please see\n# <a href=\"http://www.timeanddate.com/worldclock/timezone.html?n=11\">\n# http://www.timeanddate.com/worldclock/timezone.html?n=11\n# </a>\n\n# From Steffen Thorsen (2009-04-02):\n# This single one might be good enough, (2009-03-24, Arabic):\n# <a href=\"http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279\">\n# http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279\n# </a>\n#\n# Google's translation:\n#\n# > The Council of Ministers decided in 2002 to adopt the principle of timely\n# > submission of the summer at 60 minutes as of midnight on the last Thursday\n# > of the month of March of each year.\n#\n# So - this means the midnight between Thursday and Friday since 2002.\n\n# From Arthur David Olson (2009-04-06):\n# We still have Jordan switching to DST on Thursdays in 2000 and 2001.\n\n# From Steffen Thorsen (2012-10-25):\n# Yesterday the government in Jordan announced that they will not\n# switch back to standard time this winter, so the will stay on DST\n# until about the same time next year (at least).\n# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950\n#\n# From Paul Eggert (2012-10-25):\n# For now, assume this is just a one-year measure.  If it becomes\n# permanent, we should move Jordan from EET to AST effective tomorrow.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tJordan\t1973\tonly\t-\tJun\t6\t0:00\t1:00\tS\nRule\tJordan\t1973\t1975\t-\tOct\t1\t0:00\t0\t-\nRule\tJordan\t1974\t1977\t-\tMay\t1\t0:00\t1:00\tS\nRule\tJordan\t1976\tonly\t-\tNov\t1\t0:00\t0\t-\nRule\tJordan\t1977\tonly\t-\tOct\t1\t0:00\t0\t-\nRule\tJordan\t1978\tonly\t-\tApr\t30\t0:00\t1:00\tS\nRule\tJordan\t1978\tonly\t-\tSep\t30\t0:00\t0\t-\nRule\tJordan\t1985\tonly\t-\tApr\t1\t0:00\t1:00\tS\nRule\tJordan\t1985\tonly\t-\tOct\t1\t0:00\t0\t-\nRule\tJordan\t1986\t1988\t-\tApr\tFri>=1\t0:00\t1:00\tS\nRule\tJordan\t1986\t1990\t-\tOct\tFri>=1\t0:00\t0\t-\nRule\tJordan\t1989\tonly\t-\tMay\t8\t0:00\t1:00\tS\nRule\tJordan\t1990\tonly\t-\tApr\t27\t0:00\t1:00\tS\nRule\tJordan\t1991\tonly\t-\tApr\t17\t0:00\t1:00\tS\nRule\tJordan\t1991\tonly\t-\tSep\t27\t0:00\t0\t-\nRule\tJordan\t1992\tonly\t-\tApr\t10\t0:00\t1:00\tS\nRule\tJordan\t1992\t1993\t-\tOct\tFri>=1\t0:00\t0\t-\nRule\tJordan\t1993\t1998\t-\tApr\tFri>=1\t0:00\t1:00\tS\nRule\tJordan\t1994\tonly\t-\tSep\tFri>=15\t0:00\t0\t-\nRule\tJordan\t1995\t1998\t-\tSep\tFri>=15\t0:00s\t0\t-\nRule\tJordan\t1999\tonly\t-\tJul\t 1\t0:00s\t1:00\tS\nRule\tJordan\t1999\t2002\t-\tSep\tlastFri\t0:00s\t0\t-\nRule\tJordan\t2000\t2001\t-\tMar\tlastThu\t0:00s\t1:00\tS\nRule\tJordan\t2002\tmax\t-\tMar\tlastThu\t24:00\t1:00\tS\nRule\tJordan\t2003\tonly\t-\tOct\t24\t0:00s\t0\t-\nRule\tJordan\t2004\tonly\t-\tOct\t15\t0:00s\t0\t-\nRule\tJordan\t2005\tonly\t-\tSep\tlastFri\t0:00s\t0\t-\nRule\tJordan\t2006\t2011\t-\tOct\tlastFri\t0:00s\t0\t-\nRule\tJordan\t2013\tmax\t-\tOct\tlastFri\t0:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Amman\t2:23:44 -\tLMT\t1931\n\t\t\t2:00\tJordan\tEE%sT\n\n\n# Kazakhstan\n\n# From Paul Eggert (1996-11-22):\n# Andrew Evtichov (1996-04-13) writes that Kazakhstan\n# stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk)\n# and Aqtau (formerly Shevchenko) are the largest cities in their zones.\n# Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time\n# IATA SSIM mentions a third time zone in Kazakhstan.\n\n# From Paul Eggert (2006-03-22):\n# German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses\n# RussiaAsia rules, instead of switching at 00:00 as the IATA has it.\n# Go with Shanks & Pottenger, who have them always using RussiaAsia rules.\n# Also go with the following claims of Shanks & Pottenger:\n#\n# - Kazakhstan did not observe DST in 1991.\n# - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.\n# - Oral switched from +5:00 to +4:00 in spring 1989.\n\n# <a href=\"http://www.kazsociety.org.uk/news/2005/03/30.htm\">\n# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):\n# </a>\n# The Government of Kazakhstan passed a resolution March 15 abolishing\n# daylight saving time citing lack of economic benefits and health\n# complications coupled with a decrease in productivity.\n#\n# From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28):\n# ... what happened was that the former Kazakhstan Eastern time zone\n# was \"blended\" with the Central zone.  Therefore, Kazakhstan now has\n# two time zones, and difference between them is one hour.  The zone\n# closer to UTC is the former Western zone (probably still called the\n# same), encompassing four provinces in the west: Aqtobe, Atyrau,\n# Mangghystau, and West Kazakhstan.  The other zone encompasses\n# everything else....  I guess that would make Kazakhstan time zones\n# de jure UTC+5 and UTC+6 respectively.\n\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n#\n# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan\nZone\tAsia/Almaty\t5:07:48 -\tLMT\t1924 May  2 # or Alma-Ata\n\t\t\t5:00\t-\tALMT\t1930 Jun 21 # Alma-Ata Time\n\t\t\t6:00 RussiaAsia ALM%sT\t1991\n\t\t\t6:00\t-\tALMT\t1992\n\t\t\t6:00 RussiaAsia\tALM%sT\t2005 Mar 15\n\t\t\t6:00\t-\tALMT\n# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.)\nZone\tAsia/Qyzylorda\t4:21:52 -\tLMT\t1924 May  2\n\t\t\t4:00\t-\tKIZT\t1930 Jun 21 # Kizilorda Time\n\t\t\t5:00\t-\tKIZT\t1981 Apr  1\n\t\t\t5:00\t1:00\tKIZST\t1981 Oct  1\n\t\t\t6:00\t-\tKIZT\t1982 Apr  1\n\t\t\t5:00 RussiaAsia\tKIZ%sT\t1991\n\t\t\t5:00\t-\tKIZT\t1991 Dec 16 # independence\n\t\t\t5:00\t-\tQYZT\t1992 Jan 19 2:00\n\t\t\t6:00 RussiaAsia\tQYZ%sT\t2005 Mar 15\n\t\t\t6:00\t-\tQYZT\n# Aqtobe (aka Aktobe, formerly Akt'ubinsk)\nZone\tAsia/Aqtobe\t3:48:40\t-\tLMT\t1924 May  2\n\t\t\t4:00\t-\tAKTT\t1930 Jun 21 # Aktyubinsk Time\n\t\t\t5:00\t-\tAKTT\t1981 Apr  1\n\t\t\t5:00\t1:00\tAKTST\t1981 Oct  1\n\t\t\t6:00\t-\tAKTT\t1982 Apr  1\n\t\t\t5:00 RussiaAsia\tAKT%sT\t1991\n\t\t\t5:00\t-\tAKTT\t1991 Dec 16 # independence\n\t\t\t5:00 RussiaAsia\tAQT%sT\t2005 Mar 15 # Aqtobe Time\n\t\t\t5:00\t-\tAQTT\n# Mangghystau\n# Aqtau was not founded until 1963, but it represents an inhabited region,\n# so include time stamps before 1963.\nZone\tAsia/Aqtau\t3:21:04\t-\tLMT\t1924 May  2\n\t\t\t4:00\t-\tFORT\t1930 Jun 21 # Fort Shevchenko T\n\t\t\t5:00\t-\tFORT\t1963\n\t\t\t5:00\t-\tSHET\t1981 Oct  1 # Shevchenko Time\n\t\t\t6:00\t-\tSHET\t1982 Apr  1\n\t\t\t5:00 RussiaAsia\tSHE%sT\t1991\n\t\t\t5:00\t-\tSHET\t1991 Dec 16 # independence\n\t\t\t5:00 RussiaAsia\tAQT%sT\t1995 Mar lastSun 2:00 # Aqtau Time\n\t\t\t4:00 RussiaAsia\tAQT%sT\t2005 Mar 15\n\t\t\t5:00\t-\tAQTT\n# West Kazakhstan\nZone\tAsia/Oral\t3:25:24\t-\tLMT\t1924 May  2 # or Ural'sk\n\t\t\t4:00\t-\tURAT\t1930 Jun 21 # Ural'sk time\n\t\t\t5:00\t-\tURAT\t1981 Apr  1\n\t\t\t5:00\t1:00\tURAST\t1981 Oct  1\n\t\t\t6:00\t-\tURAT\t1982 Apr  1\n\t\t\t5:00 RussiaAsia\tURA%sT\t1989 Mar 26 2:00\n\t\t\t4:00 RussiaAsia\tURA%sT\t1991\n\t\t\t4:00\t-\tURAT\t1991 Dec 16 # independence\n\t\t\t4:00 RussiaAsia\tORA%sT\t2005 Mar 15 # Oral Time\n\t\t\t5:00\t-\tORAT\n\n# Kyrgyzstan (Kirgizstan)\n# Transitions through 1991 are from Shanks & Pottenger.\n\n# From Paul Eggert (2005-08-15):\n# According to an article dated today in the Kyrgyzstan Development Gateway\n# <http://eng.gateway.kg/cgi-bin/page.pl?id=1&story_name=doc9979.shtml>\n# Kyrgyzstan is canceling the daylight saving time system.  I take the article\n# to mean that they will leave their clocks at 6 hours ahead of UTC.\n# From Malik Abdugaliev (2005-09-21):\n# Our government cancels daylight saving time 6th of August 2005.\n# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tKyrgyz\t1992\t1996\t-\tApr\tSun>=7\t0:00s\t1:00\tS\nRule\tKyrgyz\t1992\t1996\t-\tSep\tlastSun\t0:00\t0\t-\nRule\tKyrgyz\t1997\t2005\t-\tMar\tlastSun\t2:30\t1:00\tS\nRule\tKyrgyz\t1997\t2004\t-\tOct\tlastSun\t2:30\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Bishkek\t4:58:24 -\tLMT\t1924 May  2\n\t\t\t5:00\t-\tFRUT\t1930 Jun 21 # Frunze Time\n\t\t\t6:00 RussiaAsia FRU%sT\t1991 Mar 31 2:00s\n\t\t\t5:00\t1:00\tFRUST\t1991 Aug 31 2:00 # independence\n\t\t\t5:00\tKyrgyz\tKG%sT\t2005 Aug 12    # Kyrgyzstan Time\n\t\t\t6:00\t-\tKGT\n\n###############################################################################\n\n# Korea (North and South)\n\n# From Annie I. Bang (2006-07-10) in\n# <http://www.koreaherald.co.kr/SITE/data/html_dir/2006/07/10/200607100012.asp>:\n# The Ministry of Commerce, Industry and Energy has already\n# commissioned a research project [to reintroduce DST] and has said\n# the system may begin as early as 2008....  Korea ran a daylight\n# saving program from 1949-61 but stopped it during the 1950-53 Korean War.\n\n# From Shanks & Pottenger:\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tROK\t1960\tonly\t-\tMay\t15\t0:00\t1:00\tD\nRule\tROK\t1960\tonly\t-\tSep\t13\t0:00\t0\tS\nRule\tROK\t1987\t1988\t-\tMay\tSun>=8\t0:00\t1:00\tD\nRule\tROK\t1987\t1988\t-\tOct\tSun>=8\t0:00\t0\tS\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Seoul\t8:27:52\t-\tLMT\t1890\n\t\t\t8:30\t-\tKST\t1904 Dec\n\t\t\t9:00\t-\tKST\t1928\n\t\t\t8:30\t-\tKST\t1932\n\t\t\t9:00\t-\tKST\t1954 Mar 21\n\t\t\t8:00\tROK\tK%sT\t1961 Aug 10\n\t\t\t8:30\t-\tKST\t1968 Oct\n\t\t\t9:00\tROK\tK%sT\nZone\tAsia/Pyongyang\t8:23:00 -\tLMT\t1890\n\t\t\t8:30\t-\tKST\t1904 Dec\n\t\t\t9:00\t-\tKST\t1928\n\t\t\t8:30\t-\tKST\t1932\n\t\t\t9:00\t-\tKST\t1954 Mar 21\n\t\t\t8:00\t-\tKST\t1961 Aug 10\n\t\t\t9:00\t-\tKST\n\n###############################################################################\n\n# Kuwait\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# From the Arab Times (2007-03-14):\n# The Civil Service Commission (CSC) has approved a proposal forwarded\n# by MP Ahmad Baqer on implementing the daylight saving time (DST) in\n# Kuwait starting from April until the end of Sept this year, reports Al-Anba.\n# <http://www.arabtimesonline.com/arabtimes/kuwait/Viewdet.asp?ID=9950>.\n# From Paul Eggert (2007-03-29):\n# We don't know the details, or whether the approval means it'll happen,\n# so for now we assume no DST.\nZone\tAsia/Kuwait\t3:11:56 -\tLMT\t1950\n\t\t\t3:00\t-\tAST\n\n# Laos\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Vientiane\t6:50:24 -\tLMT\t1906 Jun  9 # or Viangchan\n\t\t\t7:06:20\t-\tSMT\t1911 Mar 11 0:01 # Saigon MT?\n\t\t\t7:00\t-\tICT\t1912 May\n\t\t\t8:00\t-\tICT\t1931 May\n\t\t\t7:00\t-\tICT\n\n# Lebanon\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tLebanon\t1920\tonly\t-\tMar\t28\t0:00\t1:00\tS\nRule\tLebanon\t1920\tonly\t-\tOct\t25\t0:00\t0\t-\nRule\tLebanon\t1921\tonly\t-\tApr\t3\t0:00\t1:00\tS\nRule\tLebanon\t1921\tonly\t-\tOct\t3\t0:00\t0\t-\nRule\tLebanon\t1922\tonly\t-\tMar\t26\t0:00\t1:00\tS\nRule\tLebanon\t1922\tonly\t-\tOct\t8\t0:00\t0\t-\nRule\tLebanon\t1923\tonly\t-\tApr\t22\t0:00\t1:00\tS\nRule\tLebanon\t1923\tonly\t-\tSep\t16\t0:00\t0\t-\nRule\tLebanon\t1957\t1961\t-\tMay\t1\t0:00\t1:00\tS\nRule\tLebanon\t1957\t1961\t-\tOct\t1\t0:00\t0\t-\nRule\tLebanon\t1972\tonly\t-\tJun\t22\t0:00\t1:00\tS\nRule\tLebanon\t1972\t1977\t-\tOct\t1\t0:00\t0\t-\nRule\tLebanon\t1973\t1977\t-\tMay\t1\t0:00\t1:00\tS\nRule\tLebanon\t1978\tonly\t-\tApr\t30\t0:00\t1:00\tS\nRule\tLebanon\t1978\tonly\t-\tSep\t30\t0:00\t0\t-\nRule\tLebanon\t1984\t1987\t-\tMay\t1\t0:00\t1:00\tS\nRule\tLebanon\t1984\t1991\t-\tOct\t16\t0:00\t0\t-\nRule\tLebanon\t1988\tonly\t-\tJun\t1\t0:00\t1:00\tS\nRule\tLebanon\t1989\tonly\t-\tMay\t10\t0:00\t1:00\tS\nRule\tLebanon\t1990\t1992\t-\tMay\t1\t0:00\t1:00\tS\nRule\tLebanon\t1992\tonly\t-\tOct\t4\t0:00\t0\t-\nRule\tLebanon\t1993\tmax\t-\tMar\tlastSun\t0:00\t1:00\tS\nRule\tLebanon\t1993\t1998\t-\tSep\tlastSun\t0:00\t0\t-\nRule\tLebanon\t1999\tmax\t-\tOct\tlastSun\t0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Beirut\t2:22:00 -\tLMT\t1880\n\t\t\t2:00\tLebanon\tEE%sT\n\n# Malaysia\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNBorneo\t1935\t1941\t-\tSep\t14\t0:00\t0:20\tTS # one-Third Summer\nRule\tNBorneo\t1935\t1941\t-\tDec\t14\t0:00\t0\t-\n#\n# peninsular Malaysia\n# The data here are taken from Mok Ly Yng (2003-10-30)\n# <http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html>.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Asia/Kuala_Lumpur\t6:46:46 -\tLMT\t1901 Jan  1\n\t\t\t6:55:25\t-\tSMT\t1905 Jun  1 # Singapore M.T.\n\t\t\t7:00\t-\tMALT\t1933 Jan  1 # Malaya Time\n\t\t\t7:00\t0:20\tMALST\t1936 Jan  1\n\t\t\t7:20\t-\tMALT\t1941 Sep  1\n\t\t\t7:30\t-\tMALT\t1942 Feb 16\n\t\t\t9:00\t-\tJST\t1945 Sep 12\n\t\t\t7:30\t-\tMALT\t1982 Jan  1\n\t\t\t8:00\t-\tMYT\t# Malaysia Time\n# Sabah & Sarawak\n# From Paul Eggert (2006-03-22):\n# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982\n# transition dates are from Mok Ly Yng.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Asia/Kuching\t7:21:20\t-\tLMT\t1926 Mar\n\t\t\t7:30\t-\tBORT\t1933\t# Borneo Time\n\t\t\t8:00\tNBorneo\tBOR%sT\t1942 Feb 16\n\t\t\t9:00\t-\tJST\t1945 Sep 12\n\t\t\t8:00\t-\tBORT\t1982 Jan  1\n\t\t\t8:00\t-\tMYT\n\n# Maldives\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tIndian/Maldives\t4:54:00 -\tLMT\t1880\t# Male\n\t\t\t4:54:00\t-\tMMT\t1960\t# Male Mean Time\n\t\t\t5:00\t-\tMVT\t\t# Maldives Time\n\n# Mongolia\n\n# Shanks & Pottenger say that Mongolia has three time zones, but\n# usno1995 and the CIA map Standard Time Zones of the World (2005-03)\n# both say that it has just one.\n\n# From Oscar van Vlijmen (1999-12-11):\n# <a href=\"http://www.mongoliatourism.gov.mn/general.htm\">\n# General Information Mongolia\n# </a> (1999-09)\n# \"Time: Mongolia has two time zones. Three westernmost provinces of\n# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and\n# the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus\n# eight hours.\"\n\n# From Rives McDow (1999-12-13):\n# Mongolia discontinued the use of daylight savings time in 1999; 1998\n# being the last year it was implemented.  The dates of implementation I am\n# unsure of, but most probably it was similar to Russia, except for the time\n# of implementation may have been different....\n# Some maps in the past have indicated that there was an additional time\n# zone in the eastern part of Mongolia, including the provinces of Dornod,\n# Suhbaatar, and possibly Khentij.\n\n# From Paul Eggert (1999-12-15):\n# Naming and spelling is tricky in Mongolia.\n# We'll use Hovd (also spelled Chovd and Khovd) to represent the west zone;\n# the capital of the Hovd province is sometimes called Hovd, sometimes Dund-Us,\n# and sometimes Jirgalanta (with variant spellings), but the name Hovd\n# is good enough for our purposes.\n\n# From Rives McDow (2001-05-13):\n# In addition to Mongolia starting daylight savings as reported earlier\n# (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),\n# there are three time zones.\n#\n# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai\n# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,\n#\tBayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi\n# Provinces [at 9:00]: Dornod, Sukhbaatar\n#\n# [The province of Selenge is omitted from the above lists.]\n\n# From Ganbold Ts., Ulaanbaatar (2004-04-17):\n# Daylight saving occurs at 02:00 local time last Saturday of March.\n# It will change back to normal at 02:00 local time last Saturday of\n# September.... As I remember this rule was changed in 2001.\n#\n# From Paul Eggert (2004-04-17):\n# For now, assume Rives McDow's informant got confused about Friday vs\n# Saturday, and that his 2001 dates should have 1 added to them.\n\n# From Paul Eggert (2005-07-26):\n# We have wildly conflicting information about Mongolia's time zones.\n# Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says\n# there is only one time zone and that DST is observed, citing Microsoft\n# Windows XP as the source.  Risto Nykanen (2005-05-16) reports that\n# travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.\n# Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in\n# Washington, DC says there are two time zones, with DST observed.\n# He also found\n# <http://ubpost.mongolnews.mn/index.php?subaction=showcomments&id=1111634894&archive=&start_from=&ucat=1&>\n# which also says that there is DST, and which has a comment by \"Toddius\"\n# (2005-03-31 06:05 +0700) saying \"Mongolia actually has 3.5 time zones.\n# The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT\n# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.\n# The SUKH timezone is new this year, it is one of the few things the\n# parliament passed during the tumultuous winter session.\"\n# For now, let's ignore this information, until we have more confirmation.\n\n# From Ganbold Ts. (2007-02-26):\n# Parliament of Mongolia has just changed the daylight-saving rule in February.\n# They decided not to adopt daylight-saving time....\n# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742\n\n# From Deborah Goldsmith (2008-03-30):\n# We received a bug report claiming that the tz database UTC offset for\n# Asia/Choibalsan (GMT+09:00) is incorrect, and that it should be GMT\n# +08:00 instead. Different sources appear to disagree with the tz\n# database on this, e.g.:\n#\n# <a href=\"http://www.timeanddate.com/worldclock/city.html?n=1026\">\n# http://www.timeanddate.com/worldclock/city.html?n=1026\n# </a>\n# <a href=\"http://www.worldtimeserver.com/current_time_in_MN.aspx\">\n# http://www.worldtimeserver.com/current_time_in_MN.aspx\n# </a>\n#\n# both say GMT+08:00.\n\n# From Steffen Thorsen (2008-03-31):\n# eznis airways, which operates several domestic flights, has a flight\n# schedule here:\n# <a href=\"http://www.eznis.com/Container.jsp?id=112\">\n# http://www.eznis.com/Container.jsp?id=112\n# </a>\n# (click the English flag for English)\n#\n# There it appears that flights between Choibalsan and Ulaanbatar arrive\n# about 1:35 - 1:50 hours later in local clock time, no matter the\n# direction, while Ulaanbaatar-Khvod takes 2 hours in the Eastern\n# direction and 3:35 back, which indicates that Ulaanbatar and Khvod are\n# in different time zones (like we know about), while Choibalsan and\n# Ulaanbatar are in the same time zone (correction needed).\n\n# From Arthur David Olson (2008-05-19):\n# Assume that Choibalsan is indeed offset by 8:00.\n# XXX--in the absence of better information, assume that transition\n# was at the start of 2008-03-31 (the day of Steffen Thorsen's report);\n# this is almost surely wrong.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tMongol\t1983\t1984\t-\tApr\t1\t0:00\t1:00\tS\nRule\tMongol\t1983\tonly\t-\tOct\t1\t0:00\t0\t-\n# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,\n# but McDow says the 2001 switches occurred at 02:00.  Also, IATA SSIM\n# (1996-09) says 1996-10-25.  Go with Shanks & Pottenger through 1998.\n#\n# Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches\n# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place\n# at 02:00 standard time, not at 00:00 local time as in the rest of\n# the country.  That would be odd, and possibly is a result of their\n# correction of 02:00 (in the previous edition) not being done correctly\n# in the latest edition; so ignore it for now.\n\nRule\tMongol\t1985\t1998\t-\tMar\tlastSun\t0:00\t1:00\tS\nRule\tMongol\t1984\t1998\t-\tSep\tlastSun\t0:00\t0\t-\n# IATA SSIM (1999-09) says Mongolia no longer observes DST.\nRule\tMongol\t2001\tonly\t-\tApr\tlastSat\t2:00\t1:00\tS\nRule\tMongol\t2001\t2006\t-\tSep\tlastSat\t2:00\t0\t-\nRule\tMongol\t2002\t2006\t-\tMar\tlastSat\t2:00\t1:00\tS\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta\nZone\tAsia/Hovd\t6:06:36 -\tLMT\t1905 Aug\n\t\t\t6:00\t-\tHOVT\t1978\t# Hovd Time\n\t\t\t7:00\tMongol\tHOV%sT\n# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga\nZone\tAsia/Ulaanbaatar 7:07:32 -\tLMT\t1905 Aug\n\t\t\t7:00\t-\tULAT\t1978\t# Ulaanbaatar Time\n\t\t\t8:00\tMongol\tULA%sT\n# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,\n# Choybalsan, Sanbejse, Tchoibalsan\nZone\tAsia/Choibalsan\t7:38:00 -\tLMT\t1905 Aug\n\t\t\t7:00\t-\tULAT\t1978\n\t\t\t8:00\t-\tULAT\t1983 Apr\n\t\t\t9:00\tMongol\tCHO%sT\t2008 Mar 31 # Choibalsan Time\n\t\t\t8:00\tMongol\tCHO%sT\n\n# Nepal\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Kathmandu\t5:41:16 -\tLMT\t1920\n\t\t\t5:30\t-\tIST\t1986\n\t\t\t5:45\t-\tNPT\t# Nepal Time\n\n# Oman\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Muscat\t3:54:20 -\tLMT\t1920\n\t\t\t4:00\t-\tGST\n\n# Pakistan\n\n# From Rives McDow (2002-03-13):\n# I have been advised that Pakistan has decided to adopt dst on a\n# TRIAL basis for one year, starting 00:01 local time on April 7, 2002\n# and ending at 00:01 local time October 6, 2002.  This is what I was\n# told, but I believe that the actual time of change may be 00:00; the\n# 00:01 was to make it clear which day it was on.\n\n# From Paul Eggert (2002-03-15):\n# Jesper Norgaard found this URL:\n# http://www.pak.gov.pk/public/news/app/app06_dec.htm\n# (dated 2001-12-06) which says that the Cabinet adopted a scheme \"to\n# advance the clocks by one hour on the night between the first\n# Saturday and Sunday of April and revert to the original position on\n# 15th October each year\".  This agrees with McDow's 04-07 at 00:00,\n# but disagrees about the October transition, and makes it sound like\n# it's not on a trial basis.  Also, the \"between the first Saturday\n# and Sunday of April\" phrase, if taken literally, means that the\n# transition takes place at 00:00 on the first Sunday on or after 04-02.\n\n# From Paul Eggert (2003-02-09):\n# DAWN <http://www.dawn.com/2002/10/06/top13.htm> reported on 2002-10-05\n# that 2002 DST ended that day at midnight.  Go with McDow for now.\n\n# From Steffen Thorsen (2003-03-14):\n# According to http://www.dawn.com/2003/03/07/top15.htm\n# there will be no DST in Pakistan this year:\n#\n# ISLAMABAD, March 6: Information and Media Development Minister Sheikh\n# Rashid Ahmed on Thursday said the cabinet had reversed a previous\n# decision to advance clocks by one hour in summer and put them back by\n# one hour in winter with the aim of saving light hours and energy.\n#\n# The minister told a news conference that the experiment had rather\n# shown 8 per cent higher consumption of electricity.\n\n# From Alex Krivenyshev (2008-05-15):\n#\n# Here is an article that Pakistan plan to introduce Daylight Saving Time\n# on June 1, 2008 for 3 months.\n#\n# \"... The federal cabinet on Wednesday announced a new conservation plan to help\n# reduce load shedding by approving the closure of commercial centres at 9pm and\n# moving clocks forward by one hour for the next three months.\n# ....\"\n#\n# <a href=\"http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html\">\n# http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html\n# </a>\n# OR\n# <a href=\"http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4\">\n# http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4\n# </a>\n\n# From Arthur David Olson (2008-05-19):\n# XXX--midnight transitions is a guess; 2008 only is a guess.\n\n# From Alexander Krivenyshev (2008-08-28):\n# Pakistan government has decided to keep the watches one-hour advanced\n# for another 2 months--plan to return to Standard Time on October 31\n# instead of August 31.\n#\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html\n# </a>\n# OR\n# <a href=\"http://dailymailnews.com/200808/28/news/dmbrn03.html\">\n# http://dailymailnews.com/200808/28/news/dmbrn03.html\n# </a>\n\n# From Alexander Krivenyshev (2009-04-08):\n# Based on previous media reports that \"... proposed plan to\n# advance clocks by one hour from May 1 will cause disturbance\n# to the working schedules rather than bringing discipline in\n# official working.\"\n# <a href=\"http://www.thenews.com.pk/daily_detail.asp?id=171280\">\n# http://www.thenews.com.pk/daily_detail.asp?id=171280\n# </a>\n#\n# recent news that instead of May 2009 - Pakistan plan to\n# introduce DST from April 15, 2009\n#\n# FYI: Associated Press Of Pakistan\n# April 08, 2009\n# Cabinet okays proposal to advance clocks by one hour from April 15\n# <a href=\"http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1\">\n# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1\n# </a>\n#\n# or\n#\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html\n# </a>\n#\n# ....\n# The Federal Cabinet on Wednesday approved the proposal to\n# advance clocks in the country by one hour from April 15 to\n# conserve energy\"\n\n# From Steffen Thorsen (2009-09-17):\n# \"The News International,\" Pakistan reports that: \"The Federal\n# Government has decided to restore the previous time by moving the\n# clocks backward by one hour from October 1. A formal announcement to\n# this effect will be made after the Prime Minister grants approval in\n# this regard.\"\n# <a href=\"http://www.thenews.com.pk/updates.asp?id=87168\">\n# http://www.thenews.com.pk/updates.asp?id=87168\n# </a>\n\n# From Alexander Krivenyshev (2009-09-28):\n# According to Associated Press Of Pakistan, it is confirmed that\n# Pakistan clocks across the country would be turned back by an hour from October\n# 1, 2009.\n#\n# \"Clocks to go back one hour from 1 Oct\"\n# <a href=\"http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2\">\n# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm\">\n# http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm\n# </a>\n\n# From Steffen Thorsen (2009-09-29):\n# Alexander Krivenyshev wrote:\n# > According to Associated Press Of Pakistan, it is confirmed that\n# > Pakistan clocks across the country would be turned back by an hour from October\n# > 1, 2009.\n#\n# Now they seem to have changed their mind, November 1 is the new date:\n# <a href=\"http://www.thenews.com.pk/top_story_detail.asp?Id=24742\">\n# http://www.thenews.com.pk/top_story_detail.asp?Id=24742\n# </a>\n# \"The country's clocks will be reversed by one hour on November 1.\n# Officials of Federal Ministry for Interior told this to Geo News on\n# Monday.\"\n#\n# And more importantly, it seems that these dates will be kept every year:\n# \"It has now been decided that clocks will be wound forward by one hour\n# on April 15 and reversed by an hour on November 1 every year without\n# obtaining prior approval, the officials added.\"\n#\n# We have confirmed this year's end date with both with the Ministry of\n# Water and Power and the Pakistan Electric Power Company:\n# <a href=\"http://www.timeanddate.com/news/time/pakistan-ends-dst09.html\">\n# http://www.timeanddate.com/news/time/pakistan-ends-dst09.html\n# </a>\n\n# From Christoph Goehre (2009-10-01):\n# [T]he German Consulate General in Karachi reported me today that Pakistan\n# will go back to standard time on 1st of November.\n\n# From Steffen Thorsen (2010-03-26):\n# Steffen Thorsen wrote:\n# > On Thursday (2010-03-25) it was announced that DST would start in\n# > Pakistan on 2010-04-01.\n# >\n# > Then today, the president said that they might have to revert the\n# > decision if it is not supported by the parliament. So at the time\n# > being, it seems unclear if DST will be actually observed or not - but\n# > April 1 could be a more likely date than April 15.\n# Now, it seems that the decision to not observe DST in final:\n#\n# \"Govt Withdraws Plan To Advance Clocks\"\n# <a href=\"http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041\">\n# http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041\n# </a>\n#\n# \"People laud PM's announcement to end DST\"\n# <a href=\"http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2\">\n# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2\n# </a>\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule Pakistan\t2002\tonly\t-\tApr\tSun>=2\t0:01\t1:00\tS\nRule Pakistan\t2002\tonly\t-\tOct\tSun>=2\t0:01\t0\t-\nRule Pakistan\t2008\tonly\t-\tJun\t1\t0:00\t1:00\tS\nRule Pakistan\t2008\tonly\t-\tNov\t1\t0:00\t0\t-\nRule Pakistan\t2009\tonly\t-\tApr\t15\t0:00\t1:00\tS\nRule Pakistan\t2009\tonly\t-\tNov\t1\t0:00\t0\t-\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Karachi\t4:28:12 -\tLMT\t1907\n\t\t\t5:30\t-\tIST\t1942 Sep\n\t\t\t5:30\t1:00\tIST\t1945 Oct 15\n\t\t\t5:30\t-\tIST\t1951 Sep 30\n\t\t\t5:00\t-\tKART\t1971 Mar 26 # Karachi Time\n\t\t\t5:00 Pakistan\tPK%sT\t# Pakistan Time\n\n# Palestine\n\n# From Amos Shapir (1998-02-15):\n#\n# From 1917 until 1948-05-15, all of Palestine, including the parts now\n# known as the Gaza Strip and the West Bank, was under British rule.\n# Therefore the rules given for Israel for that period, apply there too...\n#\n# The Gaza Strip was under Egyptian rule between 1948-05-15 until 1967-06-05\n# (except a short occupation by Israel from 1956-11 till 1957-03, but no\n# time zone was affected then).  It was never formally annexed to Egypt,\n# though.\n#\n# The rest of Palestine was under Jordanian rule at that time, formally\n# annexed in 1950 as the West Bank (and the word \"Trans\" was dropped from\n# the country's previous name of \"the Hashemite Kingdom of the\n# Trans-Jordan\").  So the rules for Jordan for that time apply.  Major\n# towns in that area are Nablus (Shchem), El-Halil (Hebron), Ramallah, and\n# East Jerusalem.\n#\n# Both areas were occupied by Israel in June 1967, but not annexed (except\n# for East Jerusalem).  They were on Israel time since then; there might\n# have been a Military Governor's order about time zones, but I'm not aware\n# of any (such orders may have been issued semi-annually whenever summer\n# time was in effect, but maybe the legal aspect of time was just neglected).\n#\n# The Palestinian Authority was established in 1993, and got hold of most\n# towns in the West Bank and Gaza by 1995.  I know that in order to\n# demonstrate...independence, they have been switching to\n# summer time and back on a different schedule than Israel's, but I don't\n# know when this was started, or what algorithm is used (most likely the\n# Jordanian one).\n#\n# To summarize, the table should probably look something like that:\n#\n# Area \\ when | 1918-1947 | 1948-1967 | 1967-1995 | 1996-\n# ------------+-----------+-----------+-----------+-----------\n# Israel      | Zion      | Zion      | Zion      | Zion\n# West bank   | Zion      | Jordan    | Zion      | Jordan\n# Gaza        | Zion      | Egypt     | Zion      | Jordan\n#\n# I guess more info may be available from the PA's web page (if/when they\n# have one).\n\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger write that Gaza did not observe DST until 1957, but go\n# with Shapir and assume that it observed DST from 1940 through 1947,\n# and that it used Jordanian rules starting in 1996.\n# We don't yet need a separate entry for the West Bank, since\n# the only differences between it and Gaza that we know about\n# occurred before our cutoff date of 1970.\n# However, as we get more information, we may need to add entries\n# for parts of the West Bank as they transitioned from Israel's rules\n# to Palestine's rules.\n\n# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,\n# forwarded by Ephraim Silverberg:\n#\n# Despite the fact that Israel changed over to daylight savings time\n# last week, the PLO Authority (PA) has decided not to turn its clocks\n# one-hour forward at this time.  As a sign of independence from Israeli rule,\n# the PA has decided to implement DST in April.\n\n# From Paul Eggert (1999-09-20):\n# Daoud Kuttab writes in\n# <a href=\"http://www.jpost.com/com/Archive/22.Apr.1999/Opinion/Article-2.html\">\n# Holiday havoc\n# </a> (Jerusalem Post, 1999-04-22) that\n# the Palestinian National Authority changed to DST on 1999-04-15.\n# I vaguely recall that they switch back in October (sorry, forgot the source).\n# For now, let's assume that the spring switch was at 24:00,\n# and that they switch at 0:00 on the 3rd Fridays of April and October.\n\n# From Paul Eggert (2005-11-22):\n# Starting 2004 transitions are from Steffen Thorsen's web site timeanddate.com.\n\n# From Steffen Thorsen (2005-11-23):\n# A user from Gaza reported that Gaza made the change early because of\n# the Ramadan.  Next year Ramadan will be even earlier, so I think\n# there is a good chance next year's end date will be around two weeks\n# earlier--the same goes for Jordan.\n\n# From Steffen Thorsen (2006-08-17):\n# I was informed by a user in Bethlehem that in Bethlehem it started the\n# same day as Israel, and after checking with other users in the area, I\n# was informed that they started DST one day after Israel.  I was not\n# able to find any authoritative sources at the time, nor details if\n# Gaza changed as well, but presumed Gaza to follow the same rules as\n# the West Bank.\n\n# From Steffen Thorsen (2006-09-26):\n# according to the Palestine News Network (2006-09-19):\n# http://english.pnn.ps/index.php?option=com_content&task=view&id=596&Itemid=5\n# > The Council of Ministers announced that this year its winter schedule\n# > will begin early, as of midnight Thursday.  It is also time to turn\n# > back the clocks for winter.  Friday will begin an hour late this week.\n# I guess it is likely that next year's date will be moved as well,\n# because of the Ramadan.\n\n# From Jesper Norgaard Welen (2007-09-18):\n# According to Steffen Thorsen's web site the Gaza Strip and the rest of the\n# Palestinian territories left DST early on 13.th. of September at 2:00.\n\n# From Paul Eggert (2007-09-20):\n# My understanding is that Gaza and the West Bank disagree even over when\n# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit\n# surprised if they agreed about DST.  But for now, assume they agree.\n# For lack of better information, predict that future changes will be\n# the 2nd Thursday of September at 02:00.\n\n# From Alexander Krivenyshev (2008-08-28):\n# Here is an article, that Mideast running on different clocks at Ramadan.\n#\n# Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while\n# the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).\n#\n# <a href=\"http://www.guardian.co.uk/world/feedarticle/7759001\">\n# http://www.guardian.co.uk/world/feedarticle/7759001\n# </a>\n# <a href=\"http://www.abcnews.go.com/International/wireStory?id=5676087\">\n# http://www.abcnews.go.com/International/wireStory?id=5676087\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html\n# </a>\n\n# From Alexander Krivenyshev (2009-03-26):\n# According to the Palestine News Network (arabic.pnn.ps), Palestinian\n# government decided to start Daylight Time on Thursday night March\n# 26 and continue until the night of 27 September 2009.\n#\n# (in Arabic)\n# <a href=\"http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850\">\n# http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850\n# </a>\n#\n# or\n# (English translation)\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_westbank01.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_westbank01.html\n# </a>\n\n# From Steffen Thorsen (2009-08-31):\n# Palestine's Council of Ministers announced that they will revert back to\n# winter time on Friday, 2009-09-04.\n#\n# One news source:\n# <a href=\"http://www.safa.ps/ara/?action=showdetail&seid=4158\">\n# http://www.safa.ps/ara/?action=showdetail&seid=4158\n# </a>\n# (Palestinian press agency, Arabic),\n# Google translate: \"Decided that the Palestinian government in Ramallah\n# headed by Salam Fayyad, the start of work in time for the winter of\n# 2009, starting on Friday approved the fourth delay Sept. clock sixty\n# minutes per hour as of Friday morning.\"\n#\n# We are not sure if Gaza will do the same, last year they had a different\n# end date, we will keep this page updated:\n# <a href=\"http://www.timeanddate.com/news/time/westbank-gaza-dst-2009.html\">\n# http://www.timeanddate.com/news/time/westbank-gaza-dst-2009.html\n# </a>\n\n# From Alexander Krivenyshev (2009-09-02):\n# Seems that Gaza Strip will go back to Winter Time same date as West Bank.\n#\n# According to Palestinian Ministry Of Interior, West Bank and Gaza Strip plan\n# to change time back to Standard time on September 4, 2009.\n#\n# \"Winter time unite the West Bank and Gaza\"\n# (from Palestinian National Authority):\n# <a href=\"http://www.moi.gov.ps/en/?page=633167343250594025&nid=11505\n# http://www.moi.gov.ps/en/?page=633167343250594025&nid=11505\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html>\n# http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html\n# </a>\n\n# From Alexander Krivenyshev (2010-03-19):\n# According to Voice of Palestine DST will last for 191 days, from March\n# 26, 2010 till \"the last Sunday before the tenth day of Tishri\n# (October), each year\" (October 03, 2010?)\n#\n# <a href=\"http://palvoice.org/forums/showthread.php?t=245697\">\n# http://palvoice.org/forums/showthread.php?t=245697\n# </a>\n# (in Arabic)\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_westbank03.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html\n# </a>\n\n# From Steffen Thorsen (2010-03-24):\n# ...Ma'an News Agency reports that Hamas cabinet has decided it will\n# start one day later, at 12:01am. Not sure if they really mean 12:01am or\n# noon though:\n#\n# <a href=\"http://www.maannews.net/eng/ViewDetails.aspx?ID=271178\">\n# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178\n# </a>\n# (Ma'an News Agency)\n# \"At 12:01am Friday, clocks in Israel and the West Bank will change to\n# 1:01am, while Gaza clocks will change at 12:01am Saturday morning.\"\n\n# From Steffen Thorsen (2010-08-11):\n# According to several sources, including\n# <a href=\"http://www.maannews.net/eng/ViewDetails.aspx?ID=306795\">\n# http://www.maannews.net/eng/ViewDetails.aspx?ID=306795\n# </a>\n# the clocks were set back one hour at 2010-08-11 00:00:00 local time in\n# Gaza and the West Bank.\n# Some more background info:\n# <a href=\"http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html\">\n# http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html\n# </a>\n\n# From Steffen Thorsen (2011-08-26):\n# Gaza and the West Bank did go back to standard time in the beginning of\n# August, and will now enter daylight saving time again on 2011-08-30\n# 00:00 (so two periods of DST in 2011). The pause was because of\n# Ramadan.\n#\n# <a href=\"http://www.maannews.net/eng/ViewDetails.aspx?ID=416217\">\n# http://www.maannews.net/eng/ViewDetails.aspx?ID=416217\n# </a>\n# Additional info:\n# <a href=\"http://www.timeanddate.com/news/time/palestine-dst-2011.html\">\n# http://www.timeanddate.com/news/time/palestine-dst-2011.html\n# </a>\n\n# From Alexander Krivenyshev (2011-08-27):\n# According to the article in The Jerusalem Post:\n# \"...Earlier this month, the Palestinian government in the West Bank decided to\n# move to standard time for 30 days, during Ramadan. The Palestinians in the\n# Gaza Strip accepted the change and also moved their clocks one hour back.\n# The Hamas government said on Saturday that it won't observe summertime after\n# the Muslim feast of Id al-Fitr, which begins on Tuesday...\"\n# ...\n# <a href=\"http://www.jpost.com/MiddleEast/Article.aspx?id=235650\">\n# http://www.jpost.com/MiddleEast/Article.aspx?id=235650\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html\n# </a>\n# The rules for Egypt are stolen from the `africa' file.\n\n# From Steffen Thorsen (2011-09-30):\n# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30\n# 00:00).\n# So West Bank and Gaza now have the same time again.\n#\n# Many sources, including:\n# <a href=\"http://www.maannews.net/eng/ViewDetails.aspx?ID=424808\">\n# http://www.maannews.net/eng/ViewDetails.aspx?ID=424808\n# </a>\n\n# From Steffen Thorsen (2012-03-26):\n# Palestinian news sources tell that both Gaza and West Bank will start DST\n# on Friday (Thursday midnight, 2012-03-29 24:00).\n# Some of many sources in Arabic:\n# <a href=\"http://www.samanews.com/index.php?act=Show&id=122638\">\n# http://www.samanews.com/index.php?act=Show&id=122638\n# </a>\n#\n# <a href=\"http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html\">\n# http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html\n# </a>\n#\n# Our brief summary:\n# <a href=\"http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html\">\n# http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html\n# </a>\n\n# From Arthur David Olson (2012-03-27):\n# The timeanddate article for 2012 says that \"the end date has not yet been\n# announced\" and that \"Last year, both...paused daylight saving time during...\n# Ramadan. It is not yet known [for] 2012.\"\n# For now, assume both switch back on the last Friday in September. XXX\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule EgyptAsia\t1957\tonly\t-\tMay\t10\t0:00\t1:00\tS\nRule EgyptAsia\t1957\t1958\t-\tOct\t 1\t0:00\t0\t-\nRule EgyptAsia\t1958\tonly\t-\tMay\t 1\t0:00\t1:00\tS\nRule EgyptAsia\t1959\t1967\t-\tMay\t 1\t1:00\t1:00\tS\nRule EgyptAsia\t1959\t1965\t-\tSep\t30\t3:00\t0\t-\nRule EgyptAsia\t1966\tonly\t-\tOct\t 1\t3:00\t0\t-\n\nRule Palestine\t1999\t2005\t-\tApr\tFri>=15\t0:00\t1:00\tS\nRule Palestine\t1999\t2003\t-\tOct\tFri>=15\t0:00\t0\t-\nRule Palestine\t2004\tonly\t-\tOct\t 1\t1:00\t0\t-\nRule Palestine\t2005\tonly\t-\tOct\t 4\t2:00\t0\t-\nRule Palestine\t2006\t2008\t-\tApr\t 1\t0:00\t1:00\tS\nRule Palestine\t2006\tonly\t-\tSep\t22\t0:00\t0\t-\nRule Palestine\t2007\tonly\t-\tSep\tThu>=8\t2:00\t0\t-\nRule Palestine\t2008\tonly\t-\tAug\tlastFri\t0:00\t0\t-\nRule Palestine\t2009\tonly\t-\tMar\tlastFri\t0:00\t1:00\tS\nRule Palestine\t2009\tonly\t-\tSep\tFri>=1\t2:00\t0\t-\nRule Palestine\t2010\tonly\t-\tMar\tlastSat\t0:01\t1:00\tS\nRule Palestine\t2010\tonly\t-\tAug\t11\t0:00\t0\t-\n\n# From Arthur David Olson (2011-09-20):\n# 2011 transitions per http://www.timeanddate.com as of 2011-09-20.\n# From Paul Eggert (2012-10-12):\n# 2012 transitions per http://www.timeanddate.com as of 2012-10-12.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Gaza\t2:17:52\t-\tLMT\t1900 Oct\n\t\t\t2:00\tZion\tEET\t1948 May 15\n\t\t\t2:00 EgyptAsia\tEE%sT\t1967 Jun  5\n\t\t\t2:00\tZion\tI%sT\t1996\n\t\t\t2:00\tJordan\tEE%sT\t1999\n\t\t\t2:00 Palestine\tEE%sT\t2011 Apr  2 12:01\n\t\t\t2:00\t1:00\tEEST\t2011 Aug  1\n\t\t\t2:00\t-\tEET\t2012 Mar 30\n\t\t\t2:00\t1:00\tEEST\t2012 Sep 21 1:00\n\t\t\t2:00\t-\tEET\n\nZone\tAsia/Hebron\t2:20:23\t-\tLMT\t1900 Oct\n\t\t\t2:00\tZion\tEET\t1948 May 15\n\t\t\t2:00 EgyptAsia\tEE%sT\t1967 Jun  5\n\t\t\t2:00\tZion\tI%sT\t1996\n\t\t\t2:00\tJordan\tEE%sT\t1999\n\t\t\t2:00 Palestine\tEE%sT\t2008 Aug\n\t\t\t2:00 \t1:00\tEEST\t2008 Sep\n\t\t\t2:00 Palestine\tEE%sT\t2011 Apr  1 12:01\n\t\t\t2:00\t1:00\tEEST\t2011 Aug  1\n\t\t\t2:00\t-\tEET\t2011 Aug 30\n\t\t\t2:00\t1:00\tEEST\t2011 Sep 30 3:00\n\t\t\t2:00\t-\tEET\t2012 Mar 30\n\t\t\t2:00\t1:00\tEEST\t2012 Sep 21 1:00\n\t\t\t2:00\t-\tEET\n\n# Paracel Is\n# no information\n\n# Philippines\n# On 1844-08-16, Narciso Claveria, governor-general of the\n# Philippines, issued a proclamation announcing that 1844-12-30 was to\n# be immediately followed by 1845-01-01.  Robert H. van Gent has a\n# transcript of the decree in <http://www.phys.uu.nl/~vgent/idl/idl.htm>.\n# The rest of the data are from Shanks & Pottenger.\n\n# From Paul Eggert (2006-04-25):\n# Tomorrow's Manila Standard reports that the Philippines Department of\n# Trade and Industry is considering adopting DST this June when the\n# rainy season begins.  See\n# <http://www.manilastandardtoday.com/?page=politics02_april26_2006>.\n# For now, we'll ignore this, since it's not definite and we lack details.\n#\n# From Jesper Norgaard Welen (2006-04-26):\n# ... claims that Philippines had DST last time in 1990:\n# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/\n# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,\n# but no details]\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tPhil\t1936\tonly\t-\tNov\t1\t0:00\t1:00\tS\nRule\tPhil\t1937\tonly\t-\tFeb\t1\t0:00\t0\t-\nRule\tPhil\t1954\tonly\t-\tApr\t12\t0:00\t1:00\tS\nRule\tPhil\t1954\tonly\t-\tJul\t1\t0:00\t0\t-\nRule\tPhil\t1978\tonly\t-\tMar\t22\t0:00\t1:00\tS\nRule\tPhil\t1978\tonly\t-\tSep\t21\t0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Manila\t-15:56:00 -\tLMT\t1844 Dec 31\n\t\t\t8:04:00 -\tLMT\t1899 May 11\n\t\t\t8:00\tPhil\tPH%sT\t1942 May\n\t\t\t9:00\t-\tJST\t1944 Nov\n\t\t\t8:00\tPhil\tPH%sT\n\n# Qatar\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Qatar\t3:26:08 -\tLMT\t1920\t# Al Dawhah / Doha\n\t\t\t4:00\t-\tGST\t1972 Jun\n\t\t\t3:00\t-\tAST\n\n# Saudi Arabia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Riyadh\t3:06:52 -\tLMT\t1950\n\t\t\t3:00\t-\tAST\n\n# Singapore\n# The data here are taken from Mok Ly Yng (2003-10-30)\n# <http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html>.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Singapore\t6:55:25 -\tLMT\t1901 Jan  1\n\t\t\t6:55:25\t-\tSMT\t1905 Jun  1 # Singapore M.T.\n\t\t\t7:00\t-\tMALT\t1933 Jan  1 # Malaya Time\n\t\t\t7:00\t0:20\tMALST\t1936 Jan  1\n\t\t\t7:20\t-\tMALT\t1941 Sep  1\n\t\t\t7:30\t-\tMALT\t1942 Feb 16\n\t\t\t9:00\t-\tJST\t1945 Sep 12\n\t\t\t7:30\t-\tMALT\t1965 Aug  9 # independence\n\t\t\t7:30\t-\tSGT\t1982 Jan  1 # Singapore Time\n\t\t\t8:00\t-\tSGT\n\n# Spratly Is\n# no information\n\n# Sri Lanka\n# From Paul Eggert (1996-09-03):\n# \"Sri Lanka advances clock by an hour to avoid blackout\"\n# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,\n# no longer available as of 1999-08-17)\n# reported ``the country's standard time will be put forward by one hour at\n# midnight Friday (1830 GMT) `in the light of the present power crisis'.''\n#\n# From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted\n# by Shamindra in\n# <a href=\"news:54rka5$m5h@mtinsc01-mgt.ops.worldnet.att.net\">\n# Daily News - Hot News Section (1996-10-26)\n# </a>:\n# With effect from 12.30 a.m. on 26th October 1996\n# Sri Lanka will be six (06) hours ahead of GMT.\n\n# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online\n# <http://news.sinhalaya.com/wmview.php?ArtID=11002> (2006-04-13):\n# 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)\n# at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).\n\n# From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:\n# <http://today.reuters.co.uk/news/newsArticle.aspx?type=scienceNews&storyID=2006-04-12T172228Z_01_COL295762_RTRIDST_0_SCIENCE-SRILANKA-TIME-DC.XML>\n# [The Tamil Tigers] never accepted the original 1996 time change and simply\n# kept their clocks set five and a half hours ahead of Greenwich Mean\n# Time (GMT), in line with neighbor India.\n# From Paul Eggert (2006-04-18):\n# People who live in regions under Tamil control can use [TZ='Asia/Kolkata'],\n# as that zone has agreed with the Tamil areas since our cutoff date of 1970.\n\n# From K Sethu (2006-04-25):\n# I think the abbreviation LKT originated from the world of computers at\n# the time of or subsequent to the time zone changes by SL Government\n# twice in 1996 and probably SL Government or its standardization\n# agencies never declared an abbreviation as a national standard.\n#\n# I recollect before the recent change the government annoucemments\n# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka\n# Time and no mention was made about the abbreviation.\n#\n# If we look at Sri Lanka Department of Government's \"Official News\n# Website of Sri Lanka\" ... http://www.news.lk/ we can see that they\n# use SLT as abbreviation in time stamp at the beginning of each news\n# item....\n#\n# Within Sri Lanka I think LKT is well known among computer users and\n# adminsitrators.  In my opinion SLT may not be a good choice because the\n# nation's largest telcom / internet operator Sri Lanka Telcom is well\n# known by that abbreviation - simply as SLT (there IP domains are\n# slt.lk and sltnet.lk).\n#\n# But if indeed our government has adopted SLT as standard abbreviation\n# (that we have not known so far) then  it is better that it be used for\n# all computers.\n\n# From Paul Eggert (2006-04-25):\n# One possibility is that we wait for a bit for the dust to settle down\n# and then see what people actually say in practice.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Colombo\t5:19:24 -\tLMT\t1880\n\t\t\t5:19:32\t-\tMMT\t1906\t# Moratuwa Mean Time\n\t\t\t5:30\t-\tIST\t1942 Jan  5\n\t\t\t5:30\t0:30\tIHST\t1942 Sep\n\t\t\t5:30\t1:00\tIST\t1945 Oct 16 2:00\n\t\t\t5:30\t-\tIST\t1996 May 25 0:00\n\t\t\t6:30\t-\tLKT\t1996 Oct 26 0:30\n\t\t\t6:00\t-\tLKT\t2006 Apr 15 0:30\n\t\t\t5:30\t-\tIST\n\n# Syria\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tSyria\t1920\t1923\t-\tApr\tSun>=15\t2:00\t1:00\tS\nRule\tSyria\t1920\t1923\t-\tOct\tSun>=1\t2:00\t0\t-\nRule\tSyria\t1962\tonly\t-\tApr\t29\t2:00\t1:00\tS\nRule\tSyria\t1962\tonly\t-\tOct\t1\t2:00\t0\t-\nRule\tSyria\t1963\t1965\t-\tMay\t1\t2:00\t1:00\tS\nRule\tSyria\t1963\tonly\t-\tSep\t30\t2:00\t0\t-\nRule\tSyria\t1964\tonly\t-\tOct\t1\t2:00\t0\t-\nRule\tSyria\t1965\tonly\t-\tSep\t30\t2:00\t0\t-\nRule\tSyria\t1966\tonly\t-\tApr\t24\t2:00\t1:00\tS\nRule\tSyria\t1966\t1976\t-\tOct\t1\t2:00\t0\t-\nRule\tSyria\t1967\t1978\t-\tMay\t1\t2:00\t1:00\tS\nRule\tSyria\t1977\t1978\t-\tSep\t1\t2:00\t0\t-\nRule\tSyria\t1983\t1984\t-\tApr\t9\t2:00\t1:00\tS\nRule\tSyria\t1983\t1984\t-\tOct\t1\t2:00\t0\t-\nRule\tSyria\t1986\tonly\t-\tFeb\t16\t2:00\t1:00\tS\nRule\tSyria\t1986\tonly\t-\tOct\t9\t2:00\t0\t-\nRule\tSyria\t1987\tonly\t-\tMar\t1\t2:00\t1:00\tS\nRule\tSyria\t1987\t1988\t-\tOct\t31\t2:00\t0\t-\nRule\tSyria\t1988\tonly\t-\tMar\t15\t2:00\t1:00\tS\nRule\tSyria\t1989\tonly\t-\tMar\t31\t2:00\t1:00\tS\nRule\tSyria\t1989\tonly\t-\tOct\t1\t2:00\t0\t-\nRule\tSyria\t1990\tonly\t-\tApr\t1\t2:00\t1:00\tS\nRule\tSyria\t1990\tonly\t-\tSep\t30\t2:00\t0\t-\nRule\tSyria\t1991\tonly\t-\tApr\t 1\t0:00\t1:00\tS\nRule\tSyria\t1991\t1992\t-\tOct\t 1\t0:00\t0\t-\nRule\tSyria\t1992\tonly\t-\tApr\t 8\t0:00\t1:00\tS\nRule\tSyria\t1993\tonly\t-\tMar\t26\t0:00\t1:00\tS\nRule\tSyria\t1993\tonly\t-\tSep\t25\t0:00\t0\t-\n# IATA SSIM (1998-02) says 1998-04-02;\n# (1998-09) says 1999-03-29 and 1999-09-29; (1999-02) says 1999-04-02,\n# 2000-04-02, and 2001-04-02; (1999-09) says 2000-03-31 and 2001-03-31;\n# (2006) says 2006-03-31 and 2006-09-22;\n# for now ignore all these claims and go with Shanks & Pottenger,\n# except for the 2006-09-22 claim (which seems right for Ramadan).\nRule\tSyria\t1994\t1996\t-\tApr\t 1\t0:00\t1:00\tS\nRule\tSyria\t1994\t2005\t-\tOct\t 1\t0:00\t0\t-\nRule\tSyria\t1997\t1998\t-\tMar\tlastMon\t0:00\t1:00\tS\nRule\tSyria\t1999\t2006\t-\tApr\t 1\t0:00\t1:00\tS\n# From Stephen Colebourne (2006-09-18):\n# According to IATA data, Syria will change DST on 21st September [21:00 UTC]\n# this year [only]....  This is probably related to Ramadan, like Egypt.\nRule\tSyria\t2006\tonly\t-\tSep\t22\t0:00\t0\t-\n# From Paul Eggert (2007-03-29):\n# Today the AP reported \"Syria will switch to summertime at midnight Thursday.\"\n# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php\nRule\tSyria\t2007\tonly\t-\tMar\tlastFri\t0:00\t1:00\tS\n# From Jesper Norgard (2007-10-27):\n# The sister center ICARDA of my work CIMMYT is confirming that Syria DST will\n# not take place 1.st November at 0:00 o'clock but 1.st November at 24:00 or\n# rather Midnight between Thursday and Friday. This does make more sence than\n# having it between Wednesday and Thursday (two workdays in Syria) since the\n# weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now\n# it is implemented at midnight of the last workday before weekend...\n#\n# From Steffen Thorsen (2007-10-27):\n# Jesper Norgaard Welen wrote:\n#\n# > \"Winter local time in Syria will be observed at midnight of Thursday 1\n# > November 2007, and the clock will be put back 1 hour.\"\n#\n# I found confirmation on this in this gov.sy-article (Arabic):\n# http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247\n#\n# which using Google's translate tools says:\n# Council of Ministers also approved the commencement of work on\n# identifying the winter time as of Friday, 2/11/2007 where the 60th\n# minute delay at midnight Thursday 1/11/2007.\nRule\tSyria\t2007\tonly\t-\tNov\t Fri>=1\t0:00\t0\t-\n\n# From Stephen Colebourne (2008-03-17):\n# For everyone's info, I saw an IATA time zone change for [Syria] for\n# this month (March 2008) in the last day or so...This is the data IATA\n# are now using:\n# Country     Time Standard   --- DST Start ---   --- DST End ---  DST\n# Name        Zone Variation   Time    Date        Time    Date\n# Variation\n# Syrian Arab\n# Republic    SY    +0200      2200  03APR08       2100  30SEP08   +0300\n#                              2200  02APR09       2100  30SEP09   +0300\n#                              2200  01APR10       2100  30SEP10   +0300\n\n# From Arthur David Olson (2008-03-17):\n# Here's a link to English-language coverage by the Syrian Arab News\n# Agency (SANA)...\n# <a href=\"http://www.sana.sy/eng/21/2008/03/11/165173.htm\">\n# http://www.sana.sy/eng/21/2008/03/11/165173.htm\n# </a>...which reads (in part) \"The Cabinet approved the suggestion of the\n# Ministry of Electricity to begin daylight savings time on Friday April\n# 4th, advancing clocks one hour ahead on midnight of Thursday April 3rd.\"\n# Since Syria is two hours east of UTC, the 2200 and 2100 transition times\n# shown above match up with midnight in Syria.\n\n# From Arthur David Olson (2008-03-18):\n# My buest guess at a Syrian rule is \"the Friday nearest April 1\";\n# coding that involves either using a \"Mar Fri>=29\" construct that old time zone\n# compilers can't handle  or having multiple Rules (a la Israel).\n# For now, use \"Apr Fri>=1\", and go with IATA on a uniform Sep 30 end.\n\n# From Steffen Thorsen (2008-10-07):\n# Syria has now officially decided to end DST on 2008-11-01 this year,\n# according to the following article in the Syrian Arab News Agency (SANA).\n#\n# The article is in Arabic, and seems to tell that they will go back to\n# winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting\n# clocks back 60 minutes).\n#\n# <a href=\"http://sana.sy/ara/2/2008/10/07/195459.htm\">\n# http://sana.sy/ara/2/2008/10/07/195459.htm\n# </a>\n\n# From Steffen Thorsen (2009-03-19):\n# Syria will start DST on 2009-03-27 00:00 this year according to many sources,\n# two examples:\n#\n# <a href=\"http://www.sana.sy/eng/21/2009/03/17/217563.htm\">\n# http://www.sana.sy/eng/21/2009/03/17/217563.htm\n# </a>\n# (English, Syrian Arab News # Agency)\n# <a href=\"http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209\">\n# http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209\n# </a>\n# (Arabic, gov-site)\n#\n# We have not found any sources saying anything about when DST ends this year.\n#\n# Our summary\n# <a href=\"http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html\">\n# http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html\n# </a>\n\n# From Steffen Thorsen (2009-10-27):\n# The Syrian Arab News Network on 2009-09-29 reported that Syria will\n# revert back to winter (standard) time on midnight between Thursday\n# 2009-10-29 and Friday 2009-10-30:\n# <a href=\"http://www.sana.sy/ara/2/2009/09/29/247012.htm\">\n# http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)\n# </a>\n\n# From Arthur David Olson (2009-10-28):\n# We'll see if future DST switching times turn out to be end of the last\n# Thursday of the month or the start of the last Friday of the month or\n# something else. For now, use the start of the last Friday.\n\n# From Steffen Thorsen (2010-03-17):\n# The \"Syrian News Station\" reported on 2010-03-16 that the Council of\n# Ministers has decided that Syria will start DST on midnight Thursday\n# 2010-04-01: (midnight between Thursday and Friday):\n# <a href=\"http://sns.sy/sns/?path=news/read/11421\">\n# http://sns.sy/sns/?path=news/read/11421 (Arabic)\n# </a>\n\n# From Steffen Thorsen (2012-03-26):\n# Today, Syria's government announced that they will start DST early on Friday\n# (00:00). This is a bit earlier than the past two years.\n#\n# From Syrian Arab News Agency, in Arabic:\n# <a href=\"http://www.sana.sy/ara/2/2012/03/26/408215.htm\">\n# http://www.sana.sy/ara/2/2012/03/26/408215.htm\n# </a>\n#\n# Our brief summary:\n# <a href=\"http://www.timeanddate.com/news/time/syria-dst-2012.html\">\n# http://www.timeanddate.com/news/time/syria-dst-2012.html\n# </a>\n\n# From Arthur David Olson (2012-03-27):\n# Assume last Friday in March going forward XXX.\n\nRule\tSyria\t2008\tonly\t-\tApr\tFri>=1\t0:00\t1:00\tS\nRule\tSyria\t2008\tonly\t-\tNov\t1\t0:00\t0\t-\nRule\tSyria\t2009\tonly\t-\tMar\tlastFri\t0:00\t1:00\tS\nRule\tSyria\t2010\t2011\t-\tApr\tFri>=1\t0:00\t1:00\tS\nRule\tSyria\t2012\tmax\t-\tMar\tlastFri\t0:00\t1:00\tS\nRule\tSyria\t2009\tmax\t-\tOct\tlastFri\t0:00\t0\t-\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Damascus\t2:25:12 -\tLMT\t1920\t# Dimashq\n\t\t\t2:00\tSyria\tEE%sT\n\n# Tajikistan\n# From Shanks & Pottenger.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Dushanbe\t4:35:12 -\tLMT\t1924 May  2\n\t\t\t5:00\t-\tDUST\t1930 Jun 21 # Dushanbe Time\n\t\t\t6:00 RussiaAsia DUS%sT\t1991 Mar 31 2:00s\n\t\t\t5:00\t1:00\tDUSST\t1991 Sep  9 2:00s\n\t\t\t5:00\t-\tTJT\t\t    # Tajikistan Time\n\n# Thailand\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Bangkok\t6:42:04\t-\tLMT\t1880\n\t\t\t6:42:04\t-\tBMT\t1920 Apr # Bangkok Mean Time\n\t\t\t7:00\t-\tICT\n\n# Turkmenistan\n# From Shanks & Pottenger.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Ashgabat\t3:53:32 -\tLMT\t1924 May  2 # or Ashkhabad\n\t\t\t4:00\t-\tASHT\t1930 Jun 21 # Ashkhabad Time\n\t\t\t5:00 RussiaAsia\tASH%sT\t1991 Mar 31 2:00\n\t\t\t4:00 RussiaAsia\tASH%sT\t1991 Oct 27 # independence\n\t\t\t4:00 RussiaAsia\tTM%sT\t1992 Jan 19 2:00\n\t\t\t5:00\t-\tTMT\n\n# United Arab Emirates\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Dubai\t3:41:12 -\tLMT\t1920\n\t\t\t4:00\t-\tGST\n\n# Uzbekistan\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Samarkand\t4:27:12 -\tLMT\t1924 May  2\n\t\t\t4:00\t-\tSAMT\t1930 Jun 21 # Samarkand Time\n\t\t\t5:00\t-\tSAMT\t1981 Apr  1\n\t\t\t5:00\t1:00\tSAMST\t1981 Oct  1\n\t\t\t6:00\t-\tTAST\t1982 Apr  1 # Tashkent Time\n\t\t\t5:00 RussiaAsia\tSAM%sT\t1991 Sep  1 # independence\n\t\t\t5:00 RussiaAsia\tUZ%sT\t1992\n\t\t\t5:00\t-\tUZT\nZone\tAsia/Tashkent\t4:37:12 -\tLMT\t1924 May  2\n\t\t\t5:00\t-\tTAST\t1930 Jun 21 # Tashkent Time\n\t\t\t6:00 RussiaAsia\tTAS%sT\t1991 Mar 31 2:00\n\t\t\t5:00 RussiaAsia\tTAS%sT\t1991 Sep  1 # independence\n\t\t\t5:00 RussiaAsia\tUZ%sT\t1992\n\t\t\t5:00\t-\tUZT\n\n# Vietnam\n\n# From Arthur David Olson (2008-03-18):\n# The English-language name of Vietnam's most populous city is \"Ho Chi Min City\";\n# we use Ho_Chi_Minh below to avoid a name of more than 14 characters.\n\n# From Shanks & Pottenger:\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Ho_Chi_Minh\t7:06:40 -\tLMT\t1906 Jun  9\n\t\t\t7:06:20\t-\tSMT\t1911 Mar 11 0:01 # Saigon MT?\n\t\t\t7:00\t-\tICT\t1912 May\n\t\t\t8:00\t-\tICT\t1931 May\n\t\t\t7:00\t-\tICT\n\n# Yemen\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAsia/Aden\t3:00:48\t-\tLMT\t1950\n\t\t\t3:00\t-\tAST\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/australasia",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This file also includes Pacific islands.\n\n# Notes are at the end of this file\n\n###############################################################################\n\n# Australia\n\n# Please see the notes below for the controversy about \"EST\" versus \"AEST\" etc.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAus\t1917\tonly\t-\tJan\t 1\t0:01\t1:00\t-\nRule\tAus\t1917\tonly\t-\tMar\t25\t2:00\t0\t-\nRule\tAus\t1942\tonly\t-\tJan\t 1\t2:00\t1:00\t-\nRule\tAus\t1942\tonly\t-\tMar\t29\t2:00\t0\t-\nRule\tAus\t1942\tonly\t-\tSep\t27\t2:00\t1:00\t-\nRule\tAus\t1943\t1944\t-\tMar\tlastSun\t2:00\t0\t-\nRule\tAus\t1943\tonly\t-\tOct\t 3\t2:00\t1:00\t-\n# Go with Whitman and the Australian National Standards Commission, which\n# says W Australia didn't use DST in 1943/1944.  Ignore Whitman's claim that\n# 1944/1945 was just like 1943/1944.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# Northern Territory\nZone Australia/Darwin\t 8:43:20 -\tLMT\t1895 Feb\n\t\t\t 9:00\t-\tCST\t1899 May\n\t\t\t 9:30\tAus\tCST\n# Western Australia\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAW\t1974\tonly\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAW\t1975\tonly\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAW\t1983\tonly\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAW\t1984\tonly\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAW\t1991\tonly\t-\tNov\t17\t2:00s\t1:00\t-\nRule\tAW\t1992\tonly\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAW\t2006\tonly\t-\tDec\t 3\t2:00s\t1:00\t-\nRule\tAW\t2007\t2009\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAW\t2007\t2008\t-\tOct\tlastSun\t2:00s\t1:00\t-\nZone Australia/Perth\t 7:43:24 -\tLMT\t1895 Dec\n\t\t\t 8:00\tAus\tWST\t1943 Jul\n\t\t\t 8:00\tAW\tWST\nZone Australia/Eucla\t 8:35:28 -\tLMT\t1895 Dec\n\t\t\t 8:45\tAus\tCWST\t1943 Jul\n\t\t\t 8:45\tAW\tCWST\n\n# Queensland\n#\n# From Alex Livingston (1996-11-01):\n# I have heard or read more than once that some resort islands off the coast\n# of Queensland chose to keep observing daylight-saving time even after\n# Queensland ceased to.\n#\n# From Paul Eggert (1996-11-22):\n# IATA SSIM (1993-02/1994-09) say that the Holiday Islands (Hayman, Lindeman,\n# Hamilton) observed DST for two years after the rest of Queensland stopped.\n# Hamilton is the largest, but there is also a Hamilton in Victoria,\n# so use Lindeman.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAQ\t1971\tonly\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAQ\t1972\tonly\t-\tFeb\tlastSun\t2:00s\t0\t-\nRule\tAQ\t1989\t1991\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAQ\t1990\t1992\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tHoliday\t1992\t1993\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tHoliday\t1993\t1994\t-\tMar\tSun>=1\t2:00s\t0\t-\nZone Australia/Brisbane\t10:12:08 -\tLMT\t1895\n\t\t\t10:00\tAus\tEST\t1971\n\t\t\t10:00\tAQ\tEST\nZone Australia/Lindeman  9:55:56 -\tLMT\t1895\n\t\t\t10:00\tAus\tEST\t1971\n\t\t\t10:00\tAQ\tEST\t1992 Jul\n\t\t\t10:00\tHoliday\tEST\n\n# South Australia\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAS\t1971\t1985\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAS\t1986\tonly\t-\tOct\t19\t2:00s\t1:00\t-\nRule\tAS\t1987\t2007\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAS\t1972\tonly\t-\tFeb\t27\t2:00s\t0\t-\nRule\tAS\t1973\t1985\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAS\t1986\t1990\t-\tMar\tSun>=15\t2:00s\t0\t-\nRule\tAS\t1991\tonly\t-\tMar\t3\t2:00s\t0\t-\nRule\tAS\t1992\tonly\t-\tMar\t22\t2:00s\t0\t-\nRule\tAS\t1993\tonly\t-\tMar\t7\t2:00s\t0\t-\nRule\tAS\t1994\tonly\t-\tMar\t20\t2:00s\t0\t-\nRule\tAS\t1995\t2005\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAS\t2006\tonly\t-\tApr\t2\t2:00s\t0\t-\nRule\tAS\t2007\tonly\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAS\t2008\tmax\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tAS\t2008\tmax\t-\tOct\tSun>=1\t2:00s\t1:00\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Australia/Adelaide\t9:14:20 -\tLMT\t1895 Feb\n\t\t\t9:00\t-\tCST\t1899 May\n\t\t\t9:30\tAus\tCST\t1971\n\t\t\t9:30\tAS\tCST\n\n# Tasmania\n#\n# From Paul Eggert (2005-08-16):\n# <http://www.bom.gov.au/climate/averages/tables/dst_times.shtml>\n# says King Island didn't observe DST from WWII until late 1971.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAT\t1967\tonly\t-\tOct\tSun>=1\t2:00s\t1:00\t-\nRule\tAT\t1968\tonly\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAT\t1968\t1985\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAT\t1969\t1971\t-\tMar\tSun>=8\t2:00s\t0\t-\nRule\tAT\t1972\tonly\t-\tFeb\tlastSun\t2:00s\t0\t-\nRule\tAT\t1973\t1981\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAT\t1982\t1983\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAT\t1984\t1986\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAT\t1986\tonly\t-\tOct\tSun>=15\t2:00s\t1:00\t-\nRule\tAT\t1987\t1990\t-\tMar\tSun>=15\t2:00s\t0\t-\nRule\tAT\t1987\tonly\t-\tOct\tSun>=22\t2:00s\t1:00\t-\nRule\tAT\t1988\t1990\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAT\t1991\t1999\t-\tOct\tSun>=1\t2:00s\t1:00\t-\nRule\tAT\t1991\t2005\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAT\t2000\tonly\t-\tAug\tlastSun\t2:00s\t1:00\t-\nRule\tAT\t2001\tmax\t-\tOct\tSun>=1\t2:00s\t1:00\t-\nRule\tAT\t2006\tonly\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tAT\t2007\tonly\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAT\t2008\tmax\t-\tApr\tSun>=1\t2:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Australia/Hobart\t9:49:16\t-\tLMT\t1895 Sep\n\t\t\t10:00\t-\tEST\t1916 Oct 1 2:00\n\t\t\t10:00\t1:00\tEST\t1917 Feb\n\t\t\t10:00\tAus\tEST\t1967\n\t\t\t10:00\tAT\tEST\nZone Australia/Currie\t9:35:28\t-\tLMT\t1895 Sep\n\t\t\t10:00\t-\tEST\t1916 Oct 1 2:00\n\t\t\t10:00\t1:00\tEST\t1917 Feb\n\t\t\t10:00\tAus\tEST\t1971 Jul\n\t\t\t10:00\tAT\tEST\n\n# Victoria\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAV\t1971\t1985\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAV\t1972\tonly\t-\tFeb\tlastSun\t2:00s\t0\t-\nRule\tAV\t1973\t1985\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAV\t1986\t1990\t-\tMar\tSun>=15\t2:00s\t0\t-\nRule\tAV\t1986\t1987\t-\tOct\tSun>=15\t2:00s\t1:00\t-\nRule\tAV\t1988\t1999\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAV\t1991\t1994\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAV\t1995\t2005\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAV\t2000\tonly\t-\tAug\tlastSun\t2:00s\t1:00\t-\nRule\tAV\t2001\t2007\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAV\t2006\tonly\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tAV\t2007\tonly\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAV\t2008\tmax\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tAV\t2008\tmax\t-\tOct\tSun>=1\t2:00s\t1:00\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Australia/Melbourne 9:39:52 -\tLMT\t1895 Feb\n\t\t\t10:00\tAus\tEST\t1971\n\t\t\t10:00\tAV\tEST\n\n# New South Wales\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAN\t1971\t1985\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAN\t1972\tonly\t-\tFeb\t27\t2:00s\t0\t-\nRule\tAN\t1973\t1981\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAN\t1982\tonly\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tAN\t1983\t1985\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAN\t1986\t1989\t-\tMar\tSun>=15\t2:00s\t0\t-\nRule\tAN\t1986\tonly\t-\tOct\t19\t2:00s\t1:00\t-\nRule\tAN\t1987\t1999\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAN\t1990\t1995\t-\tMar\tSun>=1\t2:00s\t0\t-\nRule\tAN\t1996\t2005\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAN\t2000\tonly\t-\tAug\tlastSun\t2:00s\t1:00\t-\nRule\tAN\t2001\t2007\t-\tOct\tlastSun\t2:00s\t1:00\t-\nRule\tAN\t2006\tonly\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tAN\t2007\tonly\t-\tMar\tlastSun\t2:00s\t0\t-\nRule\tAN\t2008\tmax\t-\tApr\tSun>=1\t2:00s\t0\t-\nRule\tAN\t2008\tmax\t-\tOct\tSun>=1\t2:00s\t1:00\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Australia/Sydney\t10:04:52 -\tLMT\t1895 Feb\n\t\t\t10:00\tAus\tEST\t1971\n\t\t\t10:00\tAN\tEST\nZone Australia/Broken_Hill 9:25:48 -\tLMT\t1895 Feb\n\t\t\t10:00\t-\tEST\t1896 Aug 23\n\t\t\t9:00\t-\tCST\t1899 May\n\t\t\t9:30\tAus\tCST\t1971\n\t\t\t9:30\tAN\tCST\t2000\n\t\t\t9:30\tAS\tCST\n\n# Lord Howe Island\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tLH\t1981\t1984\t-\tOct\tlastSun\t2:00\t1:00\t-\nRule\tLH\t1982\t1985\t-\tMar\tSun>=1\t2:00\t0\t-\nRule\tLH\t1985\tonly\t-\tOct\tlastSun\t2:00\t0:30\t-\nRule\tLH\t1986\t1989\t-\tMar\tSun>=15\t2:00\t0\t-\nRule\tLH\t1986\tonly\t-\tOct\t19\t2:00\t0:30\t-\nRule\tLH\t1987\t1999\t-\tOct\tlastSun\t2:00\t0:30\t-\nRule\tLH\t1990\t1995\t-\tMar\tSun>=1\t2:00\t0\t-\nRule\tLH\t1996\t2005\t-\tMar\tlastSun\t2:00\t0\t-\nRule\tLH\t2000\tonly\t-\tAug\tlastSun\t2:00\t0:30\t-\nRule\tLH\t2001\t2007\t-\tOct\tlastSun\t2:00\t0:30\t-\nRule\tLH\t2006\tonly\t-\tApr\tSun>=1\t2:00\t0\t-\nRule\tLH\t2007\tonly\t-\tMar\tlastSun\t2:00\t0\t-\nRule\tLH\t2008\tmax\t-\tApr\tSun>=1\t2:00\t0\t-\nRule\tLH\t2008\tmax\t-\tOct\tSun>=1\t2:00\t0:30\t-\nZone Australia/Lord_Howe 10:36:20 -\tLMT\t1895 Feb\n\t\t\t10:00\t-\tEST\t1981 Mar\n\t\t\t10:30\tLH\tLHST\n\n# Australian miscellany\n#\n# Ashmore Is, Cartier\n# no indigenous inhabitants; only seasonal caretakers\n# no times are set\n#\n# Coral Sea Is\n# no indigenous inhabitants; only meteorologists\n# no times are set\n#\n# Macquarie\n# permanent occupation (scientific station) since 1948;\n# sealing and penguin oil station operated 1888/1917\n# like Australia/Hobart\n\n# Christmas\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Indian/Christmas\t7:02:52 -\tLMT\t1895 Feb\n\t\t\t7:00\t-\tCXT\t# Christmas Island Time\n\n# Cook Is\n# From Shanks & Pottenger:\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tCook\t1978\tonly\t-\tNov\t12\t0:00\t0:30\tHS\nRule\tCook\t1979\t1991\t-\tMar\tSun>=1\t0:00\t0\t-\nRule\tCook\t1979\t1990\t-\tOct\tlastSun\t0:00\t0:30\tHS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Rarotonga\t-10:39:04 -\tLMT\t1901\t\t# Avarua\n\t\t\t-10:30\t-\tCKT\t1978 Nov 12\t# Cook Is Time\n\t\t\t-10:00\tCook\tCK%sT\n\n# Cocos\n# These islands were ruled by the Ross family from about 1830 to 1978.\n# We don't know when standard time was introduced; for now, we guess 1900.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tIndian/Cocos\t6:27:40\t-\tLMT\t1900\n\t\t\t6:30\t-\tCCT\t# Cocos Islands Time\n\n# Fiji\n# From Alexander Krivenyshev (2009-11-10):\n# According to Fiji Broadcasting Corporation,  Fiji plans to re-introduce DST\n# from November 29th 2009  to April 25th 2010.\n#\n# \"Daylight savings to commence this month\"\n# <a href=\"http://www.radiofiji.com.fj/fullstory.php?id=23719\">\n# http://www.radiofiji.com.fj/fullstory.php?id=23719\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_fiji01.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_fiji01.html\n# </a>\n\n# From Steffen Thorsen (2009-11-10):\n# The Fiji Government has posted some more details about the approved\n# amendments:\n# <a href=\"http://www.fiji.gov.fj/publish/page_16198.shtml\">\n# http://www.fiji.gov.fj/publish/page_16198.shtml\n# </a>\n\n# From Steffen Thorsen (2010-03-03):\n# The Cabinet in Fiji has decided to end DST about a month early, on\n# 2010-03-28 at 03:00.\n# The plan is to observe DST again, from 2010-10-24 to sometime in March\n# 2011 (last Sunday a good guess?).\n#\n# Official source:\n# <a href=\"http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166\">\n# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=1096:3310-cabinet-approves-change-in-daylight-savings-dates&catid=49:cabinet-releases&Itemid=166\n# </a>\n#\n# A bit more background info here:\n# <a href=\"http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html\">\n# http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html\n# </a>\n\n# From Alexander Krivenyshev (2010-10-24):\n# According to Radio Fiji and Fiji Times online, Fiji will end DST 3\n# weeks earlier than expected - on March 6, 2011, not March 27, 2011...\n# Here is confirmation from Government of the Republic of the Fiji Islands,\n# Ministry of Information (fiji.gov.fj) web site:\n# <a href=\"http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155\">\n# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155\n# </a>\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_fiji04.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_fiji04.html\n# </a>\n\n# From Steffen Thorsen (2011-10-03):\n# Now the dates have been confirmed, and at least our start date\n# assumption was correct (end date was one week wrong).\n#\n# <a href=\"http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155\">\n# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155\n# </a>\n# which says\n# Members of the public are reminded to change their time to one hour in\n# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to\n# 2am on February 26 next year.\n\n# From Ken Rylander (2011-10-24)\n# Another change to the Fiji DST end date. In the TZ database the end date for\n# Fiji DST 2012, is currently Feb 26. This has been changed to Jan 22.\n#\n# <a href=\"http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155\">\n# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155\n# </a>\n# states:\n#\n# The end of daylight saving scheduled initially for the 26th of February 2012\n# has been brought forward to the 22nd of January 2012.\n# The commencement of daylight saving will remain unchanged and start\n# on the  23rd of October, 2011.\n\n# From the Fiji Government Online Portal (2012-08-21) via Steffen Thorsen:\n# The Minister for Labour, Industrial Relations and Employment Mr Jone Usamate\n# today confirmed that Fiji will start daylight savings at 2 am on Sunday 21st\n# October 2012 and end at 3 am on Sunday 20th January 2013.\n# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155\n#\n# From Paul Eggert (2012-08-31):\n# For now, guess a pattern of the penultimate Sundays in October and January.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tFiji\t1998\t1999\t-\tNov\tSun>=1\t2:00\t1:00\tS\nRule\tFiji\t1999\t2000\t-\tFeb\tlastSun\t3:00\t0\t-\nRule\tFiji\t2009\tonly\t-\tNov\t29\t2:00\t1:00\tS\nRule\tFiji\t2010\tonly\t-\tMar\tlastSun\t3:00\t0\t-\nRule\tFiji\t2010\tmax\t-\tOct\tSun>=18\t2:00\t1:00\tS\nRule\tFiji\t2011\tonly\t-\tMar\tSun>=1\t3:00\t0\t-\nRule\tFiji\t2012\tmax\t-\tJan\tSun>=18\t3:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Fiji\t11:53:40 -\tLMT\t1915 Oct 26\t# Suva\n\t\t\t12:00\tFiji\tFJ%sT\t# Fiji Time\n\n# French Polynesia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Gambier\t -8:59:48 -\tLMT\t1912 Oct\t# Rikitea\n\t\t\t -9:00\t-\tGAMT\t# Gambier Time\nZone\tPacific/Marquesas -9:18:00 -\tLMT\t1912 Oct\n\t\t\t -9:30\t-\tMART\t# Marquesas Time\nZone\tPacific/Tahiti\t -9:58:16 -\tLMT\t1912 Oct\t# Papeete\n\t\t\t-10:00\t-\tTAHT\t# Tahiti Time\n# Clipperton (near North America) is administered from French Polynesia;\n# it is uninhabited.\n\n# Guam\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Guam\t-14:21:00 -\tLMT\t1844 Dec 31\n\t\t\t 9:39:00 -\tLMT\t1901\t\t# Agana\n\t\t\t10:00\t-\tGST\t2000 Dec 23\t# Guam\n\t\t\t10:00\t-\tChST\t# Chamorro Standard Time\n\n# Kiribati\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Tarawa\t 11:32:04 -\tLMT\t1901\t\t# Bairiki\n\t\t\t 12:00\t-\tGILT\t\t # Gilbert Is Time\nZone Pacific/Enderbury\t-11:24:20 -\tLMT\t1901\n\t\t\t-12:00\t-\tPHOT\t1979 Oct # Phoenix Is Time\n\t\t\t-11:00\t-\tPHOT\t1995\n\t\t\t 13:00\t-\tPHOT\nZone Pacific/Kiritimati\t-10:29:20 -\tLMT\t1901\n\t\t\t-10:40\t-\tLINT\t1979 Oct # Line Is Time\n\t\t\t-10:00\t-\tLINT\t1995\n\t\t\t 14:00\t-\tLINT\n\n# N Mariana Is\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Saipan\t-14:17:00 -\tLMT\t1844 Dec 31\n\t\t\t 9:43:00 -\tLMT\t1901\n\t\t\t 9:00\t-\tMPT\t1969 Oct # N Mariana Is Time\n\t\t\t10:00\t-\tMPT\t2000 Dec 23\n\t\t\t10:00\t-\tChST\t# Chamorro Standard Time\n\n# Marshall Is\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Majuro\t11:24:48 -\tLMT\t1901\n\t\t\t11:00\t-\tMHT\t1969 Oct # Marshall Islands Time\n\t\t\t12:00\t-\tMHT\nZone Pacific/Kwajalein\t11:09:20 -\tLMT\t1901\n\t\t\t11:00\t-\tMHT\t1969 Oct\n\t\t\t-12:00\t-\tKWAT\t1993 Aug 20\t# Kwajalein Time\n\t\t\t12:00\t-\tMHT\n\n# Micronesia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Chuuk\t10:07:08 -\tLMT\t1901\n\t\t\t10:00\t-\tCHUT\t\t\t# Chuuk Time\nZone Pacific/Pohnpei\t10:32:52 -\tLMT\t1901\t\t# Kolonia\n\t\t\t11:00\t-\tPONT\t\t\t# Pohnpei Time\nZone Pacific/Kosrae\t10:51:56 -\tLMT\t1901\n\t\t\t11:00\t-\tKOST\t1969 Oct\t# Kosrae Time\n\t\t\t12:00\t-\tKOST\t1999\n\t\t\t11:00\t-\tKOST\n\n# Nauru\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Nauru\t11:07:40 -\tLMT\t1921 Jan 15\t# Uaobe\n\t\t\t11:30\t-\tNRT\t1942 Mar 15\t# Nauru Time\n\t\t\t9:00\t-\tJST\t1944 Aug 15\n\t\t\t11:30\t-\tNRT\t1979 May\n\t\t\t12:00\t-\tNRT\n\n# New Caledonia\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNC\t1977\t1978\t-\tDec\tSun>=1\t0:00\t1:00\tS\nRule\tNC\t1978\t1979\t-\tFeb\t27\t0:00\t0\t-\nRule\tNC\t1996\tonly\t-\tDec\t 1\t2:00s\t1:00\tS\n# Shanks & Pottenger say the following was at 2:00; go with IATA.\nRule\tNC\t1997\tonly\t-\tMar\t 2\t2:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Noumea\t11:05:48 -\tLMT\t1912 Jan 13\n\t\t\t11:00\tNC\tNC%sT\n\n\n###############################################################################\n\n# New Zealand\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNZ\t1927\tonly\t-\tNov\t 6\t2:00\t1:00\tS\nRule\tNZ\t1928\tonly\t-\tMar\t 4\t2:00\t0\tM\nRule\tNZ\t1928\t1933\t-\tOct\tSun>=8\t2:00\t0:30\tS\nRule\tNZ\t1929\t1933\t-\tMar\tSun>=15\t2:00\t0\tM\nRule\tNZ\t1934\t1940\t-\tApr\tlastSun\t2:00\t0\tM\nRule\tNZ\t1934\t1940\t-\tSep\tlastSun\t2:00\t0:30\tS\nRule\tNZ\t1946\tonly\t-\tJan\t 1\t0:00\t0\tS\n# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no\n# convenient notation for this so we must duplicate the Rule lines.\nRule\tNZ\t1974\tonly\t-\tNov\tSun>=1\t2:00s\t1:00\tD\nRule\tChatham\t1974\tonly\t-\tNov\tSun>=1\t2:45s\t1:00\tD\nRule\tNZ\t1975\tonly\t-\tFeb\tlastSun\t2:00s\t0\tS\nRule\tChatham\t1975\tonly\t-\tFeb\tlastSun\t2:45s\t0\tS\nRule\tNZ\t1975\t1988\t-\tOct\tlastSun\t2:00s\t1:00\tD\nRule\tChatham\t1975\t1988\t-\tOct\tlastSun\t2:45s\t1:00\tD\nRule\tNZ\t1976\t1989\t-\tMar\tSun>=1\t2:00s\t0\tS\nRule\tChatham\t1976\t1989\t-\tMar\tSun>=1\t2:45s\t0\tS\nRule\tNZ\t1989\tonly\t-\tOct\tSun>=8\t2:00s\t1:00\tD\nRule\tChatham\t1989\tonly\t-\tOct\tSun>=8\t2:45s\t1:00\tD\nRule\tNZ\t1990\t2006\t-\tOct\tSun>=1\t2:00s\t1:00\tD\nRule\tChatham\t1990\t2006\t-\tOct\tSun>=1\t2:45s\t1:00\tD\nRule\tNZ\t1990\t2007\t-\tMar\tSun>=15\t2:00s\t0\tS\nRule\tChatham\t1990\t2007\t-\tMar\tSun>=15\t2:45s\t0\tS\nRule\tNZ\t2007\tmax\t-\tSep\tlastSun\t2:00s\t1:00\tD\nRule\tChatham\t2007\tmax\t-\tSep\tlastSun\t2:45s\t1:00\tD\nRule\tNZ\t2008\tmax\t-\tApr\tSun>=1\t2:00s\t0\tS\nRule\tChatham\t2008\tmax\t-\tApr\tSun>=1\t2:45s\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Auckland\t11:39:04 -\tLMT\t1868 Nov  2\n\t\t\t11:30\tNZ\tNZ%sT\t1946 Jan  1\n\t\t\t12:00\tNZ\tNZ%sT\nZone Pacific/Chatham\t12:13:48 -\tLMT\t1957 Jan  1\n\t\t\t12:45\tChatham\tCHA%sT\n\n\n# Auckland Is\n# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,\n# and scientific personnel have wintered\n\n# Campbell I\n# minor whaling stations operated 1909/1914\n# scientific station operated 1941/1995;\n# previously whalers, sealers, pastoralists, and scientific personnel wintered\n# was probably like Pacific/Auckland\n\n###############################################################################\n\n\n# Niue\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Niue\t-11:19:40 -\tLMT\t1901\t\t# Alofi\n\t\t\t-11:20\t-\tNUT\t1951\t# Niue Time\n\t\t\t-11:30\t-\tNUT\t1978 Oct 1\n\t\t\t-11:00\t-\tNUT\n\n# Norfolk\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Norfolk\t11:11:52 -\tLMT\t1901\t\t# Kingston\n\t\t\t11:12\t-\tNMT\t1951\t# Norfolk Mean Time\n\t\t\t11:30\t-\tNFT\t\t# Norfolk Time\n\n# Palau (Belau)\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Palau\t8:57:56 -\tLMT\t1901\t\t# Koror\n\t\t\t9:00\t-\tPWT\t# Palau Time\n\n# Papua New Guinea\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Port_Moresby 9:48:40 -\tLMT\t1880\n\t\t\t9:48:32\t-\tPMMT\t1895\t# Port Moresby Mean Time\n\t\t\t10:00\t-\tPGT\t\t# Papua New Guinea Time\n\n# Pitcairn\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Pitcairn\t-8:40:20 -\tLMT\t1901\t\t# Adamstown\n\t\t\t-8:30\t-\tPNT\t1998 Apr 27 00:00\n\t\t\t-8:00\t-\tPST\t# Pitcairn Standard Time\n\n# American Samoa\nZone Pacific/Pago_Pago\t 12:37:12 -\tLMT\t1879 Jul  5\n\t\t\t-11:22:48 -\tLMT\t1911\n\t\t\t-11:30\t-\tSAMT\t1950\t\t# Samoa Time\n\t\t\t-11:00\t-\tNST\t1967 Apr\t# N=Nome\n\t\t\t-11:00\t-\tBST\t1983 Nov 30\t# B=Bering\n\t\t\t-11:00\t-\tSST\t\t\t# S=Samoa\n\n# Samoa\n\n# From Steffen Thorsen (2009-10-16):\n# We have been in contact with the government of Samoa again, and received\n# the following info:\n#\n# \"Cabinet has now approved Daylight Saving to be effected next year\n# commencing from the last Sunday of September 2010 and conclude first\n# Sunday of April 2011.\"\n#\n# Background info:\n# <a href=\"http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html\">\n# http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html\n# </a>\n#\n# Samoa's Daylight Saving Time Act 2009 is available here, but does not\n# contain any dates:\n# <a href=\"http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf\">\n# http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf\n# </a>\n\n# From Laupue Raymond Hughes (2010-10-07):\n# Please see\n# <a href=\"http://www.mcil.gov.ws\">\n# http://www.mcil.gov.ws\n# </a>,\n# the Ministry of Commerce, Industry and Labour (sideframe) \"Last Sunday\n# September 2010 (26/09/10) - adjust clocks forward from 12:00 midnight\n# to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks\n# backwards from 1:00am to 12:00am\"\n\n# From Laupue Raymond Hughes (2011-03-07):\n# I believe this will be posted shortly on the website\n# <a href=\"http://www.mcil.gov.ws\">\n# www.mcil.gov.ws\n# </a>\n#\n# PUBLIC NOTICE ON DAYLIGHT SAVING TIME\n#\n# Pursuant to the Daylight Saving Act 2009 and Cabinets decision,\n# businesses and the general public are hereby advised that daylight\n# saving time is on the first Saturday of April 2011 (02/04/11).\n#\n# The public is therefore advised that when the standard time strikes\n# the hour of four oclock (4.00am or 0400 Hours) on the 2nd April 2011,\n# then all instruments used to measure standard time are to be\n# adjusted/changed to three oclock (3:00am or 0300Hrs).\n#\n# Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,\n# INDUSTRY AND LABOUR 28th February 2011\n\n# From David Zuelke (2011-05-09):\n# Subject: Samoa to move timezone from east to west of international date line\n#\n# <a href=\"http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963\">\n# http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963\n# </a>\n\n# From Mark Sim-Smith (2011-08-17):\n# I have been in contact with Leilani Tuala Warren from the Samoa Law\n# Reform Commission, and she has sent me a copy of the Bill that she\n# confirmed has been passed...Most of the sections are about maps rather\n# than the time zone change, but I'll paste the relevant bits below. But\n# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa\n# changes from UTC-11 to UTC+13:\n#\n# International Date Line Bill 2011\n#\n# AN ACT to provide for the change to standard time in Samoa and to make\n# consequential amendments to the position of the International Date\n# Line, and for related purposes.\n#\n# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament\n# assembled as follows:\n#\n# 1. Short title and commencement-(1) This Act may be cited as the\n# International Date Line Act 2011. (2) Except for section 5(3) this Act\n# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)\n# Section 5(3) commences on the date of assent by the Head of State.\n#\n# [snip]\n#\n# 3. Interpretation - [snip] \"Samoa standard time\" in this Act and any\n# other statute of Samoa which refers to 'Samoa standard time' means the\n# time 13 hours in advance of Co-ordinated Universal Time.\n#\n# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa\n# standard time shall be set at 13 hours in advance of Co-ordinated\n# Universal Time for the whole of Samoa. (2) All references to Samoa's\n# time zone and to Samoa standard time in Samoa in all legislation and\n# instruments after the commencement of this Act shall be references to\n# Samoa standard time as provided for in this Act. (3) Nothing in this\n# Act affects the provisions of the Daylight Saving Act 2009, except that\n# it defines Samoa standard time....\n\n# From Laupue Raymond Hughes (2011-09-02):\n# <a href=\"http://www.mcil.gov.ws/mcil_publications.html\">\n# http://www.mcil.gov.ws/mcil_publications.html\n# </a>\n#\n# here is the official website publication for Samoa DST and dateline change\n#\n# DST\n# Year\tEnd\tTime\tStart\tTime\n# 2011\t- - -\t- - -\t24 September\t3:00am to 4:00am\n# 2012\t01 April\t4:00am to 3:00am\t- - -\t- - -\n#\n# Dateline Change skip Friday 30th Dec 2011\n# Thursday 29th December 2011\t23:59:59 Hours\n# Saturday 31st December 2011\t00:00:00 Hours\n#\n# Clarification by Tim Parenti (2012-01-03):\n# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012\n# seasons, there is not yet any indication that this trend will continue on\n# a regular basis. For now, we have explicitly listed the transitions below.\n#\n# From Nicky (2012-09-10):\n# Daylight Saving Time commences on Sunday 30th September 2012 and\n# ends on Sunday 7th of April 2013.\n#\n# Please find link below for more information.\n# http://www.mcil.gov.ws/mcil_publications.html\n#\n# That publication also includes dates for Summer of 2013/4 as well\n# which give the impression of a pattern in selecting dates for the\n# future, so for now, we will guess this will continue.\n\n# Western Samoa\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tWS\t2012\tmax\t-\tSep\tlastSun\t3:00\t1\tD\nRule\tWS\t2012\tmax\t-\tApr\tSun>=1\t4:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Apia\t 12:33:04 -\tLMT\t1879 Jul  5\n\t\t\t-11:26:56 -\tLMT\t1911\n\t\t\t-11:30\t-\tSAMT\t1950\t\t# Samoa Time\n\t\t\t-11:00\t-\tWST\t2010 Sep 26\n\t\t\t-11:00\t1:00\tWSDT\t2011 Apr 2 4:00\n\t\t\t-11:00\t-\tWST\t2011 Sep 24 3:00\n\t\t\t-11:00\t1:00\tWSDT\t2011 Dec 30\n\t\t\t 13:00\t1:00\tWSDT\t2012 Apr Sun>=1 4:00\n\t\t\t 13:00\tWS\tWS%sT\n\n# Solomon Is\n# excludes Bougainville, for which see Papua New Guinea\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Guadalcanal 10:39:48 -\tLMT\t1912 Oct\t# Honiara\n\t\t\t11:00\t-\tSBT\t# Solomon Is Time\n\n# Tokelau Is\n#\n# From Gwillim Law (2011-12-29)\n# A correspondent informed me that Tokelau, like Samoa, will be skipping\n# December 31 this year ...\n#\n# From Steffen Thorsen (2012-07-25)\n# ... we double checked by calling hotels and offices based in Tokelau asking\n# about the time there, and they all told a time that agrees with UTC+13....\n# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change\n# actually was to UTC-11 back then.\n#\n# From Paul Eggert (2012-07-25)\n# A Google Books snippet of Appendix to the Journals of the House of\n# Representatives of New Zealand, Session 1948,\n# <http://books.google.com/books?id=ZaVCAQAAIAAJ>, page 65, says Tokelau\n# was \"11 hours slow on G.M.T.\"  Go with Thorsen and assume Shanks & Pottenger\n# are off by an hour starting in 1901.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Fakaofo\t-11:24:56 -\tLMT\t1901\n\t\t\t-11:00\t-\tTKT 2011 Dec 30\t# Tokelau Time\n\t\t\t13:00\t-\tTKT\n\n# Tonga\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tTonga\t1999\tonly\t-\tOct\t 7\t2:00s\t1:00\tS\nRule\tTonga\t2000\tonly\t-\tMar\t19\t2:00s\t0\t-\nRule\tTonga\t2000\t2001\t-\tNov\tSun>=1\t2:00\t1:00\tS\nRule\tTonga\t2001\t2002\t-\tJan\tlastSun\t2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Tongatapu\t12:19:20 -\tLMT\t1901\n\t\t\t12:20\t-\tTOT\t1941 # Tonga Time\n\t\t\t13:00\t-\tTOT\t1999\n\t\t\t13:00\tTonga\tTO%sT\n\n# Tuvalu\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Funafuti\t11:56:52 -\tLMT\t1901\n\t\t\t12:00\t-\tTVT\t# Tuvalu Time\n\n\n# US minor outlying islands\n\n# Howland, Baker\n# Howland was mined for guano by American companies 1857-1878 and British\n# 1886-1891; Baker was similar but exact dates are not known.\n# Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;\n# uninhabited thereafter.\n# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;\n# see page 206 of Elgen M. Long and Marie K. Long,\n# Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).\n# So most likely Howland and Baker observed Hawaii Time from 1935\n# until they were abandoned after the war.\n\n# Jarvis\n# Mined for guano by American companies 1857-1879 and British 1883?-1891?.\n# Inhabited by civilians 1935-1942; IGY scientific base 1957-1958;\n# uninhabited thereafter.\n# no information; was probably like Pacific/Kiritimati\n\n# Johnston\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Pacific/Johnston\t-10:00\t-\tHST\n\n# Kingman\n# uninhabited\n\n# Midway\n#\n# From Mark Brader (2005-01-23):\n# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,\n# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]\n# reproduced a Pan American Airways timeables from 1936, for their weekly\n# \"Orient Express\" flights between San Francisco and Manila, and connecting\n# flights to Chicago and the US East Coast.  As it uses some time zone\n# designations that I've never seen before:....\n# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I.   H.L.T. Ar. 5:30P Sun.\n#  \"   3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A  \"\n#\nZone Pacific/Midway\t-11:49:28 -\tLMT\t1901\n\t\t\t-11:00\t-\tNST\t1956 Jun  3\n\t\t\t-11:00\t1:00\tNDT\t1956 Sep  2\n\t\t\t-11:00\t-\tNST\t1967 Apr\t# N=Nome\n\t\t\t-11:00\t-\tBST\t1983 Nov 30\t# B=Bering\n\t\t\t-11:00\t-\tSST\t\t\t# S=Samoa\n\n# Palmyra\n# uninhabited since World War II; was probably like Pacific/Kiritimati\n\n# Wake\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Wake\t11:06:28 -\tLMT\t1901\n\t\t\t12:00\t-\tWAKT\t# Wake Time\n\n\n# Vanuatu\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tVanuatu\t1983\tonly\t-\tSep\t25\t0:00\t1:00\tS\nRule\tVanuatu\t1984\t1991\t-\tMar\tSun>=23\t0:00\t0\t-\nRule\tVanuatu\t1984\tonly\t-\tOct\t23\t0:00\t1:00\tS\nRule\tVanuatu\t1985\t1991\t-\tSep\tSun>=23\t0:00\t1:00\tS\nRule\tVanuatu\t1992\t1993\t-\tJan\tSun>=23\t0:00\t0\t-\nRule\tVanuatu\t1992\tonly\t-\tOct\tSun>=23\t0:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Efate\t11:13:16 -\tLMT\t1912 Jan 13\t\t# Vila\n\t\t\t11:00\tVanuatu\tVU%sT\t# Vanuatu Time\n\n# Wallis and Futuna\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tPacific/Wallis\t12:15:20 -\tLMT\t1901\n\t\t\t12:00\t-\tWFT\t# Wallis & Futuna Time\n\n###############################################################################\n\n# NOTES\n\n# This data is by no means authoritative; if you think you know better,\n# go ahead and edit the file (and please send any changes to\n# tz@iana.org for general use in the future).\n\n# From Paul Eggert (2006-03-22):\n# A good source for time zone historical data outside the U.S. is\n# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),\n# San Diego: ACS Publications, Inc. (2003).\n#\n# Gwillim Law writes that a good source\n# for recent time zone data is the International Air Transport\n# Association's Standard Schedules Information Manual (IATA SSIM),\n# published semiannually.  Law sent in several helpful summaries\n# of the IATA's data after 1990.\n#\n# Except where otherwise noted, Shanks & Pottenger is the source for\n# entries through 1990, and IATA SSIM is the source for entries afterwards.\n#\n# Another source occasionally used is Edward W. Whitman, World Time Differences,\n# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which\n# I found in the UCLA library.\n#\n# A reliable and entertaining source about time zones is\n# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).\n#\n# I invented the abbreviations marked `*' in the following table;\n# the rest are from earlier versions of this file, or from other sources.\n# Corrections are welcome!\n#\t\tstd dst\n#\t\tLMT\tLocal Mean Time\n#\t  8:00\tWST WST\tWestern Australia\n#\t  8:45\tCWST CWST Central Western Australia*\n#\t  9:00\tJST\tJapan\n#\t  9:30\tCST CST\tCentral Australia\n#\t 10:00\tEST EST\tEastern Australia\n#\t 10:00\tChST\tChamorro\n#\t 10:30\tLHST LHST Lord Howe*\n#\t 11:30\tNZMT NZST New Zealand through 1945\n#\t 12:00\tNZST NZDT New Zealand 1946-present\n#\t 12:45\tCHAST CHADT Chatham*\n#\t-11:00\tSST\tSamoa\n#\t-10:00\tHST\tHawaii\n#\t- 8:00\tPST\tPitcairn*\n#\n# See the `northamerica' file for Hawaii.\n# See the `southamerica' file for Easter I and the Galapagos Is.\n\n###############################################################################\n\n# Australia\n\n# From Paul Eggert (2005-12-08):\n# <a href=\"http://www.bom.gov.au/climate/averages/tables/dst_times.shtml\">\n# Implementation Dates of Daylight Saving Time within Australia\n# </a> summarizes daylight saving issues in Australia.\n\n# From Arthur David Olson (2005-12-12):\n# <a href=\"http://www.lawlink.nsw.gov.au/lawlink/Corporate/ll_agdinfo.nsf/pages/community_relations_daylight_saving\">\n# Lawlink NSW:Daylight Saving in New South Wales\n# </a> covers New South Wales in particular.\n\n# From John Mackin (1991-03-06):\n# We in Australia have _never_ referred to DST as `daylight' time.\n# It is called `summer' time.  Now by a happy coincidence, `summer'\n# and `standard' happen to start with the same letter; hence, the\n# abbreviation does _not_ change...\n# The legislation does not actually define abbreviations, at least\n# in this State, but the abbreviation is just commonly taken to be the\n# initials of the phrase, and the legislation here uniformly uses\n# the phrase `summer time' and does not use the phrase `daylight\n# time'.\n# Announcers on the Commonwealth radio network, the ABC (for Australian\n# Broadcasting Commission), use the phrases `Eastern Standard Time'\n# or `Eastern Summer Time'.  (Note, though, that as I say in the\n# current australasia file, there is really no such thing.)  Announcers\n# on its overseas service, Radio Australia, use the same phrases\n# prefixed by the word `Australian' when referring to local times;\n# time announcements on that service, naturally enough, are made in UTC.\n\n# From Arthur David Olson (1992-03-08):\n# Given the above, what's chosen for year-round use is:\n#\tCST\tfor any place operating at a GMTOFF of 9:30\n#\tWST\tfor any place operating at a GMTOFF of 8:00\n#\tEST\tfor any place operating at a GMTOFF of 10:00\n\n# From Chuck Soper (2006-06-01):\n# I recently found this Australian government web page on time zones:\n# <http://www.australia.gov.au/about-australia-13time>\n# And this government web page lists time zone names and abbreviations:\n# <http://www.bom.gov.au/climate/averages/tables/daysavtm.shtml>\n\n# From Paul Eggert (2001-04-05), summarizing a long discussion about \"EST\"\n# versus \"AEST\" etc.:\n#\n# I see the following points of dispute:\n#\n# * How important are unique time zone abbreviations?\n#\n#   Here I tend to agree with the point (most recently made by Chris\n#   Newman) that unique abbreviations should not be essential for proper\n#   operation of software.  We have other instances of ambiguity\n#   (e.g. \"IST\" denoting both \"Israel Standard Time\" and \"Indian\n#   Standard Time\"), and they are not likely to go away any time soon.\n#   In the old days, some software mistakenly relied on unique\n#   abbreviations, but this is becoming less true with time, and I don't\n#   think it's that important to cater to such software these days.\n#\n#   On the other hand, there is another motivation for unambiguous\n#   abbreviations: it cuts down on human confusion.  This is\n#   particularly true for Australia, where \"EST\" can mean one thing for\n#   time T and a different thing for time T plus 1 second.\n#\n# * Does the relevant legislation indicate which abbreviations should be used?\n#\n#   Here I tend to think that things are a mess, just as they are in\n#   many other countries.  We Americans are currently disagreeing about\n#   which abbreviation to use for the newly legislated Chamorro Standard\n#   Time, for example.\n#\n#   Personally, I would prefer to use common practice; I would like to\n#   refer to legislation only for examples of common practice, or as a\n#   tiebreaker.\n#\n# * Do Australians more often use \"Eastern Daylight Time\" or \"Eastern\n#   Summer Time\"?  Do they typically prefix the time zone names with\n#   the word \"Australian\"?\n#\n#   My own impression is that both \"Daylight Time\" and \"Summer Time\" are\n#   common and are widely understood, but that \"Summer Time\" is more\n#   popular; and that the leading \"A\" is also common but is omitted more\n#   often than not.  I just used AltaVista advanced search and got the\n#   following count of page hits:\n#\n#     1,103 \"Eastern Summer Time\" AND domain:au\n#       971 \"Australian Eastern Summer Time\" AND domain:au\n#       613 \"Eastern Daylight Time\" AND domain:au\n#       127 \"Australian Eastern Daylight Time\" AND domain:au\n#\n#   Here \"Summer\" seems quite a bit more popular than \"Daylight\",\n#   particularly when we know the time zone is Australian and not US,\n#   say.  The \"Australian\" prefix seems to be popular for Eastern Summer\n#   Time, but unpopular for Eastern Daylight Time.\n#\n#   For abbreviations, tools like AltaVista are less useful because of\n#   ambiguity.  Many hits are not really time zones, unfortunately, and\n#   many hits denote US time zones and not Australian ones.  But here\n#   are the hit counts anyway:\n#\n#     161,304 \"EST\" and domain:au\n#      25,156 \"EDT\" and domain:au\n#      18,263 \"AEST\" and domain:au\n#      10,416 \"AEDT\" and domain:au\n#\n#      14,538 \"CST\" and domain:au\n#       5,728 \"CDT\" and domain:au\n#         176 \"ACST\" and domain:au\n#          29 \"ACDT\" and domain:au\n#\n#       7,539 \"WST\" and domain:au\n#          68 \"AWST\" and domain:au\n#\n#   This data suggest that Australians tend to omit the \"A\" prefix in\n#   practice.  The situation for \"ST\" versus \"DT\" is less clear, given\n#   the ambiguities involved.\n#\n# * How do Australians feel about the abbreviations in the tz database?\n#\n#   If you just count Australians on this list, I count 2 in favor and 3\n#   against.  One of the \"against\" votes (David Keegel) counseled delay,\n#   saying that both AEST/AEDT and EST/EST are widely used and\n#   understood in Australia.\n\n# From Paul Eggert (1995-12-19):\n# Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.\n# Mark Prior writes that his newspaper\n# reports that NSW's fall 1995 change will occur at 2:00,\n# but Robert Elz says it's been 3:00 in Victoria since 1970\n# and perhaps the newspaper's `2:00' is referring to standard time.\n# For now we'll continue to assume 2:00s for changes since 1960.\n\n# From Eric Ulevik (1998-01-05):\n#\n# Here are some URLs to Australian time legislation. These URLs are stable,\n# and should probably be included in the data file. There are probably more\n# relevant entries in this database.\n#\n# NSW (including LHI and Broken Hill):\n# <a href=\"http://www.austlii.edu.au/au/legis/nsw/consol_act/sta1987137/index.html\">\n# Standard Time Act 1987 (updated 1995-04-04)\n# </a>\n# ACT\n# <a href=\"http://www.austlii.edu.au/au/legis/act/consol_act/stasta1972279/index.html\">\n# Standard Time and Summer Time Act 1972\n# </a>\n# SA\n# <a href=\"http://www.austlii.edu.au/au/legis/sa/consol_act/sta1898137/index.html\">\n# Standard Time Act, 1898\n# </a>\n\n# From David Grosz (2005-06-13):\n# It was announced last week that Daylight Saving would be extended by\n# one week next year to allow for the 2006 Commonwealth Games.\n# Daylight Saving is now to end for next year only on the first Sunday\n# in April instead of the last Sunday in March.\n#\n# From Gwillim Law (2005-06-14):\n# I did some Googling and found that all of those states (and territory) plan\n# to extend DST together in 2006.\n# ACT: http://www.cmd.act.gov.au/mediareleases/fileread.cfm?file=86.txt\n# New South Wales: http://www.thecouriermail.news.com.au/common/story_page/0,5936,15538869%255E1702,00.html\n# South Australia: http://www.news.com.au/story/0,10117,15555031-1246,00.html\n# Tasmania: http://www.media.tas.gov.au/release.php?id=14772\n# Victoria: I wasn't able to find anything separate, but the other articles\n# allude to it.\n# But not Queensland\n# http://www.news.com.au/story/0,10117,15564030-1248,00.html.\n\n# Northern Territory\n\n# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):\n# # The NORTHERN TERRITORY..  [ Courtesy N.T. Dept of the Chief Minister ]\n# #\t\t\t\t\t[ Nov 1990 ]\n# #\tN.T. have never utilised any DST due to sub-tropical/tropical location.\n# ...\n# Zone        Australia/North         9:30    -       CST\n\n# From Bradley White (1991-03-04):\n# A recent excerpt from an Australian newspaper...\n# the Northern Territory do[es] not have daylight saving.\n\n# Western Australia\n\n# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):\n# #  The state of WESTERN AUSTRALIA..  [ Courtesy W.A. dept Premier+Cabinet ]\n# #\t\t\t\t\t\t[ Nov 1990 ]\n# #\tW.A. suffers from a great deal of public and political opposition to\n# #\tDST in principle. A bill is brought before parliament in most years, but\n# #\tusually defeated either in the upper house, or in party caucus\n# #\tbefore reaching parliament.\n# ...\n# Zone\tAustralia/West\t\t8:00\tAW\t%sST\n# ...\n# Rule\tAW\t1974\tonly\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\tAW\t1975\tonly\t-\tMar\tSun>=1\t3:00\t0\tW\n# Rule\tAW\t1983\tonly\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\tAW\t1984\tonly\t-\tMar\tSun>=1\t3:00\t0\tW\n\n# From Bradley White (1991-03-04):\n# A recent excerpt from an Australian newspaper...\n# Western Australia...do[es] not have daylight saving.\n\n# From John D. Newman via Bradley White (1991-11-02):\n# Western Australia is still on \"winter time\". Some DH in Sydney\n# rang me at home a few days ago at 6.00am. (He had just arrived at\n# work at 9.00am.)\n# W.A. is switching to Summer Time on Nov 17th just to confuse\n# everybody again.\n\n# From Arthur David Olson (1992-03-08):\n# The 1992 ending date used in the rules is a best guess;\n# it matches what was used in the past.\n\n# <a href=\"http://www.bom.gov.au/faq/faqgen.htm\">\n# The Australian Bureau of Meteorology FAQ\n# </a> (1999-09-27) writes that Giles Meteorological Station uses\n# South Australian time even though it's located in Western Australia.\n\n# Queensland\n# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):\n# #   The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]\n# #\t\t\t\t\t\t[ Dec 1990 ]\n# ...\n# Zone\tAustralia/Queensland\t10:00\tAQ\t%sST\n# ...\n# Rule\tAQ\t1971\tonly\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\tAQ\t1972\tonly\t-\tFeb\tlastSun\t3:00\t0\tE\n# Rule\tAQ\t1989\tmax\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\tAQ\t1990\tmax\t-\tMar\tSun>=1\t3:00\t0\tE\n\n# From Bradley White (1989-12-24):\n# \"Australia/Queensland\" now observes daylight time (i.e. from\n# October 1989).\n\n# From Bradley White (1991-03-04):\n# A recent excerpt from an Australian newspaper...\n# ...Queensland...[has] agreed to end daylight saving\n# at 3am tomorrow (March 3)...\n\n# From John Mackin (1991-03-06):\n# I can certainly confirm for my part that Daylight Saving in NSW did in fact\n# end on Sunday, 3 March.  I don't know at what hour, though.  (It surprised\n# me.)\n\n# From Bradley White (1992-03-08):\n# ...there was recently a referendum in Queensland which resulted\n# in the experimental daylight saving system being abandoned. So, ...\n# ...\n# Rule\tQLD\t1989\t1991\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\tQLD\t1990\t1992\t-\tMar\tSun>=1\t3:00\t0\tS\n# ...\n\n# From Arthur David Olson (1992-03-08):\n# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.\n\n# From Christopher Hunt (2006-11-21), after an advance warning\n# from Jesper Norgaard Welen (2006-11-01):\n# WA are trialing DST for three years.\n# <http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf>\n\n# From Rives McDow (2002-04-09):\n# The most interesting region I have found consists of three towns on the\n# southern coast....  South Australia observes daylight saving time; Western\n# Australia does not.  The two states are one and a half hours apart.  The\n# residents decided to forget about this nonsense of changing the clock so\n# much and set the local time 20 hours and 45 minutes from the\n# international date line, or right in the middle of the time of South\n# Australia and Western Australia....\n#\n# From Paul Eggert (2002-04-09):\n# This is confirmed by the section entitled\n# \"What's the deal with time zones???\" in\n# <http://www.earthsci.unimelb.edu.au/~awatkins/null.html>.\n#\n# From Alex Livingston (2006-12-07):\n# ... it was just on four years ago that I drove along the Eyre Highway,\n# which passes through eastern Western Australia close to the southern\n# coast of the continent.\n#\n# I paid particular attention to the time kept there. There can be no\n# dispute that UTC+08:45 was considered \"the time\" from the border\n# village just inside the border with South Australia to as far west\n# as just east of Caiguna. There can also be no dispute that Eucla is\n# the largest population centre in this zone....\n#\n# Now that Western Australia is observing daylight saving, the\n# question arose whether this part of the state would follow suit. I\n# just called the border village and confirmed that indeed they have,\n# meaning that they are now observing UTC+09:45.\n#\n# (2006-12-09):\n# I personally doubt that either experimentation with daylight saving\n# in WA or its introduction in SA had anything to do with the genesis\n# of this time zone.  My hunch is that it's been around since well\n# before 1975.  I remember seeing it noted on road maps decades ago.\n\n# From Paul Eggert (2006-12-15):\n# For lack of better info, assume the tradition dates back to the\n# introduction of standard time in 1895.\n\n\n# southeast Australia\n#\n# From Paul Eggert (2007-07-23):\n# Starting autumn 2008 Victoria, NSW, South Australia, Tasmania and the ACT\n# end DST the first Sunday in April and start DST the first Sunday in October.\n# http://www.theage.com.au/news/national/daylight-savings-to-span-six-months/2007/06/27/1182623966703.html\n\n\n# South Australia\n\n# From Bradley White (1991-03-04):\n# A recent excerpt from an Australian newspaper...\n# ...South Australia...[has] agreed to end daylight saving\n# at 3am tomorrow (March 3)...\n\n# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):\n# #   The state of SOUTH AUSTRALIA....[ Courtesy of S.A. Dept of Labour ]\n# #\t\t\t\t\t\t[ Nov 1990 ]\n# ...\n# Zone\tAustralia/South\t\t9:30\tAS\t%sST\n# ...\n# Rule\t AS\t1971\tmax\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\t AS\t1972\t1985\t-\tMar\tSun>=1\t3:00\t0\tC\n# Rule\t AS\t1986\t1990\t-\tMar\tSun>=15\t3:00\t0\tC\n# Rule\t AS\t1991\tmax\t-\tMar\tSun>=1\t3:00\t0\tC\n\n# From Bradley White (1992-03-11):\n# Recent correspondence with a friend in Adelaide\n# contained the following exchange:  \"Due to the Adelaide Festival,\n# South Australia delays setting back our clocks for a few weeks.\"\n\n# From Robert Elz (1992-03-13):\n# I heard that apparently (or at least, it appears that)\n# South Aus will have an extra 3 weeks daylight saving every even\n# numbered year (from 1990).  That's when the Adelaide Festival\n# is on...\n\n# From Robert Elz (1992-03-16, 00:57:07 +1000):\n# DST didn't end in Adelaide today (yesterday)....\n# But whether it's \"4th Sunday\" or \"2nd last Sunday\" I have no idea whatever...\n# (it's just as likely to be \"the Sunday we pick for this year\"...).\n\n# From Bradley White (1994-04-11):\n# If Sun, 15 March, 1992 was at +1030 as kre asserts, but yet Sun, 20 March,\n# 1994 was at +0930 as John Connolly's customer seems to assert, then I can\n# only conclude that the actual rule is more complicated....\n\n# From John Warburton (1994-10-07):\n# The new Daylight Savings dates for South Australia ...\n# was gazetted in the Government Hansard on Sep 26 1994....\n# start on last Sunday in October and end in last sunday in March.\n\n# From Paul Eggert (2007-07-23):\n# See \"southeast Australia\" above for 2008 and later.\n\n# Tasmania\n\n# The rules for 1967 through 1991 were reported by George Shepherd\n# via Simon Woodhead via Robert Elz (1991-03-06):\n# #  The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]\n# #\t\t\t\t\t[ Nov 1990 ]\n\n# From Bill Hart via Guy Harris (1991-10-10):\n# Oh yes, the new daylight savings rules are uniquely tasmanian, we have\n# 6 weeks a year now when we are out of sync with the rest of Australia\n# (but nothing new about that).\n\n# From Alex Livingston (1999-10-04):\n# I heard on the ABC (Australian Broadcasting Corporation) radio news on the\n# (long) weekend that Tasmania, which usually goes its own way in this regard,\n# has decided to join with most of NSW, the ACT, and most of Victoria\n# (Australia) and start daylight saving on the last Sunday in August in 2000\n# instead of the first Sunday in October.\n\n# Sim Alam (2000-07-03) reported a legal citation for the 2000/2001 rules:\n# http://www.thelaw.tas.gov.au/fragview/42++1968+GS3A@EN+2000070300\n\n# From Paul Eggert (2007-07-23):\n# See \"southeast Australia\" above for 2008 and later.\n\n# Victoria\n\n# The rules for 1971 through 1991 were reported by George Shepherd\n# via Simon Woodhead via Robert Elz (1991-03-06):\n# #   The state of VICTORIA.. [ Courtesy of Vic. Dept of Premier + Cabinet ]\n# #\t\t\t\t\t\t[ Nov 1990 ]\n\n# From Scott Harrington (2001-08-29):\n# On KQED's \"City Arts and Lectures\" program last night I heard an\n# interesting story about daylight savings time.  Dr. John Heilbron was\n# discussing his book \"The Sun in the Church: Cathedrals as Solar\n# Observatories\"[1], and in particular the Shrine of Remembrance[2] located\n# in Melbourne, Australia.\n#\n# Apparently the shrine's main purpose is a beam of sunlight which\n# illuminates a special spot on the floor at the 11th hour of the 11th day\n# of the 11th month (Remembrance Day) every year in memory of Australia's\n# fallen WWI soldiers.  And if you go there on Nov. 11, at 11am local time,\n# you will indeed see the sunbeam illuminate the special spot at the\n# expected time.\n#\n# However, that is only because of some special mirror contraption that had\n# to be employed, since due to daylight savings time, the true solar time of\n# the remembrance moment occurs one hour later (or earlier?).  Perhaps\n# someone with more information on this jury-rig can tell us more.\n#\n# [1] http://www.hup.harvard.edu/catalog/HEISUN.html\n# [2] http://www.shrine.org.au\n\n# From Paul Eggert (2007-07-23):\n# See \"southeast Australia\" above for 2008 and later.\n\n# New South Wales\n\n# From Arthur David Olson:\n# New South Wales and subjurisdictions have their own ideas of a fun time.\n# Based on law library research by John Mackin,\n# who notes:\n#\tIn Australia, time is not legislated federally, but rather by the\n#\tindividual states.  Thus, while such terms as ``Eastern Standard Time''\n#\t[I mean, of course, Australian EST, not any other kind] are in common\n#\tuse, _they have NO REAL MEANING_, as they are not defined in the\n#\tlegislation.  This is very important to understand.\n#\tI have researched New South Wales time only...\n\n# From Eric Ulevik (1999-05-26):\n# DST will start in NSW on the last Sunday of August, rather than the usual\n# October in 2000.  [See: Matthew Moore,\n# <a href=\"http://www.smh.com.au/news/9905/26/pageone/pageone4.html\">\n# Two months more daylight saving\n# </a>\n# Sydney Morning Herald (1999-05-26).]\n\n# From Paul Eggert (1999-09-27):\n# See the following official NSW source:\n# <a href=\"http://dir.gis.nsw.gov.au/cgi-bin/genobject/document/other/daylightsaving/tigGmZ\">\n# Daylight Saving in New South Wales.\n# </a>\n#\n# Narrabri Shire (NSW) council has announced it will ignore the extension of\n# daylight saving next year.  See:\n# <a href=\"http://abc.net.au/news/regionals/neweng/monthly/regeng-22jul1999-1.htm\">\n# Narrabri Council to ignore daylight saving\n# </a> (1999-07-22).  For now, we'll wait to see if this really happens.\n#\n# Victoria will following NSW.  See:\n# <a href=\"http://abc.net.au/local/news/olympics/1999/07/item19990728112314_1.htm\">\n# Vic to extend daylight saving\n# </a> (1999-07-28).\n#\n# However, South Australia rejected the DST request.  See:\n# <a href=\"http://abc.net.au/news/olympics/1999/07/item19990719151754_1.htm\">\n# South Australia rejects Olympics daylight savings request\n# </a> (1999-07-19).\n#\n# Queensland also will not observe DST for the Olympics.  See:\n# <a href=\"http://abc.net.au/news/olympics/1999/06/item19990601114608_1.htm\">\n# Qld says no to daylight savings for Olympics\n# </a> (1999-06-01), which quotes Queensland Premier Peter Beattie as saying\n# ``Look you've got to remember in my family when this came up last time\n# I voted for it, my wife voted against it and she said to me it's all very\n# well for you, you don't have to worry about getting the children out of\n# bed, getting them to school, getting them to sleep at night.\n# I've been through all this argument domestically...my wife rules.''\n#\n# Broken Hill will stick with South Australian time in 2000.  See:\n# <a href=\"http://abc.net.au/news/regionals/brokenh/monthly/regbrok-21jul1999-6.htm\">\n# Broken Hill to be behind the times\n# </a> (1999-07-21).\n\n# IATA SSIM (1998-09) says that the spring 2000 change for Australian\n# Capital Territory, New South Wales except Lord Howe Island and Broken\n# Hill, and Victoria will be August 27, presumably due to the Sydney Olympics.\n\n# From Eric Ulevik, referring to Sydney's Sun Herald (2000-08-13), page 29:\n# The Queensland Premier Peter Beattie is encouraging northern NSW\n# towns to use Queensland time.\n\n# From Paul Eggert (2007-07-23):\n# See \"southeast Australia\" above for 2008 and later.\n\n# Yancowinna\n\n# From John Mackin (1989-01-04):\n# `Broken Hill' means the County of Yancowinna.\n\n# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):\n# # YANCOWINNA..  [ Confirmation courtesy of Broken Hill Postmaster ]\n# #\t\t\t\t\t[ Dec 1990 ]\n# ...\n# # Yancowinna uses Central Standard Time, despite [its] location on the\n# # New South Wales side of the S.A. border. Most business and social dealings\n# # are with CST zones, therefore CST is legislated by local government\n# # although the switch to Summer Time occurs in line with N.S.W. There have\n# # been years when this did not apply, but the historical data is not\n# # presently available.\n# Zone\tAustralia/Yancowinna\t9:30\t AY\t%sST\n# ...\n# Rule\t AY\t1971\t1985\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\t AY\t1972\tonly\t-\tFeb\tlastSun\t3:00\t0\tC\n# [followed by other Rules]\n\n# Lord Howe Island\n\n# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):\n# LHI...\t\t[ Courtesy of Pauline Van Winsen ]\n#\t\t\t\t\t[ Dec 1990 ]\n# Lord Howe Island is located off the New South Wales coast, and is half an\n# hour ahead of NSW time.\n\n# From James Lonergan, Secretary, Lord Howe Island Board (2000-01-27):\n# Lord Howe Island summer time in 2000/2001 will commence on the same\n# date as the rest of NSW (i.e. 2000-08-27).  For your information the\n# Lord Howe Island Board (controlling authority for the Island) is\n# seeking the community's views on various options for summer time\n# arrangements on the Island, e.g. advance clocks by 1 full hour\n# instead of only 30 minutes.  [Dependent] on the wishes of residents\n# the Board may approach the NSW government to change the existing\n# arrangements.  The starting date for summer time on the Island will\n# however always coincide with the rest of NSW.\n\n# From James Lonergan, Secretary, Lord Howe Island Board (2000-10-25):\n# Lord Howe Island advances clocks by 30 minutes during DST in NSW and retards\n# clocks by 30 minutes when DST finishes. Since DST was most recently\n# introduced in NSW, the \"changeover\" time on the Island has been 02:00 as\n# shown on clocks on LHI. I guess this means that for 30 minutes at the start\n# of DST, LHI is actually 1 hour ahead of the rest of NSW.\n\n# From Paul Eggert (2006-03-22):\n# For Lord Howe dates we use Shanks & Pottenger through 1989, and\n# Lonergan thereafter.  For times we use Lonergan.\n\n# From Paul Eggert (2007-07-23):\n# See \"southeast Australia\" above for 2008 and later.\n\n# From Steffen Thorsen (2009-04-28):\n# According to the official press release, South Australia's extended daylight\n# saving period will continue with the same rules as used during the 2008-2009\n# summer (southern hemisphere).\n#\n# From\n# <a href=\"http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf\">\n# http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf\n# </a>\n# The extended daylight saving period that South Australia has been trialling\n# for over the last year is now set to be ongoing.\n# Daylight saving will continue to start on the first Sunday in October each\n# year and finish on the first Sunday in April the following year.\n# Industrial Relations Minister, Paul Caica, says this provides South Australia\n# with a consistent half hour time difference with NSW, Victoria, Tasmania and\n# the ACT for all 52 weeks of the year...\n#\n# We have a wrap-up here:\n# <a href=\"http://www.timeanddate.com/news/time/south-australia-extends-dst.html\">\n# http://www.timeanddate.com/news/time/south-australia-extends-dst.html\n# </a>\n###############################################################################\n\n# New Zealand\n\n# From Mark Davies (1990-10-03):\n# the 1989/90 year was a trial of an extended \"daylight saving\" period.\n# This trial was deemed successful and the extended period adopted for\n# subsequent years (with the addition of a further week at the start).\n# source -- phone call to Ministry of Internal Affairs Head Office.\n\n# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):\n# # The Country of New Zealand   (Australia's east island -) Gee they hate that!\n# #\t\t\t\t   or is Australia the west island of N.Z.\n# #\t[ courtesy of Geoff Tribble.. Auckland N.Z. ]\n# #\t\t\t\t[ Nov 1990 ]\n# ...\n# Rule\tNZ      1974    1988\t-\tOct\tlastSun\t2:00\t1:00\tD\n# Rule\tNZ\t1989\tmax\t-\tOct\tSun>=1\t2:00\t1:00\tD\n# Rule\tNZ      1975    1989\t-\tMar\tSun>=1\t3:00\t0\tS\n# Rule\tNZ\t1990\tmax\t-\tMar\tlastSun\t3:00\t0\tS\n# ...\n# Zone\tNZ\t\t\t12:00\tNZ\t\tNZ%sT\t# New Zealand\n# Zone\tNZ-CHAT\t\t\t12:45\t-\t\tNZ-CHAT # Chatham Island\n\n# From Arthur David Olson (1992-03-08):\n# The chosen rules use the Davies October 8 values for the start of DST in 1989\n# rather than the October 1 value.\n\n# From Paul Eggert (1995-12-19);\n# Shank & Pottenger report 2:00 for all autumn changes in Australia and NZ.\n# Robert Uzgalis writes that the New Zealand Daylight\n# Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard\n# time on both the first Sunday in October and the third Sunday in March.\n# As with Australia, we'll assume the tradition is 2:00s, not 2:00.\n#\n# From Paul Eggert (2006-03-22):\n# The Department of Internal Affairs (DIA) maintains a brief history,\n# as does Carol Squires; see tz-link.htm for the full references.\n# Use these sources in preference to Shanks & Pottenger.\n#\n# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with\n# transitions at 2:45 local standard time; this confirms that Chatham\n# is always exactly 45 minutes ahead of Auckland.\n\n# From Colin Sharples (2007-04-30):\n# DST will now start on the last Sunday in September, and end on the\n# first Sunday in April.  The changes take effect this year, meaning\n# that DST will begin on 2007-09-30 2008-04-06.\n# http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended\n\n###############################################################################\n\n\n# Fiji\n\n# Howse writes (p 153) that in 1879 the British governor of Fiji\n# enacted an ordinance standardizing the islands on Antipodean Time\n# instead of the American system (which was one day behind).\n\n# From Rives McDow (1998-10-08):\n# Fiji will introduce DST effective 0200 local time, 1998-11-01\n# until 0300 local time 1999-02-28.  Each year the DST period will\n# be from the first Sunday in November until the last Sunday in February.\n\n# From Paul Eggert (2000-01-08):\n# IATA SSIM (1999-09) says DST ends 0100 local time.  Go with McDow.\n\n# From the BBC World Service (1998-10-31 11:32 UTC):\n# The Fijiian government says the main reasons for the time change is to\n# improve productivity and reduce road accidents.  But correspondents say it\n# also hopes the move will boost Fiji's ability to compete with other pacific\n# islands in the effort to attract tourists to witness the dawning of the new\n# millenium.\n\n# http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)\n# reports that Fiji has discontinued DST.\n\n# Johnston\n\n# Johnston data is from usno1995.\n\n\n# Kiribati\n\n# From Paul Eggert (1996-01-22):\n# Today's _Wall Street Journal_ (page 1) reports that Kiribati\n# ``declared it the same day [throughout] the country as of Jan. 1, 1995''\n# as part of the competition to be first into the 21st century.\n\n\n# Kwajalein\n\n# In comp.risks 14.87 (26 August 1993), Peter Neumann writes:\n# I wonder what happened in Kwajalein, where there was NO Friday,\n# 1993-08-20.  Thursday night at midnight Kwajalein switched sides with\n# respect to the International Date Line, to rejoin its fellow islands,\n# going from 11:59 p.m. Thursday to 12:00 m. Saturday in a blink.\n\n\n# N Mariana Is, Guam\n\n# Howse writes (p 153) ``The Spaniards, on the other hand, reached the\n# Philippines and the Ladrones from America,'' and implies that the Ladrones\n# (now called the Marianas) kept American date for quite some time.\n# For now, we assume the Ladrones switched at the same time as the Philippines;\n# see Asia/Manila.\n\n# US Public Law 106-564 (2000-12-23) made UTC+10 the official standard time,\n# under the name \"Chamorro Standard Time\".  There is no official abbreviation,\n# but Congressman Robert A. Underwood, author of the bill that became law,\n# wrote in a press release (2000-12-27) that he will seek the use of \"ChST\".\n\n\n# Micronesia\n\n# Alan Eugene Davis writes (1996-03-16),\n# ``I am certain, having lived there for the past decade, that \"Truk\"\n# (now properly known as Chuuk) ... is in the time zone GMT+10.''\n#\n# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11\n# on 1978-10-01; ignore this for now.\n\n# From Paul Eggert (1999-10-29):\n# The Federated States of Micronesia Visitors Board writes in\n# <a href=\"http://www.fsmgov.org/info/clocks.html\">\n# The Federated States of Micronesia - Visitor Information\n# </a> (1999-01-26)\n# that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.\n# We don't know when Kosrae switched from UTC+12; assume January 1 for now.\n\n\n# Midway\n\n# From Charles T O'Connor, KMTH DJ (1956),\n# quoted in the KTMH section of the Radio Heritage Collection\n# <http://radiodx.com/spdxr/KMTH.htm> (2002-12-31):\n# For the past two months we've been on what is known as Daylight\n# Saving Time.  This time has put us on air at 5am in the morning,\n# your time down there in New Zealand.  Starting September 2, 1956\n# we'll again go back to Standard Time.  This'll mean that we'll go to\n# air at 6am your time.\n#\n# From Paul Eggert (2003-03-23):\n# We don't know the date of that quote, but we'll guess they\n# started DST on June 3.  Possibly DST was observed other years\n# in Midway, but we have no record of it.\n\n\n# Pitcairn\n\n# From Rives McDow (1999-11-08):\n# A Proclamation was signed by the Governor of Pitcairn on the 27th March 1998\n# with regard to Pitcairn Standard Time.  The Proclamation is as follows.\n#\n#\tThe local time for general purposes in the Islands shall be\n#\tCo-ordinated Universal time minus 8 hours and shall be known\n#\tas Pitcairn Standard Time.\n#\n# ... I have also seen Pitcairn listed as UTC minus 9 hours in several\n# references, and can only assume that this was an error in interpretation\n# somehow in light of this proclamation.\n\n# From Rives McDow (1999-11-09):\n# The Proclamation regarding Pitcairn time came into effect on 27 April 1998\n# ... at midnight.\n\n# From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave:\n# Betty Christian told me yesterday that their local time is the same as\n# Pacific Standard Time. They used to be 1/2 hour different from us here in\n# Sacramento but it was changed a couple of years ago.\n\n\n# Samoa\n\n# Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)\n# that in 1879 the King of Samoa decided to change\n# ``the date in his kingdom from the Antipodean to the American system,\n# ordaining -- by a masterpiece of diplomatic flattery -- that\n# the Fourth of July should be celebrated twice in that year.''\n\n\n# Tonga\n\n# From Paul Eggert (1996-01-22):\n# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting\n# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''\n# Since Kiribati has moved the Date Line it's not clear what Tonga will do.\n\n# Don Mundell writes in the 1997-02-20 Tonga Chronicle\n# <a href=\"http://www.tongatapu.net.to/tonga/homeland/timebegins.htm\">\n# How Tonga became `The Land where Time Begins'\n# </a>:\n\n# Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST\n# 12 hours and 20 minutes ahead of GMT.  When New Zealand adjusted its\n# standard time in 1940s, Tonga had the choice of subtracting from its\n# local time to come on the same standard time as New Zealand or of\n# advancing its time to maintain the differential of 13 degrees\n# (approximately 50 minutes ahead of New Zealand time).\n#\n# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince\n# Tungi, preferred to ensure Tonga's title as the land where time\n# begins, the Legislative Assembly approved the latter change.\n#\n# But some of the older, more conservative members from the outer\n# islands objected. \"If at midnight on Dec. 31, we move ahead 40\n# minutes, as your Royal Highness wishes, what becomes of the 40\n# minutes we have lost?\"\n#\n# The Crown Prince, presented an unanswerable argument: \"Remember that\n# on the World Day of Prayer, you would be the first people on Earth\n# to say your prayers in the morning.\"\n\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.\n\n# From Eric Ulevik (1999-05-03):\n# Tonga's director of tourism, who is also secretary of the National Millenium\n# Committee, has a plan to get Tonga back in front.\n# He has proposed a one-off move to tropical daylight saving for Tonga from\n# October to March, which has won approval in principle from the Tongan\n# Government.\n\n# From Steffen Thorsen (1999-09-09):\n# * Tonga will introduce DST in November\n#\n# I was given this link by John Letts:\n# <a href=\"http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm\">\n# http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm\n# </a>\n#\n# I have not been able to find exact dates for the transition in November\n# yet. By reading this article it seems like Fiji will be 14 hours ahead\n# of UTC as well, but as far as I know Fiji will only be 13 hours ahead\n# (12 + 1 hour DST).\n\n# From Arthur David Olson (1999-09-20):\n# According to <a href=\"http://www.tongaonline.com/news/sept1799.html\">\n# http://www.tongaonline.com/news/sept1799.html\n# </a>:\n# \"Daylight Savings Time will take effect on Oct. 2 through April 15, 2000\n# and annually thereafter from the first Saturday in October through the\n# third Saturday of April.  Under the system approved by Privy Council on\n# Sept. 10, clocks must be turned ahead one hour on the opening day and\n# set back an hour on the closing date.\"\n# Alas, no indication of the time of day.\n\n# From Rives McDow (1999-10-06):\n# Tonga started its Daylight Saving on Saturday morning October 2nd at 0200am.\n# Daylight Saving ends on April 16 at 0300am which is Sunday morning.\n\n# From Steffen Thorsen (2000-10-31):\n# Back in March I found a notice on the website http://www.tongaonline.com\n# that Tonga changed back to standard time one month early, on March 19\n# instead of the original reported date April 16. Unfortunately, the article\n# is no longer available on the site, and I did not make a copy of the\n# text, and I have forgotten to report it here.\n# (Original URL was: http://www.tongaonline.com/news/march162000.htm )\n\n# From Rives McDow (2000-12-01):\n# Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27.\n\n# From Sione Moala-Mafi (2001-09-20) via Rives McDow:\n# At 2:00am on the first Sunday of November, the standard time in the Kingdom\n# shall be moved forward by one hour to 3:00am.  At 2:00am on the last Sunday\n# of January the standard time in the Kingdom shall be moved backward by one\n# hour to 1:00am.\n\n# From Pulu 'Anau (2002-11-05):\n# The law was for 3 years, supposedly to get renewed.  It wasn't.\n\n\n# Wake\n\n# From Vernice Anderson, Personal Secretary to Philip Jessup,\n# US Ambassador At Large (oral history interview, 1971-02-02):\n#\n# Saturday, the 14th [of October, 1950] -- ...  The time was all the\n# more confusing at that point, because we had crossed the\n# International Date Line, thus getting two Sundays.  Furthermore, we\n# discovered that Wake Island had two hours of daylight saving time\n# making calculation of time in Washington difficult if not almost\n# impossible.\n#\n# http://www.trumanlibrary.org/wake/meeting.htm\n\n# From Paul Eggert (2003-03-23):\n# We have no other report of DST in Wake Island, so omit this info for now.\n\n###############################################################################\n\n# The International Date Line\n\n# From Gwillim Law (2000-01-03):\n#\n# The International Date Line is not defined by any international standard,\n# convention, or treaty.  Mapmakers are free to draw it as they please.\n# Reputable mapmakers will simply ensure that every point of land appears on\n# the correct side of the IDL, according to the date legally observed there.\n#\n# When Kiribati adopted a uniform date in 1995, thereby moving the Phoenix and\n# Line Islands to the west side of the IDL (or, if you prefer, moving the IDL\n# to the east side of the Phoenix and Line Islands), I suppose that most\n# mapmakers redrew the IDL following the boundary of Kiribati.  Even that line\n# has a rather arbitrary nature.  The straight-line boundaries between Pacific\n# island nations that are shown on many maps are based on an international\n# convention, but are not legally binding national borders.... The date is\n# governed by the IDL; therefore, even on the high seas, there may be some\n# places as late as fourteen hours later than UTC.  And, since the IDL is not\n# an international standard, there are some places on the high seas where the\n# correct date is ambiguous.\n\n# From Wikipedia <http://en.wikipedia.org/wiki/Time_zone> (2005-08-31):\n# Before 1920, all ships kept local apparent time on the high seas by setting\n# their clocks at night or at the morning sight so that, given the ship's\n# speed and direction, it would be 12 o'clock when the Sun crossed the ship's\n# meridian (12 o'clock = local apparent noon).  During 1917, at the\n# Anglo-French Conference on Time-keeping at Sea, it was recommended that all\n# ships, both military and civilian, should adopt hourly standard time zones\n# on the high seas.  Whenever a ship was within the territorial waters of any\n# nation it would use that nation's standard time.  The captain was permitted\n# to change his ship's clocks at a time of his choice following his ship's\n# entry into another zone time--he often chose midnight.  These zones were\n# adopted by all major fleets between 1920 and 1925 but not by many\n# independent merchant ships until World War II.\n\n# From Paul Eggert, using references suggested by Oscar van Vlijmen\n# (2005-03-20):\n#\n# The American Practical Navigator (2002)\n# <http://pollux.nss.nima.mil/pubs/pubs_j_apn_sections.html?rid=187>\n# talks only about the 180-degree meridian with respect to ships in\n# international waters; it ignores the international date line.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/backward",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This file provides links between current names for time zones\n# and their old names.  Many names changed in late 1993.\n\nLink\tAfrica/Asmara\t\tAfrica/Asmera\nLink\tAfrica/Bamako\t\tAfrica/Timbuktu\nLink\tAmerica/Argentina/Catamarca\tAmerica/Argentina/ComodRivadavia\nLink\tAmerica/Adak\t\tAmerica/Atka\nLink\tAmerica/Argentina/Buenos_Aires\tAmerica/Buenos_Aires\nLink\tAmerica/Argentina/Catamarca\tAmerica/Catamarca\nLink\tAmerica/Atikokan\tAmerica/Coral_Harbour\nLink\tAmerica/Argentina/Cordoba\tAmerica/Cordoba\nLink\tAmerica/Tijuana\t\tAmerica/Ensenada\nLink\tAmerica/Indiana/Indianapolis\tAmerica/Fort_Wayne\nLink\tAmerica/Indiana/Indianapolis\tAmerica/Indianapolis\nLink\tAmerica/Argentina/Jujuy\tAmerica/Jujuy\nLink\tAmerica/Indiana/Knox\tAmerica/Knox_IN\nLink\tAmerica/Kentucky/Louisville\tAmerica/Louisville\nLink\tAmerica/Argentina/Mendoza\tAmerica/Mendoza\nLink\tAmerica/Rio_Branco\tAmerica/Porto_Acre\nLink\tAmerica/Argentina/Cordoba\tAmerica/Rosario\nLink\tAmerica/St_Thomas\tAmerica/Virgin\nLink\tAsia/Ashgabat\t\tAsia/Ashkhabad\nLink\tAsia/Chongqing\t\tAsia/Chungking\nLink\tAsia/Dhaka\t\tAsia/Dacca\nLink\tAsia/Kathmandu\t\tAsia/Katmandu\nLink\tAsia/Kolkata\t\tAsia/Calcutta\nLink\tAsia/Macau\t\tAsia/Macao\nLink\tAsia/Jerusalem\t\tAsia/Tel_Aviv\nLink\tAsia/Ho_Chi_Minh\tAsia/Saigon\nLink\tAsia/Thimphu\t\tAsia/Thimbu\nLink\tAsia/Makassar\t\tAsia/Ujung_Pandang\nLink\tAsia/Ulaanbaatar\tAsia/Ulan_Bator\nLink\tAtlantic/Faroe\t\tAtlantic/Faeroe\nLink\tEurope/Oslo\t\tAtlantic/Jan_Mayen\nLink\tAustralia/Sydney\tAustralia/ACT\nLink\tAustralia/Sydney\tAustralia/Canberra\nLink\tAustralia/Lord_Howe\tAustralia/LHI\nLink\tAustralia/Sydney\tAustralia/NSW\nLink\tAustralia/Darwin\tAustralia/North\nLink\tAustralia/Brisbane\tAustralia/Queensland\nLink\tAustralia/Adelaide\tAustralia/South\nLink\tAustralia/Hobart\tAustralia/Tasmania\nLink\tAustralia/Melbourne\tAustralia/Victoria\nLink\tAustralia/Perth\t\tAustralia/West\nLink\tAustralia/Broken_Hill\tAustralia/Yancowinna\nLink\tAmerica/Rio_Branco\tBrazil/Acre\nLink\tAmerica/Noronha\t\tBrazil/DeNoronha\nLink\tAmerica/Sao_Paulo\tBrazil/East\nLink\tAmerica/Manaus\t\tBrazil/West\nLink\tAmerica/Halifax\t\tCanada/Atlantic\nLink\tAmerica/Winnipeg\tCanada/Central\nLink\tAmerica/Regina\t\tCanada/East-Saskatchewan\nLink\tAmerica/Toronto\t\tCanada/Eastern\nLink\tAmerica/Edmonton\tCanada/Mountain\nLink\tAmerica/St_Johns\tCanada/Newfoundland\nLink\tAmerica/Vancouver\tCanada/Pacific\nLink\tAmerica/Regina\t\tCanada/Saskatchewan\nLink\tAmerica/Whitehorse\tCanada/Yukon\nLink\tAmerica/Santiago\tChile/Continental\nLink\tPacific/Easter\t\tChile/EasterIsland\nLink\tAmerica/Havana\t\tCuba\nLink\tAfrica/Cairo\t\tEgypt\nLink\tEurope/Dublin\t\tEire\nLink\tEurope/London\t\tEurope/Belfast\nLink\tEurope/Chisinau\t\tEurope/Tiraspol\nLink\tEurope/London\t\tGB\nLink\tEurope/London\t\tGB-Eire\nLink\tEtc/GMT\t\t\tGMT+0\nLink\tEtc/GMT\t\t\tGMT-0\nLink\tEtc/GMT\t\t\tGMT0\nLink\tEtc/GMT\t\t\tGreenwich\nLink\tAsia/Hong_Kong\t\tHongkong\nLink\tAtlantic/Reykjavik\tIceland\nLink\tAsia/Tehran\t\tIran\nLink\tAsia/Jerusalem\t\tIsrael\nLink\tAmerica/Jamaica\t\tJamaica\nLink\tAsia/Tokyo\t\tJapan\nLink\tPacific/Kwajalein\tKwajalein\nLink\tAfrica/Tripoli\t\tLibya\nLink\tAmerica/Tijuana\t\tMexico/BajaNorte\nLink\tAmerica/Mazatlan\tMexico/BajaSur\nLink\tAmerica/Mexico_City\tMexico/General\nLink\tPacific/Auckland\tNZ\nLink\tPacific/Chatham\t\tNZ-CHAT\nLink\tAmerica/Denver\t\tNavajo\nLink\tAsia/Shanghai\t\tPRC\nLink\tPacific/Pago_Pago\tPacific/Samoa\nLink\tPacific/Chuuk\t\tPacific/Yap\nLink\tPacific/Chuuk\t\tPacific/Truk\nLink\tPacific/Pohnpei\t\tPacific/Ponape\nLink\tEurope/Warsaw\t\tPoland\nLink\tEurope/Lisbon\t\tPortugal\nLink\tAsia/Taipei\t\tROC\nLink\tAsia/Seoul\t\tROK\nLink\tAsia/Singapore\t\tSingapore\nLink\tEurope/Istanbul\t\tTurkey\nLink\tEtc/UCT\t\t\tUCT\nLink\tAmerica/Anchorage\tUS/Alaska\nLink\tAmerica/Adak\t\tUS/Aleutian\nLink\tAmerica/Phoenix\t\tUS/Arizona\nLink\tAmerica/Chicago\t\tUS/Central\nLink\tAmerica/Indiana/Indianapolis\tUS/East-Indiana\nLink\tAmerica/New_York\tUS/Eastern\nLink\tPacific/Honolulu\tUS/Hawaii\nLink\tAmerica/Indiana/Knox\tUS/Indiana-Starke\nLink\tAmerica/Detroit\t\tUS/Michigan\nLink\tAmerica/Denver\t\tUS/Mountain\nLink\tAmerica/Los_Angeles\tUS/Pacific\nLink\tPacific/Pago_Pago\tUS/Samoa\nLink\tEtc/UTC\t\t\tUTC\nLink\tEtc/UTC\t\t\tUniversal\nLink\tEurope/Moscow\t\tW-SU\nLink\tEtc/UTC\t\t\tZulu\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/etcetera",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# These entries are mostly present for historical reasons, so that\n# people in areas not otherwise covered by the tz files could \"zic -l\"\n# to a time zone that was right for their area.  These days, the\n# tz files cover almost all the inhabited world, and the only practical\n# need now for the entries that are not on UTC are for ships at sea\n# that cannot use POSIX TZ settings.\n\nZone\tEtc/GMT\t\t0\t-\tGMT\nZone\tEtc/UTC\t\t0\t-\tUTC\nZone\tEtc/UCT\t\t0\t-\tUCT\n\n# The following link uses older naming conventions,\n# but it belongs here, not in the file `backward',\n# as functions like gmtime load the \"GMT\" file to handle leap seconds properly.\n# We want this to work even on installations that omit the other older names.\nLink\tEtc/GMT\t\t\t\tGMT\n\nLink\tEtc/UTC\t\t\t\tEtc/Universal\nLink\tEtc/UTC\t\t\t\tEtc/Zulu\n\nLink\tEtc/GMT\t\t\t\tEtc/Greenwich\nLink\tEtc/GMT\t\t\t\tEtc/GMT-0\nLink\tEtc/GMT\t\t\t\tEtc/GMT+0\nLink\tEtc/GMT\t\t\t\tEtc/GMT0\n\n# We use POSIX-style signs in the Zone names and the output abbreviations,\n# even though this is the opposite of what many people expect.\n# POSIX has positive signs west of Greenwich, but many people expect\n# positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses\n# the abbreviation \"GMT+4\" and corresponds to 4 hours behind UTC\n# (i.e. west of Greenwich) even though many people would expect it to\n# mean 4 hours ahead of UTC (i.e. east of Greenwich).\n#\n# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for\n# TZ='<GMT-4>+4'; if you want time zone abbreviations conforming to\n# ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected\n# offset is kept within the angle bracket (and is used for display)\n# while the POSIX sign is kept outside the angle bracket (and is used\n# for calculation).\n#\n# Do not use a TZ setting like TZ='GMT+4', which is four hours behind\n# GMT but uses the completely misleading abbreviation \"GMT\".\n\n# Earlier incarnations of this package were not POSIX-compliant,\n# and had lines such as\n#\t\tZone\tGMT-12\t\t-12\t-\tGMT-1200\n# We did not want things to change quietly if someone accustomed to the old\n# way does a\n#\t\tzic -l GMT-12\n# so we moved the names into the Etc subdirectory.\n\nZone\tEtc/GMT-14\t14\t-\tGMT-14\t# 14 hours ahead of GMT\nZone\tEtc/GMT-13\t13\t-\tGMT-13\nZone\tEtc/GMT-12\t12\t-\tGMT-12\nZone\tEtc/GMT-11\t11\t-\tGMT-11\nZone\tEtc/GMT-10\t10\t-\tGMT-10\nZone\tEtc/GMT-9\t9\t-\tGMT-9\nZone\tEtc/GMT-8\t8\t-\tGMT-8\nZone\tEtc/GMT-7\t7\t-\tGMT-7\nZone\tEtc/GMT-6\t6\t-\tGMT-6\nZone\tEtc/GMT-5\t5\t-\tGMT-5\nZone\tEtc/GMT-4\t4\t-\tGMT-4\nZone\tEtc/GMT-3\t3\t-\tGMT-3\nZone\tEtc/GMT-2\t2\t-\tGMT-2\nZone\tEtc/GMT-1\t1\t-\tGMT-1\nZone\tEtc/GMT+1\t-1\t-\tGMT+1\nZone\tEtc/GMT+2\t-2\t-\tGMT+2\nZone\tEtc/GMT+3\t-3\t-\tGMT+3\nZone\tEtc/GMT+4\t-4\t-\tGMT+4\nZone\tEtc/GMT+5\t-5\t-\tGMT+5\nZone\tEtc/GMT+6\t-6\t-\tGMT+6\nZone\tEtc/GMT+7\t-7\t-\tGMT+7\nZone\tEtc/GMT+8\t-8\t-\tGMT+8\nZone\tEtc/GMT+9\t-9\t-\tGMT+9\nZone\tEtc/GMT+10\t-10\t-\tGMT+10\nZone\tEtc/GMT+11\t-11\t-\tGMT+11\nZone\tEtc/GMT+12\t-12\t-\tGMT+12\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/europe",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by no means authoritative; if you think you know better,\n# go ahead and edit the file (and please send any changes to\n# tz@iana.org for general use in the future).\n\n# From Paul Eggert (2006-03-22):\n# A good source for time zone historical data outside the U.S. is\n# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),\n# San Diego: ACS Publications, Inc. (2003).\n#\n# Gwillim Law writes that a good source\n# for recent time zone data is the International Air Transport\n# Association's Standard Schedules Information Manual (IATA SSIM),\n# published semiannually.  Law sent in several helpful summaries\n# of the IATA's data after 1990.\n#\n# Except where otherwise noted, Shanks & Pottenger is the source for\n# entries through 1991, and IATA SSIM is the source for entries afterwards.\n#\n# Other sources occasionally used include:\n#\n#\tEdward W. Whitman, World Time Differences,\n#\tWhitman Publishing Co, 2 Niagara Av, Ealing, London (undated),\n#\twhich I found in the UCLA library.\n#\n#\t<a href=\"http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf\">\n#\tWilliam Willett, The Waste of Daylight, 19th edition\n#\t</a> (1914-03)\n#\n#\tBrazil's Departamento Servico da Hora (DSH),\n#\t<a href=\"http://pcdsh01.on.br/HISTHV.htm\">\n#\tHistory of Summer Time\n#\t</a> (1998-09-21, in Portuguese)\n\n#\n# I invented the abbreviations marked `*' in the following table;\n# the rest are from earlier versions of this file, or from other sources.\n# Corrections are welcome!\n#                   std dst  2dst\n#                   LMT           Local Mean Time\n#       -4:00       AST ADT       Atlantic\n#       -3:00       WGT WGST      Western Greenland*\n#       -1:00       EGT EGST      Eastern Greenland*\n#        0:00       GMT BST  BDST Greenwich, British Summer\n#        0:00       GMT IST       Greenwich, Irish Summer\n#        0:00       WET WEST WEMT Western Europe\n#        0:19:32.13 AMT NST       Amsterdam, Netherlands Summer (1835-1937)*\n#        0:20       NET NEST      Netherlands (1937-1940)*\n#        1:00       CET CEST CEMT Central Europe\n#        1:00:14    SET           Swedish (1879-1899)*\n#        2:00       EET EEST      Eastern Europe\n#        3:00       MSK MSD       Moscow\n#\n# A reliable and entertaining source about time zones, especially in Britain,\n# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).\n\n# From Peter Ilieve (1994-12-04),\n# The original six [EU members]: Belgium, France, (West) Germany, Italy,\n# Luxembourg, the Netherlands.\n# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.\n# Plus, from 1 Jan 81: Greece.\n# Plus, from 1 Jan 86: Spain, Portugal.\n# Plus, from 1 Jan 95: Austria, Finland, Sweden. (Norway negotiated terms for\n# entry but in a referendum on 28 Nov 94 the people voted No by 52.2% to 47.8%\n# on a turnout of 88.6%. This was almost the same result as Norway's previous\n# referendum in 1972, they are the only country to have said No twice.\n# Referendums in the other three countries voted Yes.)\n# ...\n# Estonia ... uses EU dates but not at 01:00 GMT, they use midnight GMT.\n# I don't think they know yet what they will do from 1996 onwards.\n# ...\n# There shouldn't be any [current members who are not using EU rules].\n# A Directive has the force of law, member states are obliged to enact\n# national law to implement it. The only contentious issue was the\n# different end date for the UK and Ireland, and this was always allowed\n# in the Directive.\n\n\n###############################################################################\n\n# Britain (United Kingdom) and Ireland (Eire)\n\n# From Peter Ilieve (1994-07-06):\n#\n# On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about\n# historical vistas along the Thames in west London. There was a photo\n# and a sketch map showing some of the sightlines involved. One paragraph\n# of the text said:\n#\n# `An old stone obelisk marking a forgotten terrestrial meridian stands\n# beside the river at Kew. In the 18th century, before time and longitude\n# was standardised by the Royal Observatory in Greenwich, scholars observed\n# this stone and the movement of stars from Kew Observatory nearby. They\n# made their calculations and set the time for the Horse Guards and Parliament,\n# but now the stone is obscured by scrubwood and can only be seen by walking\n# along the towpath within a few yards of it.'\n#\n# I have a one inch to one mile map of London and my estimate of the stone's\n# position is 51 deg. 28' 30\" N, 0 deg. 18' 45\" W. The longitude should\n# be within about +-2\". The Ordnance Survey grid reference is TQ172761.\n#\n# [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]\n\n# From Paul Eggert (1993-11-18):\n#\n# Howse writes that Britain was the first country to use standard time.\n# The railways cared most about the inconsistencies of local mean time,\n# and it was they who forced a uniform time on the country.\n# The original idea was credited to Dr. William Hyde Wollaston (1766-1828)\n# and was popularized by Abraham Follett Osler (1808-1903).\n# The first railway to adopt London time was the Great Western Railway\n# in November 1840; other railways followed suit, and by 1847 most\n# (though not all) railways used London time.  On 1847-09-22 the\n# Railway Clearing House, an industry standards body, recommended that GMT be\n# adopted at all stations as soon as the General Post Office permitted it.\n# The transition occurred on 12-01 for the L&NW, the Caledonian,\n# and presumably other railways; the January 1848 Bradshaw's lists many\n# railways as using GMT.  By 1855 the vast majority of public\n# clocks in Britain were set to GMT (though some, like the great clock\n# on Tom Tower at Christ Church, Oxford, were fitted with two minute hands,\n# one for local time and one for GMT).  The last major holdout was the legal\n# system, which stubbornly stuck to local time for many years, leading\n# to oddities like polls opening at 08:13 and closing at 16:13.\n# The legal system finally switched to GMT when the Statutes (Definition\n# of Time) Act took effect; it received the Royal Assent on 1880-08-02.\n#\n# In the tables below, we condense this complicated story into a single\n# transition date for London, namely 1847-12-01.  We don't know as much\n# about Dublin, so we use 1880-08-02, the legal transition time.\n\n# From Paul Eggert (2003-09-27):\n# Summer Time was first seriously proposed by William Willett (1857-1915),\n# a London builder and member of the Royal Astronomical Society\n# who circulated a pamphlet ``The Waste of Daylight'' (1907)\n# that proposed advancing clocks 20 minutes on each of four Sundays in April,\n# and retarding them by the same amount on four Sundays in September.\n# A bill was drafted in 1909 and introduced in Parliament several times,\n# but it met with ridicule and opposition, especially from farming interests.\n# Later editions of the pamphlet proposed one-hour summer time, and\n# it was eventually adopted as a wartime measure in 1916.\n# See: Summer Time Arrives Early, The Times (2000-05-18).\n# A monument to Willett was unveiled on 1927-05-21, in an open space in\n# a 45-acre wood near Chislehurst, Kent that was purchased by popular\n# subscription and open to the public.  On the south face of the monolith,\n# designed by G. W. Miller, is the...William Willett Memorial Sundial,\n# which is permanently set to Summer Time.\n\n# From Winston Churchill (1934-04-28):\n# It is one of the paradoxes of history that we should owe the boon of\n# summer time, which gives every year to the people of this country\n# between 160 and 170 hours more daylight leisure, to a war which\n# plunged Europe into darkness for four years, and shook the\n# foundations of civilization throughout the world.\n#\t-- <a href=\"http://www.winstonchurchill.org/fh114willett.htm\">\n#\t\"A Silent Toast to William Willett\", Pictorial Weekly\n#\t</a>\n\n# From Paul Eggert (1996-09-03):\n# The OED Supplement says that the English originally said ``Daylight Saving''\n# when they were debating the adoption of DST in 1908; but by 1916 this\n# term appears only in quotes taken from DST's opponents, whereas the\n# proponents (who eventually won the argument) are quoted as using ``Summer''.\n\n# From Arthur David Olson (1989-01-19):\n#\n# A source at the British Information Office in New York avers that it's\n# known as \"British\" Summer Time in all parts of the United Kingdom.\n\n# Date: 4 Jan 89 08:57:25 GMT (Wed)\n# From: Jonathan Leffler\n# [British Summer Time] is fixed annually by Act of Parliament.\n# If you can predict what Parliament will do, you should be in\n# politics making a fortune, not computing.\n\n# From Chris Carrier (1996-06-14):\n# I remember reading in various wartime issues of the London Times the\n# acronym BDST for British Double Summer Time.  Look for the published\n# time of sunrise and sunset in The Times, when BDST was in effect, and\n# if you find a zone reference it will say, \"All times B.D.S.T.\"\n\n# From Joseph S. Myers (1999-09-02):\n# ... some military cables (WO 219/4100 - this is a copy from the\n# main SHAEF archives held in the US National Archives, SHAEF/5252/8/516)\n# agree that the usage is BDST (this appears in a message dated 17 Feb 1945).\n\n# From Joseph S. Myers (2000-10-03):\n# On 18th April 1941, Sir Stephen Tallents of the BBC wrote to Sir\n# Alexander Maxwell of the Home Office asking whether there was any\n# official designation; the reply of the 21st was that there wasn't\n# but he couldn't think of anything better than the \"Double British\n# Summer Time\" that the BBC had been using informally.\n# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png\n# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png\n\n# From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):\n# [N]o official designation has as far as I know been adopted for the time\n# which is to be introduced in May....\n# I cannot think of anything better than \"Double British Summer Time\"\n# which could not be said to run counter to any official description.\n\n# From Paul Eggert (2000-10-02):\n# Howse writes (p 157) `DBST' too, but `BDST' seems to have been common\n# and follows the more usual convention of putting the location name first,\n# so we use `BDST'.\n\n# Peter Ilieve (1998-04-19) described at length\n# the history of summer time legislation in the United Kingdom.\n# Since 1998 Joseph S. Myers has been updating\n# and extending this list, which can be found in\n# http://student.cusu.cam.ac.uk/~jsm28/british-time/\n# <a href=\"http://www.polyomino.org.uk/british-time/\">\n# History of legal time in Britain\n# </a>\n# Rob Crowther (2012-01-04) reports that that URL no longer\n# exists, and the article can now be found at:\n# <a href=\"http://www.polyomino.org.uk/british-time/\">\n# http://www.polyomino.org.uk/british-time/\n# </a>\n\n# From Joseph S. Myers (1998-01-06):\n#\n# The legal time in the UK outside of summer time is definitely GMT, not UTC;\n# see Lord Tanlaw's speech\n# <a href=\"http://www.parliament.the-stationery-office.co.uk/pa/ld199697/ldhansrd/pdvn/lds97/text/70611-20.htm#70611-20_head0\">\n# (Lords Hansard 11 June 1997 columns 964 to 976)\n# </a>.\n\n# From Paul Eggert (2006-03-22):\n#\n# For lack of other data, follow Shanks & Pottenger for Eire in 1940-1948.\n#\n# Given Ilieve and Myers's data, the following claims by Shanks & Pottenger\n# are incorrect:\n#     * Wales did not switch from GMT to daylight saving time until\n#\t1921 Apr 3, when they began to conform with the rest of Great Britain.\n# Actually, Wales was identical after 1880.\n#     * Eire had two transitions on 1916 Oct 1.\n# It actually just had one transition.\n#     * Northern Ireland used single daylight saving time throughout WW II.\n# Actually, it conformed to Britain.\n#     * GB-Eire changed standard time to 1 hour ahead of GMT on 1968-02-18.\n# Actually, that date saw the usual switch to summer time.\n# Standard time was not changed until 1968-10-27 (the clocks didn't change).\n#\n# Here is another incorrect claim by Shanks & Pottenger:\n#     * Jersey, Guernsey, and the Isle of Man did not switch from GMT\n#\tto daylight saving time until 1921 Apr 3, when they began to\n#\tconform with Great Britain.\n# S.R.&O. 1916, No. 382 and HO 45/10811/312364 (quoted above) say otherwise.\n#\n# The following claim by Shanks & Pottenger is possible though doubtful;\n# we'll ignore it for now.\n#     * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.\n#\n#\n# Whitman says Dublin Mean Time was -0:25:21, which is more precise than\n# Shanks & Pottenger.\n# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory\n# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was\n# to London.  For example:\n#\n#   \"Timeball on the ballast office is down.  Dunsink time.\"\n#   -- James Joyce, Ulysses\n\n# From Joseph S. Myers (2005-01-26):\n# Irish laws are available online at www.irishstatutebook.ie.  These include\n# various relating to legal time, for example:\n#\n# ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html\n#\n# ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html\n# ZZSI27Y1951.html ZZSI73Y1952.html\n#\n# ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html\n# ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html\n# ZZA23Y1968.html ZZA17Y1971.html\n#\n# ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html\n# ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html\n# ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html\n#\n# [These are all relative to the root, e.g., the first is\n# <http://www.irishstatutebook.ie/ZZA13Y1923.html>.]\n#\n# (These are those I found, but there could be more.  In any case these\n# should allow various updates to the comments in the europe file to cover\n# the laws applicable in Ireland.)\n#\n# (Note that the time in the Republic of Ireland since 1968 has been defined\n# in terms of standard time being GMT+1 with a period of winter time when it\n# is GMT, rather than standard time being GMT with a period of summer time\n# being GMT+1.)\n\n# From Paul Eggert (1999-03-28):\n# Clive Feather (<news:859845706.26043.0@office.demon.net>, 1997-03-31)\n# reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time\n# (CT), equivalent to French civil time.\n# Julian Hill (<news:36118128.5A14@virgin.net>, 1998-09-30) reports that\n# trains between Dollands Moor (the freight facility next door)\n# and Frethun run in CT.\n# My admittedly uninformed guess is that the terminal has two authorities,\n# the French concession operators and the British civil authorities,\n# and that the time depends on who you're talking to.\n# If, say, the British police were called to the station for some reason,\n# I would expect the official police report to use GMT/BST and not CET/CEST.\n# This is a borderline case, but for now let's stick to GMT/BST.\n\n# From an anonymous contributor (1996-06-02):\n# The law governing time in Ireland is under Statutory Instrument SI 395/94,\n# which gives force to European Union 7th Council Directive # 94/21/EC.\n# Under this directive, the Minister for Justice in Ireland makes appropriate\n# regulations. I spoke this morning with the Secretary of the Department of\n# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is\n# \"Irish Summer Time\", abbreviated to \"IST\".\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# Summer Time Act, 1916\nRule\tGB-Eire\t1916\tonly\t-\tMay\t21\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1916\tonly\t-\tOct\t 1\t2:00s\t0\tGMT\n# S.R.&O. 1917, No. 358\nRule\tGB-Eire\t1917\tonly\t-\tApr\t 8\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1917\tonly\t-\tSep\t17\t2:00s\t0\tGMT\n# S.R.&O. 1918, No. 274\nRule\tGB-Eire\t1918\tonly\t-\tMar\t24\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1918\tonly\t-\tSep\t30\t2:00s\t0\tGMT\n# S.R.&O. 1919, No. 297\nRule\tGB-Eire\t1919\tonly\t-\tMar\t30\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1919\tonly\t-\tSep\t29\t2:00s\t0\tGMT\n# S.R.&O. 1920, No. 458\nRule\tGB-Eire\t1920\tonly\t-\tMar\t28\t2:00s\t1:00\tBST\n# S.R.&O. 1920, No. 1844\nRule\tGB-Eire\t1920\tonly\t-\tOct\t25\t2:00s\t0\tGMT\n# S.R.&O. 1921, No. 363\nRule\tGB-Eire\t1921\tonly\t-\tApr\t 3\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1921\tonly\t-\tOct\t 3\t2:00s\t0\tGMT\n# S.R.&O. 1922, No. 264\nRule\tGB-Eire\t1922\tonly\t-\tMar\t26\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1922\tonly\t-\tOct\t 8\t2:00s\t0\tGMT\n# The Summer Time Act, 1922\nRule\tGB-Eire\t1923\tonly\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1923\t1924\t-\tSep\tSun>=16\t2:00s\t0\tGMT\nRule\tGB-Eire\t1924\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1925\t1926\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\n# The Summer Time Act, 1925\nRule\tGB-Eire\t1925\t1938\t-\tOct\tSun>=2\t2:00s\t0\tGMT\nRule\tGB-Eire\t1927\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1928\t1929\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1930\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1931\t1932\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1933\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1934\tonly\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1935\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1936\t1937\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1938\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1939\tonly\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\n# S.R.&O. 1939, No. 1379\nRule\tGB-Eire\t1939\tonly\t-\tNov\tSun>=16\t2:00s\t0\tGMT\n# S.R.&O. 1940, No. 172 and No. 1883\nRule\tGB-Eire\t1940\tonly\t-\tFeb\tSun>=23\t2:00s\t1:00\tBST\n# S.R.&O. 1941, No. 476\nRule\tGB-Eire\t1941\tonly\t-\tMay\tSun>=2\t1:00s\t2:00\tBDST\nRule\tGB-Eire\t1941\t1943\t-\tAug\tSun>=9\t1:00s\t1:00\tBST\n# S.R.&O. 1942, No. 506\nRule\tGB-Eire\t1942\t1944\t-\tApr\tSun>=2\t1:00s\t2:00\tBDST\n# S.R.&O. 1944, No. 932\nRule\tGB-Eire\t1944\tonly\t-\tSep\tSun>=16\t1:00s\t1:00\tBST\n# S.R.&O. 1945, No. 312\nRule\tGB-Eire\t1945\tonly\t-\tApr\tMon>=2\t1:00s\t2:00\tBDST\nRule\tGB-Eire\t1945\tonly\t-\tJul\tSun>=9\t1:00s\t1:00\tBST\n# S.R.&O. 1945, No. 1208\nRule\tGB-Eire\t1945\t1946\t-\tOct\tSun>=2\t2:00s\t0\tGMT\nRule\tGB-Eire\t1946\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\n# The Summer Time Act, 1947\nRule\tGB-Eire\t1947\tonly\t-\tMar\t16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1947\tonly\t-\tApr\t13\t1:00s\t2:00\tBDST\nRule\tGB-Eire\t1947\tonly\t-\tAug\t10\t1:00s\t1:00\tBST\nRule\tGB-Eire\t1947\tonly\t-\tNov\t 2\t2:00s\t0\tGMT\n# Summer Time Order, 1948 (S.I. 1948/495)\nRule\tGB-Eire\t1948\tonly\t-\tMar\t14\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1948\tonly\t-\tOct\t31\t2:00s\t0\tGMT\n# Summer Time Order, 1949 (S.I. 1949/373)\nRule\tGB-Eire\t1949\tonly\t-\tApr\t 3\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1949\tonly\t-\tOct\t30\t2:00s\t0\tGMT\n# Summer Time Order, 1950 (S.I. 1950/518)\n# Summer Time Order, 1951 (S.I. 1951/430)\n# Summer Time Order, 1952 (S.I. 1952/451)\nRule\tGB-Eire\t1950\t1952\t-\tApr\tSun>=14\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1950\t1952\t-\tOct\tSun>=21\t2:00s\t0\tGMT\n# revert to the rules of the Summer Time Act, 1925\nRule\tGB-Eire\t1953\tonly\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1953\t1960\t-\tOct\tSun>=2\t2:00s\t0\tGMT\nRule\tGB-Eire\t1954\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1955\t1956\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1957\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1958\t1959\t-\tApr\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1960\tonly\t-\tApr\tSun>=9\t2:00s\t1:00\tBST\n# Summer Time Order, 1961 (S.I. 1961/71)\n# Summer Time (1962) Order, 1961 (S.I. 1961/2465)\n# Summer Time Order, 1963 (S.I. 1963/81)\nRule\tGB-Eire\t1961\t1963\t-\tMar\tlastSun\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1961\t1968\t-\tOct\tSun>=23\t2:00s\t0\tGMT\n# Summer Time (1964) Order, 1963 (S.I. 1963/2101)\n# Summer Time Order, 1964 (S.I. 1964/1201)\n# Summer Time Order, 1967 (S.I. 1967/1148)\nRule\tGB-Eire\t1964\t1967\t-\tMar\tSun>=19\t2:00s\t1:00\tBST\n# Summer Time Order, 1968 (S.I. 1968/117)\nRule\tGB-Eire\t1968\tonly\t-\tFeb\t18\t2:00s\t1:00\tBST\n# The British Standard Time Act, 1968\n#\t(no summer time)\n# The Summer Time Act, 1972\nRule\tGB-Eire\t1972\t1980\t-\tMar\tSun>=16\t2:00s\t1:00\tBST\nRule\tGB-Eire\t1972\t1980\t-\tOct\tSun>=23\t2:00s\t0\tGMT\n# Summer Time Order, 1980 (S.I. 1980/1089)\n# Summer Time Order, 1982 (S.I. 1982/1673)\n# Summer Time Order, 1986 (S.I. 1986/223)\n# Summer Time Order, 1988 (S.I. 1988/931)\nRule\tGB-Eire\t1981\t1995\t-\tMar\tlastSun\t1:00u\t1:00\tBST\nRule\tGB-Eire 1981\t1989\t-\tOct\tSun>=23\t1:00u\t0\tGMT\n# Summer Time Order, 1989 (S.I. 1989/985)\n# Summer Time Order, 1992 (S.I. 1992/1729)\n# Summer Time Order 1994 (S.I. 1994/2798)\nRule\tGB-Eire 1990\t1995\t-\tOct\tSun>=22\t1:00u\t0\tGMT\n# Summer Time Order 1997 (S.I. 1997/2982)\n# See EU for rules starting in 1996.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/London\t-0:01:15 -\tLMT\t1847 Dec  1 0:00s\n\t\t\t 0:00\tGB-Eire\t%s\t1968 Oct 27\n\t\t\t 1:00\t-\tBST\t1971 Oct 31 2:00u\n\t\t\t 0:00\tGB-Eire\t%s\t1996\n\t\t\t 0:00\tEU\tGMT/BST\nLink\tEurope/London\tEurope/Jersey\nLink\tEurope/London\tEurope/Guernsey\nLink\tEurope/London\tEurope/Isle_of_Man\nZone\tEurope/Dublin\t-0:25:00 -\tLMT\t1880 Aug  2\n\t\t\t-0:25:21 -\tDMT\t1916 May 21 2:00\n\t\t\t-0:25:21 1:00\tIST\t1916 Oct  1 2:00s\n\t\t\t 0:00\tGB-Eire\t%s\t1921 Dec  6 # independence\n\t\t\t 0:00\tGB-Eire\tGMT/IST\t1940 Feb 25 2:00\n\t\t\t 0:00\t1:00\tIST\t1946 Oct  6 2:00\n\t\t\t 0:00\t-\tGMT\t1947 Mar 16 2:00\n\t\t\t 0:00\t1:00\tIST\t1947 Nov  2 2:00\n\t\t\t 0:00\t-\tGMT\t1948 Apr 18 2:00\n\t\t\t 0:00\tGB-Eire\tGMT/IST\t1968 Oct 27\n\t\t\t 1:00\t-\tIST\t1971 Oct 31 2:00u\n\t\t\t 0:00\tGB-Eire\tGMT/IST\t1996\n\t\t\t 0:00\tEU\tGMT/IST\n\n###############################################################################\n\n# Europe\n\n# EU rules are for the European Union, previously known as the EC, EEC,\n# Common Market, etc.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tEU\t1977\t1980\t-\tApr\tSun>=1\t 1:00u\t1:00\tS\nRule\tEU\t1977\tonly\t-\tSep\tlastSun\t 1:00u\t0\t-\nRule\tEU\t1978\tonly\t-\tOct\t 1\t 1:00u\t0\t-\nRule\tEU\t1979\t1995\t-\tSep\tlastSun\t 1:00u\t0\t-\nRule\tEU\t1981\tmax\t-\tMar\tlastSun\t 1:00u\t1:00\tS\nRule\tEU\t1996\tmax\t-\tOct\tlastSun\t 1:00u\t0\t-\n# The most recent directive covers the years starting in 2002.  See:\n# <a=\"http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32000L0084:EN:NOT\">\n# Directive 2000/84/EC of the European Parliament and of the Council\n# of 19 January 2001 on summer-time arrangements.\n# </a>\n\n# W-Eur differs from EU only in that W-Eur uses standard time.\nRule\tW-Eur\t1977\t1980\t-\tApr\tSun>=1\t 1:00s\t1:00\tS\nRule\tW-Eur\t1977\tonly\t-\tSep\tlastSun\t 1:00s\t0\t-\nRule\tW-Eur\t1978\tonly\t-\tOct\t 1\t 1:00s\t0\t-\nRule\tW-Eur\t1979\t1995\t-\tSep\tlastSun\t 1:00s\t0\t-\nRule\tW-Eur\t1981\tmax\t-\tMar\tlastSun\t 1:00s\t1:00\tS\nRule\tW-Eur\t1996\tmax\t-\tOct\tlastSun\t 1:00s\t0\t-\n\n# Older C-Eur rules are for convenience in the tables.\n# From 1977 on, C-Eur differs from EU only in that C-Eur uses standard time.\nRule\tC-Eur\t1916\tonly\t-\tApr\t30\t23:00\t1:00\tS\nRule\tC-Eur\t1916\tonly\t-\tOct\t 1\t 1:00\t0\t-\nRule\tC-Eur\t1917\t1918\t-\tApr\tMon>=15\t 2:00s\t1:00\tS\nRule\tC-Eur\t1917\t1918\t-\tSep\tMon>=15\t 2:00s\t0\t-\nRule\tC-Eur\t1940\tonly\t-\tApr\t 1\t 2:00s\t1:00\tS\nRule\tC-Eur\t1942\tonly\t-\tNov\t 2\t 2:00s\t0\t-\nRule\tC-Eur\t1943\tonly\t-\tMar\t29\t 2:00s\t1:00\tS\nRule\tC-Eur\t1943\tonly\t-\tOct\t 4\t 2:00s\t0\t-\nRule\tC-Eur\t1944\t1945\t-\tApr\tMon>=1\t 2:00s\t1:00\tS\n# Whitman gives 1944 Oct 7; go with Shanks & Pottenger.\nRule\tC-Eur\t1944\tonly\t-\tOct\t 2\t 2:00s\t0\t-\n# From Jesper Norgaard Welen (2008-07-13):\n#\n# I found what is probably a typo of 2:00 which should perhaps be 2:00s\n# in the C-Eur rule from tz database version 2008d (this part was\n# corrected in version 2008d). The circumstancial evidence is simply the\n# tz database itself, as seen below:\n#\n# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15  0:01\n#    0:00 France WE%sT 1945 Sep 16  3:00\n#\n# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15\n#    0:00 France WE%sT 1945 Sep 16 3:00\n#\n# Zone Europe/Belgrade 1:22:00 - LMT 1884\n#    1:00 1:00 CEST 1945 Sep 16  2:00s\n#\n# Rule France 1945 only - Sep 16  3:00 0 -\n# Rule Belgium 1945 only - Sep 16  2:00s 0 -\n# Rule Neth 1945 only - Sep 16 2:00s 0 -\n#\n# The rule line to be changed is:\n#\n# Rule C-Eur 1945 only - Sep 16  2:00 0 -\n#\n# It seems that Paris, Monaco, Rule France, Rule Belgium all agree on\n# 2:00 standard time, e.g. 3:00 local time.  However there are no\n# countries that use C-Eur rules in September 1945, so the only items\n# affected are apparently these ficticious zones that translates acronyms\n# CET and MET:\n#\n# Zone CET  1:00 C-Eur CE%sT\n# Zone MET  1:00 C-Eur ME%sT\n#\n# It this is right then the corrected version would look like:\n#\n# Rule C-Eur 1945 only - Sep 16  2:00s 0 -\n#\n# A small step for mankind though 8-)\nRule\tC-Eur\t1945\tonly\t-\tSep\t16\t 2:00s\t0\t-\nRule\tC-Eur\t1977\t1980\t-\tApr\tSun>=1\t 2:00s\t1:00\tS\nRule\tC-Eur\t1977\tonly\t-\tSep\tlastSun\t 2:00s\t0\t-\nRule\tC-Eur\t1978\tonly\t-\tOct\t 1\t 2:00s\t0\t-\nRule\tC-Eur\t1979\t1995\t-\tSep\tlastSun\t 2:00s\t0\t-\nRule\tC-Eur\t1981\tmax\t-\tMar\tlastSun\t 2:00s\t1:00\tS\nRule\tC-Eur\t1996\tmax\t-\tOct\tlastSun\t 2:00s\t0\t-\n\n# E-Eur differs from EU only in that E-Eur switches at midnight local time.\nRule\tE-Eur\t1977\t1980\t-\tApr\tSun>=1\t 0:00\t1:00\tS\nRule\tE-Eur\t1977\tonly\t-\tSep\tlastSun\t 0:00\t0\t-\nRule\tE-Eur\t1978\tonly\t-\tOct\t 1\t 0:00\t0\t-\nRule\tE-Eur\t1979\t1995\t-\tSep\tlastSun\t 0:00\t0\t-\nRule\tE-Eur\t1981\tmax\t-\tMar\tlastSun\t 0:00\t1:00\tS\nRule\tE-Eur\t1996\tmax\t-\tOct\tlastSun\t 0:00\t0\t-\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tRussia\t1917\tonly\t-\tJul\t 1\t23:00\t1:00\tMST\t# Moscow Summer Time\nRule\tRussia\t1917\tonly\t-\tDec\t28\t 0:00\t0\tMMT\t# Moscow Mean Time\nRule\tRussia\t1918\tonly\t-\tMay\t31\t22:00\t2:00\tMDST\t# Moscow Double Summer Time\nRule\tRussia\t1918\tonly\t-\tSep\t16\t 1:00\t1:00\tMST\nRule\tRussia\t1919\tonly\t-\tMay\t31\t23:00\t2:00\tMDST\nRule\tRussia\t1919\tonly\t-\tJul\t 1\t 2:00\t1:00\tS\nRule\tRussia\t1919\tonly\t-\tAug\t16\t 0:00\t0\t-\nRule\tRussia\t1921\tonly\t-\tFeb\t14\t23:00\t1:00\tS\nRule\tRussia\t1921\tonly\t-\tMar\t20\t23:00\t2:00\tM # Midsummer\nRule\tRussia\t1921\tonly\t-\tSep\t 1\t 0:00\t1:00\tS\nRule\tRussia\t1921\tonly\t-\tOct\t 1\t 0:00\t0\t-\n# Act No.925 of the Council of Ministers of the USSR (1980-10-24):\nRule\tRussia\t1981\t1984\t-\tApr\t 1\t 0:00\t1:00\tS\nRule\tRussia\t1981\t1983\t-\tOct\t 1\t 0:00\t0\t-\n# Act No.967 of the Council of Ministers of the USSR (1984-09-13), repeated in\n# Act No.227 of the Council of Ministers of the USSR (1989-03-14):\nRule\tRussia\t1984\t1991\t-\tSep\tlastSun\t 2:00s\t0\t-\nRule\tRussia\t1985\t1991\t-\tMar\tlastSun\t 2:00s\t1:00\tS\n#\nRule\tRussia\t1992\tonly\t-\tMar\tlastSat\t 23:00\t1:00\tS\nRule\tRussia\t1992\tonly\t-\tSep\tlastSat\t 23:00\t0\t-\nRule\tRussia\t1993\t2010\t-\tMar\tlastSun\t 2:00s\t1:00\tS\nRule\tRussia\t1993\t1995\t-\tSep\tlastSun\t 2:00s\t0\t-\nRule\tRussia\t1996\t2010\t-\tOct\tlastSun\t 2:00s\t0\t-\n\n# From Alexander Krivenyshev (2011-06-14):\n# According to Kremlin press service, Russian President Dmitry Medvedev\n# signed a federal law \"On calculation of time\" on June 9, 2011.\n# According to the law Russia is abolishing daylight saving time.\n#\n# Medvedev signed a law \"On the Calculation of Time\" (in russian):\n# <a href=\"http://bmockbe.ru/events/?ID=7583\">\n# http://bmockbe.ru/events/?ID=7583\n# </a>\n#\n# Medvedev signed a law on the calculation of the time (in russian):\n# <a href=\"http://www.regnum.ru/news/polit/1413906.html\">\n# http://www.regnum.ru/news/polit/1413906.html\n# </a>\n\n# From Arthur David Olson (2011-06-15):\n# Take \"abolishing daylight saving time\" to mean that time is now considered\n# to be standard.\n\n# These are for backward compatibility with older versions.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tWET\t\t0:00\tEU\tWE%sT\nZone\tCET\t\t1:00\tC-Eur\tCE%sT\nZone\tMET\t\t1:00\tC-Eur\tME%sT\nZone\tEET\t\t2:00\tEU\tEE%sT\n\n# Previous editions of this database used abbreviations like MET DST\n# for Central European Summer Time, but this didn't agree with common usage.\n\n# From Markus Kuhn (1996-07-12):\n# The official German names ... are\n#\n#\tMitteleuropaeische Zeit (MEZ)         = UTC+01:00\n#\tMitteleuropaeische Sommerzeit (MESZ)  = UTC+02:00\n#\n# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),\n# 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....\n# I wrote ... to the German Federal Physical-Technical Institution\n#\n#\tPhysikalisch-Technische Bundesanstalt (PTB)\n#\tLaboratorium 4.41 \"Zeiteinheit\"\n#\tPostfach 3345\n#\tD-38023 Braunschweig\n#\tphone: +49 531 592-0\n#\n# ... I received today an answer letter from Dr. Peter Hetzel, head of the PTB\n# department for time and frequency transmission.  He explained that the\n# PTB translates MEZ and MESZ into English as\n#\n#\tCentral European Time (CET)         = UTC+01:00\n#\tCentral European Summer Time (CEST) = UTC+02:00\n\n\n# Albania\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAlbania\t1940\tonly\t-\tJun\t16\t0:00\t1:00\tS\nRule\tAlbania\t1942\tonly\t-\tNov\t 2\t3:00\t0\t-\nRule\tAlbania\t1943\tonly\t-\tMar\t29\t2:00\t1:00\tS\nRule\tAlbania\t1943\tonly\t-\tApr\t10\t3:00\t0\t-\nRule\tAlbania\t1974\tonly\t-\tMay\t 4\t0:00\t1:00\tS\nRule\tAlbania\t1974\tonly\t-\tOct\t 2\t0:00\t0\t-\nRule\tAlbania\t1975\tonly\t-\tMay\t 1\t0:00\t1:00\tS\nRule\tAlbania\t1975\tonly\t-\tOct\t 2\t0:00\t0\t-\nRule\tAlbania\t1976\tonly\t-\tMay\t 2\t0:00\t1:00\tS\nRule\tAlbania\t1976\tonly\t-\tOct\t 3\t0:00\t0\t-\nRule\tAlbania\t1977\tonly\t-\tMay\t 8\t0:00\t1:00\tS\nRule\tAlbania\t1977\tonly\t-\tOct\t 2\t0:00\t0\t-\nRule\tAlbania\t1978\tonly\t-\tMay\t 6\t0:00\t1:00\tS\nRule\tAlbania\t1978\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tAlbania\t1979\tonly\t-\tMay\t 5\t0:00\t1:00\tS\nRule\tAlbania\t1979\tonly\t-\tSep\t30\t0:00\t0\t-\nRule\tAlbania\t1980\tonly\t-\tMay\t 3\t0:00\t1:00\tS\nRule\tAlbania\t1980\tonly\t-\tOct\t 4\t0:00\t0\t-\nRule\tAlbania\t1981\tonly\t-\tApr\t26\t0:00\t1:00\tS\nRule\tAlbania\t1981\tonly\t-\tSep\t27\t0:00\t0\t-\nRule\tAlbania\t1982\tonly\t-\tMay\t 2\t0:00\t1:00\tS\nRule\tAlbania\t1982\tonly\t-\tOct\t 3\t0:00\t0\t-\nRule\tAlbania\t1983\tonly\t-\tApr\t18\t0:00\t1:00\tS\nRule\tAlbania\t1983\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tAlbania\t1984\tonly\t-\tApr\t 1\t0:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Tirane\t1:19:20 -\tLMT\t1914\n\t\t\t1:00\t-\tCET\t1940 Jun 16\n\t\t\t1:00\tAlbania\tCE%sT\t1984 Jul\n\t\t\t1:00\tEU\tCE%sT\n\n# Andorra\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Andorra\t0:06:04 -\tLMT\t1901\n\t\t\t0:00\t-\tWET\t1946 Sep 30\n\t\t\t1:00\t-\tCET\t1985 Mar 31 2:00\n\t\t\t1:00\tEU\tCE%sT\n\n# Austria\n\n# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and\n# 1945-11-18, but the Austrian Federal Office of Metrology and\n# Surveying (BEV) gives 1918-09-16 and for Vienna gives the \"alleged\"\n# date of 1945-04-12 with no time.  For the 1980-04-06 transition\n# Shanks & Pottenger give 02:00, the BEV 00:00.  Go with the BEV,\n# and guess 02:00 for 1945-04-12.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tAustria\t1920\tonly\t-\tApr\t 5\t2:00s\t1:00\tS\nRule\tAustria\t1920\tonly\t-\tSep\t13\t2:00s\t0\t-\nRule\tAustria\t1946\tonly\t-\tApr\t14\t2:00s\t1:00\tS\nRule\tAustria\t1946\t1948\t-\tOct\tSun>=1\t2:00s\t0\t-\nRule\tAustria\t1947\tonly\t-\tApr\t 6\t2:00s\t1:00\tS\nRule\tAustria\t1948\tonly\t-\tApr\t18\t2:00s\t1:00\tS\nRule\tAustria\t1980\tonly\t-\tApr\t 6\t0:00\t1:00\tS\nRule\tAustria\t1980\tonly\t-\tSep\t28\t0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Vienna\t1:05:20 -\tLMT\t1893 Apr\n\t\t\t1:00\tC-Eur\tCE%sT\t1920\n\t\t\t1:00\tAustria\tCE%sT\t1940 Apr  1 2:00s\n\t\t\t1:00\tC-Eur\tCE%sT\t1945 Apr  2 2:00s\n\t\t\t1:00\t1:00\tCEST\t1945 Apr 12 2:00s\n\t\t\t1:00\t-\tCET\t1946\n\t\t\t1:00\tAustria\tCE%sT\t1981\n\t\t\t1:00\tEU\tCE%sT\n\n# Belarus\n# From Yauhen Kharuzhy (2011-09-16):\n# By latest Belarus government act Europe/Minsk timezone was changed to\n# GMT+3 without DST (was GMT+2 with DST).\n#\n# Sources (Russian language):\n# 1.\n# <a href=\"http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html\">\n# http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html\n# </a>\n# 2.\n# <a href=\"http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/\">\n# http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/\n# </a>\n# 3.\n# <a href=\"http://news.tut.by/society/250578.html\">\n# http://news.tut.by/society/250578.html\n# </a>\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Minsk\t1:50:16 -\tLMT\t1880\n\t\t\t1:50\t-\tMMT\t1924 May 2 # Minsk Mean Time\n\t\t\t2:00\t-\tEET\t1930 Jun 21\n\t\t\t3:00\t-\tMSK\t1941 Jun 28\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Jul  3\n\t\t\t3:00\tRussia\tMSK/MSD\t1990\n\t\t\t3:00\t-\tMSK\t1991 Mar 31 2:00s\n\t\t\t2:00\t1:00\tEEST\t1991 Sep 29 2:00s\n\t\t\t2:00\t-\tEET\t1992 Mar 29 0:00s\n\t\t\t2:00\t1:00\tEEST\t1992 Sep 27 0:00s\n\t\t\t2:00\tRussia\tEE%sT\t2011 Mar 27 2:00s\n\t\t\t3:00\t-\tFET # Further-eastern European Time\n\n# Belgium\n#\n# From Paul Eggert (1997-07-02):\n# Entries from 1918 through 1991 are taken from:\n#\tAnnuaire de L'Observatoire Royal de Belgique,\n#\tAvenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991\n#\t(Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),\n#\tpp 8-9.\n# LMT before 1892 was 0:17:30, according to the official journal of Belgium:\n#\tMoniteur Belge, Samedi 30 Avril 1892, N.121.\n# Thanks to Pascal Delmoitie for these references.\n# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.\n# Assume Brussels switched to WET in 1918 when the armistice took effect.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tBelgium\t1918\tonly\t-\tMar\t 9\t 0:00s\t1:00\tS\nRule\tBelgium\t1918\t1919\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tBelgium\t1919\tonly\t-\tMar\t 1\t23:00s\t1:00\tS\nRule\tBelgium\t1920\tonly\t-\tFeb\t14\t23:00s\t1:00\tS\nRule\tBelgium\t1920\tonly\t-\tOct\t23\t23:00s\t0\t-\nRule\tBelgium\t1921\tonly\t-\tMar\t14\t23:00s\t1:00\tS\nRule\tBelgium\t1921\tonly\t-\tOct\t25\t23:00s\t0\t-\nRule\tBelgium\t1922\tonly\t-\tMar\t25\t23:00s\t1:00\tS\nRule\tBelgium\t1922\t1927\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tBelgium\t1923\tonly\t-\tApr\t21\t23:00s\t1:00\tS\nRule\tBelgium\t1924\tonly\t-\tMar\t29\t23:00s\t1:00\tS\nRule\tBelgium\t1925\tonly\t-\tApr\t 4\t23:00s\t1:00\tS\n# DSH writes that a royal decree of 1926-02-22 specified the Sun following 3rd\n# Sat in Apr (except if it's Easter, in which case it's one Sunday earlier),\n# to Sun following 1st Sat in Oct, and that a royal decree of 1928-09-15\n# changed the transition times to 02:00 GMT.\nRule\tBelgium\t1926\tonly\t-\tApr\t17\t23:00s\t1:00\tS\nRule\tBelgium\t1927\tonly\t-\tApr\t 9\t23:00s\t1:00\tS\nRule\tBelgium\t1928\tonly\t-\tApr\t14\t23:00s\t1:00\tS\nRule\tBelgium\t1928\t1938\t-\tOct\tSun>=2\t 2:00s\t0\t-\nRule\tBelgium\t1929\tonly\t-\tApr\t21\t 2:00s\t1:00\tS\nRule\tBelgium\t1930\tonly\t-\tApr\t13\t 2:00s\t1:00\tS\nRule\tBelgium\t1931\tonly\t-\tApr\t19\t 2:00s\t1:00\tS\nRule\tBelgium\t1932\tonly\t-\tApr\t 3\t 2:00s\t1:00\tS\nRule\tBelgium\t1933\tonly\t-\tMar\t26\t 2:00s\t1:00\tS\nRule\tBelgium\t1934\tonly\t-\tApr\t 8\t 2:00s\t1:00\tS\nRule\tBelgium\t1935\tonly\t-\tMar\t31\t 2:00s\t1:00\tS\nRule\tBelgium\t1936\tonly\t-\tApr\t19\t 2:00s\t1:00\tS\nRule\tBelgium\t1937\tonly\t-\tApr\t 4\t 2:00s\t1:00\tS\nRule\tBelgium\t1938\tonly\t-\tMar\t27\t 2:00s\t1:00\tS\nRule\tBelgium\t1939\tonly\t-\tApr\t16\t 2:00s\t1:00\tS\nRule\tBelgium\t1939\tonly\t-\tNov\t19\t 2:00s\t0\t-\nRule\tBelgium\t1940\tonly\t-\tFeb\t25\t 2:00s\t1:00\tS\nRule\tBelgium\t1944\tonly\t-\tSep\t17\t 2:00s\t0\t-\nRule\tBelgium\t1945\tonly\t-\tApr\t 2\t 2:00s\t1:00\tS\nRule\tBelgium\t1945\tonly\t-\tSep\t16\t 2:00s\t0\t-\nRule\tBelgium\t1946\tonly\t-\tMay\t19\t 2:00s\t1:00\tS\nRule\tBelgium\t1946\tonly\t-\tOct\t 7\t 2:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Brussels\t0:17:30 -\tLMT\t1880\n\t\t\t0:17:30\t-\tBMT\t1892 May  1 12:00 # Brussels MT\n\t\t\t0:00\t-\tWET\t1914 Nov  8\n\t\t\t1:00\t-\tCET\t1916 May  1  0:00\n\t\t\t1:00\tC-Eur\tCE%sT\t1918 Nov 11 11:00u\n\t\t\t0:00\tBelgium\tWE%sT\t1940 May 20  2:00s\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Sep  3\n\t\t\t1:00\tBelgium\tCE%sT\t1977\n\t\t\t1:00\tEU\tCE%sT\n\n# Bosnia and Herzegovina\n# see Serbia\n\n# Bulgaria\n#\n# From Plamen Simenov via Steffen Thorsen (1999-09-09):\n# A document of Government of Bulgaria (No.94/1997) says:\n# EET --> EETDST is in 03:00 Local time in last Sunday of March ...\n# EETDST --> EET is in 04:00 Local time in last Sunday of October\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tBulg\t1979\tonly\t-\tMar\t31\t23:00\t1:00\tS\nRule\tBulg\t1979\tonly\t-\tOct\t 1\t 1:00\t0\t-\nRule\tBulg\t1980\t1982\t-\tApr\tSat>=1\t23:00\t1:00\tS\nRule\tBulg\t1980\tonly\t-\tSep\t29\t 1:00\t0\t-\nRule\tBulg\t1981\tonly\t-\tSep\t27\t 2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Sofia\t1:33:16 -\tLMT\t1880\n\t\t\t1:56:56\t-\tIMT\t1894 Nov 30 # Istanbul MT?\n\t\t\t2:00\t-\tEET\t1942 Nov  2  3:00\n\t\t\t1:00\tC-Eur\tCE%sT\t1945\n\t\t\t1:00\t-\tCET\t1945 Apr 2 3:00\n\t\t\t2:00\t-\tEET\t1979 Mar 31 23:00\n\t\t\t2:00\tBulg\tEE%sT\t1982 Sep 26  2:00\n\t\t\t2:00\tC-Eur\tEE%sT\t1991\n\t\t\t2:00\tE-Eur\tEE%sT\t1997\n\t\t\t2:00\tEU\tEE%sT\n\n# Croatia\n# see Serbia\n\n# Cyprus\n# Please see the `asia' file for Asia/Nicosia.\n\n# Czech Republic\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tCzech\t1945\tonly\t-\tApr\t 8\t2:00s\t1:00\tS\nRule\tCzech\t1945\tonly\t-\tNov\t18\t2:00s\t0\t-\nRule\tCzech\t1946\tonly\t-\tMay\t 6\t2:00s\t1:00\tS\nRule\tCzech\t1946\t1949\t-\tOct\tSun>=1\t2:00s\t0\t-\nRule\tCzech\t1947\tonly\t-\tApr\t20\t2:00s\t1:00\tS\nRule\tCzech\t1948\tonly\t-\tApr\t18\t2:00s\t1:00\tS\nRule\tCzech\t1949\tonly\t-\tApr\t 9\t2:00s\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Prague\t0:57:44 -\tLMT\t1850\n\t\t\t0:57:44\t-\tPMT\t1891 Oct     # Prague Mean Time\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Sep 17 2:00s\n\t\t\t1:00\tCzech\tCE%sT\t1979\n\t\t\t1:00\tEU\tCE%sT\n\n# Denmark, Faroe Islands, and Greenland\n\n# From Jesper Norgaard Welen (2005-04-26):\n# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law\n# [introducing standard time] was in effect from 1894-01-01....\n# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL\n# confirms this, and states that the law was put forth 1893-03-29.\n#\n# The EU treaty with effect from 1973:\n# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL\n#\n# This provoked a new law from 1974 to make possible summer time changes\n# in subsequenet decrees with the law\n# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL\n#\n# It seems however that no decree was set forward until 1980.  I have\n# not found any decree, but in another related law, the effecting DST\n# changes are stated explicitly to be from 1980-04-06 at 02:00 to\n# 1980-09-28 at 02:00.  If this is true, this differs slightly from\n# the EU rule in that DST runs to 02:00, not 03:00.  We don't know\n# when Denmark began using the EU rule correctly, but we have only\n# confirmation of the 1980-time, so I presume it was correct in 1981:\n# The law is about the management of the extra hour, concerning\n# working hours reported and effect on obligatory-rest rules (which\n# was suspended on that night):\n# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL\n\n# From Jesper Norgaard Welen (2005-06-11):\n# The Herning Folkeblad (1980-09-26) reported that the night between\n# Saturday and Sunday the clock is set back from three to two.\n\n# From Paul Eggert (2005-06-11):\n# Hence the \"02:00\" of the 1980 law refers to standard time, not\n# wall-clock time, and so the EU rules were in effect in 1980.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tDenmark\t1916\tonly\t-\tMay\t14\t23:00\t1:00\tS\nRule\tDenmark\t1916\tonly\t-\tSep\t30\t23:00\t0\t-\nRule\tDenmark\t1940\tonly\t-\tMay\t15\t 0:00\t1:00\tS\nRule\tDenmark\t1945\tonly\t-\tApr\t 2\t 2:00s\t1:00\tS\nRule\tDenmark\t1945\tonly\t-\tAug\t15\t 2:00s\t0\t-\nRule\tDenmark\t1946\tonly\t-\tMay\t 1\t 2:00s\t1:00\tS\nRule\tDenmark\t1946\tonly\t-\tSep\t 1\t 2:00s\t0\t-\nRule\tDenmark\t1947\tonly\t-\tMay\t 4\t 2:00s\t1:00\tS\nRule\tDenmark\t1947\tonly\t-\tAug\t10\t 2:00s\t0\t-\nRule\tDenmark\t1948\tonly\t-\tMay\t 9\t 2:00s\t1:00\tS\nRule\tDenmark\t1948\tonly\t-\tAug\t 8\t 2:00s\t0\t-\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Europe/Copenhagen\t 0:50:20 -\tLMT\t1890\n\t\t\t 0:50:20 -\tCMT\t1894 Jan  1 # Copenhagen MT\n\t\t\t 1:00\tDenmark\tCE%sT\t1942 Nov  2 2:00s\n\t\t\t 1:00\tC-Eur\tCE%sT\t1945 Apr  2 2:00\n\t\t\t 1:00\tDenmark\tCE%sT\t1980\n\t\t\t 1:00\tEU\tCE%sT\nZone Atlantic/Faroe\t-0:27:04 -\tLMT\t1908 Jan 11\t# Torshavn\n\t\t\t 0:00\t-\tWET\t1981\n\t\t\t 0:00\tEU\tWE%sT\n#\n# From Paul Eggert (2004-10-31):\n# During World War II, Germany maintained secret manned weather stations in\n# East Greenland and Franz Josef Land, but we don't know their time zones.\n# My source for this is Wilhelm Dege's book mentioned under Svalbard.\n#\n# From Paul Eggert (2006-03-22):\n# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,\n# and left the EU on 1985-02-01.  It therefore should have been using EU\n# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthab\n# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU\n# rules since at least 1991.  Assume EU rules since 1980.\n\n# From Gwillin Law (2001-06-06), citing\n# <http://www.statkart.no/efs/efshefter/2001/efs5-2001.pdf> (2001-03-15),\n# and with translations corrected by Steffen Thorsen:\n#\n# Greenland has four local times, and the relation to UTC\n# is according to the following time line:\n#\n# The military zone near Thule\tUTC-4\n# Standard Greenland time\tUTC-3\n# Scoresbysund\t\t\tUTC-1\n# Danmarkshavn\t\t\tUTC\n#\n# In the military area near Thule and in Danmarkshavn DST will not be\n# introduced.\n\n# From Rives McDow (2001-11-01):\n#\n# I correspond regularly with the Dansk Polarcenter, and wrote them at\n# the time to clarify the situation in Thule.  Unfortunately, I have\n# not heard back from them regarding my recent letter.  [But I have\n# info from earlier correspondence.]\n#\n# According to the center, a very small local time zone around Thule\n# Air Base keeps the time according to UTC-4, implementing daylight\n# savings using North America rules, changing the time at 02:00 local time....\n#\n# The east coast of Greenland north of the community of Scoresbysund\n# uses UTC in the same way as in Iceland, year round, with no dst.\n# There are just a few stations on this coast, including the\n# Danmarkshavn ICAO weather station mentioned in your September 29th\n# email.  The other stations are two sledge patrol stations in\n# Mestersvig and Daneborg, the air force base at Station Nord, and the\n# DPC research station at Zackenberg.\n#\n# Scoresbysund and two small villages nearby keep time UTC-1 and use\n# the same daylight savings time period as in West Greenland (Godthab).\n#\n# The rest of Greenland, including Godthab (this area, although it\n# includes central Greenland, is known as west Greenland), keeps time\n# UTC-3, with daylight savings methods according to European rules.\n#\n# It is common procedure to use UTC 0 in the wilderness of East and\n# North Greenland, because it is mainly Icelandic aircraft operators\n# maintaining traffic in these areas.  However, the official status of\n# this area is that it sticks with Godthab time.  This area might be\n# considered a dual time zone in some respects because of this.\n\n# From Rives McDow (2001-11-19):\n# I heard back from someone stationed at Thule; the time change took place\n# there at 2:00 AM.\n\n# From Paul Eggert (2006-03-22):\n# From 1997 on the CIA map shows Danmarkshavn on GMT;\n# the 1995 map as like Godthab.\n# For lack of better info, assume they were like Godthab before 1996.\n# startkart.no says Thule does not observe DST, but this is clearly an error,\n# so go with Shanks & Pottenger for Thule transitions until this year.\n# For 2007 on assume Thule will stay in sync with US DST rules.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tThule\t1991\t1992\t-\tMar\tlastSun\t2:00\t1:00\tD\nRule\tThule\t1991\t1992\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tThule\t1993\t2006\t-\tApr\tSun>=1\t2:00\t1:00\tD\nRule\tThule\t1993\t2006\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tThule\t2007\tmax\t-\tMar\tSun>=8\t2:00\t1:00\tD\nRule\tThule\t2007\tmax\t-\tNov\tSun>=1\t2:00\t0\tS\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Danmarkshavn -1:14:40 -\tLMT\t1916 Jul 28\n\t\t\t-3:00\t-\tWGT\t1980 Apr  6 2:00\n\t\t\t-3:00\tEU\tWG%sT\t1996\n\t\t\t0:00\t-\tGMT\nZone America/Scoresbysund -1:27:52 -\tLMT\t1916 Jul 28 # Ittoqqortoormiit\n\t\t\t-2:00\t-\tCGT\t1980 Apr  6 2:00\n\t\t\t-2:00\tC-Eur\tCG%sT\t1981 Mar 29\n\t\t\t-1:00\tEU\tEG%sT\nZone America/Godthab\t-3:26:56 -\tLMT\t1916 Jul 28 # Nuuk\n\t\t\t-3:00\t-\tWGT\t1980 Apr  6 2:00\n\t\t\t-3:00\tEU\tWG%sT\nZone America/Thule\t-4:35:08 -\tLMT\t1916 Jul 28 # Pituffik air base\n\t\t\t-4:00\tThule\tA%sT\n\n# Estonia\n# From Peter Ilieve (1994-10-15):\n# A relative in Tallinn confirms the accuracy of the data for 1989 onwards\n# [through 1994] and gives the legal authority for it,\n# a regulation of the Government of Estonia, No. 111 of 1989....\n#\n# From Peter Ilieve (1996-10-28):\n# [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,\n# but a relative confirms that Estonia still switches at 02:00s, writing:]\n# ``I do not [know] exactly but there are some little different\n# (confusing) rules for International Air and Railway Transport Schedules\n# conversion in Sunday connected with end of summer time in Estonia....\n# A discussion is running about the summer time efficiency and effect on\n# human physiology.  It seems that Estonia maybe will not change to\n# summer time next spring.''\n\n# From Peter Ilieve (1998-11-04), heavily edited:\n# <a href=\"http://trip.rk.ee/cgi-bin/thw?${BASE}=akt&${OOHTML}=rtd&TA=1998&TO=1&AN=1390\">\n# The 1998-09-22 Estonian time law\n# </a>\n# refers to the Eighth Directive and cites the association agreement between\n# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).\n#\n# I also asked [my relative] whether they use any standard abbreviation\n# for their standard and summer times. He says no, they use \"suveaeg\"\n# (summer time) and \"talveaeg\" (winter time).\n\n# From <a href=\"http://www.baltictimes.com/\">The Baltic Times</a> (1999-09-09)\n# via Steffen Thorsen:\n# This year will mark the last time Estonia shifts to summer time,\n# a council of the ruling coalition announced Sept. 6....\n# But what this could mean for Estonia's chances of joining the European\n# Union are still unclear.  In 1994, the EU declared summer time compulsory\n# for all member states until 2001.  Brussels has yet to decide what to do\n# after that.\n\n# From Mart Oruaas (2000-01-29):\n# Regulation no. 301 (1999-10-12) obsoletes previous regulation\n# no. 206 (1998-09-22) and thus sticks Estonia to +02:00 GMT for all\n# the year round.  The regulation is effective 1999-11-01.\n\n# From Toomas Soome (2002-02-21):\n# The Estonian government has changed once again timezone politics.\n# Now we are using again EU rules.\n#\n# From Urmet Jaanes (2002-03-28):\n# The legislative reference is Government decree No. 84 on 2002-02-21.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Tallinn\t1:39:00\t-\tLMT\t1880\n\t\t\t1:39:00\t-\tTMT\t1918 Feb # Tallinn Mean Time\n\t\t\t1:00\tC-Eur\tCE%sT\t1919 Jul\n\t\t\t1:39:00\t-\tTMT\t1921 May\n\t\t\t2:00\t-\tEET\t1940 Aug  6\n\t\t\t3:00\t-\tMSK\t1941 Sep 15\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Sep 22\n\t\t\t3:00\tRussia\tMSK/MSD\t1989 Mar 26 2:00s\n\t\t\t2:00\t1:00\tEEST\t1989 Sep 24 2:00s\n\t\t\t2:00\tC-Eur\tEE%sT\t1998 Sep 22\n\t\t\t2:00\tEU\tEE%sT\t1999 Nov  1\n\t\t\t2:00\t-\tEET\t2002 Feb 21\n\t\t\t2:00\tEU\tEE%sT\n\n# Finland\n\n# From Hannu Strang (1994-09-25 06:03:37 UTC):\n# Well, here in Helsinki we're just changing from summer time to regular one,\n# and it's supposed to change at 4am...\n\n# From Janne Snabb (2010-0715):\n#\n# I noticed that the Finland data is not accurate for years 1981 and 1982.\n# During these two first trial years the DST adjustment was made one hour\n# earlier than in forthcoming years. Starting 1983 the adjustment was made\n# according to the central European standards.\n#\n# This is documented in Heikki Oja: Aikakirja 2007, published by The Almanac\n# Office of University of Helsinki, ISBN 952-10-3221-9, available online (in\n# Finnish) at\n#\n# <a href=\"http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf\">\n# http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf\n# </a>\n#\n# Page 105 (56 in PDF version) has a handy table of all past daylight savings\n# transitions. It is easy enough to interpret without Finnish skills.\n#\n# This is also confirmed by Finnish Broadcasting Company's archive at:\n#\n# <a href=\"http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401\">\n# http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401\n# </a>\n#\n# The news clip from 1981 says that \"the time between 2 and 3 o'clock does not\n# exist tonight.\"\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tFinland\t1942\tonly\t-\tApr\t3\t0:00\t1:00\tS\nRule\tFinland\t1942\tonly\t-\tOct\t3\t0:00\t0\t-\nRule\tFinland\t1981\t1982\t-\tMar\tlastSun\t2:00\t1:00\tS\nRule\tFinland\t1981\t1982\t-\tSep\tlastSun\t3:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Helsinki\t1:39:52 -\tLMT\t1878 May 31\n\t\t\t1:39:52\t-\tHMT\t1921 May    # Helsinki Mean Time\n\t\t\t2:00\tFinland\tEE%sT\t1983\n\t\t\t2:00\tEU\tEE%sT\n\n# Aaland Is\nLink\tEurope/Helsinki\tEurope/Mariehamn\n\n\n# France\n\n# From Ciro Discepolo (2000-12-20):\n#\n# Henri Le Corre, Regimes Horaires pour le monde entier, Editions\n# Traditionnelles - Paris 2 books, 1993\n#\n# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,\n# Paris, 1991\n#\n# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,\n# Guy tredaniel, Paris 1987\n\n\n#\n# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tFrance\t1916\tonly\t-\tJun\t14\t23:00s\t1:00\tS\nRule\tFrance\t1916\t1919\t-\tOct\tSun>=1\t23:00s\t0\t-\nRule\tFrance\t1917\tonly\t-\tMar\t24\t23:00s\t1:00\tS\nRule\tFrance\t1918\tonly\t-\tMar\t 9\t23:00s\t1:00\tS\nRule\tFrance\t1919\tonly\t-\tMar\t 1\t23:00s\t1:00\tS\nRule\tFrance\t1920\tonly\t-\tFeb\t14\t23:00s\t1:00\tS\nRule\tFrance\t1920\tonly\t-\tOct\t23\t23:00s\t0\t-\nRule\tFrance\t1921\tonly\t-\tMar\t14\t23:00s\t1:00\tS\nRule\tFrance\t1921\tonly\t-\tOct\t25\t23:00s\t0\t-\nRule\tFrance\t1922\tonly\t-\tMar\t25\t23:00s\t1:00\tS\n# DSH writes that a law of 1923-05-24 specified 3rd Sat in Apr at 23:00 to 1st\n# Sat in Oct at 24:00; and that in 1930, because of Easter, the transitions\n# were Apr 12 and Oct 5.  Go with Shanks & Pottenger.\nRule\tFrance\t1922\t1938\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tFrance\t1923\tonly\t-\tMay\t26\t23:00s\t1:00\tS\nRule\tFrance\t1924\tonly\t-\tMar\t29\t23:00s\t1:00\tS\nRule\tFrance\t1925\tonly\t-\tApr\t 4\t23:00s\t1:00\tS\nRule\tFrance\t1926\tonly\t-\tApr\t17\t23:00s\t1:00\tS\nRule\tFrance\t1927\tonly\t-\tApr\t 9\t23:00s\t1:00\tS\nRule\tFrance\t1928\tonly\t-\tApr\t14\t23:00s\t1:00\tS\nRule\tFrance\t1929\tonly\t-\tApr\t20\t23:00s\t1:00\tS\nRule\tFrance\t1930\tonly\t-\tApr\t12\t23:00s\t1:00\tS\nRule\tFrance\t1931\tonly\t-\tApr\t18\t23:00s\t1:00\tS\nRule\tFrance\t1932\tonly\t-\tApr\t 2\t23:00s\t1:00\tS\nRule\tFrance\t1933\tonly\t-\tMar\t25\t23:00s\t1:00\tS\nRule\tFrance\t1934\tonly\t-\tApr\t 7\t23:00s\t1:00\tS\nRule\tFrance\t1935\tonly\t-\tMar\t30\t23:00s\t1:00\tS\nRule\tFrance\t1936\tonly\t-\tApr\t18\t23:00s\t1:00\tS\nRule\tFrance\t1937\tonly\t-\tApr\t 3\t23:00s\t1:00\tS\nRule\tFrance\t1938\tonly\t-\tMar\t26\t23:00s\t1:00\tS\nRule\tFrance\t1939\tonly\t-\tApr\t15\t23:00s\t1:00\tS\nRule\tFrance\t1939\tonly\t-\tNov\t18\t23:00s\t0\t-\nRule\tFrance\t1940\tonly\t-\tFeb\t25\t 2:00\t1:00\tS\n# The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger\n# write that they were used in Monaco and in many French locations.\n# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,\n# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La\n# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,\n# Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,\n# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,\n# Dole, Morez, St-Claude, and Collonges (Haute-Savoie).\nRule\tFrance\t1941\tonly\t-\tMay\t 5\t 0:00\t2:00\tM # Midsummer\n# Shanks & Pottenger say this transition occurred at Oct 6 1:00,\n# but go with Denis Excoffier (1997-12-12),\n# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes\n# as saying 5/10/41 22hUT.\nRule\tFrance\t1941\tonly\t-\tOct\t 6\t 0:00\t1:00\tS\nRule\tFrance\t1942\tonly\t-\tMar\t 9\t 0:00\t2:00\tM\nRule\tFrance\t1942\tonly\t-\tNov\t 2\t 3:00\t1:00\tS\nRule\tFrance\t1943\tonly\t-\tMar\t29\t 2:00\t2:00\tM\nRule\tFrance\t1943\tonly\t-\tOct\t 4\t 3:00\t1:00\tS\nRule\tFrance\t1944\tonly\t-\tApr\t 3\t 2:00\t2:00\tM\nRule\tFrance\t1944\tonly\t-\tOct\t 8\t 1:00\t1:00\tS\nRule\tFrance\t1945\tonly\t-\tApr\t 2\t 2:00\t2:00\tM\nRule\tFrance\t1945\tonly\t-\tSep\t16\t 3:00\t0\t-\n# Shanks & Pottenger give Mar 28 2:00 and Sep 26 3:00;\n# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.\nRule\tFrance\t1976\tonly\t-\tMar\t28\t 1:00\t1:00\tS\nRule\tFrance\t1976\tonly\t-\tSep\t26\t 1:00\t0\t-\n# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,\n# but Howse quotes the actual French legislation as saying 0:09:21.\n# Go with Howse.  Howse writes that the time in France was officially based\n# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Paris\t0:09:21 -\tLMT\t1891 Mar 15  0:01\n\t\t\t0:09:21\t-\tPMT\t1911 Mar 11  0:01  # Paris MT\n# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.\n\t\t\t0:00\tFrance\tWE%sT\t1940 Jun 14 23:00\n# Le Corre says Paris stuck with occupied-France time after the liberation;\n# go with Shanks & Pottenger.\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Aug 25\n\t\t\t0:00\tFrance\tWE%sT\t1945 Sep 16  3:00\n\t\t\t1:00\tFrance\tCE%sT\t1977\n\t\t\t1:00\tEU\tCE%sT\n\n# Germany\n\n# From Markus Kuhn (1998-09-29):\n# The German time zone web site by the Physikalisch-Technische\n# Bundesanstalt contains DST information back to 1916.\n# [See tz-link.htm for the URL.]\n\n# From Joerg Schilling (2002-10-23):\n# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by\n# <a href=\"http://www.dhm.de/lemo/html/biografien/BersarinNikolai/\">\n# General [Nikolai] Bersarin</a>.\n\n# From Paul Eggert (2003-03-08):\n# <a href=\"http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf\">\n# http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf\n# </a>\n# says that Bersarin issued an order to use Moscow time on May 20.\n# However, Moscow did not observe daylight saving in 1945, so\n# this was equivalent to CEMT (GMT+3), not GMT+4.\n\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tGermany\t1946\tonly\t-\tApr\t14\t2:00s\t1:00\tS\nRule\tGermany\t1946\tonly\t-\tOct\t 7\t2:00s\t0\t-\nRule\tGermany\t1947\t1949\t-\tOct\tSun>=1\t2:00s\t0\t-\n# http://www.ptb.de/de/org/4/44/441/salt.htm says the following transition\n# occurred at 3:00 MEZ, not the 2:00 MEZ given in Shanks & Pottenger.\n# Go with the PTB.\nRule\tGermany\t1947\tonly\t-\tApr\t 6\t3:00s\t1:00\tS\nRule\tGermany\t1947\tonly\t-\tMay\t11\t2:00s\t2:00\tM\nRule\tGermany\t1947\tonly\t-\tJun\t29\t3:00\t1:00\tS\nRule\tGermany\t1948\tonly\t-\tApr\t18\t2:00s\t1:00\tS\nRule\tGermany\t1949\tonly\t-\tApr\t10\t2:00s\t1:00\tS\n\nRule SovietZone\t1945\tonly\t-\tMay\t24\t2:00\t2:00\tM # Midsummer\nRule SovietZone\t1945\tonly\t-\tSep\t24\t3:00\t1:00\tS\nRule SovietZone\t1945\tonly\t-\tNov\t18\t2:00s\t0\t-\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Berlin\t0:53:28 -\tLMT\t1893 Apr\n\t\t\t1:00\tC-Eur\tCE%sT\t1945 May 24 2:00\n\t\t\t1:00 SovietZone\tCE%sT\t1946\n\t\t\t1:00\tGermany\tCE%sT\t1980\n\t\t\t1:00\tEU\tCE%sT\n\n# Georgia\n# Please see the \"asia\" file for Asia/Tbilisi.\n# Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)\n# is in Europe.  Our reference location Tbilisi is in the Asian part.\n\n# Gibraltar\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Europe/Gibraltar\t-0:21:24 -\tLMT\t1880 Aug  2 0:00s\n\t\t\t0:00\tGB-Eire\t%s\t1957 Apr 14 2:00\n\t\t\t1:00\t-\tCET\t1982\n\t\t\t1:00\tEU\tCE%sT\n\n# Greece\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.\nRule\tGreece\t1932\tonly\t-\tJul\t 7\t0:00\t1:00\tS\nRule\tGreece\t1932\tonly\t-\tSep\t 1\t0:00\t0\t-\n# Whitman gives 1941 Apr 25 - ?; go with Shanks & Pottenger.\nRule\tGreece\t1941\tonly\t-\tApr\t 7\t0:00\t1:00\tS\n# Whitman gives 1942 Feb 2 - ?; go with Shanks & Pottenger.\nRule\tGreece\t1942\tonly\t-\tNov\t 2\t3:00\t0\t-\nRule\tGreece\t1943\tonly\t-\tMar\t30\t0:00\t1:00\tS\nRule\tGreece\t1943\tonly\t-\tOct\t 4\t0:00\t0\t-\n# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks & Pottenger.\nRule\tGreece\t1952\tonly\t-\tJul\t 1\t0:00\t1:00\tS\nRule\tGreece\t1952\tonly\t-\tNov\t 2\t0:00\t0\t-\nRule\tGreece\t1975\tonly\t-\tApr\t12\t0:00s\t1:00\tS\nRule\tGreece\t1975\tonly\t-\tNov\t26\t0:00s\t0\t-\nRule\tGreece\t1976\tonly\t-\tApr\t11\t2:00s\t1:00\tS\nRule\tGreece\t1976\tonly\t-\tOct\t10\t2:00s\t0\t-\nRule\tGreece\t1977\t1978\t-\tApr\tSun>=1\t2:00s\t1:00\tS\nRule\tGreece\t1977\tonly\t-\tSep\t26\t2:00s\t0\t-\nRule\tGreece\t1978\tonly\t-\tSep\t24\t4:00\t0\t-\nRule\tGreece\t1979\tonly\t-\tApr\t 1\t9:00\t1:00\tS\nRule\tGreece\t1979\tonly\t-\tSep\t29\t2:00\t0\t-\nRule\tGreece\t1980\tonly\t-\tApr\t 1\t0:00\t1:00\tS\nRule\tGreece\t1980\tonly\t-\tSep\t28\t0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Athens\t1:34:52 -\tLMT\t1895 Sep 14\n\t\t\t1:34:52\t-\tAMT\t1916 Jul 28 0:01     # Athens MT\n\t\t\t2:00\tGreece\tEE%sT\t1941 Apr 30\n\t\t\t1:00\tGreece\tCE%sT\t1944 Apr  4\n\t\t\t2:00\tGreece\tEE%sT\t1981\n\t\t\t# Shanks & Pottenger say it switched to C-Eur in 1981;\n\t\t\t# go with EU instead, since Greece joined it on Jan 1.\n\t\t\t2:00\tEU\tEE%sT\n\n# Hungary\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tHungary\t1918\tonly\t-\tApr\t 1\t 3:00\t1:00\tS\nRule\tHungary\t1918\tonly\t-\tSep\t29\t 3:00\t0\t-\nRule\tHungary\t1919\tonly\t-\tApr\t15\t 3:00\t1:00\tS\nRule\tHungary\t1919\tonly\t-\tSep\t15\t 3:00\t0\t-\nRule\tHungary\t1920\tonly\t-\tApr\t 5\t 3:00\t1:00\tS\nRule\tHungary\t1920\tonly\t-\tSep\t30\t 3:00\t0\t-\nRule\tHungary\t1945\tonly\t-\tMay\t 1\t23:00\t1:00\tS\nRule\tHungary\t1945\tonly\t-\tNov\t 3\t 0:00\t0\t-\nRule\tHungary\t1946\tonly\t-\tMar\t31\t 2:00s\t1:00\tS\nRule\tHungary\t1946\t1949\t-\tOct\tSun>=1\t 2:00s\t0\t-\nRule\tHungary\t1947\t1949\t-\tApr\tSun>=4\t 2:00s\t1:00\tS\nRule\tHungary\t1950\tonly\t-\tApr\t17\t 2:00s\t1:00\tS\nRule\tHungary\t1950\tonly\t-\tOct\t23\t 2:00s\t0\t-\nRule\tHungary\t1954\t1955\t-\tMay\t23\t 0:00\t1:00\tS\nRule\tHungary\t1954\t1955\t-\tOct\t 3\t 0:00\t0\t-\nRule\tHungary\t1956\tonly\t-\tJun\tSun>=1\t 0:00\t1:00\tS\nRule\tHungary\t1956\tonly\t-\tSep\tlastSun\t 0:00\t0\t-\nRule\tHungary\t1957\tonly\t-\tJun\tSun>=1\t 1:00\t1:00\tS\nRule\tHungary\t1957\tonly\t-\tSep\tlastSun\t 3:00\t0\t-\nRule\tHungary\t1980\tonly\t-\tApr\t 6\t 1:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Budapest\t1:16:20 -\tLMT\t1890 Oct\n\t\t\t1:00\tC-Eur\tCE%sT\t1918\n\t\t\t1:00\tHungary\tCE%sT\t1941 Apr  6  2:00\n\t\t\t1:00\tC-Eur\tCE%sT\t1945\n\t\t\t1:00\tHungary\tCE%sT\t1980 Sep 28  2:00s\n\t\t\t1:00\tEU\tCE%sT\n\n# Iceland\n#\n# From Adam David (1993-11-06):\n# The name of the timezone in Iceland for system / mail / news purposes is GMT.\n#\n# (1993-12-05):\n# This material is paraphrased from the 1988 edition of the University of\n# Iceland Almanak.\n#\n# From January 1st, 1908 the whole of Iceland was standardised at 1 hour\n# behind GMT. Previously, local mean solar time was used in different parts\n# of Iceland, the almanak had been based on Reykjavik mean solar time which\n# was 1 hour and 28 minutes behind GMT.\n#\n# \"first day of winter\" referred to [below] means the first day of the 26 weeks\n# of winter, according to the old icelandic calendar that dates back to the\n# time the norsemen first settled Iceland.  The first day of winter is always\n# Saturday, but is not dependent on the Julian or Gregorian calendars.\n#\n# (1993-12-10):\n# I have a reference from the Oxford Icelandic-English dictionary for the\n# beginning of winter, which ties it to the ecclesiastical calendar (and thus\n# to the julian/gregorian calendar) over the period in question.\n#\tthe winter begins on the Saturday next before St. Luke's day\n#\t(old style), or on St. Luke's day, if a Saturday.\n# St. Luke's day ought to be traceable from ecclesiastical sources. \"old style\"\n# might be a reference to the Julian calendar as opposed to Gregorian, or it\n# might mean something else (???).\n#\n# From Paul Eggert (2006-03-22):\n# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points.\n# We go with the Almanak, except for one claim from Shanks & Pottenger, namely\n# that Reykavik was 21W57 from 1837 to 1908, local mean time before that.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tIceland\t1917\t1918\t-\tFeb\t19\t23:00\t1:00\tS\nRule\tIceland\t1917\tonly\t-\tOct\t21\t 1:00\t0\t-\nRule\tIceland\t1918\tonly\t-\tNov\t16\t 1:00\t0\t-\nRule\tIceland\t1939\tonly\t-\tApr\t29\t23:00\t1:00\tS\nRule\tIceland\t1939\tonly\t-\tNov\t29\t 2:00\t0\t-\nRule\tIceland\t1940\tonly\t-\tFeb\t25\t 2:00\t1:00\tS\nRule\tIceland\t1940\tonly\t-\tNov\t 3\t 2:00\t0\t-\nRule\tIceland\t1941\tonly\t-\tMar\t 2\t 1:00s\t1:00\tS\nRule\tIceland\t1941\tonly\t-\tNov\t 2\t 1:00s\t0\t-\nRule\tIceland\t1942\tonly\t-\tMar\t 8\t 1:00s\t1:00\tS\nRule\tIceland\t1942\tonly\t-\tOct\t25\t 1:00s\t0\t-\n# 1943-1946 - first Sunday in March until first Sunday in winter\nRule\tIceland\t1943\t1946\t-\tMar\tSun>=1\t 1:00s\t1:00\tS\nRule\tIceland\t1943\t1948\t-\tOct\tSun>=22\t 1:00s\t0\t-\n# 1947-1967 - first Sunday in April until first Sunday in winter\nRule\tIceland\t1947\t1967\t-\tApr\tSun>=1\t 1:00s\t1:00\tS\n# 1949 Oct transition delayed by 1 week\nRule\tIceland\t1949\tonly\t-\tOct\t30\t 1:00s\t0\t-\nRule\tIceland\t1950\t1966\t-\tOct\tSun>=22\t 1:00s\t0\t-\nRule\tIceland\t1967\tonly\t-\tOct\t29\t 1:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Atlantic/Reykjavik\t-1:27:24 -\tLMT\t1837\n\t\t\t-1:27:48 -\tRMT\t1908 # Reykjavik Mean Time?\n\t\t\t-1:00\tIceland\tIS%sT\t1968 Apr 7 1:00s\n\t\t\t 0:00\t-\tGMT\n\n# Italy\n#\n# From Paul Eggert (2001-03-06):\n# Sicily and Sardinia each had their own time zones from 1866 to 1893,\n# called Palermo Time (+00:53:28) and Cagliari Time (+00:36:32).\n# During World War II, German-controlled Italy used German time.\n# But these events all occurred before the 1970 cutoff,\n# so record only the time in Rome.\n#\n# From Paul Eggert (2006-03-22):\n# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and\n# F. Pollastri\n# <a href=\"http://toi.iriti.cnr.it/uk/ienitlt.html\">\n# Day-light Saving Time in Italy (2006-02-03)\n# </a>\n# (`FP' below), taken from an Italian National Electrotechnical Institute\n# publication. When the three sources disagree, guess who's right, as follows:\n#\n# year\tFP\tShanks&P. (S)\tWhitman (W)\tGo with:\n# 1916\t06-03\t06-03 24:00\t06-03 00:00\tFP & W\n#\t09-30\t09-30 24:00\t09-30 01:00\tFP; guess 24:00s\n# 1917\t04-01\t03-31 24:00\t03-31 00:00\tFP & S\n#\t09-30\t09-29 24:00\t09-30 01:00\tFP & W\n# 1918\t03-09\t03-09 24:00\t03-09 00:00\tFP & S\n#\t10-06\t10-05 24:00\t10-06 01:00\tFP & W\n# 1919\t03-01\t03-01 24:00\t03-01 00:00\tFP & S\n#\t10-04\t10-04 24:00\t10-04 01:00\tFP; guess 24:00s\n# 1920\t03-20\t03-20 24:00\t03-20 00:00\tFP & S\n#\t09-18\t09-18 24:00\t10-01 01:00\tFP; guess 24:00s\n# 1944\t04-02\t04-03 02:00\t\t\tS (see C-Eur)\n#\t09-16\t10-02 03:00\t\t\tFP; guess 24:00s\n# 1945\t09-14\t09-16 24:00\t\t\tFP; guess 24:00s\n# 1970\t05-21\t05-31 00:00\t\t\tS\n#\t09-20\t09-27 00:00\t\t\tS\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tItaly\t1916\tonly\t-\tJun\t 3\t0:00s\t1:00\tS\nRule\tItaly\t1916\tonly\t-\tOct\t 1\t0:00s\t0\t-\nRule\tItaly\t1917\tonly\t-\tApr\t 1\t0:00s\t1:00\tS\nRule\tItaly\t1917\tonly\t-\tSep\t30\t0:00s\t0\t-\nRule\tItaly\t1918\tonly\t-\tMar\t10\t0:00s\t1:00\tS\nRule\tItaly\t1918\t1919\t-\tOct\tSun>=1\t0:00s\t0\t-\nRule\tItaly\t1919\tonly\t-\tMar\t 2\t0:00s\t1:00\tS\nRule\tItaly\t1920\tonly\t-\tMar\t21\t0:00s\t1:00\tS\nRule\tItaly\t1920\tonly\t-\tSep\t19\t0:00s\t0\t-\nRule\tItaly\t1940\tonly\t-\tJun\t15\t0:00s\t1:00\tS\nRule\tItaly\t1944\tonly\t-\tSep\t17\t0:00s\t0\t-\nRule\tItaly\t1945\tonly\t-\tApr\t 2\t2:00\t1:00\tS\nRule\tItaly\t1945\tonly\t-\tSep\t15\t0:00s\t0\t-\nRule\tItaly\t1946\tonly\t-\tMar\t17\t2:00s\t1:00\tS\nRule\tItaly\t1946\tonly\t-\tOct\t 6\t2:00s\t0\t-\nRule\tItaly\t1947\tonly\t-\tMar\t16\t0:00s\t1:00\tS\nRule\tItaly\t1947\tonly\t-\tOct\t 5\t0:00s\t0\t-\nRule\tItaly\t1948\tonly\t-\tFeb\t29\t2:00s\t1:00\tS\nRule\tItaly\t1948\tonly\t-\tOct\t 3\t2:00s\t0\t-\nRule\tItaly\t1966\t1968\t-\tMay\tSun>=22\t0:00\t1:00\tS\nRule\tItaly\t1966\t1969\t-\tSep\tSun>=22\t0:00\t0\t-\nRule\tItaly\t1969\tonly\t-\tJun\t 1\t0:00\t1:00\tS\nRule\tItaly\t1970\tonly\t-\tMay\t31\t0:00\t1:00\tS\nRule\tItaly\t1970\tonly\t-\tSep\tlastSun\t0:00\t0\t-\nRule\tItaly\t1971\t1972\t-\tMay\tSun>=22\t0:00\t1:00\tS\nRule\tItaly\t1971\tonly\t-\tSep\tlastSun\t1:00\t0\t-\nRule\tItaly\t1972\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tItaly\t1973\tonly\t-\tJun\t 3\t0:00\t1:00\tS\nRule\tItaly\t1973\t1974\t-\tSep\tlastSun\t0:00\t0\t-\nRule\tItaly\t1974\tonly\t-\tMay\t26\t0:00\t1:00\tS\nRule\tItaly\t1975\tonly\t-\tJun\t 1\t0:00s\t1:00\tS\nRule\tItaly\t1975\t1977\t-\tSep\tlastSun\t0:00s\t0\t-\nRule\tItaly\t1976\tonly\t-\tMay\t30\t0:00s\t1:00\tS\nRule\tItaly\t1977\t1979\t-\tMay\tSun>=22\t0:00s\t1:00\tS\nRule\tItaly\t1978\tonly\t-\tOct\t 1\t0:00s\t0\t-\nRule\tItaly\t1979\tonly\t-\tSep\t30\t0:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Rome\t0:49:56 -\tLMT\t1866 Sep 22\n\t\t\t0:49:56\t-\tRMT\t1893 Nov  1 0:00s # Rome Mean\n\t\t\t1:00\tItaly\tCE%sT\t1942 Nov  2 2:00s\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Jul\n\t\t\t1:00\tItaly\tCE%sT\t1980\n\t\t\t1:00\tEU\tCE%sT\n\nLink\tEurope/Rome\tEurope/Vatican\nLink\tEurope/Rome\tEurope/San_Marino\n\n# Latvia\n\n# From Liene Kanepe (1998-09-17):\n\n# I asked about this matter Scientific Secretary of the Institute of Astronomy\n# of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the\n# correct data in juridical acts and I found some juridical documents about\n# changes in the counting of time in Latvia from 1981....\n#\n# Act No.35 of the Council of Ministers of Latvian SSR of 1981-01-22 ...\n# according to the Act No.925 of the Council of Ministers of USSR of 1980-10-24\n# ...: all year round the time of 2nd time zone + 1 hour, in addition turning\n# the hands of the clock 1 hour forward on 1 April at 00:00 (GMT 31 March 21:00)\n# and 1 hour backward on the 1 October at 00:00 (GMT 30 September 20:00).\n#\n# Act No.592 of the Council of Ministers of Latvian SSR of 1984-09-24 ...\n# according to the Act No.967 of the Council of Ministers of USSR of 1984-09-13\n# ...: all year round the time of 2nd time zone + 1 hour, in addition turning\n# the hands of the clock 1 hour forward on the last Sunday of March at 02:00\n# (GMT 23:00 on the previous day) and 1 hour backward on the last Sunday of\n# September at 03:00 (GMT 23:00 on the previous day).\n#\n# Act No.81 of the Council of Ministers of Latvian SSR of 1989-03-22 ...\n# according to the Act No.227 of the Council of Ministers of USSR of 1989-03-14\n# ...: since the last Sunday of March 1989 in Lithuanian SSR, Latvian SSR,\n# Estonian SSR and Kaliningrad region of Russian Federation all year round the\n# time of 2nd time zone (Moscow time minus one hour). On the territory of Latvia\n# transition to summer time is performed on the last Sunday of March at 02:00\n# (GMT 00:00), turning the hands of the clock 1 hour forward.  The end of\n# daylight saving time is performed on the last Sunday of September at 03:00\n# (GMT 00:00), turning the hands of the clock 1 hour backward. Exception is\n# 1989-03-26, when we must not turn the hands of the clock....\n#\n# The Regulations of the Cabinet of Ministers of the Republic of Latvia of\n# 1997-01-21 on transition to Summer time ... established the same order of\n# daylight savings time settings as in the States of the European Union.\n\n# From Andrei Ivanov (2000-03-06):\n# This year Latvia will not switch to Daylight Savings Time (as specified in\n# <a href=\"http://www.lv-laiks.lv/wwwraksti/2000/071072/vd4.htm\">\n# The Regulations of the Cabinet of Ministers of the Rep. of Latvia of\n# 29-Feb-2000 (#79)</a>, in Latvian for subscribers only).\n\n# <a href=\"http://www.rferl.org/newsline/2001/01/3-CEE/cee-030101.html\">\n# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:\n# </a>\n# The Latvian government on 2 January decided that the country will\n# institute daylight-saving time this spring, LETA reported.\n# Last February the three Baltic states decided not to turn back their\n# clocks one hour in the spring....\n# Minister of Economy Aigars Kalvitis noted that Latvia had too few\n# daylight hours and thus decided to comply with a draft European\n# Commission directive that provides for instituting daylight-saving\n# time in EU countries between 2002 and 2006. The Latvian government\n# urged Lithuania and Estonia to adopt a similar time policy, but it\n# appears that they will not do so....\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tLatvia\t1989\t1996\t-\tMar\tlastSun\t 2:00s\t1:00\tS\nRule\tLatvia\t1989\t1996\t-\tSep\tlastSun\t 2:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Riga\t1:36:24\t-\tLMT\t1880\n\t\t\t1:36:24\t-\tRMT\t1918 Apr 15 2:00 #Riga Mean Time\n\t\t\t1:36:24\t1:00\tLST\t1918 Sep 16 3:00 #Latvian Summer\n\t\t\t1:36:24\t-\tRMT\t1919 Apr  1 2:00\n\t\t\t1:36:24\t1:00\tLST\t1919 May 22 3:00\n\t\t\t1:36:24\t-\tRMT\t1926 May 11\n\t\t\t2:00\t-\tEET\t1940 Aug  5\n\t\t\t3:00\t-\tMSK\t1941 Jul\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Oct 13\n\t\t\t3:00\tRussia\tMSK/MSD\t1989 Mar lastSun 2:00s\n\t\t\t2:00\t1:00\tEEST\t1989 Sep lastSun 2:00s\n\t\t\t2:00\tLatvia\tEE%sT\t1997 Jan 21\n\t\t\t2:00\tEU\tEE%sT\t2000 Feb 29\n\t\t\t2:00\t-\tEET\t2001 Jan  2\n\t\t\t2:00\tEU\tEE%sT\n\n# Liechtenstein\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Vaduz\t0:38:04 -\tLMT\t1894 Jun\n\t\t\t1:00\t-\tCET\t1981\n\t\t\t1:00\tEU\tCE%sT\n\n# Lithuania\n\n# From Paul Eggert (1996-11-22):\n# IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is\n# known to be wrong about Estonia and Latvia, assume it's wrong here too.\n\n# From Marius Gedminas (1998-08-07):\n# I would like to inform that in this year Lithuanian time zone\n# (Europe/Vilnius) was changed.\n\n# From <a href=\"http://www.elta.lt/\">ELTA</a> No. 972 (2582) (1999-09-29),\n# via Steffen Thorsen:\n# Lithuania has shifted back to the second time zone (GMT plus two hours)\n# to be valid here starting from October 31,\n# as decided by the national government on Wednesday....\n# The Lithuanian government also announced plans to consider a\n# motion to give up shifting to summer time in spring, as it was\n# already done by Estonia.\n\n# From the <a href=\"http://www.tourism.lt/informa/ff.htm\">\n# Fact File, Lithuanian State Department of Tourism\n# </a> (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.\n\n# From a user via Klaus Marten (2003-02-07):\n# As a candidate for membership of the European Union, Lithuania will\n# observe Summer Time in 2003, changing its clocks at the times laid\n# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its\n# neighbour Latvia). The text of the Lithuanian government Order of\n# 7.XI.02 to this effect can be found at\n# http://www.lrvk.lt/nut/11/n1749.htm\n\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Vilnius\t1:41:16\t-\tLMT\t1880\n\t\t\t1:24:00\t-\tWMT\t1917\t    # Warsaw Mean Time\n\t\t\t1:35:36\t-\tKMT\t1919 Oct 10 # Kaunas Mean Time\n\t\t\t1:00\t-\tCET\t1920 Jul 12\n\t\t\t2:00\t-\tEET\t1920 Oct  9\n\t\t\t1:00\t-\tCET\t1940 Aug  3\n\t\t\t3:00\t-\tMSK\t1941 Jun 24\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Aug\n\t\t\t3:00\tRussia\tMSK/MSD\t1991 Mar 31 2:00s\n\t\t\t2:00\t1:00\tEEST\t1991 Sep 29 2:00s\n\t\t\t2:00\tC-Eur\tEE%sT\t1998\n\t\t\t2:00\t-\tEET\t1998 Mar 29 1:00u\n\t\t\t1:00\tEU\tCE%sT\t1999 Oct 31 1:00u\n\t\t\t2:00\t-\tEET\t2003 Jan  1\n\t\t\t2:00\tEU\tEE%sT\n\n# Luxembourg\n# Whitman disagrees with most of these dates in minor ways;\n# go with Shanks & Pottenger.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tLux\t1916\tonly\t-\tMay\t14\t23:00\t1:00\tS\nRule\tLux\t1916\tonly\t-\tOct\t 1\t 1:00\t0\t-\nRule\tLux\t1917\tonly\t-\tApr\t28\t23:00\t1:00\tS\nRule\tLux\t1917\tonly\t-\tSep\t17\t 1:00\t0\t-\nRule\tLux\t1918\tonly\t-\tApr\tMon>=15\t 2:00s\t1:00\tS\nRule\tLux\t1918\tonly\t-\tSep\tMon>=15\t 2:00s\t0\t-\nRule\tLux\t1919\tonly\t-\tMar\t 1\t23:00\t1:00\tS\nRule\tLux\t1919\tonly\t-\tOct\t 5\t 3:00\t0\t-\nRule\tLux\t1920\tonly\t-\tFeb\t14\t23:00\t1:00\tS\nRule\tLux\t1920\tonly\t-\tOct\t24\t 2:00\t0\t-\nRule\tLux\t1921\tonly\t-\tMar\t14\t23:00\t1:00\tS\nRule\tLux\t1921\tonly\t-\tOct\t26\t 2:00\t0\t-\nRule\tLux\t1922\tonly\t-\tMar\t25\t23:00\t1:00\tS\nRule\tLux\t1922\tonly\t-\tOct\tSun>=2\t 1:00\t0\t-\nRule\tLux\t1923\tonly\t-\tApr\t21\t23:00\t1:00\tS\nRule\tLux\t1923\tonly\t-\tOct\tSun>=2\t 2:00\t0\t-\nRule\tLux\t1924\tonly\t-\tMar\t29\t23:00\t1:00\tS\nRule\tLux\t1924\t1928\t-\tOct\tSun>=2\t 1:00\t0\t-\nRule\tLux\t1925\tonly\t-\tApr\t 5\t23:00\t1:00\tS\nRule\tLux\t1926\tonly\t-\tApr\t17\t23:00\t1:00\tS\nRule\tLux\t1927\tonly\t-\tApr\t 9\t23:00\t1:00\tS\nRule\tLux\t1928\tonly\t-\tApr\t14\t23:00\t1:00\tS\nRule\tLux\t1929\tonly\t-\tApr\t20\t23:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Europe/Luxembourg\t0:24:36 -\tLMT\t1904 Jun\n\t\t\t1:00\tLux\tCE%sT\t1918 Nov 25\n\t\t\t0:00\tLux\tWE%sT\t1929 Oct  6 2:00s\n\t\t\t0:00\tBelgium\tWE%sT\t1940 May 14 3:00\n\t\t\t1:00\tC-Eur\tWE%sT\t1944 Sep 18 3:00\n\t\t\t1:00\tBelgium\tCE%sT\t1977\n\t\t\t1:00\tEU\tCE%sT\n\n# Macedonia\n# see Serbia\n\n# Malta\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tMalta\t1973\tonly\t-\tMar\t31\t0:00s\t1:00\tS\nRule\tMalta\t1973\tonly\t-\tSep\t29\t0:00s\t0\t-\nRule\tMalta\t1974\tonly\t-\tApr\t21\t0:00s\t1:00\tS\nRule\tMalta\t1974\tonly\t-\tSep\t16\t0:00s\t0\t-\nRule\tMalta\t1975\t1979\t-\tApr\tSun>=15\t2:00\t1:00\tS\nRule\tMalta\t1975\t1980\t-\tSep\tSun>=15\t2:00\t0\t-\nRule\tMalta\t1980\tonly\t-\tMar\t31\t2:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Malta\t0:58:04 -\tLMT\t1893 Nov  2 0:00s # Valletta\n\t\t\t1:00\tItaly\tCE%sT\t1942 Nov  2 2:00s\n\t\t\t1:00\tC-Eur\tCE%sT\t1945 Apr  2 2:00s\n\t\t\t1:00\tItaly\tCE%sT\t1973 Mar 31\n\t\t\t1:00\tMalta\tCE%sT\t1981\n\t\t\t1:00\tEU\tCE%sT\n\n# Moldova\n\n# From Paul Eggert (2006-03-22):\n# A previous version of this database followed Shanks & Pottenger, who write\n# that Tiraspol switched to Moscow time on 1992-01-19 at 02:00.\n# However, this is most likely an error, as Moldova declared independence\n# on 1991-08-27 (the 1992-01-19 date is that of a Russian decree).\n# In early 1992 there was large-scale interethnic violence in the area\n# and it's possible that some Russophones continued to observe Moscow time.\n# But [two people] separately reported via\n# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.\n# The Tiraspol entry has therefore been removed for now.\n#\n# From Alexander Krivenyshev (2011-10-17):\n# Pridnestrovian Moldavian Republic (PMR, also known as\n# \"Pridnestrovie\") has abolished seasonal clock change (no transition\n# to the Winter Time).\n#\n# News (in Russian):\n# <a href=\"http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html\">\n# http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html\n# </a>\n#\n# <a href=\"http://www.allmoldova.com/moldova-news/1249064116.html\">\n# http://www.allmoldova.com/moldova-news/1249064116.html\n# </a>\n#\n# The substance of this change (reinstatement of the Tiraspol entry)\n# is from a patch from Petr Machata (2011-10-17)\n#\n# From Tim Parenti (2011-10-19)\n# In addition, being situated at +4651+2938 would give Tiraspol\n# a pre-1880 LMT offset of 1:58:32.\n#\n# (which agrees with the earlier entry that had been removed)\n#\n# From Alexander Krivenyshev (2011-10-26)\n# NO need to divide Moldova into two timezones at this point.\n# As of today, Transnistria (Pridnestrovie)- Tiraspol reversed its own\n# decision to abolish DST this winter.\n# Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-\n# Tiraspol will go back to winter time on October 30, 2011.\n# News from Moldova (in russian):\n# <a href=\"http://ru.publika.md/link_317061.html\">\n# http://ru.publika.md/link_317061.html\n# </a>\n\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Chisinau\t1:55:20 -\tLMT\t1880\n\t\t\t1:55\t-\tCMT\t1918 Feb 15 # Chisinau MT\n\t\t\t1:44:24\t-\tBMT\t1931 Jul 24 # Bucharest MT\n\t\t\t2:00\tRomania\tEE%sT\t1940 Aug 15\n\t\t\t2:00\t1:00\tEEST\t1941 Jul 17\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Aug 24\n\t\t\t3:00\tRussia\tMSK/MSD\t1990\n\t\t\t3:00\t-\tMSK\t1990 May 6\n\t\t\t2:00\t-\tEET\t1991\n\t\t\t2:00\tRussia\tEE%sT\t1992\n\t\t\t2:00\tE-Eur\tEE%sT\t1997\n# See Romania commentary for the guessed 1997 transition to EU rules.\n\t\t\t2:00\tEU\tEE%sT\n\n# Monaco\n# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's\n# more precise 0:09:21.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Monaco\t0:29:32 -\tLMT\t1891 Mar 15\n\t\t\t0:09:21\t-\tPMT\t1911 Mar 11    # Paris Mean Time\n\t\t\t0:00\tFrance\tWE%sT\t1945 Sep 16 3:00\n\t\t\t1:00\tFrance\tCE%sT\t1977\n\t\t\t1:00\tEU\tCE%sT\n\n# Montenegro\n# see Serbia\n\n# Netherlands\n\n# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,\n# but for other purposes the Netherlands used Amsterdam mean time.\n\n# However, Robert H. van Gent writes (2001-04-01):\n# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00\n# Amsterdam mean time) onwards, the whole of the Netherlands (including\n# the Dutch railways) was required by law to observe Amsterdam mean time\n# (19 minutes 32.13 seconds ahead of GMT). This had already been the\n# common practice (except for the railways) for many decades but it was\n# not until 1909 when the Dutch government finally defined this by law.\n# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and\n# was generally known as Dutch Time (\"Nederlandse Tijd\").\n#\n# (2001-04-08):\n# 1892-05-01 was the date when the Dutch railways were by law required to\n# observe GMT while the remainder of the Netherlands adhered to the common\n# practice of following Amsterdam mean time.\n#\n# (2001-04-09):\n# In 1835 the authorities of the province of North Holland requested the\n# municipal authorities of the towns and cities in the province to observe\n# Amsterdam mean time but I do not know in how many cases this request was\n# actually followed.\n#\n# From 1852 onwards the Dutch telegraph offices were by law required to\n# observe Amsterdam mean time. As the time signals from the observatory of\n# Leiden were also distributed by the telegraph system, I assume that most\n# places linked up with the telegraph (and railway) system automatically\n# adopted Amsterdam mean time.\n#\n# Although the early Dutch railway companies initially observed a variety\n# of times, most of them had adopted Amsterdam mean time by 1858 but it\n# was not until 1866 when they were all required by law to observe\n# Amsterdam mean time.\n\n# The data before 1945 are taken from\n# <http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm>.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNeth\t1916\tonly\t-\tMay\t 1\t0:00\t1:00\tNST\t# Netherlands Summer Time\nRule\tNeth\t1916\tonly\t-\tOct\t 1\t0:00\t0\tAMT\t# Amsterdam Mean Time\nRule\tNeth\t1917\tonly\t-\tApr\t16\t2:00s\t1:00\tNST\nRule\tNeth\t1917\tonly\t-\tSep\t17\t2:00s\t0\tAMT\nRule\tNeth\t1918\t1921\t-\tApr\tMon>=1\t2:00s\t1:00\tNST\nRule\tNeth\t1918\t1921\t-\tSep\tlastMon\t2:00s\t0\tAMT\nRule\tNeth\t1922\tonly\t-\tMar\tlastSun\t2:00s\t1:00\tNST\nRule\tNeth\t1922\t1936\t-\tOct\tSun>=2\t2:00s\t0\tAMT\nRule\tNeth\t1923\tonly\t-\tJun\tFri>=1\t2:00s\t1:00\tNST\nRule\tNeth\t1924\tonly\t-\tMar\tlastSun\t2:00s\t1:00\tNST\nRule\tNeth\t1925\tonly\t-\tJun\tFri>=1\t2:00s\t1:00\tNST\n# From 1926 through 1939 DST began 05-15, except that it was delayed by a week\n# in years when 05-15 fell in the Pentecost weekend.\nRule\tNeth\t1926\t1931\t-\tMay\t15\t2:00s\t1:00\tNST\nRule\tNeth\t1932\tonly\t-\tMay\t22\t2:00s\t1:00\tNST\nRule\tNeth\t1933\t1936\t-\tMay\t15\t2:00s\t1:00\tNST\nRule\tNeth\t1937\tonly\t-\tMay\t22\t2:00s\t1:00\tNST\nRule\tNeth\t1937\tonly\t-\tJul\t 1\t0:00\t1:00\tS\nRule\tNeth\t1937\t1939\t-\tOct\tSun>=2\t2:00s\t0\t-\nRule\tNeth\t1938\t1939\t-\tMay\t15\t2:00s\t1:00\tS\nRule\tNeth\t1945\tonly\t-\tApr\t 2\t2:00s\t1:00\tS\nRule\tNeth\t1945\tonly\t-\tSep\t16\t2:00s\t0\t-\n#\n# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted\n# below because the current format requires GMTOFF to be an integer.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Europe/Amsterdam\t0:19:32 -\tLMT\t1835\n\t\t\t0:19:32\tNeth\t%s\t1937 Jul  1\n\t\t\t0:20\tNeth\tNE%sT\t1940 May 16 0:00 # Dutch Time\n\t\t\t1:00\tC-Eur\tCE%sT\t1945 Apr  2 2:00\n\t\t\t1:00\tNeth\tCE%sT\t1977\n\t\t\t1:00\tEU\tCE%sT\n\n# Norway\n# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &\n# Pottenger.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNorway\t1916\tonly\t-\tMay\t22\t1:00\t1:00\tS\nRule\tNorway\t1916\tonly\t-\tSep\t30\t0:00\t0\t-\nRule\tNorway\t1945\tonly\t-\tApr\t 2\t2:00s\t1:00\tS\nRule\tNorway\t1945\tonly\t-\tOct\t 1\t2:00s\t0\t-\nRule\tNorway\t1959\t1964\t-\tMar\tSun>=15\t2:00s\t1:00\tS\nRule\tNorway\t1959\t1965\t-\tSep\tSun>=15\t2:00s\t0\t-\nRule\tNorway\t1965\tonly\t-\tApr\t25\t2:00s\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Oslo\t0:43:00 -\tLMT\t1895 Jan  1\n\t\t\t1:00\tNorway\tCE%sT\t1940 Aug 10 23:00\n\t\t\t1:00\tC-Eur\tCE%sT\t1945 Apr  2  2:00\n\t\t\t1:00\tNorway\tCE%sT\t1980\n\t\t\t1:00\tEU\tCE%sT\n\n# Svalbard & Jan Mayen\n\n# From Steffen Thorsen (2001-05-01):\n# Although I could not find it explicitly, it seems that Jan Mayen and\n# Svalbard have been using the same time as Norway at least since the\n# time they were declared as parts of Norway.  Svalbard was declared\n# as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan\n# Mayen by law of 1930-02-27 no 2, section 2. (From\n# http://www.lovdata.no/all/nl-19250717-011.html and\n# http://www.lovdata.no/all/nl-19300227-002.html).  The law/regulation\n# for normal/standard time in Norway is from 1894-06-29 no 1 (came\n# into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a\n# part of this law since 1925/1930. (From\n# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been\n# able to find if Jan Mayen used a different time zone (e.g. -0100)\n# before 1930. Jan Mayen has only been \"inhabitated\" since 1921 by\n# Norwegian meteorologists and maybe used the same time as Norway ever\n# since 1921.  Svalbard (Arctic/Longyearbyen) has been inhabited since\n# before 1895, and therefore probably changed the local time somewhere\n# between 1895 and 1925 (inclusive).\n\n# From Paul Eggert (2001-05-01):\n#\n# Actually, Jan Mayen was never occupied by Germany during World War II,\n# so it must have diverged from Oslo time during the war, as Oslo was\n# keeping Berlin time.\n#\n# <http://home.no.net/janmayen/history.htm> says that the meteorologists\n# burned down their station in 1940 and left the island, but returned in\n# 1941 with a small Norwegian garrison and continued operations despite\n# frequent air ttacks from Germans.  In 1943 the Americans established a\n# radiolocating station on the island, called \"Atlantic City\".  Possibly\n# the UTC offset changed during the war, but I think it unlikely that\n# Jan Mayen used German daylight-saving rules.\n#\n# Svalbard is more complicated, as it was raided in August 1941 by an\n# Allied party that evacuated the civilian population to England (says\n# <http://www.bartleby.com/65/sv/Svalbard.html>).  The Svalbard FAQ\n# <http://www.svalbard.com/SvalbardFAQ.html> says that the Germans were\n# expelled on 1942-05-14.  However, small parties of Germans did return,\n# and according to Wilhelm Dege's book \"War North of 80\" (1954)\n# <http://www.ucalgary.ca/UofC/departments/UP/1-55238/1-55238-110-2.html>\n# the German armed forces at the Svalbard weather station code-named\n# Haudegen did not surrender to the Allies until September 1945.\n#\n# All these events predate our cutoff date of 1970.  Unless we can\n# come up with more definitive info about the timekeeping during the\n# war years it's probably best just do...the following for now:\nLink\tEurope/Oslo\tArctic/Longyearbyen\n\n# Poland\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tPoland\t1918\t1919\t-\tSep\t16\t2:00s\t0\t-\nRule\tPoland\t1919\tonly\t-\tApr\t15\t2:00s\t1:00\tS\nRule\tPoland\t1944\tonly\t-\tApr\t 3\t2:00s\t1:00\tS\n# Whitman gives 1944 Nov 30; go with Shanks & Pottenger.\nRule\tPoland\t1944\tonly\t-\tOct\t 4\t2:00\t0\t-\n# For 1944-1948 Whitman gives the previous day; go with Shanks & Pottenger.\nRule\tPoland\t1945\tonly\t-\tApr\t29\t0:00\t1:00\tS\nRule\tPoland\t1945\tonly\t-\tNov\t 1\t0:00\t0\t-\n# For 1946 on the source is Kazimierz Borkowski,\n# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,\n# <http://www.astro.uni.torun.pl/~kb/Artykuly/U-PA/Czas2.htm#tth_tAb1>\n# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.\n# He also gives these further references:\n# Mon Pol nr 13, poz 162 (1995) <http://www.abc.com.pl/serwis/mp/1995/0162.htm>\n# Druk nr 2180 (2003) <http://www.senat.gov.pl/k5/dok/sejm/053/2180.pdf>\nRule\tPoland\t1946\tonly\t-\tApr\t14\t0:00s\t1:00\tS\nRule\tPoland\t1946\tonly\t-\tOct\t 7\t2:00s\t0\t-\nRule\tPoland\t1947\tonly\t-\tMay\t 4\t2:00s\t1:00\tS\nRule\tPoland\t1947\t1949\t-\tOct\tSun>=1\t2:00s\t0\t-\nRule\tPoland\t1948\tonly\t-\tApr\t18\t2:00s\t1:00\tS\nRule\tPoland\t1949\tonly\t-\tApr\t10\t2:00s\t1:00\tS\nRule\tPoland\t1957\tonly\t-\tJun\t 2\t1:00s\t1:00\tS\nRule\tPoland\t1957\t1958\t-\tSep\tlastSun\t1:00s\t0\t-\nRule\tPoland\t1958\tonly\t-\tMar\t30\t1:00s\t1:00\tS\nRule\tPoland\t1959\tonly\t-\tMay\t31\t1:00s\t1:00\tS\nRule\tPoland\t1959\t1961\t-\tOct\tSun>=1\t1:00s\t0\t-\nRule\tPoland\t1960\tonly\t-\tApr\t 3\t1:00s\t1:00\tS\nRule\tPoland\t1961\t1964\t-\tMay\tlastSun\t1:00s\t1:00\tS\nRule\tPoland\t1962\t1964\t-\tSep\tlastSun\t1:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Warsaw\t1:24:00 -\tLMT\t1880\n\t\t\t1:24:00\t-\tWMT\t1915 Aug  5   # Warsaw Mean Time\n\t\t\t1:00\tC-Eur\tCE%sT\t1918 Sep 16 3:00\n\t\t\t2:00\tPoland\tEE%sT\t1922 Jun\n\t\t\t1:00\tPoland\tCE%sT\t1940 Jun 23 2:00\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Oct\n\t\t\t1:00\tPoland\tCE%sT\t1977\n\t\t\t1:00\tW-Eur\tCE%sT\t1988\n\t\t\t1:00\tEU\tCE%sT\n\n# Portugal\n#\n# From Rui Pedro Salgueiro (1992-11-12):\n# Portugal has recently (September, 27) changed timezone\n# (from WET to MET or CET) to harmonize with EEC.\n#\n# Martin Bruckmann (1996-02-29) reports via Peter Ilieve\n# that Portugal is reverting to 0:00 by not moving its clocks this spring.\n# The new Prime Minister was fed up with getting up in the dark in the winter.\n#\n# From Paul Eggert (1996-11-12):\n# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions\n# at 02:00u, not 01:00u.  Assume that these are typos.\n# IATA SSIM (1991/1992) reports that the Azores were at -1:00.\n# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.\n# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal\n# harmonized with the EU), and that they stayed +0:00 that winter.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not\n# done every year, depending on what Spain did, because of railroad schedules.\n# Go with Shanks & Pottenger.\nRule\tPort\t1916\tonly\t-\tJun\t17\t23:00\t1:00\tS\n# Whitman gives 1916 Oct 31; go with Shanks & Pottenger.\nRule\tPort\t1916\tonly\t-\tNov\t 1\t 1:00\t0\t-\nRule\tPort\t1917\tonly\t-\tFeb\t28\t23:00s\t1:00\tS\nRule\tPort\t1917\t1921\t-\tOct\t14\t23:00s\t0\t-\nRule\tPort\t1918\tonly\t-\tMar\t 1\t23:00s\t1:00\tS\nRule\tPort\t1919\tonly\t-\tFeb\t28\t23:00s\t1:00\tS\nRule\tPort\t1920\tonly\t-\tFeb\t29\t23:00s\t1:00\tS\nRule\tPort\t1921\tonly\t-\tFeb\t28\t23:00s\t1:00\tS\nRule\tPort\t1924\tonly\t-\tApr\t16\t23:00s\t1:00\tS\nRule\tPort\t1924\tonly\t-\tOct\t14\t23:00s\t0\t-\nRule\tPort\t1926\tonly\t-\tApr\t17\t23:00s\t1:00\tS\nRule\tPort\t1926\t1929\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tPort\t1927\tonly\t-\tApr\t 9\t23:00s\t1:00\tS\nRule\tPort\t1928\tonly\t-\tApr\t14\t23:00s\t1:00\tS\nRule\tPort\t1929\tonly\t-\tApr\t20\t23:00s\t1:00\tS\nRule\tPort\t1931\tonly\t-\tApr\t18\t23:00s\t1:00\tS\n# Whitman gives 1931 Oct 8; go with Shanks & Pottenger.\nRule\tPort\t1931\t1932\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tPort\t1932\tonly\t-\tApr\t 2\t23:00s\t1:00\tS\nRule\tPort\t1934\tonly\t-\tApr\t 7\t23:00s\t1:00\tS\n# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.\nRule\tPort\t1934\t1938\t-\tOct\tSat>=1\t23:00s\t0\t-\n# Shanks & Pottenger give 1935 Apr 30; go with Whitman.\nRule\tPort\t1935\tonly\t-\tMar\t30\t23:00s\t1:00\tS\nRule\tPort\t1936\tonly\t-\tApr\t18\t23:00s\t1:00\tS\n# Whitman gives 1937 Apr 2; go with Shanks & Pottenger.\nRule\tPort\t1937\tonly\t-\tApr\t 3\t23:00s\t1:00\tS\nRule\tPort\t1938\tonly\t-\tMar\t26\t23:00s\t1:00\tS\nRule\tPort\t1939\tonly\t-\tApr\t15\t23:00s\t1:00\tS\n# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.\nRule\tPort\t1939\tonly\t-\tNov\t18\t23:00s\t0\t-\nRule\tPort\t1940\tonly\t-\tFeb\t24\t23:00s\t1:00\tS\n# Shanks & Pottenger give 1940 Oct 7; go with Whitman.\nRule\tPort\t1940\t1941\t-\tOct\t 5\t23:00s\t0\t-\nRule\tPort\t1941\tonly\t-\tApr\t 5\t23:00s\t1:00\tS\nRule\tPort\t1942\t1945\t-\tMar\tSat>=8\t23:00s\t1:00\tS\nRule\tPort\t1942\tonly\t-\tApr\t25\t22:00s\t2:00\tM # Midsummer\nRule\tPort\t1942\tonly\t-\tAug\t15\t22:00s\t1:00\tS\nRule\tPort\t1942\t1945\t-\tOct\tSat>=24\t23:00s\t0\t-\nRule\tPort\t1943\tonly\t-\tApr\t17\t22:00s\t2:00\tM\nRule\tPort\t1943\t1945\t-\tAug\tSat>=25\t22:00s\t1:00\tS\nRule\tPort\t1944\t1945\t-\tApr\tSat>=21\t22:00s\t2:00\tM\nRule\tPort\t1946\tonly\t-\tApr\tSat>=1\t23:00s\t1:00\tS\nRule\tPort\t1946\tonly\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tPort\t1947\t1949\t-\tApr\tSun>=1\t 2:00s\t1:00\tS\nRule\tPort\t1947\t1949\t-\tOct\tSun>=1\t 2:00s\t0\t-\n# Shanks & Pottenger say DST was observed in 1950; go with Whitman.\n# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.\nRule\tPort\t1951\t1965\t-\tApr\tSun>=1\t 2:00s\t1:00\tS\nRule\tPort\t1951\t1965\t-\tOct\tSun>=1\t 2:00s\t0\t-\nRule\tPort\t1977\tonly\t-\tMar\t27\t 0:00s\t1:00\tS\nRule\tPort\t1977\tonly\t-\tSep\t25\t 0:00s\t0\t-\nRule\tPort\t1978\t1979\t-\tApr\tSun>=1\t 0:00s\t1:00\tS\nRule\tPort\t1978\tonly\t-\tOct\t 1\t 0:00s\t0\t-\nRule\tPort\t1979\t1982\t-\tSep\tlastSun\t 1:00s\t0\t-\nRule\tPort\t1980\tonly\t-\tMar\tlastSun\t 0:00s\t1:00\tS\nRule\tPort\t1981\t1982\t-\tMar\tlastSun\t 1:00s\t1:00\tS\nRule\tPort\t1983\tonly\t-\tMar\tlastSun\t 2:00s\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;\n# Willett says 1912-01-01.  Go with Willett.\nZone\tEurope/Lisbon\t-0:36:32 -\tLMT\t1884\n\t\t\t-0:36:32 -\tLMT\t1912 Jan  1  # Lisbon Mean Time\n\t\t\t 0:00\tPort\tWE%sT\t1966 Apr  3 2:00\n\t\t\t 1:00\t-\tCET\t1976 Sep 26 1:00\n\t\t\t 0:00\tPort\tWE%sT\t1983 Sep 25 1:00s\n\t\t\t 0:00\tW-Eur\tWE%sT\t1992 Sep 27 1:00s\n\t\t\t 1:00\tEU\tCE%sT\t1996 Mar 31 1:00u\n\t\t\t 0:00\tEU\tWE%sT\nZone Atlantic/Azores\t-1:42:40 -\tLMT\t1884\t\t# Ponta Delgada\n\t\t\t-1:54:32 -\tHMT\t1911 May 24  # Horta Mean Time\n\t\t\t-2:00\tPort\tAZO%sT\t1966 Apr  3 2:00 # Azores Time\n\t\t\t-1:00\tPort\tAZO%sT\t1983 Sep 25 1:00s\n\t\t\t-1:00\tW-Eur\tAZO%sT\t1992 Sep 27 1:00s\n\t\t\t 0:00\tEU\tWE%sT\t1993 Mar 28 1:00u\n\t\t\t-1:00\tEU\tAZO%sT\nZone Atlantic/Madeira\t-1:07:36 -\tLMT\t1884\t\t# Funchal\n\t\t\t-1:07:36 -\tFMT\t1911 May 24  # Funchal Mean Time\n\t\t\t-1:00\tPort\tMAD%sT\t1966 Apr  3 2:00 # Madeira Time\n\t\t\t 0:00\tPort\tWE%sT\t1983 Sep 25 1:00s\n\t\t\t 0:00\tEU\tWE%sT\n\n# Romania\n#\n# From Paul Eggert (1999-10-07):\n# <a href=\"http://www.nineoclock.ro/POL/1778pol.html\">\n# Nine O'clock</a> (1998-10-23) reports that the switch occurred at\n# 04:00 local time in fall 1998.  For lack of better info,\n# assume that Romania and Moldova switched to EU rules in 1997,\n# the same year as Bulgaria.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tRomania\t1932\tonly\t-\tMay\t21\t 0:00s\t1:00\tS\nRule\tRomania\t1932\t1939\t-\tOct\tSun>=1\t 0:00s\t0\t-\nRule\tRomania\t1933\t1939\t-\tApr\tSun>=2\t 0:00s\t1:00\tS\nRule\tRomania\t1979\tonly\t-\tMay\t27\t 0:00\t1:00\tS\nRule\tRomania\t1979\tonly\t-\tSep\tlastSun\t 0:00\t0\t-\nRule\tRomania\t1980\tonly\t-\tApr\t 5\t23:00\t1:00\tS\nRule\tRomania\t1980\tonly\t-\tSep\tlastSun\t 1:00\t0\t-\nRule\tRomania\t1991\t1993\t-\tMar\tlastSun\t 0:00s\t1:00\tS\nRule\tRomania\t1991\t1993\t-\tSep\tlastSun\t 0:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Europe/Bucharest\t1:44:24 -\tLMT\t1891 Oct\n\t\t\t1:44:24\t-\tBMT\t1931 Jul 24\t# Bucharest MT\n\t\t\t2:00\tRomania\tEE%sT\t1981 Mar 29 2:00s\n\t\t\t2:00\tC-Eur\tEE%sT\t1991\n\t\t\t2:00\tRomania\tEE%sT\t1994\n\t\t\t2:00\tE-Eur\tEE%sT\t1997\n\t\t\t2:00\tEU\tEE%sT\n\n# Russia\n\n# From Paul Eggert (2006-03-22):\n# Except for Moscow after 1919-07-01, I invented the time zone abbreviations.\n# Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,\n# are from Andrey A. Chernov.  The rest is from Shanks & Pottenger,\n# except we follow Chernov's report that 1992 DST transitions were Sat\n# 23:00, not Sun 02:00s.\n#\n# From Stanislaw A. Kuzikowski (1994-06-29):\n# But now it is some months since Novosibirsk is 3 hours ahead of Moscow!\n# I do not know why they have decided to make this change;\n# as far as I remember it was done exactly during winter->summer switching\n# so we (Novosibirsk) simply did not switch.\n#\n# From Andrey A. Chernov (1996-10-04):\n# `MSK' and `MSD' were born and used initially on Moscow computers with\n# UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group)....\n# The next step was the UUCP network, the Relcom predecessor\n# (used mainly for mail), and MSK/MSD was actively used there.\n#\n# From Chris Carrier (1996-10-30):\n# According to a friend of mine who rode the Trans-Siberian Railroad from\n# Moscow to Irkutsk in 1995, public air and rail transport in Russia ...\n# still follows Moscow time, no matter where in Russia it is located.\n#\n# For Grozny, Chechnya, we have the following story from\n# John Daniszewski, \"Scavengers in the Rubble\", Los Angeles Times (2001-02-07):\n# News--often false--is spread by word of mouth.  A rumor that it was\n# time to move the clocks back put this whole city out of sync with\n# the rest of Russia for two weeks--even soldiers stationed here began\n# enforcing curfew at the wrong time.\n#\n# From Gwillim Law (2001-06-05):\n# There's considerable evidence that Sakhalin Island used to be in\n# UTC+11, and has changed to UTC+10, in this decade.  I start with the\n# SSIM, which listed Yuzhno-Sakhalinsk in zone RU10 along with Magadan\n# until February 1997, and then in RU9 with Khabarovsk and Vladivostok\n# since September 1997....  Although the Kuril Islands are\n# administratively part of Sakhalin oblast', they appear to have\n# remained on UTC+11 along with Magadan.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n#\n# Kaliningradskaya oblast'.\nZone Europe/Kaliningrad\t 1:22:00 -\tLMT\t1893 Apr\n\t\t\t 1:00\tC-Eur\tCE%sT\t1945\n\t\t\t 2:00\tPoland\tCE%sT\t1946\n\t\t\t 3:00\tRussia\tMSK/MSD\t1991 Mar 31 2:00s\n\t\t\t 2:00\tRussia\tEE%sT\t2011 Mar 27 2:00s\n\t\t\t 3:00\t-\tFET # Further-eastern European Time\n#\n# From Oscar van Vlijmen (2001-08-25): [This region consists of]\n# Respublika Adygeya, Arkhangel'skaya oblast',\n# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',\n# Vologodskaya oblast', Voronezhskaya oblast',\n# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,\n# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,\n# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,\n# Respublika Kareliya, Respublika Komi,\n# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',\n# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,\n# Respublika Mordoviya, Moskva, Moskovskaya oblast',\n# Murmanskaya oblast', Nenetskij avtonomnyj okrug,\n# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',\n# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',\n# Ryazanskaya oblast', Sankt-Peterburg,\n# Respublika Severnaya Osetiya, Smolenskaya oblast',\n# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,\n# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',\n# Chechenskaya Respublika, Chuvashskaya oblast',\n# Yaroslavskaya oblast'\nZone Europe/Moscow\t 2:30:20 -\tLMT\t1880\n\t\t\t 2:30\t-\tMMT\t1916 Jul  3 # Moscow Mean Time\n\t\t\t 2:30:48 Russia\t%s\t1919 Jul  1 2:00\n\t\t\t 3:00\tRussia\tMSK/MSD\t1922 Oct\n\t\t\t 2:00\t-\tEET\t1930 Jun 21\n\t\t\t 3:00\tRussia\tMSK/MSD\t1991 Mar 31 2:00s\n\t\t\t 2:00\tRussia\tEE%sT\t1992 Jan 19 2:00s\n\t\t\t 3:00\tRussia\tMSK/MSD\t2011 Mar 27 2:00s\n\t\t\t 4:00\t-\tMSK\n#\n# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',\n# Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400\n# but Wikipedia (2006-05-09) says +0300.  Perhaps it switched after the\n# others?  But we have no data.\nZone Europe/Volgograd\t 2:57:40 -\tLMT\t1920 Jan  3\n\t\t\t 3:00\t-\tTSAT\t1925 Apr  6 # Tsaritsyn Time\n\t\t\t 3:00\t-\tSTAT\t1930 Jun 21 # Stalingrad Time\n\t\t\t 4:00\t-\tSTAT\t1961 Nov 11\n\t\t\t 4:00\tRussia\tVOL%sT\t1989 Mar 26 2:00s # Volgograd T\n\t\t\t 3:00\tRussia\tVOL%sT\t1991 Mar 31 2:00s\n\t\t\t 4:00\t-\tVOLT\t1992 Mar 29 2:00s\n\t\t\t 3:00\tRussia\tVOL%sT\t2011 Mar 27 2:00s\n\t\t\t 4:00\t-\tVOLT\n#\n# From Oscar van Vlijmen (2001-08-25): [This region consists of]\n# Samarskaya oblast', Udmyrtskaya respublika\nZone Europe/Samara\t 3:20:36 -\tLMT\t1919 Jul  1 2:00\n\t\t\t 3:00\t-\tSAMT\t1930 Jun 21\n\t\t\t 4:00\t-\tSAMT\t1935 Jan 27\n\t\t\t 4:00\tRussia\tKUY%sT\t1989 Mar 26 2:00s # Kuybyshev\n\t\t\t 3:00\tRussia\tKUY%sT\t1991 Mar 31 2:00s\n\t\t\t 2:00\tRussia\tKUY%sT\t1991 Sep 29 2:00s\n\t\t\t 3:00\t-\tKUYT\t1991 Oct 20 3:00\n\t\t\t 4:00\tRussia\tSAM%sT\t2010 Mar 28 2:00s # Samara Time\n\t\t\t 3:00\tRussia\tSAM%sT\t2011 Mar 27 2:00s\n\t\t\t 4:00\t-\tSAMT\n\n#\n# From Oscar van Vlijmen (2001-08-25): [This region consists of]\n# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,\n# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',\n# Sverdlovskaya oblast', Tyumenskaya oblast',\n# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',\n# Yamalo-Nenetskij avtonomnyj okrug.\nZone Asia/Yekaterinburg\t 4:02:24 -\tLMT\t1919 Jul 15 4:00\n\t\t\t 4:00\t-\tSVET\t1930 Jun 21 # Sverdlovsk Time\n\t\t\t 5:00\tRussia\tSVE%sT\t1991 Mar 31 2:00s\n\t\t\t 4:00\tRussia\tSVE%sT\t1992 Jan 19 2:00s\n\t\t\t 5:00\tRussia\tYEK%sT\t2011 Mar 27 2:00s\n\t\t\t 6:00\t-\tYEKT\t# Yekaterinburg Time\n#\n# From Oscar van Vlijmen (2001-08-25): [This region consists of]\n# Respublika Altaj, Altajskij kraj, Omskaya oblast'.\nZone Asia/Omsk\t\t 4:53:36 -\tLMT\t1919 Nov 14\n\t\t\t 5:00\t-\tOMST\t1930 Jun 21 # Omsk TIme\n\t\t\t 6:00\tRussia\tOMS%sT\t1991 Mar 31 2:00s\n\t\t\t 5:00\tRussia\tOMS%sT\t1992 Jan 19 2:00s\n\t\t\t 6:00\tRussia\tOMS%sT\t2011 Mar 27 2:00s\n\t\t\t 7:00\t-\tOMST\n#\n# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's\n# not clear when it switched from +7 to +6.\n# Novosibirskaya oblast', Tomskaya oblast'.\nZone Asia/Novosibirsk\t 5:31:40 -\tLMT\t1919 Dec 14 6:00\n\t\t\t 6:00\t-\tNOVT\t1930 Jun 21 # Novosibirsk Time\n\t\t\t 7:00\tRussia\tNOV%sT\t1991 Mar 31 2:00s\n\t\t\t 6:00\tRussia\tNOV%sT\t1992 Jan 19 2:00s\n\t\t\t 7:00\tRussia\tNOV%sT\t1993 May 23 # say Shanks & P.\n\t\t\t 6:00\tRussia\tNOV%sT\t2011 Mar 27 2:00s\n\t\t\t 7:00\t-\tNOVT\n\n# From Alexander Krivenyshev (2009-10-13):\n# Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on\n# March 28, 2010:\n# from current Russia Zone 6 - Krasnoyarsk Time Zone (KRA) UTC +0700\n# to Russia Zone 5 - Novosibirsk Time Zone (NOV) UTC +0600\n#\n# This is according to Government of Russia decree # 740, on September\n# 14, 2009 \"Application in the territory of the Kemerovo region the Fifth\n# time zone.\" (\"Russia Zone 5\" or old \"USSR Zone 5\" is GMT +0600)\n#\n# Russian Government web site (Russian language)\n# <a href=\"http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archiv\">\n# http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2009/09/14/991633.htm\n# </a>\n# or Russian-English translation by WorldTimeZone.com with reference\n# map to local region and new Russia Time Zone map after March 28, 2010\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_russia03.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_russia03.html\n# </a>\n#\n# Thus, when Russia will switch to DST on the night of March 28, 2010\n# Kemerovo region (Kemerovo oblast') will not change the clock.\n#\n# As a result, Kemerovo oblast' will be in the same time zone as\n# Novosibirsk, Omsk, Tomsk, Barnaul and Altai Republic.\n\nZone Asia/Novokuznetsk\t 5:48:48 -\tNMT\t1920 Jan  6\n\t\t\t 6:00\t-\tKRAT\t1930 Jun 21 # Krasnoyarsk Time\n\t\t\t 7:00\tRussia\tKRA%sT\t1991 Mar 31 2:00s\n\t\t\t 6:00\tRussia\tKRA%sT\t1992 Jan 19 2:00s\n\t\t\t 7:00\tRussia\tKRA%sT\t2010 Mar 28 2:00s\n\t\t\t 6:00\tRussia\tNOV%sT\t2011 Mar 27 2:00s\n\t\t\t 7:00\t-\tNOVT # Novosibirsk/Novokuznetsk Time\n\n#\n# From Oscar van Vlijmen (2001-08-25): [This region consists of]\n# Krasnoyarskij kraj,\n# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,\n# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.\nZone Asia/Krasnoyarsk\t 6:11:20 -\tLMT\t1920 Jan  6\n\t\t\t 6:00\t-\tKRAT\t1930 Jun 21 # Krasnoyarsk Time\n\t\t\t 7:00\tRussia\tKRA%sT\t1991 Mar 31 2:00s\n\t\t\t 6:00\tRussia\tKRA%sT\t1992 Jan 19 2:00s\n\t\t\t 7:00\tRussia\tKRA%sT\t2011 Mar 27 2:00s\n\t\t\t 8:00\t-\tKRAT\n#\n# From Oscar van Vlijmen (2001-08-25): [This region consists of]\n# Respublika Buryatiya, Irkutskaya oblast',\n# Ust'-Ordynskij Buryatskij avtonomnyj okrug.\nZone Asia/Irkutsk\t 6:57:20 -\tLMT\t1880\n\t\t\t 6:57:20 -\tIMT\t1920 Jan 25 # Irkutsk Mean Time\n\t\t\t 7:00\t-\tIRKT\t1930 Jun 21 # Irkutsk Time\n\t\t\t 8:00\tRussia\tIRK%sT\t1991 Mar 31 2:00s\n\t\t\t 7:00\tRussia\tIRK%sT\t1992 Jan 19 2:00s\n\t\t\t 8:00\tRussia\tIRK%sT\t2011 Mar 27 2:00s\n\t\t\t 9:00\t-\tIRKT\n#\n# From Oscar van Vlijmen (2003-10-18): [This region consists of]\n# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',\n# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.\n\n# From Oscar van Vlijmen (2009-11-29):\n# ...some regions of [Russia] were merged with others since 2005...\n# Some names were changed, no big deal, except for one instance: a new name.\n# YAK/YAKST: UTC+9 Zabajkal'skij kraj.\n\n# From Oscar van Vlijmen (2009-11-29):\n# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,\n# Verkhnevilyujskij, Vilyujskij, Gornyj,\n# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,\n# Namskij, Nyurbinskij, Olenyokskij, Olyokminskij,\n# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,\n# Churapchinskij, Eveno-Bytantajskij Natsional'nij.\n\nZone Asia/Yakutsk\t 8:38:40 -\tLMT\t1919 Dec 15\n\t\t\t 8:00\t-\tYAKT\t1930 Jun 21 # Yakutsk Time\n\t\t\t 9:00\tRussia\tYAK%sT\t1991 Mar 31 2:00s\n\t\t\t 8:00\tRussia\tYAK%sT\t1992 Jan 19 2:00s\n\t\t\t 9:00\tRussia\tYAK%sT\t2011 Mar 27 2:00s\n\t\t\t 10:00\t-\tYAKT\n#\n# From Oscar van Vlijmen (2003-10-18): [This region consists of]\n# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,\n# [parts of] Respublika Sakha (Yakutiya).\n\n# From Oscar van Vlijmen (2009-11-29):\n# The Sakha districts are: Bulunskij, Verkhoyanskij, Tomponskij, Ust'-Majskij,\n# Ust'-Yanskij.\nZone Asia/Vladivostok\t 8:47:44 -\tLMT\t1922 Nov 15\n\t\t\t 9:00\t-\tVLAT\t1930 Jun 21 # Vladivostok Time\n\t\t\t10:00\tRussia\tVLA%sT\t1991 Mar 31 2:00s\n\t\t\t 9:00\tRussia\tVLA%sST\t1992 Jan 19 2:00s\n\t\t\t10:00\tRussia\tVLA%sT\t2011 Mar 27 2:00s\n\t\t\t11:00\t-\tVLAT\n#\n# Sakhalinskaya oblast'.\n# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.\nZone Asia/Sakhalin\t 9:30:48 -\tLMT\t1905 Aug 23\n\t\t\t 9:00\t-\tCJT\t1938\n\t\t\t 9:00\t-\tJST\t1945 Aug 25\n\t\t\t11:00\tRussia\tSAK%sT\t1991 Mar 31 2:00s # Sakhalin T.\n\t\t\t10:00\tRussia\tSAK%sT\t1992 Jan 19 2:00s\n\t\t\t11:00\tRussia\tSAK%sT\t1997 Mar lastSun 2:00s\n\t\t\t10:00\tRussia\tSAK%sT\t2011 Mar 27 2:00s\n\t\t\t11:00\t-\tSAKT\n#\n# From Oscar van Vlijmen (2003-10-18): [This region consists of]\n# Magadanskaya oblast', Respublika Sakha (Yakutiya).\n# Probably also: Kuril Islands.\n\n# From Oscar van Vlijmen (2009-11-29):\n# The Sakha districts are: Abyjskij, Allaikhovskij, Verkhhhnekolymskij, Momskij,\n# Nizhnekolymskij, Ojmyakonskij, Srednekolymskij.\nZone Asia/Magadan\t10:03:12 -\tLMT\t1924 May  2\n\t\t\t10:00\t-\tMAGT\t1930 Jun 21 # Magadan Time\n\t\t\t11:00\tRussia\tMAG%sT\t1991 Mar 31 2:00s\n\t\t\t10:00\tRussia\tMAG%sT\t1992 Jan 19 2:00s\n\t\t\t11:00\tRussia\tMAG%sT\t2011 Mar 27 2:00s\n\t\t\t12:00\t-\tMAGT\n#\n# From Oscar van Vlijmen (2001-08-25): [This region consists of]\n# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.\n#\n# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.\nZone Asia/Kamchatka\t10:34:36 -\tLMT\t1922 Nov 10\n\t\t\t11:00\t-\tPETT\t1930 Jun 21 # P-K Time\n\t\t\t12:00\tRussia\tPET%sT\t1991 Mar 31 2:00s\n\t\t\t11:00\tRussia\tPET%sT\t1992 Jan 19 2:00s\n\t\t\t12:00\tRussia\tPET%sT\t2010 Mar 28 2:00s\n\t\t\t11:00\tRussia\tPET%sT\t2011 Mar 27 2:00s\n\t\t\t12:00\t-\tPETT\n#\n# Chukotskij avtonomnyj okrug\nZone Asia/Anadyr\t11:49:56 -\tLMT\t1924 May  2\n\t\t\t12:00\t-\tANAT\t1930 Jun 21 # Anadyr Time\n\t\t\t13:00\tRussia\tANA%sT\t1982 Apr  1 0:00s\n\t\t\t12:00\tRussia\tANA%sT\t1991 Mar 31 2:00s\n\t\t\t11:00\tRussia\tANA%sT\t1992 Jan 19 2:00s\n\t\t\t12:00\tRussia\tANA%sT\t2010 Mar 28 2:00s\n\t\t\t11:00\tRussia\tANA%sT\t2011 Mar 27 2:00s\n\t\t\t12:00\t-\tANAT\n\n# Serbia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Belgrade\t1:22:00\t-\tLMT\t1884\n\t\t\t1:00\t-\tCET\t1941 Apr 18 23:00\n\t\t\t1:00\tC-Eur\tCE%sT\t1945\n\t\t\t1:00\t-\tCET\t1945 May 8 2:00s\n\t\t\t1:00\t1:00\tCEST\t1945 Sep 16  2:00s\n# Metod Kozelj reports that the legal date of\n# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.\n# Shanks & Pottenger don't give as much detail, so go with Kozelj.\n\t\t\t1:00\t-\tCET\t1982 Nov 27\n\t\t\t1:00\tEU\tCE%sT\nLink Europe/Belgrade Europe/Ljubljana\t# Slovenia\nLink Europe/Belgrade Europe/Podgorica\t# Montenegro\nLink Europe/Belgrade Europe/Sarajevo\t# Bosnia and Herzegovina\nLink Europe/Belgrade Europe/Skopje\t# Macedonia\nLink Europe/Belgrade Europe/Zagreb\t# Croatia\n\n# Slovakia\nLink Europe/Prague Europe/Bratislava\n\n# Slovenia\n# see Serbia\n\n# Spain\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1;\n# go with Shanks & Pottenger.\nRule\tSpain\t1917\tonly\t-\tMay\t 5\t23:00s\t1:00\tS\nRule\tSpain\t1917\t1919\t-\tOct\t 6\t23:00s\t0\t-\nRule\tSpain\t1918\tonly\t-\tApr\t15\t23:00s\t1:00\tS\nRule\tSpain\t1919\tonly\t-\tApr\t 5\t23:00s\t1:00\tS\n# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger.\nRule\tSpain\t1924\tonly\t-\tApr\t16\t23:00s\t1:00\tS\n# Whitman gives 1924 Oct 14; go with Shanks & Pottenger.\nRule\tSpain\t1924\tonly\t-\tOct\t 4\t23:00s\t0\t-\nRule\tSpain\t1926\tonly\t-\tApr\t17\t23:00s\t1:00\tS\n# Whitman says no DST in 1929; go with Shanks & Pottenger.\nRule\tSpain\t1926\t1929\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tSpain\t1927\tonly\t-\tApr\t 9\t23:00s\t1:00\tS\nRule\tSpain\t1928\tonly\t-\tApr\t14\t23:00s\t1:00\tS\nRule\tSpain\t1929\tonly\t-\tApr\t20\t23:00s\t1:00\tS\n# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13;\n# go with Shanks & Pottenger.\nRule\tSpain\t1937\tonly\t-\tMay\t22\t23:00s\t1:00\tS\nRule\tSpain\t1937\t1939\t-\tOct\tSat>=1\t23:00s\t0\t-\nRule\tSpain\t1938\tonly\t-\tMar\t22\t23:00s\t1:00\tS\nRule\tSpain\t1939\tonly\t-\tApr\t15\t23:00s\t1:00\tS\nRule\tSpain\t1940\tonly\t-\tMar\t16\t23:00s\t1:00\tS\n# Whitman says no DST 1942-1945; go with Shanks & Pottenger.\nRule\tSpain\t1942\tonly\t-\tMay\t 2\t22:00s\t2:00\tM # Midsummer\nRule\tSpain\t1942\tonly\t-\tSep\t 1\t22:00s\t1:00\tS\nRule\tSpain\t1943\t1946\t-\tApr\tSat>=13\t22:00s\t2:00\tM\nRule\tSpain\t1943\tonly\t-\tOct\t 3\t22:00s\t1:00\tS\nRule\tSpain\t1944\tonly\t-\tOct\t10\t22:00s\t1:00\tS\nRule\tSpain\t1945\tonly\t-\tSep\t30\t 1:00\t1:00\tS\nRule\tSpain\t1946\tonly\t-\tSep\t30\t 0:00\t0\t-\nRule\tSpain\t1949\tonly\t-\tApr\t30\t23:00\t1:00\tS\nRule\tSpain\t1949\tonly\t-\tSep\t30\t 1:00\t0\t-\nRule\tSpain\t1974\t1975\t-\tApr\tSat>=13\t23:00\t1:00\tS\nRule\tSpain\t1974\t1975\t-\tOct\tSun>=1\t 1:00\t0\t-\nRule\tSpain\t1976\tonly\t-\tMar\t27\t23:00\t1:00\tS\nRule\tSpain\t1976\t1977\t-\tSep\tlastSun\t 1:00\t0\t-\nRule\tSpain\t1977\t1978\t-\tApr\t 2\t23:00\t1:00\tS\nRule\tSpain\t1978\tonly\t-\tOct\t 1\t 1:00\t0\t-\n# The following rules are copied from Morocco from 1967 through 1978.\nRule SpainAfrica 1967\tonly\t-\tJun\t 3\t12:00\t1:00\tS\nRule SpainAfrica 1967\tonly\t-\tOct\t 1\t 0:00\t0\t-\nRule SpainAfrica 1974\tonly\t-\tJun\t24\t 0:00\t1:00\tS\nRule SpainAfrica 1974\tonly\t-\tSep\t 1\t 0:00\t0\t-\nRule SpainAfrica 1976\t1977\t-\tMay\t 1\t 0:00\t1:00\tS\nRule SpainAfrica 1976\tonly\t-\tAug\t 1\t 0:00\t0\t-\nRule SpainAfrica 1977\tonly\t-\tSep\t28\t 0:00\t0\t-\nRule SpainAfrica 1978\tonly\t-\tJun\t 1\t 0:00\t1:00\tS\nRule SpainAfrica 1978\tonly\t-\tAug\t 4\t 0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Madrid\t-0:14:44 -\tLMT\t1901 Jan  1  0:00s\n\t\t\t 0:00\tSpain\tWE%sT\t1946 Sep 30\n\t\t\t 1:00\tSpain\tCE%sT\t1979\n\t\t\t 1:00\tEU\tCE%sT\nZone\tAfrica/Ceuta\t-0:21:16 -\tLMT\t1901\n\t\t\t 0:00\t-\tWET\t1918 May  6 23:00\n\t\t\t 0:00\t1:00\tWEST\t1918 Oct  7 23:00\n\t\t\t 0:00\t-\tWET\t1924\n\t\t\t 0:00\tSpain\tWE%sT\t1929\n\t\t\t 0:00 SpainAfrica WE%sT 1984 Mar 16\n\t\t\t 1:00\t-\tCET\t1986\n\t\t\t 1:00\tEU\tCE%sT\nZone\tAtlantic/Canary\t-1:01:36 -\tLMT\t1922 Mar # Las Palmas de Gran C.\n\t\t\t-1:00\t-\tCANT\t1946 Sep 30 1:00 # Canaries Time\n\t\t\t 0:00\t-\tWET\t1980 Apr  6 0:00s\n\t\t\t 0:00\t1:00\tWEST\t1980 Sep 28 0:00s\n\t\t\t 0:00\tEU\tWE%sT\n# IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.\n# Ignore this for now, as the Canaries are part of the EU.\n\n# Sweden\n\n# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:\n#\n# The law \"Svensk forfattningssamling 1878, no 14\" about standard time in 1879:\n# From the beginning of 1879 (that is 01-01 00:00) the time for all\n# places in the country is \"the mean solar time for the meridian at\n# three degrees, or twelve minutes of time, to the west of the\n# meridian of the Observatory of Stockholm\".  The law is dated 1878-05-31.\n#\n# The observatory at that time had the meridian 18 degrees 03' 30\"\n# eastern longitude = 01:12:14 in time.  Less 12 minutes gives the\n# national standard time as 01:00:14 ahead of GMT....\n#\n# About the beginning of CET in Sweden. The lawtext (\"Svensk\n# forfattningssamling 1899, no 44\") states, that \"from the beginning\n# of 1900... ... the same as the mean solar time for the meridian at\n# the distance of one hour of time from the meridian of the English\n# observatory at Greenwich, or at 12 minutes 14 seconds to the west\n# from the meridian of the Observatory of Stockholm\". The law is dated\n# 1899-06-16.  In short: At 1900-01-01 00:00:00 the new standard time\n# in Sweden is 01:00:00 ahead of GMT.\n#\n# 1916: The lawtext (\"Svensk forfattningssamling 1916, no 124\") states\n# that \"1916-05-15 is considered to begin one hour earlier\". It is\n# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....\n# Further the law says, that \"1916-09-30 is considered to end one hour later\".\n#\n# The laws regulating [DST] are available on the site of the Swedish\n# Parliament beginning with 1985 - the laws regulating 1980/1984 are\n# not available on the site (to my knowledge they are only available\n# in Swedish): <http://www.riksdagen.se/english/work/sfst.asp> (type\n# \"sommartid\" without the quotes in the field \"Fritext\" and then click\n# the Sok-button).\n#\n# (2001-05-13):\n#\n# I have now found a newspaper stating that at 1916-10-01 01:00\n# summertime the church-clocks etc were set back one hour to show\n# 1916-10-01 00:00 standard time.  The article also reports that some\n# people thought the switch to standard time would take place already\n# at 1916-10-01 00:00 summer time, but they had to wait for another\n# hour before the event took place.\n#\n# Source: The newspaper \"Dagens Nyheter\", 1916-10-01, page 7 upper left.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Europe/Stockholm\t1:12:12 -\tLMT\t1879 Jan  1\n\t\t\t1:00:14\t-\tSET\t1900 Jan  1\t# Swedish Time\n\t\t\t1:00\t-\tCET\t1916 May 14 23:00\n\t\t\t1:00\t1:00\tCEST\t1916 Oct  1 01:00\n\t\t\t1:00\t-\tCET\t1980\n\t\t\t1:00\tEU\tCE%sT\n\n# Switzerland\n# From Howse:\n# By the end of the 18th century clocks and watches became commonplace\n# and their performance improved enormously.  Communities began to keep\n# mean time in preference to apparent time -- Geneva from 1780 ....\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# From Whitman (who writes ``Midnight?''):\n# Rule\tSwiss\t1940\tonly\t-\tNov\t 2\t0:00\t1:00\tS\n# Rule\tSwiss\t1940\tonly\t-\tDec\t31\t0:00\t0\t-\n# From Shanks & Pottenger:\n# Rule\tSwiss\t1941\t1942\t-\tMay\tSun>=1\t2:00\t1:00\tS\n# Rule\tSwiss\t1941\t1942\t-\tOct\tSun>=1\t0:00\t0\t-\n\n# From Alois Treindl (2008-12-17):\n# I have researched the DST usage in Switzerland during the 1940ies.\n#\n# As I wrote in an earlier message, I suspected the current tzdata values\n# to be wrong. This is now verified.\n#\n# I have found copies of the original ruling by the Swiss Federal\n# government, in 'Eidgen[o]ssische Gesetzessammlung 1941 and 1942' (Swiss\n# federal law collection)...\n#\n# DST began on Monday 5 May 1941, 1:00 am by shifting the clocks to 2:00 am\n# DST ended on Monday 6 Oct 1941, 2:00 am by shifting the clocks to 1:00 am.\n#\n# DST began on Monday, 4 May 1942 at 01:00 am\n# DST ended on Monday, 5 Oct 1942 at 02:00 am\n#\n# There was no DST in 1940, I have checked the law collection carefully.\n# It is also indicated by the fact that the 1942 entry in the law\n# collection points back to 1941 as a reference, but no reference to any\n# other years are made.\n#\n# Newspaper articles I have read in the archives on 6 May 1941 reported\n# about the introduction of DST (Sommerzeit in German) during the previous\n# night as an absolute novelty, because this was the first time that such\n# a thing had happened in Switzerland.\n#\n# I have also checked 1916, because one book source (Gabriel, Traite de\n# l'heure dans le monde) claims that Switzerland had DST in 1916. This is\n# false, no official document could be found. Probably Gabriel got misled\n# by references to Germany, which introduced DST in 1916 for the first time.\n#\n# The tzdata rules for Switzerland must be changed to:\n# Rule  Swiss   1941    1942    -       May     Mon>=1  1:00    1:00    S\n# Rule  Swiss   1941    1942    -       Oct     Mon>=1  2:00    0       -\n#\n# The 1940 rules must be deleted.\n#\n# One further detail for Switzerland, which is probably out of scope for\n# most users of tzdata:\n# The zone file\n# Zone    Europe/Zurich   0:34:08 -       LMT     1848 Sep 12\n#                          0:29:44 -       BMT     1894 Jun #Bern Mean Time\n#                          1:00    Swiss   CE%sT   1981\n#                          1:00    EU      CE%sT\n# describes all of Switzerland correctly, with the exception of\n# the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not\n# follow Bern Mean Time but kept its own local mean time.\n# To represent this, an extra zone would be needed.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tSwiss\t1941\t1942\t-\tMay\tMon>=1\t1:00\t1:00\tS\nRule\tSwiss\t1941\t1942\t-\tOct\tMon>=1\t2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Zurich\t0:34:08 -\tLMT\t1848 Sep 12\n\t\t\t0:29:44\t-\tBMT\t1894 Jun # Bern Mean Time\n\t\t\t1:00\tSwiss\tCE%sT\t1981\n\t\t\t1:00\tEU\tCE%sT\n\n# Turkey\n\n# From Amar Devegowda (2007-01-03):\n# The time zone rules for Istanbul, Turkey have not been changed for years now.\n# ... The latest rules are available at -\n# http://www.timeanddate.com/worldclock/timezone.html?n=107\n# From Steffen Thorsen (2007-01-03):\n# I have been able to find press records back to 1996 which all say that\n# DST started 01:00 local time and end at 02:00 local time.  I am not sure\n# what happened before that.  One example for each year from 1996 to 2001:\n# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm\n# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT\n# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM\n# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016\n# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021\n# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027\n# From Paul Eggert (2007-01-03):\n# Prefer the above source to Shanks & Pottenger for time stamps after 1990.\n\n# From Steffen Thorsen (2007-03-09):\n# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC\n# start/end time, according to the following page (2007-03-07):\n# http://www.ntvmsnbc.com/news/402029.asp\n# The official document is located here - it is in Turkish...:\n# http://rega.basbakanlik.gov.tr/eskiler/2007/03/20070307-7.htm\n# I was able to locate the following seemingly official document\n# (on a non-government server though) describing dates between 2002 and 2006:\n# http://www.alomaliye.com/bkk_2002_3769.htm\n\n# From G&ouml;kdeniz Karada&#x011f; (2011-03-10):\n#\n# According to the articles linked below, Turkey will change into summer\n# time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.\n# This change is due to a nationwide exam on 27th.\n#\n# <a href=\"http://www.worldbulletin.net/?aType=haber&ArticleID=70872\">\n# http://www.worldbulletin.net/?aType=haber&ArticleID=70872\n# </a>\n# Turkish:\n# <a href=\"http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373\">\n# http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373\n# </a>\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tTurkey\t1916\tonly\t-\tMay\t 1\t0:00\t1:00\tS\nRule\tTurkey\t1916\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tTurkey\t1920\tonly\t-\tMar\t28\t0:00\t1:00\tS\nRule\tTurkey\t1920\tonly\t-\tOct\t25\t0:00\t0\t-\nRule\tTurkey\t1921\tonly\t-\tApr\t 3\t0:00\t1:00\tS\nRule\tTurkey\t1921\tonly\t-\tOct\t 3\t0:00\t0\t-\nRule\tTurkey\t1922\tonly\t-\tMar\t26\t0:00\t1:00\tS\nRule\tTurkey\t1922\tonly\t-\tOct\t 8\t0:00\t0\t-\n# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925;\n# go with Shanks & Pottenger.\nRule\tTurkey\t1924\tonly\t-\tMay\t13\t0:00\t1:00\tS\nRule\tTurkey\t1924\t1925\t-\tOct\t 1\t0:00\t0\t-\nRule\tTurkey\t1925\tonly\t-\tMay\t 1\t0:00\t1:00\tS\nRule\tTurkey\t1940\tonly\t-\tJun\t30\t0:00\t1:00\tS\nRule\tTurkey\t1940\tonly\t-\tOct\t 5\t0:00\t0\t-\nRule\tTurkey\t1940\tonly\t-\tDec\t 1\t0:00\t1:00\tS\nRule\tTurkey\t1941\tonly\t-\tSep\t21\t0:00\t0\t-\nRule\tTurkey\t1942\tonly\t-\tApr\t 1\t0:00\t1:00\tS\n# Whitman omits the next two transition and gives 1945 Oct 1;\n# go with Shanks & Pottenger.\nRule\tTurkey\t1942\tonly\t-\tNov\t 1\t0:00\t0\t-\nRule\tTurkey\t1945\tonly\t-\tApr\t 2\t0:00\t1:00\tS\nRule\tTurkey\t1945\tonly\t-\tOct\t 8\t0:00\t0\t-\nRule\tTurkey\t1946\tonly\t-\tJun\t 1\t0:00\t1:00\tS\nRule\tTurkey\t1946\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tTurkey\t1947\t1948\t-\tApr\tSun>=16\t0:00\t1:00\tS\nRule\tTurkey\t1947\t1950\t-\tOct\tSun>=2\t0:00\t0\t-\nRule\tTurkey\t1949\tonly\t-\tApr\t10\t0:00\t1:00\tS\nRule\tTurkey\t1950\tonly\t-\tApr\t19\t0:00\t1:00\tS\nRule\tTurkey\t1951\tonly\t-\tApr\t22\t0:00\t1:00\tS\nRule\tTurkey\t1951\tonly\t-\tOct\t 8\t0:00\t0\t-\nRule\tTurkey\t1962\tonly\t-\tJul\t15\t0:00\t1:00\tS\nRule\tTurkey\t1962\tonly\t-\tOct\t 8\t0:00\t0\t-\nRule\tTurkey\t1964\tonly\t-\tMay\t15\t0:00\t1:00\tS\nRule\tTurkey\t1964\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tTurkey\t1970\t1972\t-\tMay\tSun>=2\t0:00\t1:00\tS\nRule\tTurkey\t1970\t1972\t-\tOct\tSun>=2\t0:00\t0\t-\nRule\tTurkey\t1973\tonly\t-\tJun\t 3\t1:00\t1:00\tS\nRule\tTurkey\t1973\tonly\t-\tNov\t 4\t3:00\t0\t-\nRule\tTurkey\t1974\tonly\t-\tMar\t31\t2:00\t1:00\tS\nRule\tTurkey\t1974\tonly\t-\tNov\t 3\t5:00\t0\t-\nRule\tTurkey\t1975\tonly\t-\tMar\t30\t0:00\t1:00\tS\nRule\tTurkey\t1975\t1976\t-\tOct\tlastSun\t0:00\t0\t-\nRule\tTurkey\t1976\tonly\t-\tJun\t 1\t0:00\t1:00\tS\nRule\tTurkey\t1977\t1978\t-\tApr\tSun>=1\t0:00\t1:00\tS\nRule\tTurkey\t1977\tonly\t-\tOct\t16\t0:00\t0\t-\nRule\tTurkey\t1979\t1980\t-\tApr\tSun>=1\t3:00\t1:00\tS\nRule\tTurkey\t1979\t1982\t-\tOct\tMon>=11\t0:00\t0\t-\nRule\tTurkey\t1981\t1982\t-\tMar\tlastSun\t3:00\t1:00\tS\nRule\tTurkey\t1983\tonly\t-\tJul\t31\t0:00\t1:00\tS\nRule\tTurkey\t1983\tonly\t-\tOct\t 2\t0:00\t0\t-\nRule\tTurkey\t1985\tonly\t-\tApr\t20\t0:00\t1:00\tS\nRule\tTurkey\t1985\tonly\t-\tSep\t28\t0:00\t0\t-\nRule\tTurkey\t1986\t1990\t-\tMar\tlastSun\t2:00s\t1:00\tS\nRule\tTurkey\t1986\t1990\t-\tSep\tlastSun\t2:00s\t0\t-\nRule\tTurkey\t1991\t2006\t-\tMar\tlastSun\t1:00s\t1:00\tS\nRule\tTurkey\t1991\t1995\t-\tSep\tlastSun\t1:00s\t0\t-\nRule\tTurkey\t1996\t2006\t-\tOct\tlastSun\t1:00s\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEurope/Istanbul\t1:55:52 -\tLMT\t1880\n\t\t\t1:56:56\t-\tIMT\t1910 Oct # Istanbul Mean Time?\n\t\t\t2:00\tTurkey\tEE%sT\t1978 Oct 15\n\t\t\t3:00\tTurkey\tTR%sT\t1985 Apr 20 # Turkey Time\n\t\t\t2:00\tTurkey\tEE%sT\t2007\n\t\t\t2:00\tEU\tEE%sT\t2011 Mar 27 1:00u\n\t\t\t2:00\t-\tEET\t2011 Mar 28 1:00u\n\t\t\t2:00\tEU\tEE%sT\nLink\tEurope/Istanbul\tAsia/Istanbul\t# Istanbul is in both continents.\n\n# Ukraine\n#\n# From Igor Karpov, who works for the Ukranian Ministry of Justice,\n# via Garrett Wollman (2003-01-27):\n# BTW, I've found the official document on this matter. It's goverment\n# regulations number 509, May 13, 1996. In my poor translation it says:\n# \"Time in Ukraine is set to second timezone (Kiev time). Each last Sunday\n# of March at 3am the time is changing to 4am and each last Sunday of\n# October the time at 4am is changing to 3am\"\n\n# From Alexander Krivenyshev (2011-09-20):\n# On September 20, 2011 the deputies of the Verkhovna Rada agreed to\n# abolish the transfer clock to winter time.\n#\n# Bill number 8330 of MP from the Party of Regions Oleg Nadoshi got\n# approval from 266 deputies.\n#\n# Ukraine abolishes transter back to the winter time (in Russian)\n# <a href=\"http://news.mail.ru/politics/6861560/\">\n# http://news.mail.ru/politics/6861560/\n# </a>\n#\n# The Ukrainians will no longer change the clock (in Russian)\n# <a href=\"http://www.segodnya.ua/news/14290482.html\">\n# http://www.segodnya.ua/news/14290482.html\n# </a>\n#\n# Deputies cancelled the winter time (in Russian)\n# <a href=\"http://www.pravda.com.ua/rus/news/2011/09/20/6600616/\">\n# http://www.pravda.com.ua/rus/news/2011/09/20/6600616/\n# </a>\n#\n# From Philip Pizzey (2011-10-18):\n# Today my Ukrainian colleagues have informed me that the\n# Ukrainian parliament have decided that they will go to winter\n# time this year after all.\n#\n# From Udo Schwedt (2011-10-18):\n# As far as I understand, the recent change to the Ukranian time zone\n# (Europe/Kiev) to introduce permanent daylight saving time (similar\n# to Russia) was reverted today:\n#\n# <a href=\"http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995\">\n# http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995\n# </a>\n#\n# Also reported by Alexander Bokovoy (2011-10-18) who also noted:\n# The law documents themselves are at\n#\n# <a href=\"http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484\">\n# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484\n# </a>\n\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# Most of Ukraine since 1970 has been like Kiev.\n# \"Kyiv\" is the transliteration of the Ukrainian name, but\n# \"Kiev\" is more common in English.\nZone Europe/Kiev\t2:02:04 -\tLMT\t1880\n\t\t\t2:02:04\t-\tKMT\t1924 May  2 # Kiev Mean Time\n\t\t\t2:00\t-\tEET\t1930 Jun 21\n\t\t\t3:00\t-\tMSK\t1941 Sep 20\n\t\t\t1:00\tC-Eur\tCE%sT\t1943 Nov  6\n\t\t\t3:00\tRussia\tMSK/MSD\t1990\n\t\t\t3:00\t-\tMSK\t1990 Jul  1 2:00\n\t\t\t2:00\t-\tEET\t1992\n\t\t\t2:00\tE-Eur\tEE%sT\t1995\n\t\t\t2:00\tEU\tEE%sT\n# Ruthenia used CET 1990/1991.\n# \"Uzhhorod\" is the transliteration of the Ukrainian name, but\n# \"Uzhgorod\" is more common in English.\nZone Europe/Uzhgorod\t1:29:12 -\tLMT\t1890 Oct\n\t\t\t1:00\t-\tCET\t1940\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Oct\n\t\t\t1:00\t1:00\tCEST\t1944 Oct 26\n\t\t\t1:00\t-\tCET\t1945 Jun 29\n\t\t\t3:00\tRussia\tMSK/MSD\t1990\n\t\t\t3:00\t-\tMSK\t1990 Jul  1 2:00\n\t\t\t1:00\t-\tCET\t1991 Mar 31 3:00\n\t\t\t2:00\t-\tEET\t1992\n\t\t\t2:00\tE-Eur\tEE%sT\t1995\n\t\t\t2:00\tEU\tEE%sT\n# Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.\n# \"Zaporizhia\" is the transliteration of the Ukrainian name, but\n# \"Zaporozh'ye\" is more common in English.  Use the common English\n# spelling, except omit the apostrophe as it is not allowed in\n# portable Posix file names.\nZone Europe/Zaporozhye\t2:20:40 -\tLMT\t1880\n\t\t\t2:20\t-\tCUT\t1924 May  2 # Central Ukraine T\n\t\t\t2:00\t-\tEET\t1930 Jun 21\n\t\t\t3:00\t-\tMSK\t1941 Aug 25\n\t\t\t1:00\tC-Eur\tCE%sT\t1943 Oct 25\n\t\t\t3:00\tRussia\tMSK/MSD\t1991 Mar 31 2:00\n\t\t\t2:00\tE-Eur\tEE%sT\t1995\n\t\t\t2:00\tEU\tEE%sT\n# Central Crimea used Moscow time 1994/1997.\nZone Europe/Simferopol\t2:16:24 -\tLMT\t1880\n\t\t\t2:16\t-\tSMT\t1924 May  2 # Simferopol Mean T\n\t\t\t2:00\t-\tEET\t1930 Jun 21\n\t\t\t3:00\t-\tMSK\t1941 Nov\n\t\t\t1:00\tC-Eur\tCE%sT\t1944 Apr 13\n\t\t\t3:00\tRussia\tMSK/MSD\t1990\n\t\t\t3:00\t-\tMSK\t1990 Jul  1 2:00\n\t\t\t2:00\t-\tEET\t1992\n# From Paul Eggert (2006-03-22):\n# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched\n# from Kiev to Moscow time sometime after the January 1994 elections.\n# Shanks (1999) says ``date of change uncertain'', but implies that it happened\n# sometime between the 1994 DST switches.  Shanks & Pottenger simply say\n# 1994-09-25 03:00, but that can't be right.  For now, guess it\n# changed in May.\n\t\t\t2:00\tE-Eur\tEE%sT\t1994 May\n# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.\n\t\t\t3:00\tE-Eur\tMSK/MSD\t1996 Mar 31 3:00s\n\t\t\t3:00\t1:00\tMSD\t1996 Oct 27 3:00s\n# IATA SSIM (1997-09) says Crimea switched to EET/EEST.\n# Assume it happened in March by not changing the clocks.\n\t\t\t3:00\tRussia\tMSK/MSD\t1997\n\t\t\t3:00\t-\tMSK\t1997 Mar lastSun 1:00u\n\t\t\t2:00\tEU\tEE%sT\n\n###############################################################################\n\n# One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from\n# the last Sunday in March to the last Sunday in September in 1986.\n# The source shows Romania changing a day later than everybody else.\n#\n# According to Bernard Sieloff's source, Poland is in the MET time zone but\n# uses the WE DST rules.  The Western USSR uses EET+1 and ME DST rules.\n# Bernard Sieloff's source claims Romania switches on the same day, but at\n# 00:00 standard time (i.e., 01:00 DST).  It also claims that Turkey\n# switches on the same day, but switches on at 01:00 standard time\n# and off at 00:00 standard time (i.e., 01:00 DST)\n\n# ...\n# Date: Wed, 28 Jan 87 16:56:27 -0100\n# From: Tom Hofmann\n# ...\n#\n# ...the European time rules are...standardized since 1981, when\n# most European coun[tr]ies started DST.  Before that year, only\n# a few countries (UK, France, Italy) had DST, each according\n# to own national rules.  In 1981, however, DST started on\n# 'Apr firstSun', and not on 'Mar lastSun' as in the following\n# years...\n# But also since 1981 there are some more national exceptions\n# than listed in 'europe': Switzerland, for example, joined DST\n# one year later, Denmark ended DST on 'Oct 1' instead of 'Sep\n# lastSun' in 1981---I don't know how they handle now.\n#\n# Finally, DST ist always from 'Apr 1' to 'Oct 1' in the\n# Soviet Union (as far as I know).\n#\n# Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG,\n# 4002 Basle, Switzerland\n# ...\n\n# ...\n# Date: Wed, 4 Feb 87 22:35:22 +0100\n# From: Dik T. Winter\n# ...\n#\n# The information from Tom Hofmann is (as far as I know) not entirely correct.\n# After a request from chongo at amdahl I tried to retrieve all information\n# about DST in Europe.  I was able to find all from about 1969.\n#\n# ...standardization on DST in Europe started in about 1977 with switches on\n# first Sunday in April and last Sunday in September...\n# In 1981 UK joined Europe insofar that\n# the starting day for both shifted to last Sunday in March.  And from 1982\n# the whole of Europe used DST, with switch dates April 1 and October 1 in\n# the Sov[i]et Union.  In 1985 the SU reverted to standard Europe[a]n switch\n# dates...\n#\n# It should also be remembered that time-zones are not constants; e.g.\n# Portugal switched in 1976 from MET (or CET) to WET with DST...\n# Note also that though there were rules for switch dates not\n# all countries abided to these dates, and many individual deviations\n# occurred, though not since 1982 I believe.  Another note: it is always\n# assumed that DST is 1 hour ahead of normal time, this need not be the\n# case; at least in the Netherlands there have been times when DST was 2 hours\n# in advance of normal time.\n#\n# ...\n# dik t. winter, cwi, amsterdam, nederland\n# ...\n\n# From Bob Devine (1988-01-28):\n# ...\n# Greece: Last Sunday in April to last Sunday in September (iffy on dates).\n# Since 1978.  Change at midnight.\n# ...\n# Monaco: has same DST as France.\n# ...\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/factory",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# For companies who don't want to put time zone specification in\n# their installation procedures.  When users run date, they'll get the message.\n# Also useful for the \"comp.sources\" version.\n\n# Zone\tNAME\tGMTOFF\tRULES\tFORMAT\nZone\tFactory\t0\t- \"Local time zone must be set--see zic manual page\"\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/iso3166.tab",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n# ISO 3166 alpha-2 country codes\n#\n# From Paul Eggert (2006-09-27):\n#\n# This file contains a table with the following columns:\n# 1.  ISO 3166-1 alpha-2 country code, current as of\n#     ISO 3166-1 Newsletter VI-1 (2007-09-21).  See:\n#     <a href=\"http://www.iso.org/iso/en/prods-services/iso3166ma/index.html\">\n#     ISO 3166 Maintenance agency (ISO 3166/MA)\n#     </a>.\n# 2.  The usual English name for the country,\n#     chosen so that alphabetic sorting of subsets produces helpful lists.\n#     This is not the same as the English name in the ISO 3166 tables.\n#\n# Columns are separated by a single tab.\n# The table is sorted by country code.\n#\n# Lines beginning with `#' are comments.\n#\n# From Arthur David Olson (2011-08-17):\n# Resynchronized today with the ISO 3166 site (adding SS for South Sudan).\n#\n#country-\n#code\tcountry name\nAD\tAndorra\nAE\tUnited Arab Emirates\nAF\tAfghanistan\nAG\tAntigua & Barbuda\nAI\tAnguilla\nAL\tAlbania\nAM\tArmenia\nAO\tAngola\nAQ\tAntarctica\nAR\tArgentina\nAS\tSamoa (American)\nAT\tAustria\nAU\tAustralia\nAW\tAruba\nAX\tAaland Islands\nAZ\tAzerbaijan\nBA\tBosnia & Herzegovina\nBB\tBarbados\nBD\tBangladesh\nBE\tBelgium\nBF\tBurkina Faso\nBG\tBulgaria\nBH\tBahrain\nBI\tBurundi\nBJ\tBenin\nBL\tSt Barthelemy\nBM\tBermuda\nBN\tBrunei\nBO\tBolivia\nBQ\tBonaire Sint Eustatius & Saba\nBR\tBrazil\nBS\tBahamas\nBT\tBhutan\nBV\tBouvet Island\nBW\tBotswana\nBY\tBelarus\nBZ\tBelize\nCA\tCanada\nCC\tCocos (Keeling) Islands\nCD\tCongo (Dem. Rep.)\nCF\tCentral African Rep.\nCG\tCongo (Rep.)\nCH\tSwitzerland\nCI\tCote d'Ivoire\nCK\tCook Islands\nCL\tChile\nCM\tCameroon\nCN\tChina\nCO\tColombia\nCR\tCosta Rica\nCU\tCuba\nCV\tCape Verde\nCW\tCuracao\nCX\tChristmas Island\nCY\tCyprus\nCZ\tCzech Republic\nDE\tGermany\nDJ\tDjibouti\nDK\tDenmark\nDM\tDominica\nDO\tDominican Republic\nDZ\tAlgeria\nEC\tEcuador\nEE\tEstonia\nEG\tEgypt\nEH\tWestern Sahara\nER\tEritrea\nES\tSpain\nET\tEthiopia\nFI\tFinland\nFJ\tFiji\nFK\tFalkland Islands\nFM\tMicronesia\nFO\tFaroe Islands\nFR\tFrance\nGA\tGabon\nGB\tBritain (UK)\nGD\tGrenada\nGE\tGeorgia\nGF\tFrench Guiana\nGG\tGuernsey\nGH\tGhana\nGI\tGibraltar\nGL\tGreenland\nGM\tGambia\nGN\tGuinea\nGP\tGuadeloupe\nGQ\tEquatorial Guinea\nGR\tGreece\nGS\tSouth Georgia & the South Sandwich Islands\nGT\tGuatemala\nGU\tGuam\nGW\tGuinea-Bissau\nGY\tGuyana\nHK\tHong Kong\nHM\tHeard Island & McDonald Islands\nHN\tHonduras\nHR\tCroatia\nHT\tHaiti\nHU\tHungary\nID\tIndonesia\nIE\tIreland\nIL\tIsrael\nIM\tIsle of Man\nIN\tIndia\nIO\tBritish Indian Ocean Territory\nIQ\tIraq\nIR\tIran\nIS\tIceland\nIT\tItaly\nJE\tJersey\nJM\tJamaica\nJO\tJordan\nJP\tJapan\nKE\tKenya\nKG\tKyrgyzstan\nKH\tCambodia\nKI\tKiribati\nKM\tComoros\nKN\tSt Kitts & Nevis\nKP\tKorea (North)\nKR\tKorea (South)\nKW\tKuwait\nKY\tCayman Islands\nKZ\tKazakhstan\nLA\tLaos\nLB\tLebanon\nLC\tSt Lucia\nLI\tLiechtenstein\nLK\tSri Lanka\nLR\tLiberia\nLS\tLesotho\nLT\tLithuania\nLU\tLuxembourg\nLV\tLatvia\nLY\tLibya\nMA\tMorocco\nMC\tMonaco\nMD\tMoldova\nME\tMontenegro\nMF\tSt Martin (French part)\nMG\tMadagascar\nMH\tMarshall Islands\nMK\tMacedonia\nML\tMali\nMM\tMyanmar (Burma)\nMN\tMongolia\nMO\tMacau\nMP\tNorthern Mariana Islands\nMQ\tMartinique\nMR\tMauritania\nMS\tMontserrat\nMT\tMalta\nMU\tMauritius\nMV\tMaldives\nMW\tMalawi\nMX\tMexico\nMY\tMalaysia\nMZ\tMozambique\nNA\tNamibia\nNC\tNew Caledonia\nNE\tNiger\nNF\tNorfolk Island\nNG\tNigeria\nNI\tNicaragua\nNL\tNetherlands\nNO\tNorway\nNP\tNepal\nNR\tNauru\nNU\tNiue\nNZ\tNew Zealand\nOM\tOman\nPA\tPanama\nPE\tPeru\nPF\tFrench Polynesia\nPG\tPapua New Guinea\nPH\tPhilippines\nPK\tPakistan\nPL\tPoland\nPM\tSt Pierre & Miquelon\nPN\tPitcairn\nPR\tPuerto Rico\nPS\tPalestine\nPT\tPortugal\nPW\tPalau\nPY\tParaguay\nQA\tQatar\nRE\tReunion\nRO\tRomania\nRS\tSerbia\nRU\tRussia\nRW\tRwanda\nSA\tSaudi Arabia\nSB\tSolomon Islands\nSC\tSeychelles\nSD\tSudan\nSE\tSweden\nSG\tSingapore\nSH\tSt Helena\nSI\tSlovenia\nSJ\tSvalbard & Jan Mayen\nSK\tSlovakia\nSL\tSierra Leone\nSM\tSan Marino\nSN\tSenegal\nSO\tSomalia\nSR\tSuriname\nSS\tSouth Sudan\nST\tSao Tome & Principe\nSV\tEl Salvador\nSX\tSint Maarten\nSY\tSyria\nSZ\tSwaziland\nTC\tTurks & Caicos Is\nTD\tChad\nTF\tFrench Southern & Antarctic Lands\nTG\tTogo\nTH\tThailand\nTJ\tTajikistan\nTK\tTokelau\nTL\tEast Timor\nTM\tTurkmenistan\nTN\tTunisia\nTO\tTonga\nTR\tTurkey\nTT\tTrinidad & Tobago\nTV\tTuvalu\nTW\tTaiwan\nTZ\tTanzania\nUA\tUkraine\nUG\tUganda\nUM\tUS minor outlying islands\nUS\tUnited States\nUY\tUruguay\nUZ\tUzbekistan\nVA\tVatican City\nVC\tSt Vincent\nVE\tVenezuela\nVG\tVirgin Islands (UK)\nVI\tVirgin Islands (US)\nVN\tVietnam\nVU\tVanuatu\nWF\tWallis & Futuna\nWS\tSamoa (western)\nYE\tYemen\nYT\tMayotte\nZA\tSouth Africa\nZM\tZambia\nZW\tZimbabwe\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/leapseconds",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Allowance for leapseconds added to each timezone file.\n\n# The International Earth Rotation Service periodically uses leap seconds\n# to keep UTC to within 0.9 s of UT1\n# (which measures the true angular orientation of the earth in space); see\n# Terry J Quinn, The BIPM and the accurate measure of time,\n# Proc IEEE 79, 7 (July 1991), 894-905.\n# There were no leap seconds before 1972, because the official mechanism\n# accounting for the discrepancy between atomic time and the earth's rotation\n# did not exist until the early 1970s.\n\n# The correction (+ or -) is made at the given time, so lines\n# will typically look like:\n#\tLeap\tYEAR\tMON\tDAY\t23:59:60\t+\tR/S\n# or\n#\tLeap\tYEAR\tMON\tDAY\t23:59:59\t-\tR/S\n\n# If the leapsecond is Rolling (R) the given time is local time\n# If the leapsecond is Stationary (S) the given time is UTC\n\n# Leap\tYEAR\tMONTH\tDAY\tHH:MM:SS\tCORR\tR/S\nLeap\t1972\tJun\t30\t23:59:60\t+\tS\nLeap\t1972\tDec\t31\t23:59:60\t+\tS\nLeap\t1973\tDec\t31\t23:59:60\t+\tS\nLeap\t1974\tDec\t31\t23:59:60\t+\tS\nLeap\t1975\tDec\t31\t23:59:60\t+\tS\nLeap\t1976\tDec\t31\t23:59:60\t+\tS\nLeap\t1977\tDec\t31\t23:59:60\t+\tS\nLeap\t1978\tDec\t31\t23:59:60\t+\tS\nLeap\t1979\tDec\t31\t23:59:60\t+\tS\nLeap\t1981\tJun\t30\t23:59:60\t+\tS\nLeap\t1982\tJun\t30\t23:59:60\t+\tS\nLeap\t1983\tJun\t30\t23:59:60\t+\tS\nLeap\t1985\tJun\t30\t23:59:60\t+\tS\nLeap\t1987\tDec\t31\t23:59:60\t+\tS\nLeap\t1989\tDec\t31\t23:59:60\t+\tS\nLeap\t1990\tDec\t31\t23:59:60\t+\tS\nLeap\t1992\tJun\t30\t23:59:60\t+\tS\nLeap\t1993\tJun\t30\t23:59:60\t+\tS\nLeap\t1994\tJun\t30\t23:59:60\t+\tS\nLeap\t1995\tDec\t31\t23:59:60\t+\tS\nLeap\t1997\tJun\t30\t23:59:60\t+\tS\nLeap\t1998\tDec\t31\t23:59:60\t+\tS\nLeap\t2005\tDec\t31\t23:59:60\t+\tS\nLeap\t2008\tDec\t31\t23:59:60\t+\tS\nLeap\t2012\tJun\t30\t23:59:60\t+\tS\n\n# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)\n#\n# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE\n#\n#\n# SERVICE DE LA ROTATION TERRESTRE\n# OBSERVATOIRE DE PARIS\n# 61, Av. de l'Observatoire 75014 PARIS (France)\n# Tel.      : 33 (0) 1 40 51 22 26\n# FAX       : 33 (0) 1 40 51 22 91\n# e-mail    : (E-Mail Removed)\n# http://hpiers.obspm.fr/eop-pc\n#\n# Paris, 5 January 2012\n#\n#\n# Bulletin C 43\n#\n# To authorities responsible\n# for the measurement and\n# distribution of time\n#\n#\n# UTC TIME STEP\n# on the 1st of July 2012\n#\n#\n# A positive leap second will be introduced at the end of June 2012.\n# The sequence of dates of the UTC second markers will be:\n#\n#                          2012 June 30,     23h 59m 59s\n#                          2012 June 30,     23h 59m 60s\n#                          2012 July  1,      0h  0m  0s\n#\n# The difference between UTC and the International Atomic Time TAI is:\n#\n# from 2009 January 1, 0h UTC, to 2012 July 1  0h UTC  : UTC-TAI = - 34s\n# from 2012 July 1,    0h UTC, until further notice    : UTC-TAI = - 35s\n#\n# Leap seconds can be introduced in UTC at the end of the months of December\n# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every\n# six months, either to announce a time step in UTC or to confirm that there\n# will be no time step at the next possible date.\n#\n#\n# Daniel GAMBIS\n# Head\n# Earth Orientation Center of IERS\n# Observatoire de Paris, France\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/northamerica",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# also includes Central America and the Caribbean\n\n# This data is by no means authoritative; if you think you know better,\n# go ahead and edit the file (and please send any changes to\n# tz@iana.org for general use in the future).\n\n# From Paul Eggert (1999-03-22):\n# A reliable and entertaining source about time zones is\n# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).\n\n###############################################################################\n\n# United States\n\n# From Paul Eggert (1999-03-31):\n# Howse writes (pp 121-125) that time zones were invented by\n# Professor Charles Ferdinand Dowd (1825-1904),\n# Principal of Temple Grove Ladies' Seminary (Saratoga Springs, NY).\n# His pamphlet ``A System of National Time for Railroads'' (1870)\n# was the result of his proposals at the Convention of Railroad Trunk Lines\n# in New York City (1869-10).  His 1870 proposal was based on Washington, DC,\n# but in 1872-05 he moved the proposed origin to Greenwich.\n# His proposal was adopted by the railroads on 1883-11-18 at 12:00,\n# and the most of the country soon followed suit.\n\n# From Paul Eggert (2005-04-16):\n# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.\n# See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005).\n\n# From Paul Eggert (2006-03-22):\n# A good source for time zone historical data in the US is\n# Thomas G. Shanks, The American Atlas (5th edition),\n# San Diego: ACS Publications, Inc. (1991).\n# Make sure you have the errata sheet; the book is somewhat useless without it.\n# It is the source for most of the pre-1991 US entries below.\n\n# From Paul Eggert (2001-03-06):\n# Daylight Saving Time was first suggested as a joke by Benjamin Franklin\n# in his whimsical essay ``An Economical Project for Diminishing the Cost\n# of Light'' published in the Journal de Paris (1784-04-26).\n# Not everyone is happy with the results:\n#\n#\tI don't really care how time is reckoned so long as there is some\n#\tagreement about it, but I object to being told that I am saving\n#\tdaylight when my reason tells me that I am doing nothing of the kind.\n#\tI even object to the implication that I am wasting something\n#\tvaluable if I stay in bed after the sun has risen.  As an admirer\n#\tof moonlight I resent the bossy insistence of those who want to\n#\treduce my time for enjoying it.  At the back of the Daylight Saving\n#\tscheme I detect the bony, blue-fingered hand of Puritanism, eager\n#\tto push people into bed earlier, and get them up earlier, to make\n#\tthem healthy, wealthy and wise in spite of themselves.\n#\n#\t-- Robertson Davies, The diary of Samuel Marchbanks,\n#\t   Clarke, Irwin (1947), XIX, Sunday\n#\n# For more about the first ten years of DST in the United States, see\n# Robert Garland's <a href=\"http://www.clpgh.org/exhibit/dst.html\">\n# Ten years of daylight saving from the Pittsburgh standpoint\n# (Carnegie Library of Pittsburgh, 1927)</a>.\n#\n# Shanks says that DST was called \"War Time\" in the US in 1918 and 1919.\n# However, DST was imposed by the Standard Time Act of 1918, which\n# was the first nationwide legal time standard, and apparently\n# time was just called \"Standard Time\" or \"Daylight Saving Time\".\n\n# From Arthur David Olson:\n# US Daylight Saving Time ended on the last Sunday of *October* in 1974.\n# See, for example, the front page of the Saturday, 1974-10-26\n# and Sunday, 1974-10-27 editions of the Washington Post.\n\n# From Arthur David Olson:\n# Before the Uniform Time Act of 1966 took effect in 1967, observance of\n# Daylight Saving Time in the US was by local option, except during wartime.\n\n# From Arthur David Olson (2000-09-25):\n# Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.\n# In the introduction, Oboler spoke of \"Eastern Peace Time.\"\n# An AltaVista search turned up\n# <a href=\"http://rowayton.org/rhs/hstaug45.html\">:\n# \"When the time is announced over the radio now, it is 'Eastern Peace\n# Time' instead of the old familiar 'Eastern War Time.'  Peace is wonderful.\"\n# </a> (August 1945) by way of confirmation.\n\n# From Joseph Gallant citing\n# George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):\n# At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set\n# to switch to London for Attlee's address, but the American people\n# never got to hear his speech live. According to one press account,\n# CBS' Bob Trout was first to announce the word of Japan's surrender,\n# but a few seconds later, NBC, ABC and Mutual also flashed the word\n# of surrender, all of whom interrupting the bells of Big Ben in\n# London which were to precede Mr. Attlee's speech.\n\n# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout.  From\n# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:\n#\n# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.\n# Any announcement from Asia would reach St. John's New York newsroom on a\n# wire service teletype machine, which had prescribed signals for major news.\n# Associated Press, for example, would ring five bells before spewing out\n# typed copy of an important story, and 10 bells for news \"of transcendental\n# importance.\"\n#\n# On Aug. 14, stalling while talking steadily into the NBC networks' open\n# microphone, St. John heard five bells and waited only to hear a sixth bell,\n# before announcing confidently: \"Ladies and gentlemen, World War II is over.\n# The Japanese have agreed to our surrender terms.\"\n#\n# He had scored a 20-second scoop on other broadcasters.\n\n# From Arthur David Olson (2005-08-22):\n# Paul has been careful to use the \"US\" rules only in those locations\n# that are part of the United States; this reflects the real scope of\n# U.S. government action.  So even though the \"US\" rules have changed\n# in the latest release, other countries won't be affected.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tUS\t1918\t1919\t-\tMar\tlastSun\t2:00\t1:00\tD\nRule\tUS\t1918\t1919\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tUS\t1942\tonly\t-\tFeb\t9\t2:00\t1:00\tW # War\nRule\tUS\t1945\tonly\t-\tAug\t14\t23:00u\t1:00\tP # Peace\nRule\tUS\t1945\tonly\t-\tSep\t30\t2:00\t0\tS\nRule\tUS\t1967\t2006\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tUS\t1967\t1973\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tUS\t1974\tonly\t-\tJan\t6\t2:00\t1:00\tD\nRule\tUS\t1975\tonly\t-\tFeb\t23\t2:00\t1:00\tD\nRule\tUS\t1976\t1986\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tUS\t1987\t2006\t-\tApr\tSun>=1\t2:00\t1:00\tD\nRule\tUS\t2007\tmax\t-\tMar\tSun>=8\t2:00\t1:00\tD\nRule\tUS\t2007\tmax\t-\tNov\tSun>=1\t2:00\t0\tS\n\n# From Arthur David Olson, 2005-12-19\n# We generate the files specified below to guard against old files with\n# obsolete information being left in the time zone binary directory.\n# We limit the list to names that have appeared in previous versions of\n# this time zone package.\n# We do these as separate Zones rather than as Links to avoid problems if\n# a particular place changes whether it observes DST.\n# We put these specifications here in the northamerica file both to\n# increase the chances that they'll actually get compiled and to\n# avoid the need to duplicate the US rules in another file.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tEST\t\t -5:00\t-\tEST\nZone\tMST\t\t -7:00\t-\tMST\nZone\tHST\t\t-10:00\t-\tHST\nZone\tEST5EDT\t\t -5:00\tUS\tE%sT\nZone\tCST6CDT\t\t -6:00\tUS\tC%sT\nZone\tMST7MDT\t\t -7:00\tUS\tM%sT\nZone\tPST8PDT\t\t -8:00\tUS\tP%sT\n\n# From Bob Devine (1988-01-28):\n# ...Alaska (and Hawaii) had the timezone names changed in 1967.\n#    old\t\t\t new\n#    Pacific Standard Time(PST)  -same-\n#    Yukon Standard Time(YST)    -same-\n#    Central Alaska S.T. (CAT)   Alaska-Hawaii St[an]dard Time (AHST)\n#    Nome Standard Time (NT)     Bering Standard Time (BST)\n#\n# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz.\n#    The YST zone now covers nearly all of the state, AHST just part\n#    of the Aleutian islands.   No DST.\n\n# From Paul Eggert (1995-12-19):\n# The tables below use `NST', not `NT', for Nome Standard Time.\n# I invented `CAWT' for Central Alaska War Time.\n\n# From U. S. Naval Observatory (1989-01-19):\n# USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON\n# USA  EASTERN       4 H  BEHIND UTC    APR 3 - OCT 30\n# USA  CENTRAL       6 H  BEHIND UTC    CHICAGO, HOUSTON\n# USA  CENTRAL       5 H  BEHIND UTC    APR 3 - OCT 30\n# USA  MOUNTAIN      7 H  BEHIND UTC    DENVER\n# USA  MOUNTAIN      6 H  BEHIND UTC    APR 3 - OCT 30\n# USA  PACIFIC       8 H  BEHIND UTC    L.A., SAN FRANCISCO\n# USA  PACIFIC       7 H  BEHIND UTC    APR 3 - OCT 30\n# USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)\n# USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)\n# USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W\n# USA  - \" -         9 H  BEHIND UTC    APR 3 - OCT 30\n# USA  HAWAII       10 H  BEHIND UTC\n# USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY\n\n# From Arthur David Olson (1989-01-21):\n# The above dates are for 1988.\n# Note the \"AKST\" and \"AKDT\" abbreviations, the claim that there's\n# no DST in Samoa, and the claim that there is DST in Alaska and the\n# Aleutians.\n\n# From Arthur David Olson (1988-02-13):\n# Legal standard time zone names, from United States Code (1982 Edition and\n# Supplement III), Title 15, Chapter 6, Section 260 and forward.  First, names\n# up to 1967-04-01 (when most provisions of the Uniform Time Act of 1966\n# took effect), as explained in sections 263 and 261:\n#\t(none)\n#\tUnited States standard eastern time\n#\tUnited States standard mountain time\n#\tUnited States standard central time\n#\tUnited States standard Pacific time\n#\t(none)\n#\tUnited States standard Alaska time\n#\t(none)\n# Next, names from 1967-04-01 until 1983-11-30 (the date for\n# public law 98-181):\n#\tAtlantic standard time\n#\teastern standard time\n#\tcentral standard time\n#\tmountain standard time\n#\tPacific standard time\n#\tYukon standard time\n#\tAlaska-Hawaii standard time\n#\tBering standard time\n# And after 1983-11-30:\n#\tAtlantic standard time\n#\teastern standard time\n#\tcentral standard time\n#\tmountain standard time\n#\tPacific standard time\n#\tAlaska standard time\n#\tHawaii-Aleutian standard time\n#\tSamoa standard time\n# The law doesn't give abbreviations.\n#\n# From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:\n# Public law 106-564 (2000-12-23) introduced the abbreviation\n# \"Chamorro Standard Time\" for time in Guam and the Northern Marianas.\n# See the file \"australasia\".\n\n# From Arthur David Olson, 2005-08-09\n# The following was signed into law on 2005-08-08.\n#\n# H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.\n#   (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15\n#   U.S.C. 260a(a)) is amended--\n#     (1) by striking `first Sunday of April' and inserting `second\n#     Sunday of March'; and\n#     (2) by striking `last Sunday of October' and inserting `first\n#     Sunday of November'.\n#   (b) Effective Date- Subsection (a) shall take effect 1 year after the\n#   date of enactment of this Act or March 1, 2007, whichever is later.\n#   (c) Report to Congress- Not later than 9 months after the effective\n#   date stated in subsection (b), the Secretary shall report to Congress\n#   on the impact of this section on energy consumption in the United\n#   States.\n#   (d) Right to Revert- Congress retains the right to revert the\n#   Daylight Saving Time back to the 2005 time schedules once the\n#   Department study is complete.\n\n# US eastern time, represented by New York\n\n# Connecticut, Delaware, District of Columbia, most of Florida,\n# Georgia, southeast Indiana (Dearborn and Ohio counties), eastern Kentucky\n# (except America/Kentucky/Louisville below), Maine, Maryland, Massachusetts,\n# New Hampshire, New Jersey, New York, North Carolina, Ohio,\n# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,\n# Vermont, Virginia, West Virginia\n\n# From Dave Cantor (2004-11-02):\n# Early this summer I had the occasion to visit the Mount Washington\n# Observatory weather station atop (of course!) Mount Washington [, NH]....\n# One of the staff members said that the station was on Eastern Standard Time\n# and didn't change their clocks for Daylight Saving ... so that their\n# reports will always have times which are 5 hours behind UTC.\n\n# From Paul Eggert (2005-08-26):\n# According to today's Huntsville Times\n# <http://www.al.com/news/huntsvilletimes/index.ssf?/base/news/1125047783228320.xml&coll=1>\n# a few towns on Alabama's \"eastern border with Georgia, such as Phenix City\n# in Russell County, Lanett in Chambers County and some towns in Lee County,\n# set their watches and clocks on Eastern time.\"  It quotes H.H. \"Bubba\"\n# Roberts, city administrator in Phenix City. as saying \"We are in the Central\n# time zone, but we do go by the Eastern time zone because so many people work\n# in Columbus.\"\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tNYC\t1920\tonly\t-\tMar\tlastSun\t2:00\t1:00\tD\nRule\tNYC\t1920\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tNYC\t1921\t1966\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tNYC\t1921\t1954\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tNYC\t1955\t1966\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/New_York\t-4:56:02 -\tLMT\t1883 Nov 18 12:03:58\n\t\t\t-5:00\tUS\tE%sT\t1920\n\t\t\t-5:00\tNYC\tE%sT\t1942\n\t\t\t-5:00\tUS\tE%sT\t1946\n\t\t\t-5:00\tNYC\tE%sT\t1967\n\t\t\t-5:00\tUS\tE%sT\n\n# US central time, represented by Chicago\n\n# Alabama, Arkansas, Florida panhandle (Bay, Calhoun, Escambia,\n# Gulf, Holmes, Jackson, Okaloosa, Santa Rosa, Walton, and\n# Washington counties), Illinois, western Indiana\n# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,\n# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western\n# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern\n# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,\n# western Tennessee, most of Texas, Wisconsin\n\n# From Larry M. Smith (2006-04-26) re Wisconsin:\n# http://www.legis.state.wi.us/statutes/Stat0175.pdf ...\n# is currently enforced at the 01:00 time of change.  Because the local\n# \"bar time\" in the state corresponds to 02:00, a number of citations\n# are issued for the \"sale of class 'B' alcohol after prohibited\n# hours\" within the deviated hour of this change every year....\n#\n# From Douglas R. Bomberg (2007-03-12):\n# Wisconsin has enacted (nearly eleventh-hour) legislation to get WI\n# Statue 175 closer in synch with the US Congress' intent....\n# http://www.legis.state.wi.us/2007/data/acts/07Act3.pdf\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tChicago\t1920\tonly\t-\tJun\t13\t2:00\t1:00\tD\nRule\tChicago\t1920\t1921\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tChicago\t1921\tonly\t-\tMar\tlastSun\t2:00\t1:00\tD\nRule\tChicago\t1922\t1966\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tChicago\t1922\t1954\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tChicago\t1955\t1966\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Chicago\t-5:50:36 -\tLMT\t1883 Nov 18 12:09:24\n\t\t\t-6:00\tUS\tC%sT\t1920\n\t\t\t-6:00\tChicago\tC%sT\t1936 Mar  1 2:00\n\t\t\t-5:00\t-\tEST\t1936 Nov 15 2:00\n\t\t\t-6:00\tChicago\tC%sT\t1942\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00\tChicago\tC%sT\t1967\n\t\t\t-6:00\tUS\tC%sT\n# Oliver County, ND switched from mountain to central time on 1992-10-25.\nZone America/North_Dakota/Center -6:45:12 - LMT\t1883 Nov 18 12:14:48\n\t\t\t-7:00\tUS\tM%sT\t1992 Oct 25 02:00\n\t\t\t-6:00\tUS\tC%sT\n# Morton County, ND, switched from mountain to central time on\n# 2003-10-26, except for the area around Mandan which was already central time.\n# See <http://dmses.dot.gov/docimages/p63/135818.pdf>.\n# Officially this switch also included part of Sioux County, and\n# Jones, Mellette, and Todd Counties in South Dakota;\n# but in practice these other counties were already observing central time.\n# See <http://www.epa.gov/fedrgstr/EPA-IMPACT/2003/October/Day-28/i27056.htm>.\nZone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21\n\t\t\t-7:00\tUS\tM%sT\t2003 Oct 26 02:00\n\t\t\t-6:00\tUS\tC%sT\n\n# From Josh Findley (2011-01-21):\n# ...it appears that Mercer County, North Dakota, changed from the\n# mountain time zone to the central time zone at the last transition from\n# daylight-saving to standard time (on Nov. 7, 2010):\n# <a href=\"http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm\">\n# http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm\n# </a>\n# <a href=\"http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html\">\n# http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html\n# </a>\n\n# From Andy Lipscomb (2011-01-24):\n# ...according to the Census Bureau, the largest city is Beulah (although\n# it's commonly referred to as Beulah-Hazen, with Hazen being the next\n# largest city in Mercer County).  Google Maps places Beulah's city hall\n# at 4715'51\" north, 10146'40\" west, which yields an offset of 6h47'07\".\n\nZone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53\n\t\t\t-7:00\tUS\tM%sT\t2010 Nov  7 2:00\n\t\t\t-6:00\tUS\tC%sT\n\n# US mountain time, represented by Denver\n#\n# Colorado, far western Kansas, Montana, western\n# Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),\n# New Mexico, southwestern North Dakota,\n# western South Dakota, far western Texas (El Paso County, Hudspeth County,\n# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tDenver\t1920\t1921\t-\tMar\tlastSun\t2:00\t1:00\tD\nRule\tDenver\t1920\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tDenver\t1921\tonly\t-\tMay\t22\t2:00\t0\tS\nRule\tDenver\t1965\t1966\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tDenver\t1965\t1966\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Denver\t-6:59:56 -\tLMT\t1883 Nov 18 12:00:04\n\t\t\t-7:00\tUS\tM%sT\t1920\n\t\t\t-7:00\tDenver\tM%sT\t1942\n\t\t\t-7:00\tUS\tM%sT\t1946\n\t\t\t-7:00\tDenver\tM%sT\t1967\n\t\t\t-7:00\tUS\tM%sT\n\n# US Pacific time, represented by Los Angeles\n#\n# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,\n# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,\n# and the northern three-quarters of Idaho county),\n# most of Nevada, most of Oregon, and Washington\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tCA\t1948\tonly\t-\tMar\t14\t2:00\t1:00\tD\nRule\tCA\t1949\tonly\t-\tJan\t 1\t2:00\t0\tS\nRule\tCA\t1950\t1966\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tCA\t1950\t1961\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tCA\t1962\t1966\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Los_Angeles -7:52:58 -\tLMT\t1883 Nov 18 12:07:02\n\t\t\t-8:00\tUS\tP%sT\t1946\n\t\t\t-8:00\tCA\tP%sT\t1967\n\t\t\t-8:00\tUS\tP%sT\n\n# Alaska\n# AK%sT is the modern abbreviation for -9:00 per USNO.\n#\n# From Paul Eggert (2001-05-30):\n# Howse writes that Alaska switched from the Julian to the Gregorian calendar,\n# and from east-of-GMT to west-of-GMT days, when the US bought it from Russia.\n# This was on 1867-10-18, a Friday; the previous day was 1867-10-06 Julian,\n# also a Friday.  Include only the time zone part of this transition,\n# ignoring the switch from Julian to Gregorian, since we can't represent\n# the Julian calendar.\n#\n# As far as we know, none of the exact locations mentioned below were\n# permanently inhabited in 1867 by anyone using either calendar.\n# (Yakutat was colonized by the Russians in 1799, but the settlement\n# was destroyed in 1805 by a Yakutat-kon war party.)  However, there\n# were nearby inhabitants in some cases and for our purposes perhaps\n# it's best to simply use the official transition.\n#\n\n# From Steve Ferguson (2011-01-31):\n# The author lives in Alaska and many of the references listed are only\n# available to Alaskan residents.\n#\n# <a href=\"http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98\">\n# http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98\n# </a>\n\n# From Arthur David Olson (2011-02-01):\n# Here's database-relevant material from the 2001 \"Alaska History\" article:\n#\n# On September 20 [1979]...DOT...officials decreed that on April 27,\n# 1980, Juneau and other nearby communities would move to Yukon Time.\n# Sitka, Petersburg, Wrangell, and Ketchikan, however, would remain on\n# Pacific Time.\n#\n# ...on September 22, 1980, DOT Secretary Neil E. Goldschmidt rescinded the\n# Department's September 1979 decision. Juneau and other communities in\n# northern Southeast reverted to Pacific Time on October 26.\n#\n# On October 28 [1983]...the Metlakatla Indian Community Council voted\n# unanimously to keep the reservation on Pacific Time.\n#\n# According to DOT official Joanne Petrie, Indian reservations are not\n# bound to follow time zones imposed by neighboring jurisdictions.\n#\n# (The last is consistent with how the database now handles the Navajo\n# Nation.)\n\n# From Arthur David Olson (2011-02-09):\n# I just spoke by phone with a staff member at the Metlakatla Indian\n# Community office (using contact information available at\n# <a href=\"http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla\">\n# http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla\n# </a>).\n# It's shortly after 1:00 here on the east coast of the United States;\n# the staffer said it was shortly after 10:00 there. When I asked whether\n# that meant they were on Pacific time, they said no--they were on their\n# own time. I asked about daylight saving; they said it wasn't used. I\n# did not inquire about practices in the past.\n\n# From Arthur David Olson (2011-08-17):\n# For lack of better information, assume that Metlakatla's\n# abandonment of use of daylight saving resulted from the 1983 vote.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Juneau\t 15:02:19 -\tLMT\t1867 Oct 18\n\t\t\t -8:57:41 -\tLMT\t1900 Aug 20 12:00\n\t\t\t -8:00\t-\tPST\t1942\n\t\t\t -8:00\tUS\tP%sT\t1946\n\t\t\t -8:00\t-\tPST\t1969\n\t\t\t -8:00\tUS\tP%sT\t1980 Apr 27 2:00\n\t\t\t -9:00\tUS\tY%sT\t1980 Oct 26 2:00\n\t\t\t -8:00\tUS\tP%sT\t1983 Oct 30 2:00\n\t\t\t -9:00\tUS\tY%sT\t1983 Nov 30\n\t\t\t -9:00\tUS\tAK%sT\nZone America/Sitka\t 14:58:47 -\tLMT\t1867 Oct 18\n\t\t\t -9:01:13 -\tLMT\t1900 Aug 20 12:00\n\t\t\t -8:00\t-\tPST\t1942\n\t\t\t -8:00\tUS\tP%sT\t1946\n\t\t\t -8:00\t-\tPST\t1969\n\t\t\t -8:00\tUS\tP%sT\t1983 Oct 30 2:00\n\t\t\t -9:00\tUS\tY%sT\t1983 Nov 30\n\t\t\t -9:00\tUS\tAK%sT\nZone America/Metlakatla\t 15:13:42 -\tLMT\t1867 Oct 18\n\t\t\t -8:46:18 -\tLMT\t1900 Aug 20 12:00\n\t\t\t -8:00\t-\tPST\t1942\n\t\t\t -8:00\tUS\tP%sT\t1946\n\t\t\t -8:00\t-\tPST\t1969\n\t\t\t -8:00\tUS\tP%sT\t1983 Oct 30 2:00\n\t\t\t -8:00\t-\tMeST\nZone America/Yakutat\t 14:41:05 -\tLMT\t1867 Oct 18\n\t\t\t -9:18:55 -\tLMT\t1900 Aug 20 12:00\n\t\t\t -9:00\t-\tYST\t1942\n\t\t\t -9:00\tUS\tY%sT\t1946\n\t\t\t -9:00\t-\tYST\t1969\n\t\t\t -9:00\tUS\tY%sT\t1983 Nov 30\n\t\t\t -9:00\tUS\tAK%sT\nZone America/Anchorage\t 14:00:24 -\tLMT\t1867 Oct 18\n\t\t\t -9:59:36 -\tLMT\t1900 Aug 20 12:00\n\t\t\t-10:00\t-\tCAT\t1942\n\t\t\t-10:00\tUS\tCAT/CAWT 1945 Aug 14 23:00u\n\t\t\t-10:00\tUS\tCAT/CAPT 1946 # Peace\n\t\t\t-10:00\t-\tCAT\t1967 Apr\n\t\t\t-10:00\t-\tAHST\t1969\n\t\t\t-10:00\tUS\tAH%sT\t1983 Oct 30 2:00\n\t\t\t -9:00\tUS\tY%sT\t1983 Nov 30\n\t\t\t -9:00\tUS\tAK%sT\nZone America/Nome\t 12:58:21 -\tLMT\t1867 Oct 18\n\t\t\t-11:01:38 -\tLMT\t1900 Aug 20 12:00\n\t\t\t-11:00\t-\tNST\t1942\n\t\t\t-11:00\tUS\tN%sT\t1946\n\t\t\t-11:00\t-\tNST\t1967 Apr\n\t\t\t-11:00\t-\tBST\t1969\n\t\t\t-11:00\tUS\tB%sT\t1983 Oct 30 2:00\n\t\t\t -9:00\tUS\tY%sT\t1983 Nov 30\n\t\t\t -9:00\tUS\tAK%sT\nZone America/Adak\t 12:13:21 -\tLMT\t1867 Oct 18\n\t\t\t-11:46:38 -\tLMT\t1900 Aug 20 12:00\n\t\t\t-11:00\t-\tNST\t1942\n\t\t\t-11:00\tUS\tN%sT\t1946\n\t\t\t-11:00\t-\tNST\t1967 Apr\n\t\t\t-11:00\t-\tBST\t1969\n\t\t\t-11:00\tUS\tB%sT\t1983 Oct 30 2:00\n\t\t\t-10:00\tUS\tAH%sT\t1983 Nov 30\n\t\t\t-10:00\tUS\tHA%sT\n# The following switches don't quite make our 1970 cutoff.\n#\n# Shanks writes that part of southwest Alaska (e.g. Aniak)\n# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,\n# and another part (e.g. Akiak) made the same switch five weeks later.\n#\n# From David Flater (2004-11-09):\n# In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska\n# Historic Preservation Commission, provided this information, which\n# suggests that Unalaska deviated from statutory time from early 1967\n# possibly until 1983:\n#\n#  Minutes of the Unalaska City Council Meeting, January 10, 1967:\n#  \"Except for St. Paul and Akutan, Unalaska is the only important\n#  location not on Alaska Standard Time.  The following resolution was\n#  made by William Robinson and seconded by Henry Swanson:  Be it\n#  resolved that the City of Unalaska hereby goes to Alaska Standard\n#  Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,\n#  January 14, Alaska Standard Time.)  This resolution was passed with\n#  three votes for and one against.\"\n\n# Hawaii\n\n# From Arthur David Olson (2010-12-09):\n# \"Hawaiian Time\" by Robert C. Schmitt and Doak C. Cox appears on pages 207-225\n# of volume 26 of The Hawaiian Journal of History (1992). As of 2010-12-09,\n# the article is available at\n# <a href=\"http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf\">\n# http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf\n# </a>\n# and indicates that standard time was adopted effective noon, January\n# 13, 1896 (page 218), that in \"1933, the Legislature decreed daylight\n# saving for the period between the last Sunday of each April and the\n# last Sunday of each September, but less than a month later repealed the\n# act,\" (page 220), that year-round daylight saving time was in effect\n# from 1942-02-09 to 1945-09-30 (page 221, with no time of day given for\n# when clocks changed) and that clocks were changed by 30 minutes\n# effective the second Sunday of June, 1947 (page 219, with no time of\n# day given for when clocks changed). A footnote for the 1933 changes\n# cites Session Laws of Hawaii 1933, \"Act. 90 (approved 26 Apr. 1933)\n# and Act 163 (approved 21 May 1933).\"\n\n# From Arthur David Olson (2011-01-19):\n# The following is from \"Laws of the Territory of Hawaii Passed by the\n# Seventeenth Legislature: Regular Session 1933,\" available (as of\n# 2011-01-19) at American University's Pence Law Library. Page 85: \"Act\n# 90...At 2 o'clock ante meridian of the last Sunday in April of each\n# year, the standard time of this Territory shall be advanced one\n# hour...This Act shall take effect upon its approval. Approved this 26th\n# day of April, A. D. 1933. LAWRENCE M JUDD, Governor of the Territory of\n# Hawaii.\" Page 172:  \"Act 163...Act 90 of the Session Laws of 1933 is\n# hereby repealed...This Act shall take effect upon its approval, upon\n# which date the standard time of this Territory shall be restored to\n# that existing immediately prior to the taking effect of said Act 90.\n# Approved this 21st day of May, A. D. 1933. LAWRENCE M. JUDD, Governor\n# of the Territory of Hawaii.\"\n#\n# Note that 1933-05-21 was a Sunday.\n# We're left to guess the time of day when Act 163 was approved; guess noon.\n\nZone Pacific/Honolulu\t-10:31:26 -\tLMT\t1896 Jan 13 12:00 #Schmitt&Cox\n\t\t\t-10:30\t-\tHST\t1933 Apr 30 2:00 #Laws 1933\n\t\t\t-10:30\t1:00\tHDT\t1933 May 21 12:00 #Laws 1933+12\n\t\t\t-10:30\t-\tHST\t1942 Feb 09 2:00 #Schmitt&Cox+2\n\t\t\t-10:30\t1:00\tHDT\t1945 Sep 30 2:00 #Schmitt&Cox+2\n\t\t\t-10:30\t-\tHST\t1947 Jun  8 2:00 #Schmitt&Cox+2\n\t\t\t-10:00\t-\tHST\n\n# Now we turn to US areas that have diverged from the consensus since 1970.\n\n# Arizona mostly uses MST.\n\n# From Paul Eggert (2002-10-20):\n#\n# The information in the rest of this paragraph is derived from the\n# <a href=\"http://www.dlapr.lib.az.us/links/daylight.htm\">\n# Daylight Saving Time web page (2002-01-23)</a> maintained by the\n# Arizona State Library, Archives and Public Records.\n# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard\n# time, but by federal law railroads, airlines, bus lines, military\n# personnel, and some engaged in interstate commerce continued to\n# observe war (i.e., daylight saving) time.  The 1944-03-17 Phoenix\n# Gazette says that was the date the law changed, and that 04-01 was\n# the date the state's clocks would change.  In 1945 the State of\n# Arizona used standard time all year, again with exceptions only as\n# mandated by federal law.  Arizona observed DST in 1967, but Arizona\n# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.\n#\n# Shanks says the 1944 experiment came to an end on 1944-03-17.\n# Go with the Arizona State Library instead.\n\nZone America/Phoenix\t-7:28:18 -\tLMT\t1883 Nov 18 11:31:42\n\t\t\t-7:00\tUS\tM%sT\t1944 Jan  1 00:01\n\t\t\t-7:00\t-\tMST\t1944 Apr  1 00:01\n\t\t\t-7:00\tUS\tM%sT\t1944 Oct  1 00:01\n\t\t\t-7:00\t-\tMST\t1967\n\t\t\t-7:00\tUS\tM%sT\t1968 Mar 21\n\t\t\t-7:00\t-\tMST\n# From Arthur David Olson (1988-02-13):\n# A writer from the Inter Tribal Council of Arizona, Inc.,\n# notes in private correspondence dated 1987-12-28 that \"Presently, only the\n# Navajo Nation participates in the Daylight Saving Time policy, due to its\n# large size and location in three states.\"  (The \"only\" means that other\n# tribal nations don't use DST.)\n\nLink America/Denver America/Shiprock\n\n# Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine,\n# Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,\n# Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome,\n# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,\n# Teton, Twin Falls, Valley, Washington counties, and the southern\n# quarter of Idaho county) and eastern Oregon (most of Malheur County)\n# switched four weeks late in 1974.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Boise\t-7:44:49 -\tLMT\t1883 Nov 18 12:15:11\n\t\t\t-8:00\tUS\tP%sT\t1923 May 13 2:00\n\t\t\t-7:00\tUS\tM%sT\t1974\n\t\t\t-7:00\t-\tMST\t1974 Feb  3 2:00\n\t\t\t-7:00\tUS\tM%sT\n\n# Indiana\n#\n# For a map of Indiana's time zone regions, see:\n# <a href=\"http://www.mccsc.edu/time.html\">\n# What time is it in Indiana?\n# </a> (2006-03-01)\n#\n# From Paul Eggert (2007-08-17):\n# Since 1970, most of Indiana has been like America/Indiana/Indianapolis,\n# with the following exceptions:\n#\n# - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,\n#   Vandenburgh, and Warrick counties have been like America/Chicago.\n#\n# - Dearborn and Ohio counties have been like America/New_York.\n#\n# - Clark, Floyd, and Harrison counties have been like\n#   America/Kentucky/Louisville.\n#\n# - Crawford, Daviess, Dubois, Knox, Martin, Perry, Pike, Pulaski, Starke,\n#   and Switzerland counties have their own time zone histories as noted below.\n#\n# Shanks partitioned Indiana into 345 regions, each with its own time history,\n# and wrote ``Even newspaper reports present contradictory information.''\n# Those Hoosiers!  Such a flighty and changeable people!\n# Fortunately, most of the complexity occurred before our cutoff date of 1970.\n#\n# Other than Indianapolis, the Indiana place names are so nondescript\n# that they would be ambiguous if we left them at the `America' level.\n# So we reluctantly put them all in a subdirectory `America/Indiana'.\n\n# From Paul Eggert (2005-08-16):\n# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.\n\n# From Nathan Stratton Treadway (2006-03-30):\n# http://www.dot.gov/affairs/dot0406.htm [3705 B]\n# From Deborah Goldsmith (2006-01-18):\n# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]\n# From Paul Eggert (2006-01-20):\n# It says \"DOT is relocating the time zone boundary in Indiana to move Starke,\n# Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the\n# Eastern Time Zone to the Central Time Zone.... The effective date of\n# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the\n# changeover date from standard time to Daylight Saving Time.\"\n# Strictly speaking, this means the affected counties will change their\n# clocks twice that night, but this obviously is in error.  The intent\n# is that 01:59:59 EST be followed by 02:00:00 CDT.\n\n# From Gwillim Law (2007-02-10):\n# The Associated Press has been reporting that Pulaski County, Indiana is\n# going to switch from Central to Eastern Time on March 11, 2007....\n# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule Indianapolis 1941\tonly\t-\tJun\t22\t2:00\t1:00\tD\nRule Indianapolis 1941\t1954\t-\tSep\tlastSun\t2:00\t0\tS\nRule Indianapolis 1946\t1954\t-\tApr\tlastSun\t2:00\t1:00\tD\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22\n\t\t\t-6:00\tUS\tC%sT\t1920\n\t\t\t-6:00 Indianapolis C%sT\t1942\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00 Indianapolis C%sT\t1955 Apr 24 2:00\n\t\t\t-5:00\t-\tEST\t1957 Sep 29 2:00\n\t\t\t-6:00\t-\tCST\t1958 Apr 27 2:00\n\t\t\t-5:00\t-\tEST\t1969\n\t\t\t-5:00\tUS\tE%sT\t1971\n\t\t\t-5:00\t-\tEST\t2006\n\t\t\t-5:00\tUS\tE%sT\n#\n# Eastern Crawford County, Indiana, left its clocks alone in 1974,\n# as well as from 1976 through 2005.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tMarengo\t1951\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tMarengo\t1951\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tMarengo\t1954\t1960\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tMarengo\t1954\t1960\t-\tSep\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Marengo -5:45:23 -\tLMT\t1883 Nov 18 12:14:37\n\t\t\t-6:00\tUS\tC%sT\t1951\n\t\t\t-6:00\tMarengo\tC%sT\t1961 Apr 30 2:00\n\t\t\t-5:00\t-\tEST\t1969\n\t\t\t-5:00\tUS\tE%sT\t1974 Jan  6 2:00\n\t\t\t-6:00\t1:00\tCDT\t1974 Oct 27 2:00\n\t\t\t-5:00\tUS\tE%sT\t1976\n\t\t\t-5:00\t-\tEST\t2006\n\t\t\t-5:00\tUS\tE%sT\n#\n# Daviess, Dubois, Knox, and Martin Counties, Indiana,\n# switched from eastern to central time in April 2006, then switched back\n# in November 2007.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule Vincennes\t1946\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Vincennes\t1946\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule Vincennes\t1953\t1954\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Vincennes\t1953\t1959\t-\tSep\tlastSun\t2:00\t0\tS\nRule Vincennes\t1955\tonly\t-\tMay\t 1\t0:00\t1:00\tD\nRule Vincennes\t1956\t1963\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Vincennes\t1960\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule Vincennes\t1961\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule Vincennes\t1962\t1963\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Vincennes -5:50:07 - LMT\t1883 Nov 18 12:09:53\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00 Vincennes\tC%sT\t1964 Apr 26 2:00\n\t\t\t-5:00\t-\tEST\t1969\n\t\t\t-5:00\tUS\tE%sT\t1971\n\t\t\t-5:00\t-\tEST\t2006 Apr  2 2:00\n\t\t\t-6:00\tUS\tC%sT\t2007 Nov  4 2:00\n\t\t\t-5:00\tUS\tE%sT\n#\n# Perry County, Indiana, switched from eastern to central time in April 2006.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule Perry\t1946\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Perry\t1946\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule Perry\t1953\t1954\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Perry\t1953\t1959\t-\tSep\tlastSun\t2:00\t0\tS\nRule Perry\t1955\tonly\t-\tMay\t 1\t0:00\t1:00\tD\nRule Perry\t1956\t1963\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Perry\t1960\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule Perry\t1961\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule Perry\t1962\t1963\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Tell_City -5:47:03 - LMT\t1883 Nov 18 12:12:57\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00 Perry\tC%sT\t1964 Apr 26 2:00\n\t\t\t-5:00\t-\tEST\t1969\n\t\t\t-5:00\tUS\tE%sT\t1971\n\t\t\t-5:00\t-\tEST\t2006 Apr  2 2:00\n\t\t\t-6:00\tUS\tC%sT\n#\n# Pike County, Indiana moved from central to eastern time in 1977,\n# then switched back in 2006, then switched back again in 2007.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tPike\t1955\tonly\t-\tMay\t 1\t0:00\t1:00\tD\nRule\tPike\t1955\t1960\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tPike\t1956\t1964\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tPike\t1961\t1964\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Petersburg -5:49:07 - LMT\t1883 Nov 18 12:10:53\n\t\t\t-6:00\tUS\tC%sT\t1955\n\t\t\t-6:00\tPike\tC%sT\t1965 Apr 25 2:00\n\t\t\t-5:00\t-\tEST\t1966 Oct 30 2:00\n\t\t\t-6:00\tUS\tC%sT\t1977 Oct 30 2:00\n\t\t\t-5:00\t-\tEST\t2006 Apr  2 2:00\n\t\t\t-6:00\tUS\tC%sT\t2007 Nov  4 2:00\n\t\t\t-5:00\tUS\tE%sT\n#\n# Starke County, Indiana moved from central to eastern time in 1991,\n# then switched back in 2006.\n# From Arthur David Olson (1991-10-28):\n# An article on page A3 of the Sunday, 1991-10-27 Washington Post\n# notes that Starke County switched from Central time to Eastern time as of\n# 1991-10-27.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tStarke\t1947\t1961\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tStarke\t1947\t1954\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tStarke\t1955\t1956\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tStarke\t1957\t1958\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tStarke\t1959\t1961\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Knox -5:46:30 -\tLMT\t1883 Nov 18 12:13:30\n\t\t\t-6:00\tUS\tC%sT\t1947\n\t\t\t-6:00\tStarke\tC%sT\t1962 Apr 29 2:00\n\t\t\t-5:00\t-\tEST\t1963 Oct 27 2:00\n\t\t\t-6:00\tUS\tC%sT\t1991 Oct 27 2:00\n\t\t\t-5:00\t-\tEST\t2006 Apr  2 2:00\n\t\t\t-6:00\tUS\tC%sT\n#\n# Pulaski County, Indiana, switched from eastern to central time in\n# April 2006 and then switched back in March 2007.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tPulaski\t1946\t1960\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tPulaski\t1946\t1954\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tPulaski\t1955\t1956\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tPulaski\t1957\t1960\t-\tSep\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Winamac -5:46:25 - LMT\t1883 Nov 18 12:13:35\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00\tPulaski\tC%sT\t1961 Apr 30 2:00\n\t\t\t-5:00\t-\tEST\t1969\n\t\t\t-5:00\tUS\tE%sT\t1971\n\t\t\t-5:00\t-\tEST\t2006 Apr  2 2:00\n\t\t\t-6:00\tUS\tC%sT\t2007 Mar 11 2:00\n\t\t\t-5:00\tUS\tE%sT\n#\n# Switzerland County, Indiana, did not observe DST from 1973 through 2005.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Indiana/Vevay -5:40:16 -\tLMT\t1883 Nov 18 12:19:44\n\t\t\t-6:00\tUS\tC%sT\t1954 Apr 25 2:00\n\t\t\t-5:00\t-\tEST\t1969\n\t\t\t-5:00\tUS\tE%sT\t1973\n\t\t\t-5:00\t-\tEST\t2006\n\t\t\t-5:00\tUS\tE%sT\n\n# Part of Kentucky left its clocks alone in 1974.\n# This also includes Clark, Floyd, and Harrison counties in Indiana.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule Louisville\t1921\tonly\t-\tMay\t1\t2:00\t1:00\tD\nRule Louisville\t1921\tonly\t-\tSep\t1\t2:00\t0\tS\nRule Louisville\t1941\t1961\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Louisville\t1941\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule Louisville\t1946\tonly\t-\tJun\t2\t2:00\t0\tS\nRule Louisville\t1950\t1955\t-\tSep\tlastSun\t2:00\t0\tS\nRule Louisville\t1956\t1960\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Kentucky/Louisville -5:43:02 -\tLMT\t1883 Nov 18 12:16:58\n\t\t\t-6:00\tUS\tC%sT\t1921\n\t\t\t-6:00 Louisville C%sT\t1942\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00 Louisville C%sT\t1961 Jul 23 2:00\n\t\t\t-5:00\t-\tEST\t1968\n\t\t\t-5:00\tUS\tE%sT\t1974 Jan  6 2:00\n\t\t\t-6:00\t1:00\tCDT\t1974 Oct 27 2:00\n\t\t\t-5:00\tUS\tE%sT\n#\n# Wayne County, Kentucky\n#\n# From\n# <a href=\"http://www.lake-cumberland.com/life/archive/news990129time.shtml\">\n# Lake Cumberland LIFE\n# </a> (1999-01-29) via WKYM-101.7:\n# Clinton County has joined Wayne County in asking the DoT to change from\n# the Central to the Eastern time zone....  The Wayne County government made\n# the same request in December.  And while Russell County officials have not\n# taken action, the majority of respondents to a poll conducted there in\n# August indicated they would like to change to \"fast time\" also.\n# The three Lake Cumberland counties are the farthest east of any U.S.\n# location in the Central time zone.\n#\n# From Rich Wales (2000-08-29):\n# After prolonged debate, and despite continuing deep differences of opinion,\n# Wayne County (central Kentucky) is switching from Central (-0600) to Eastern\n# (-0500) time.  They won't \"fall back\" this year.  See Sara Shipley,\n# The difference an hour makes, Nando Times (2000-08-29 15:33 -0400).\n#\n# From Paul Eggert (2001-07-16):\n# The final rule was published in the\n# <a href=\"http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22\">\n# Federal Register 65, 160 (2000-08-17), page 50154-50158.\n# </a>\n#\nZone America/Kentucky/Monticello -5:39:24 - LMT\t1883 Nov 18 12:20:36\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00\t-\tCST\t1968\n\t\t\t-6:00\tUS\tC%sT\t2000 Oct 29  2:00\n\t\t\t-5:00\tUS\tE%sT\n\n\n# From Rives McDow (2000-08-30):\n# Here ... are all the changes in the US since 1985.\n# Kearny County, KS (put all of county on central;\n#\tpreviously split between MST and CST) ... 1990-10\n# Starke County, IN (from CST to EST) ... 1991-10\n# Oliver County, ND (from MST to CST) ... 1992-10\n# West Wendover, NV (from PST TO MST) ... 1999-10\n# Wayne County, KY (from CST to EST) ... 2000-10\n#\n# From Paul Eggert (2001-07-17):\n# We don't know where the line used to be within Kearny County, KS,\n# so omit that change for now.\n# See America/Indiana/Knox for the Starke County, IN change.\n# See America/North_Dakota/Center for the Oliver County, ND change.\n# West Wendover, NV officially switched from Pacific to mountain time on\n# 1999-10-31.  See the\n# <a href=\"http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=1999_register&docid=fr21oc99-15\">\n# Federal Register 64, 203 (1999-10-21), page 56705-56707.\n# </a>\n# However, the Federal Register says that West Wendover already operated\n# on mountain time, and the rule merely made this official;\n# hence a separate tz entry is not needed.\n\n# Michigan\n#\n# From Bob Devine (1988-01-28):\n# Michigan didn't observe DST from 1968 to 1973.\n#\n# From Paul Eggert (1999-03-31):\n# Shanks writes that Michigan started using standard time on 1885-09-18,\n# but Howse writes (pp 124-125, referring to Popular Astronomy, 1901-01)\n# that Detroit kept\n#\n#\tlocal time until 1900 when the City Council decreed that clocks should\n#\tbe put back twenty-eight minutes to Central Standard Time.  Half the\n#\tcity obeyed, half refused.  After considerable debate, the decision\n#\twas rescinded and the city reverted to Sun time.  A derisive offer to\n#\terect a sundial in front of the city hall was referred to the\n#\tCommittee on Sewers.  Then, in 1905, Central time was adopted\n#\tby city vote.\n#\n# This story is too entertaining to be false, so go with Howse over Shanks.\n#\n# From Paul Eggert (2001-03-06):\n# Garland (1927) writes ``Cleveland and Detroit advanced their clocks\n# one hour in 1914.''  This change is not in Shanks.  We have no more\n# info, so omit this for now.\n#\n# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule\tDetroit\t1948\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tDetroit\t1948\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tDetroit\t1967\tonly\t-\tJun\t14\t2:00\t1:00\tD\nRule\tDetroit\t1967\tonly\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Detroit\t-5:32:11 -\tLMT\t1905\n\t\t\t-6:00\t-\tCST\t1915 May 15 2:00\n\t\t\t-5:00\t-\tEST\t1942\n\t\t\t-5:00\tUS\tE%sT\t1946\n\t\t\t-5:00\tDetroit\tE%sT\t1973\n\t\t\t-5:00\tUS\tE%sT\t1975\n\t\t\t-5:00\t-\tEST\t1975 Apr 27 2:00\n\t\t\t-5:00\tUS\tE%sT\n#\n# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,\n# switched from EST to CST/CDT in 1973.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER\nRule Menominee\t1946\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Menominee\t1946\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule Menominee\t1966\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule Menominee\t1966\tonly\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Menominee\t-5:50:27 -\tLMT\t1885 Sep 18 12:00\n\t\t\t-6:00\tUS\tC%sT\t1946\n\t\t\t-6:00 Menominee\tC%sT\t1969 Apr 27 2:00\n\t\t\t-5:00\t-\tEST\t1973 Apr 29 2:00\n\t\t\t-6:00\tUS\tC%sT\n\n# Navassa\n# administered by the US Fish and Wildlife Service\n# claimed by US under the provisions of the 1856 Guano Islands Act\n# also claimed by Haiti\n# occupied 1857/1900 by the Navassa Phosphate Co\n# US lighthouse 1917/1996-09\n# currently uninhabited\n# see Mark Fineman, ``An Isle Rich in Guano and Discord'',\n# _Los Angeles Times_ (1998-11-10), A1, A10; it cites\n# Jimmy Skaggs, _The Great Guano Rush_ (1994).\n\n################################################################################\n\n\n# From Paul Eggert (2006-03-22):\n# A good source for time zone historical data outside the U.S. is\n# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),\n# San Diego: ACS Publications, Inc. (2003).\n#\n# Gwillim Law writes that a good source\n# for recent time zone data is the International Air Transport\n# Association's Standard Schedules Information Manual (IATA SSIM),\n# published semiannually.  Law sent in several helpful summaries\n# of the IATA's data after 1990.\n#\n# Except where otherwise noted, Shanks & Pottenger is the source for\n# entries through 1990, and IATA SSIM is the source for entries afterwards.\n#\n# Other sources occasionally used include:\n#\n#\tEdward W. Whitman, World Time Differences,\n#\tWhitman Publishing Co, 2 Niagara Av, Ealing, London (undated),\n#\twhich I found in the UCLA library.\n#\n#\t<a href=\"http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf\">\n#\tWilliam Willett, The Waste of Daylight, 19th edition\n#\t</a> (1914-03)\n#\n# See the `europe' file for Greenland.\n\n# Canada\n\n# From Alain LaBont<e'> (1994-11-14):\n# I post here the time zone abbreviations standardized in Canada\n# for both English and French in the CAN/CSA-Z234.4-89 standard....\n#\n#\tUTC\tStandard time\tDaylight savings time\n#\toffset\tFrench\tEnglish\tFrench\tEnglish\n#\t-2:30\t-\t-\tHAT\tNDT\n#\t-3\t-\t-\tHAA\tADT\n#\t-3:30\tHNT\tNST\t-\t-\n#\t-4\tHNA\tAST\tHAE\tEDT\n#\t-5\tHNE\tEST\tHAC\tCDT\n#\t-6\tHNC\tCST\tHAR\tMDT\n#\t-7\tHNR\tMST\tHAP\tPDT\n#\t-8\tHNP\tPST\tHAY\tYDT\n#\t-9\tHNY\tYST\t-\t-\n#\n#\tHN: Heure Normale\tST: Standard Time\n#\tHA: Heure Avanc<e'>e\tDT: Daylight saving Time\n#\n#\tA: de l'Atlantique\tAtlantic\n#\tC: du Centre\t\tCentral\n#\tE: de l'Est\t\tEastern\n#\tM:\t\t\tMountain\n#\tN:\t\t\tNewfoundland\n#\tP: du Pacifique\t\tPacific\n#\tR: des Rocheuses\n#\tT: de Terre-Neuve\n#\tY: du Yukon\t\tYukon\n#\n# From Paul Eggert (1994-11-22):\n# Alas, this sort of thing must be handled by localization software.\n\n# Unless otherwise specified, the data for Canada are all from Shanks\n# & Pottenger.\n\n# From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,\n# 2007-03-01):\n# The British Columbia government announced yesterday that it will\n# adjust daylight savings next year to align with changes in the\n# U.S. and the rest of Canada....\n# http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm\n# ...\n# Nova Scotia\n# Daylight saving time will be extended by four weeks starting in 2007....\n# http://www.gov.ns.ca/just/regulations/rg2/2006/ma1206.pdf\n#\n# [For New Brunswick] the new legislation dictates that the time change is to\n# be done at 02:00 instead of 00:01.\n# http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf\n# ...\n# Manitoba has traditionally changed the clock every fall at 03:00.\n# As of 2006, the transition is to take place one hour earlier at 02:00.\n# http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php\n# ...\n# [Alberta, Ontario, Quebec] will follow US rules.\n# http://www.qp.gov.ab.ca/documents/spring/CH03_06.CFM\n# http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm\n# http://www2.publicationsduquebec.gouv.qc.ca/dynamicSearch/telecharge.php?type=5&file=2006C39A.PDF\n# ...\n# P.E.I. will follow US rules....\n# http://www.assembly.pe.ca/bills/pdf_chapter/62/3/chapter-41.pdf\n# ...\n# Province of Newfoundland and Labrador....\n# http://www.hoa.gov.nl.ca/hoa/bills/Bill0634.htm\n# ...\n# Yukon\n# http://www.gov.yk.ca/legislation/regs/oic2006_127.pdf\n# ...\n# N.W.T. will follow US rules.  Whoever maintains the government web site\n# does not seem to believe in bookmarks.  To see the news release, click the\n# following link and search for \"Daylight Savings Time Change\".  Press the\n# \"Daylight Savings Time Change\" link; it will fire off a popup using\n# JavaScript.\n# http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive\n# ...\n# Nunavut\n# An amendment to the Interpretation Act was registered on February 19/2007....\n# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf\n\n# From Paul Eggert (2006-04-25):\n# H. David Matthews and Mary Vincent's map\n# <a href=\"http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp\">\n# \"It's about TIME\", _Canadian Geographic_ (September-October 1998)\n# </a> contains detailed boundaries for regions observing nonstandard\n# time and daylight saving time arrangements in Canada circa 1998.\n#\n# INMS, the Institute for National Measurement Standards in Ottawa, has <a\n# href=\"http://inms-ienm.nrc-cnrc.gc.ca/en/time_services/daylight_saving_e.php\">\n# information about standard and daylight saving time zones in Canada.\n# </a> (updated periodically).\n# Its unofficial information is often taken from Matthews and Vincent.\n\n# From Paul Eggert (2006-06-27):\n# For now, assume all of DST-observing Canada will fall into line with the\n# new US DST rules,\n\n# From Chris Walton (2011-12-01)\n# In the first of Tammy Hardwick's articles\n# <a href=\"http://www.ilovecreston.com/?p=articles&t=spec&ar=260\">\n# http://www.ilovecreston.com/?p=articles&t=spec&ar=260\n# </a>\n# she quotes the Friday November 1/1918 edition of the Creston Review.\n# The quote includes these two statements:\n# 'Sunday the CPR went back to the old system of time...'\n# '... The daylight saving scheme was dropped all over Canada at the same time,'\n# These statements refer to a transition from daylight time to standard time\n# that occurred nationally on Sunday October 27/1918.  This transition was\n# also documented in the Saturday October 26/1918 edition of the Toronto Star.\n\n# In light of that evidence, we alter the date from the earlier believed\n# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day\n# than Thursday) in all Canadian rulesets.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tCanada\t1918\tonly\t-\tApr\t14\t2:00\t1:00\tD\nRule\tCanada\t1918\tonly\t-\tOct\t27\t2:00\t0\tS\nRule\tCanada\t1942\tonly\t-\tFeb\t 9\t2:00\t1:00\tW # War\nRule\tCanada\t1945\tonly\t-\tAug\t14\t23:00u\t1:00\tP # Peace\nRule\tCanada\t1945\tonly\t-\tSep\t30\t2:00\t0\tS\nRule\tCanada\t1974\t1986\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tCanada\t1974\t2006\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tCanada\t1987\t2006\t-\tApr\tSun>=1\t2:00\t1:00\tD\nRule\tCanada\t2007\tmax\t-\tMar\tSun>=8\t2:00\t1:00\tD\nRule\tCanada\t2007\tmax\t-\tNov\tSun>=1\t2:00\t0\tS\n\n\n# Newfoundland and Labrador\n\n# From Paul Eggert (2000-10-02):\n# Matthews and Vincent (1998) write that Labrador should use NST/NDT,\n# but the only part of Labrador that follows the rules is the\n# southeast corner, including Port Hope Simpson and Mary's Harbour,\n# but excluding, say, Black Tickle.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tStJohns\t1917\tonly\t-\tApr\t 8\t2:00\t1:00\tD\nRule\tStJohns\t1917\tonly\t-\tSep\t17\t2:00\t0\tS\n# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.\nRule\tStJohns\t1919\tonly\t-\tMay\t 5\t23:00\t1:00\tD\nRule\tStJohns\t1919\tonly\t-\tAug\t12\t23:00\t0\tS\n# For 1931-1935 Whitman gives Apr same date; go with Shanks & Pottenger.\nRule\tStJohns\t1920\t1935\t-\tMay\tSun>=1\t23:00\t1:00\tD\nRule\tStJohns\t1920\t1935\t-\tOct\tlastSun\t23:00\t0\tS\n# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks &\n# Pottenger.\nRule\tStJohns\t1936\t1941\t-\tMay\tMon>=9\t0:00\t1:00\tD\nRule\tStJohns\t1936\t1941\t-\tOct\tMon>=2\t0:00\t0\tS\n# Whitman gives the following transitions:\n# 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07\n# but go with Shanks & Pottenger and assume they used Canadian rules.\n# For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives\n# Apr 30 - Sep 24; go with Shanks & Pottenger.\nRule\tStJohns\t1946\t1950\t-\tMay\tSun>=8\t2:00\t1:00\tD\nRule\tStJohns\t1946\t1950\t-\tOct\tSun>=2\t2:00\t0\tS\nRule\tStJohns\t1951\t1986\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tStJohns\t1951\t1959\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tStJohns\t1960\t1986\t-\tOct\tlastSun\t2:00\t0\tS\n# From Paul Eggert (2000-10-02):\n# INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches\n# at 00:01 local time.  For now, assume it started in 1987.\n\n# From Michael Pelley (2011-09-12):\n# We received today, Monday, September 12, 2011, notification that the\n# changes to the Newfoundland Standard Time Act have been proclaimed.\n# The change in the Act stipulates that the change from Daylight Savings\n# Time to Standard Time and from Standard Time to Daylight Savings Time\n# now occurs at 2:00AM.\n# ...\n# <a href=\"http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm\">\n# http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm\n# </a>\n# ...\n# MICHAEL PELLEY  |  Manager of Enterprise Architecture - Solution Delivery\n# Office of the Chief Information Officer\n# Executive Council\n# Government of Newfoundland & Labrador\n\nRule\tStJohns\t1987\tonly\t-\tApr\tSun>=1\t0:01\t1:00\tD\nRule\tStJohns\t1987\t2006\t-\tOct\tlastSun\t0:01\t0\tS\nRule\tStJohns\t1988\tonly\t-\tApr\tSun>=1\t0:01\t2:00\tDD\nRule\tStJohns\t1989\t2006\t-\tApr\tSun>=1\t0:01\t1:00\tD\nRule\tStJohns\t2007\t2011\t-\tMar\tSun>=8\t0:01\t1:00\tD\nRule\tStJohns\t2007\t2010\t-\tNov\tSun>=1\t0:01\t0\tS\n#\n# St John's has an apostrophe, but Posix file names can't have apostrophes.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/St_Johns\t-3:30:52 -\tLMT\t1884\n\t\t\t-3:30:52 StJohns N%sT\t1918\n\t\t\t-3:30:52 Canada\tN%sT\t1919\n\t\t\t-3:30:52 StJohns N%sT\t1935 Mar 30\n\t\t\t-3:30\tStJohns\tN%sT\t1942 May 11\n\t\t\t-3:30\tCanada\tN%sT\t1946\n\t\t\t-3:30\tStJohns\tN%sT\t2011 Nov\n\t\t\t-3:30\tCanada\tN%sT\n\n# most of east Labrador\n\n# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Goose_Bay\t-4:01:40 -\tLMT\t1884 # Happy Valley-Goose Bay\n\t\t\t-3:30:52 -\tNST\t1918\n\t\t\t-3:30:52 Canada N%sT\t1919\n\t\t\t-3:30:52 -\tNST\t1935 Mar 30\n\t\t\t-3:30\t-\tNST\t1936\n\t\t\t-3:30\tStJohns\tN%sT\t1942 May 11\n\t\t\t-3:30\tCanada\tN%sT\t1946\n\t\t\t-3:30\tStJohns\tN%sT\t1966 Mar 15 2:00\n\t\t\t-4:00\tStJohns\tA%sT\t2011 Nov\n\t\t\t-4:00\tCanada\tA%sT\n\n\n# west Labrador, Nova Scotia, Prince Edward I\n\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger write that since 1970 most of this region has been like\n# Halifax.  Many locales did not observe peacetime DST until 1972;\n# Glace Bay, NS is the largest that we know of.\n# Shanks & Pottenger also write that Liverpool, NS was the only town\n# in Canada to observe DST in 1971 but not 1970; for now we'll assume\n# this is a typo.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tHalifax\t1916\tonly\t-\tApr\t 1\t0:00\t1:00\tD\nRule\tHalifax\t1916\tonly\t-\tOct\t 1\t0:00\t0\tS\nRule\tHalifax\t1920\tonly\t-\tMay\t 9\t0:00\t1:00\tD\nRule\tHalifax\t1920\tonly\t-\tAug\t29\t0:00\t0\tS\nRule\tHalifax\t1921\tonly\t-\tMay\t 6\t0:00\t1:00\tD\nRule\tHalifax\t1921\t1922\t-\tSep\t 5\t0:00\t0\tS\nRule\tHalifax\t1922\tonly\t-\tApr\t30\t0:00\t1:00\tD\nRule\tHalifax\t1923\t1925\t-\tMay\tSun>=1\t0:00\t1:00\tD\nRule\tHalifax\t1923\tonly\t-\tSep\t 4\t0:00\t0\tS\nRule\tHalifax\t1924\tonly\t-\tSep\t15\t0:00\t0\tS\nRule\tHalifax\t1925\tonly\t-\tSep\t28\t0:00\t0\tS\nRule\tHalifax\t1926\tonly\t-\tMay\t16\t0:00\t1:00\tD\nRule\tHalifax\t1926\tonly\t-\tSep\t13\t0:00\t0\tS\nRule\tHalifax\t1927\tonly\t-\tMay\t 1\t0:00\t1:00\tD\nRule\tHalifax\t1927\tonly\t-\tSep\t26\t0:00\t0\tS\nRule\tHalifax\t1928\t1931\t-\tMay\tSun>=8\t0:00\t1:00\tD\nRule\tHalifax\t1928\tonly\t-\tSep\t 9\t0:00\t0\tS\nRule\tHalifax\t1929\tonly\t-\tSep\t 3\t0:00\t0\tS\nRule\tHalifax\t1930\tonly\t-\tSep\t15\t0:00\t0\tS\nRule\tHalifax\t1931\t1932\t-\tSep\tMon>=24\t0:00\t0\tS\nRule\tHalifax\t1932\tonly\t-\tMay\t 1\t0:00\t1:00\tD\nRule\tHalifax\t1933\tonly\t-\tApr\t30\t0:00\t1:00\tD\nRule\tHalifax\t1933\tonly\t-\tOct\t 2\t0:00\t0\tS\nRule\tHalifax\t1934\tonly\t-\tMay\t20\t0:00\t1:00\tD\nRule\tHalifax\t1934\tonly\t-\tSep\t16\t0:00\t0\tS\nRule\tHalifax\t1935\tonly\t-\tJun\t 2\t0:00\t1:00\tD\nRule\tHalifax\t1935\tonly\t-\tSep\t30\t0:00\t0\tS\nRule\tHalifax\t1936\tonly\t-\tJun\t 1\t0:00\t1:00\tD\nRule\tHalifax\t1936\tonly\t-\tSep\t14\t0:00\t0\tS\nRule\tHalifax\t1937\t1938\t-\tMay\tSun>=1\t0:00\t1:00\tD\nRule\tHalifax\t1937\t1941\t-\tSep\tMon>=24\t0:00\t0\tS\nRule\tHalifax\t1939\tonly\t-\tMay\t28\t0:00\t1:00\tD\nRule\tHalifax\t1940\t1941\t-\tMay\tSun>=1\t0:00\t1:00\tD\nRule\tHalifax\t1946\t1949\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tHalifax\t1946\t1949\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tHalifax\t1951\t1954\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tHalifax\t1951\t1954\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tHalifax\t1956\t1959\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tHalifax\t1956\t1959\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tHalifax\t1962\t1973\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tHalifax\t1962\t1973\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Halifax\t-4:14:24 -\tLMT\t1902 Jun 15\n\t\t\t-4:00\tHalifax\tA%sT\t1918\n\t\t\t-4:00\tCanada\tA%sT\t1919\n\t\t\t-4:00\tHalifax\tA%sT\t1942 Feb  9 2:00s\n\t\t\t-4:00\tCanada\tA%sT\t1946\n\t\t\t-4:00\tHalifax\tA%sT\t1974\n\t\t\t-4:00\tCanada\tA%sT\nZone America/Glace_Bay\t-3:59:48 -\tLMT\t1902 Jun 15\n\t\t\t-4:00\tCanada\tA%sT\t1953\n\t\t\t-4:00\tHalifax\tA%sT\t1954\n\t\t\t-4:00\t-\tAST\t1972\n\t\t\t-4:00\tHalifax\tA%sT\t1974\n\t\t\t-4:00\tCanada\tA%sT\n\n# New Brunswick\n\n# From Paul Eggert (2007-01-31):\n# The Time Definition Act <http://www.gnb.ca/0062/PDF-acts/t-06.pdf>\n# says they changed at 00:01 through 2006, and\n# <http://www.canlii.org/nb/laws/sta/t-6/20030127/whole.html> makes it\n# clear that this was the case since at least 1993.\n# For now, assume it started in 1993.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tMoncton\t1933\t1935\t-\tJun\tSun>=8\t1:00\t1:00\tD\nRule\tMoncton\t1933\t1935\t-\tSep\tSun>=8\t1:00\t0\tS\nRule\tMoncton\t1936\t1938\t-\tJun\tSun>=1\t1:00\t1:00\tD\nRule\tMoncton\t1936\t1938\t-\tSep\tSun>=1\t1:00\t0\tS\nRule\tMoncton\t1939\tonly\t-\tMay\t27\t1:00\t1:00\tD\nRule\tMoncton\t1939\t1941\t-\tSep\tSat>=21\t1:00\t0\tS\nRule\tMoncton\t1940\tonly\t-\tMay\t19\t1:00\t1:00\tD\nRule\tMoncton\t1941\tonly\t-\tMay\t 4\t1:00\t1:00\tD\nRule\tMoncton\t1946\t1972\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tMoncton\t1946\t1956\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tMoncton\t1957\t1972\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tMoncton\t1993\t2006\t-\tApr\tSun>=1\t0:01\t1:00\tD\nRule\tMoncton\t1993\t2006\t-\tOct\tlastSun\t0:01\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Moncton\t-4:19:08 -\tLMT\t1883 Dec  9\n\t\t\t-5:00\t-\tEST\t1902 Jun 15\n\t\t\t-4:00\tCanada\tA%sT\t1933\n\t\t\t-4:00\tMoncton\tA%sT\t1942\n\t\t\t-4:00\tCanada\tA%sT\t1946\n\t\t\t-4:00\tMoncton\tA%sT\t1973\n\t\t\t-4:00\tCanada\tA%sT\t1993\n\t\t\t-4:00\tMoncton\tA%sT\t2007\n\t\t\t-4:00\tCanada\tA%sT\n\n# Quebec\n\n# From Paul Eggert (2006-07-09):\n# Shanks & Pottenger write that since 1970 most of Quebec has been\n# like Montreal.\n\n# From Paul Eggert (2006-06-27):\n# Matthews and Vincent (1998) also write that Quebec east of the -63\n# meridian is supposed to observe AST, but residents as far east as\n# Natashquan use EST/EDT, and residents east of Natashquan use AST.\n# In \"Official time in Quebec\" the Quebec department of justice writes in\n# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm\n# that \"The residents of the Municipality of the\n# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin,\n# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is\n# written and use Atlantic standard time all year round. The same applies to\n# the residents of the Native facilities along the lower North Shore.\"\n# <http://www.assnat.qc.ca/eng/37legislature2/Projets-loi/Publics/06-a002.htm>\n# says this common practice was codified into law as of 2007.\n# For lack of better info, guess this practice began around 1970, contra to\n# Shanks & Pottenger who have this region observing AST/ADT.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tMont\t1917\tonly\t-\tMar\t25\t2:00\t1:00\tD\nRule\tMont\t1917\tonly\t-\tApr\t24\t0:00\t0\tS\nRule\tMont\t1919\tonly\t-\tMar\t31\t2:30\t1:00\tD\nRule\tMont\t1919\tonly\t-\tOct\t25\t2:30\t0\tS\nRule\tMont\t1920\tonly\t-\tMay\t 2\t2:30\t1:00\tD\nRule\tMont\t1920\t1922\t-\tOct\tSun>=1\t2:30\t0\tS\nRule\tMont\t1921\tonly\t-\tMay\t 1\t2:00\t1:00\tD\nRule\tMont\t1922\tonly\t-\tApr\t30\t2:00\t1:00\tD\nRule\tMont\t1924\tonly\t-\tMay\t17\t2:00\t1:00\tD\nRule\tMont\t1924\t1926\t-\tSep\tlastSun\t2:30\t0\tS\nRule\tMont\t1925\t1926\t-\tMay\tSun>=1\t2:00\t1:00\tD\n# The 1927-to-1937 rules can be expressed more simply as\n# Rule\tMont\t1927\t1937\t-\tApr\tlastSat\t24:00\t1:00\tD\n# Rule\tMont\t1927\t1937\t-\tSep\tlastSat\t24:00\t0\tS\n# The rules below avoid use of 24:00\n# (which pre-1998 versions of zic cannot handle).\nRule\tMont\t1927\tonly\t-\tMay\t1\t0:00\t1:00\tD\nRule\tMont\t1927\t1932\t-\tSep\tlastSun\t0:00\t0\tS\nRule\tMont\t1928\t1931\t-\tApr\tlastSun\t0:00\t1:00\tD\nRule\tMont\t1932\tonly\t-\tMay\t1\t0:00\t1:00\tD\nRule\tMont\t1933\t1940\t-\tApr\tlastSun\t0:00\t1:00\tD\nRule\tMont\t1933\tonly\t-\tOct\t1\t0:00\t0\tS\nRule\tMont\t1934\t1939\t-\tSep\tlastSun\t0:00\t0\tS\nRule\tMont\t1946\t1973\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tMont\t1945\t1948\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tMont\t1949\t1950\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tMont\t1951\t1956\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tMont\t1957\t1973\t-\tOct\tlastSun\t2:00\t0\tS\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Blanc-Sablon -3:48:28 -\tLMT\t1884\n\t\t\t-4:00\tCanada\tA%sT\t1970\n\t\t\t-4:00\t-\tAST\nZone America/Montreal\t-4:54:16 -\tLMT\t1884\n\t\t\t-5:00\tMont\tE%sT\t1918\n\t\t\t-5:00\tCanada\tE%sT\t1919\n\t\t\t-5:00\tMont\tE%sT\t1942 Feb  9 2:00s\n\t\t\t-5:00\tCanada\tE%sT\t1946\n\t\t\t-5:00\tMont\tE%sT\t1974\n\t\t\t-5:00\tCanada\tE%sT\n\n\n# Ontario\n\n# From Paul Eggert (2006-07-09):\n# Shanks & Pottenger write that since 1970 most of Ontario has been like\n# Toronto.\n# Thunder Bay skipped DST in 1973.\n# Many smaller locales did not observe peacetime DST until 1974;\n# Nipigon (EST) and Rainy River (CST) are the largest that we know of.\n# Far west Ontario is like Winnipeg; far east Quebec is like Halifax.\n\n# From Mark Brader (2003-07-26):\n# [According to the Toronto Star] Orillia, Ontario, adopted DST\n# effective Saturday, 1912-06-22, 22:00; the article mentions that\n# Port Arthur (now part of Thunder Bay, Ontario) as well as Moose Jaw\n# have already done so.  In Orillia DST was to run until Saturday,\n# 1912-08-31 (no time mentioned), but it was met with considerable\n# hostility from certain segments of the public, and was revoked after\n# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but\n# presumably that should be -07-06.  (1912-06-19, -07-12; also letters\n# earlier in June).\n#\n# Kenora, Ontario, was to abandon DST on 1914-06-01 (-05-21).\n\n# From Paul Eggert (1997-10-17):\n# Mark Brader writes that an article in the 1997-10-14 Toronto Star\n# says that Atikokan, Ontario currently does not observe DST,\n# but will vote on 11-10 whether to use EST/EDT.\n# He also writes that the\n# <a href=\"http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html\">\n# Ontario Time Act (1990, Chapter T.9)\n# </a>\n# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.\n# Officially Atikokan is therefore on CST/CDT, and most likely this report\n# concerns a non-official time observed as a matter of local practice.\n#\n# From Paul Eggert (2000-10-02):\n# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and\n# New Osnaburgh observe CST all year, that Big Trout Lake observes\n# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in\n# violation of the official Ontario rules.\n#\n# From Paul Eggert (2006-07-09):\n# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the\n# 2005-07-21 Chronicle-Journal, which said:\n#\n#\tThe clocks in Atikokan stay set on standard time year-round.\n#\tThis means they spend about half the time on central time and\n#\tthe other half on eastern time.\n#\n#\tFor the most part, the system works, Mayor Dennis Brown said.\n#\n#\t\"The majority of businesses in Atikokan deal more with Eastern\n#\tCanada, but there are some that deal with Western Canada,\" he\n#\tsaid.  \"I don't see any changes happening here.\"\n#\n# Walton also writes \"Supposedly Pickle Lake and Mishkeegogamang\n# [New Osnaburgh] follow the same practice.\"\n\n# From Garry McKinnon (2006-07-14) via Chris Walton:\n# I chatted with a member of my board who has an outstanding memory\n# and a long history in Atikokan (and in the telecom industry) and he\n# can say for certain that Atikokan has been practicing the current\n# time keeping since 1952, at least.\n\n# From Paul Eggert (2006-07-17):\n# Shanks & Pottenger say that Atikokan has agreed with Rainy River\n# ever since standard time was introduced, but the information from\n# McKinnon sounds more authoritative.  For now, assume that Atikokan\n# switched to EST immediately after WWII era daylight saving time\n# ended.  This matches the old (less-populous) America/Coral_Harbour\n# entry since our cutoff date of 1970, so we can move\n# America/Coral_Harbour to the 'backward' file.\n\n# From Mark Brader (2010-03-06):\n#\n# Currently the database has:\n#\n# # Ontario\n#\n# # From Paul Eggert (2006-07-09):\n# # Shanks & Pottenger write that since 1970 most of Ontario has been like\n# # Toronto.\n# # Thunder Bay skipped DST in 1973.\n# # Many smaller locales did not observe peacetime DST until 1974;\n# # Nipigon (EST) and Rainy River (CST) are the largest that we know of.\n#\n# In the (Toronto) Globe and Mail for Saturday, 1955-09-24, in the bottom\n# right corner of page 1, it says that Toronto will return to standard\n# time at 2 am Sunday morning (which agrees with the database), and that:\n#\n#     The one-hour setback will go into effect throughout most of Ontario,\n#     except in areas like Windsor which remains on standard time all year.\n#\n# Windsor is, of course, a lot larger than Nipigon.\n#\n# I only came across this incidentally.  I don't know if Windsor began\n# observing DST when Detroit did, or in 1974, or on some other date.\n#\n# By the way, the article continues by noting that:\n#\n#     Some cities in the United States have pushed the deadline back\n#     three weeks and will change over from daylight saving in October.\n\n# From Arthur David Olson (2010-07-17):\n#\n# \"Standard Time and Time Zones in Canada\" appeared in\n# The Journal of The Royal Astronomical Society of Canada,\n# volume 26, number 2 (February 1932) and, as of 2010-07-17,\n# was available at\n# <a href=\"http://adsabs.harvard.edu/full/1932JRASC..26...49S\">\n# http://adsabs.harvard.edu/full/1932JRASC..26...49S\n# </a>\n#\n# It includes the text below (starting on page 57):\n#\n#   A list of the places in Canada using daylight saving time would\n# require yearly revision. From information kindly furnished by\n# the provincial governments and by the postmasters in many cities\n# and towns, it is found that the following places used daylight sav-\n# ing in 1930. The information for the province of Quebec is definite,\n# for the other provinces only approximate:\n#\n# \tProvince\tDaylight saving time used\n# Prince Edward Island\tNot used.\n# Nova Scotia\t\tIn Halifax only.\n# New Brunswick\t\tIn St. John only.\n# Quebec\t\tIn the following places:\n# \t\t\tMontreal\tLachine\n# \t\t\tQuebec\t\tMont-Royal\n# \t\t\tLevis\t\tIberville\n# \t\t\tSt. Lambert\tCap de la Madeleine\n# \t\t\tVerdun\t\tLoretteville\n# \t\t\tWestmount\tRichmond\n# \t\t\tOutremont\tSt. Jerome\n# \t\t\tLongueuil\tGreenfield Park\n# \t\t\tArvida\t\tWaterloo\n# \t\t\tChambly-Canton\tBeaulieu\n# \t\t\tMelbourne\tLa Tuque\n# \t\t\tSt. Theophile\tBuckingham\n# Ontario\t\tUsed generally in the cities and towns along\n# \t\t\tthe southerly part of the province. Not\n# \t\t\tused in the northwesterlhy part.\n# Manitoba\t\tNot used.\n# Saskatchewan\t\tIn Regina only.\n# Alberta\t\tNot used.\n# British Columbia\tNot used.\n#\n#   With some exceptions, the use of daylight saving may be said to be limited\n# to those cities and towns lying between Quebec city and Windsor, Ont.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tToronto\t1919\tonly\t-\tMar\t30\t23:30\t1:00\tD\nRule\tToronto\t1919\tonly\t-\tOct\t26\t0:00\t0\tS\nRule\tToronto\t1920\tonly\t-\tMay\t 2\t2:00\t1:00\tD\nRule\tToronto\t1920\tonly\t-\tSep\t26\t0:00\t0\tS\nRule\tToronto\t1921\tonly\t-\tMay\t15\t2:00\t1:00\tD\nRule\tToronto\t1921\tonly\t-\tSep\t15\t2:00\t0\tS\nRule\tToronto\t1922\t1923\t-\tMay\tSun>=8\t2:00\t1:00\tD\n# Shanks & Pottenger say 1923-09-19; assume it's a typo and that \"-16\"\n# was meant.\nRule\tToronto\t1922\t1926\t-\tSep\tSun>=15\t2:00\t0\tS\nRule\tToronto\t1924\t1927\t-\tMay\tSun>=1\t2:00\t1:00\tD\n# The 1927-to-1939 rules can be expressed more simply as\n# Rule\tToronto\t1927\t1937\t-\tSep\tSun>=25\t2:00\t0\tS\n# Rule\tToronto\t1928\t1937\t-\tApr\tSun>=25\t2:00\t1:00\tD\n# Rule\tToronto\t1938\t1940\t-\tApr\tlastSun\t2:00\t1:00\tD\n# Rule\tToronto\t1938\t1939\t-\tSep\tlastSun\t2:00\t0\tS\n# The rules below avoid use of Sun>=25\n# (which pre-2004 versions of zic cannot handle).\nRule\tToronto\t1927\t1932\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tToronto\t1928\t1931\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tToronto\t1932\tonly\t-\tMay\t1\t2:00\t1:00\tD\nRule\tToronto\t1933\t1940\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tToronto\t1933\tonly\t-\tOct\t1\t2:00\t0\tS\nRule\tToronto\t1934\t1939\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tToronto\t1945\t1946\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tToronto\t1946\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tToronto\t1947\t1949\t-\tApr\tlastSun\t0:00\t1:00\tD\nRule\tToronto\t1947\t1948\t-\tSep\tlastSun\t0:00\t0\tS\nRule\tToronto\t1949\tonly\t-\tNov\tlastSun\t0:00\t0\tS\nRule\tToronto\t1950\t1973\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tToronto\t1950\tonly\t-\tNov\tlastSun\t2:00\t0\tS\nRule\tToronto\t1951\t1956\t-\tSep\tlastSun\t2:00\t0\tS\n# Shanks & Pottenger say Toronto ended DST a week early in 1971,\n# namely on 1971-10-24, but Mark Brader wrote (2003-05-31) that this\n# is wrong, and that he had confirmed it by checking the 1971-10-30\n# Toronto Star, which said that DST was ending 1971-10-31 as usual.\nRule\tToronto\t1957\t1973\t-\tOct\tlastSun\t2:00\t0\tS\n\n# From Paul Eggert (2003-07-27):\n# Willett (1914-03) writes (p. 17) \"In the Cities of Fort William, and\n# Port Arthur, Ontario, the principle of the Bill has been in\n# operation for the past three years, and in the City of Moose Jaw,\n# Saskatchewan, for one year.\"\n\n# From David Bryan via Tory Tronrud, Director/Curator,\n# Thunder Bay Museum (2003-11-12):\n# There is some suggestion, however, that, by-law or not, daylight\n# savings time was being practiced in Fort William and Port Arthur\n# before 1909.... [I]n 1910, the line between the Eastern and Central\n# Time Zones was permanently moved about two hundred miles west to\n# include the Thunder Bay area....  When Canada adopted daylight\n# savings time in 1916, Fort William and Port Arthur, having done so\n# already, did not change their clocks....  During the Second World\n# War,... [t]he cities agreed to implement DST during the summer\n# months for the remainder of the war years.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Toronto\t-5:17:32 -\tLMT\t1895\n\t\t\t-5:00\tCanada\tE%sT\t1919\n\t\t\t-5:00\tToronto\tE%sT\t1942 Feb  9 2:00s\n\t\t\t-5:00\tCanada\tE%sT\t1946\n\t\t\t-5:00\tToronto\tE%sT\t1974\n\t\t\t-5:00\tCanada\tE%sT\nZone America/Thunder_Bay -5:57:00 -\tLMT\t1895\n\t\t\t-6:00\t-\tCST\t1910\n\t\t\t-5:00\t-\tEST\t1942\n\t\t\t-5:00\tCanada\tE%sT\t1970\n\t\t\t-5:00\tMont\tE%sT\t1973\n\t\t\t-5:00\t-\tEST\t1974\n\t\t\t-5:00\tCanada\tE%sT\nZone America/Nipigon\t-5:53:04 -\tLMT\t1895\n\t\t\t-5:00\tCanada\tE%sT\t1940 Sep 29\n\t\t\t-5:00\t1:00\tEDT\t1942 Feb  9 2:00s\n\t\t\t-5:00\tCanada\tE%sT\nZone America/Rainy_River -6:18:16 -\tLMT\t1895\n\t\t\t-6:00\tCanada\tC%sT\t1940 Sep 29\n\t\t\t-6:00\t1:00\tCDT\t1942 Feb  9 2:00s\n\t\t\t-6:00\tCanada\tC%sT\nZone America/Atikokan\t-6:06:28 -\tLMT\t1895\n\t\t\t-6:00\tCanada\tC%sT\t1940 Sep 29\n\t\t\t-6:00\t1:00\tCDT\t1942 Feb  9 2:00s\n\t\t\t-6:00\tCanada\tC%sT\t1945 Sep 30 2:00\n\t\t\t-5:00\t-\tEST\n\n\n# Manitoba\n\n# From Rob Douglas (2006-04-06):\n# the old Manitoba Time Act - as amended by Bill 2, assented to\n# March 27, 1987 ... said ...\n# \"between two o'clock Central Standard Time in the morning of\n# the first Sunday of April of each year and two o'clock Central\n# Standard Time in the morning of the last Sunday of October next\n# following, one hour in advance of Central Standard Time.\"...\n# I believe that the English legislation [of the old time act] had =\n# been assented to (March 22, 1967)....\n# Also, as far as I can tell, there was no order-in-council varying\n# the time of Daylight Saving Time for 2005 and so the provisions of\n# the 1987 version would apply - the changeover was at 2:00 Central\n# Standard Time (i.e. not until 3:00 Central Daylight Time).\n\n# From Paul Eggert (2006-04-10):\n# Shanks & Pottenger say Manitoba switched at 02:00 (not 02:00s)\n# starting 1966.  Since 02:00s is clearly correct for 1967 on, assume\n# it was also 02:00s in 1966.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tWinn\t1916\tonly\t-\tApr\t23\t0:00\t1:00\tD\nRule\tWinn\t1916\tonly\t-\tSep\t17\t0:00\t0\tS\nRule\tWinn\t1918\tonly\t-\tApr\t14\t2:00\t1:00\tD\nRule\tWinn\t1918\tonly\t-\tOct\t27\t2:00\t0\tS\nRule\tWinn\t1937\tonly\t-\tMay\t16\t2:00\t1:00\tD\nRule\tWinn\t1937\tonly\t-\tSep\t26\t2:00\t0\tS\nRule\tWinn\t1942\tonly\t-\tFeb\t 9\t2:00\t1:00\tW # War\nRule\tWinn\t1945\tonly\t-\tAug\t14\t23:00u\t1:00\tP # Peace\nRule\tWinn\t1945\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tWinn\t1946\tonly\t-\tMay\t12\t2:00\t1:00\tD\nRule\tWinn\t1946\tonly\t-\tOct\t13\t2:00\t0\tS\nRule\tWinn\t1947\t1949\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tWinn\t1947\t1949\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tWinn\t1950\tonly\t-\tMay\t 1\t2:00\t1:00\tD\nRule\tWinn\t1950\tonly\t-\tSep\t30\t2:00\t0\tS\nRule\tWinn\t1951\t1960\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tWinn\t1951\t1958\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tWinn\t1959\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tWinn\t1960\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tWinn\t1963\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tWinn\t1963\tonly\t-\tSep\t22\t2:00\t0\tS\nRule\tWinn\t1966\t1986\t-\tApr\tlastSun\t2:00s\t1:00\tD\nRule\tWinn\t1966\t2005\t-\tOct\tlastSun\t2:00s\t0\tS\nRule\tWinn\t1987\t2005\t-\tApr\tSun>=1\t2:00s\t1:00\tD\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Winnipeg\t-6:28:36 -\tLMT\t1887 Jul 16\n\t\t\t-6:00\tWinn\tC%sT\t2006\n\t\t\t-6:00\tCanada\tC%sT\n\n\n# Saskatchewan\n\n# From Mark Brader (2003-07-26):\n# The first actual adoption of DST in Canada was at the municipal\n# level.  As the [Toronto] Star put it (1912-06-07), \"While people\n# elsewhere have long been talking of legislation to save daylight,\n# the city of Moose Jaw [Saskatchewan] has acted on its own hook.\"\n# DST in Moose Jaw began on Saturday, 1912-06-01 (no time mentioned:\n# presumably late evening, as below), and would run until \"the end of\n# the summer\".  The discrepancy between municipal time and railroad\n# time was noted.\n\n# From Paul Eggert (2003-07-27):\n# Willett (1914-03) notes that DST \"has been in operation ... in the\n# City of Moose Jaw, Saskatchewan, for one year.\"\n\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger say that since 1970 this region has mostly been as Regina.\n# Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.\n# Other western towns (e.g. Lloydminster) are like Edmonton.\n# Matthews and Vincent (1998) write that Denare Beach and Creighton\n# are like Winnipeg, in violation of Saskatchewan law.\n\n# From W. Jones (1992-11-06):\n# The. . .below is based on information I got from our law library, the\n# provincial archives, and the provincial Community Services department.\n# A precise history would require digging through newspaper archives, and\n# since you didn't say what you wanted, I didn't bother.\n#\n# Saskatchewan is split by a time zone meridian (105W) and over the years\n# the boundary became pretty ragged as communities near it reevaluated\n# their affiliations in one direction or the other.  In 1965 a provincial\n# referendum favoured legislating common time practices.\n#\n# On 15 April 1966 the Time Act (c. T-14, Revised Statutes of\n# Saskatchewan 1978) was proclaimed, and established that the eastern\n# part of Saskatchewan would use CST year round, that districts in\n# northwest Saskatchewan would by default follow CST but could opt to\n# follow Mountain Time rules (thus 1 hour difference in the winter and\n# zero in the summer), and that districts in southwest Saskatchewan would\n# by default follow MT but could opt to follow CST.\n#\n# It took a few years for the dust to settle (I know one story of a town\n# on one time zone having its school in another, such that a mom had to\n# serve her family lunch in two shifts), but presently it seems that only\n# a few towns on the border with Alberta (e.g. Lloydminster) follow MT\n# rules any more; all other districts appear to have used CST year round\n# since sometime in the 1960s.\n\n# From Chris Walton (2006-06-26):\n# The Saskatchewan time act which was last updated in 1996 is about 30 pages\n# long and rather painful to read.\n# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tRegina\t1918\tonly\t-\tApr\t14\t2:00\t1:00\tD\nRule\tRegina\t1918\tonly\t-\tOct\t27\t2:00\t0\tS\nRule\tRegina\t1930\t1934\t-\tMay\tSun>=1\t0:00\t1:00\tD\nRule\tRegina\t1930\t1934\t-\tOct\tSun>=1\t0:00\t0\tS\nRule\tRegina\t1937\t1941\t-\tApr\tSun>=8\t0:00\t1:00\tD\nRule\tRegina\t1937\tonly\t-\tOct\tSun>=8\t0:00\t0\tS\nRule\tRegina\t1938\tonly\t-\tOct\tSun>=1\t0:00\t0\tS\nRule\tRegina\t1939\t1941\t-\tOct\tSun>=8\t0:00\t0\tS\nRule\tRegina\t1942\tonly\t-\tFeb\t 9\t2:00\t1:00\tW # War\nRule\tRegina\t1945\tonly\t-\tAug\t14\t23:00u\t1:00\tP # Peace\nRule\tRegina\t1945\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tRegina\t1946\tonly\t-\tApr\tSun>=8\t2:00\t1:00\tD\nRule\tRegina\t1946\tonly\t-\tOct\tSun>=8\t2:00\t0\tS\nRule\tRegina\t1947\t1957\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tRegina\t1947\t1957\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tRegina\t1959\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tRegina\t1959\tonly\t-\tOct\tlastSun\t2:00\t0\tS\n#\nRule\tSwift\t1957\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tSwift\t1957\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tSwift\t1959\t1961\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tSwift\t1959\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tSwift\t1960\t1961\t-\tSep\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Regina\t-6:58:36 -\tLMT\t1905 Sep\n\t\t\t-7:00\tRegina\tM%sT\t1960 Apr lastSun 2:00\n\t\t\t-6:00\t-\tCST\nZone America/Swift_Current -7:11:20 -\tLMT\t1905 Sep\n\t\t\t-7:00\tCanada\tM%sT\t1946 Apr lastSun 2:00\n\t\t\t-7:00\tRegina\tM%sT\t1950\n\t\t\t-7:00\tSwift\tM%sT\t1972 Apr lastSun 2:00\n\t\t\t-6:00\t-\tCST\n\n\n# Alberta\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tEdm\t1918\t1919\t-\tApr\tSun>=8\t2:00\t1:00\tD\nRule\tEdm\t1918\tonly\t-\tOct\t27\t2:00\t0\tS\nRule\tEdm\t1919\tonly\t-\tMay\t27\t2:00\t0\tS\nRule\tEdm\t1920\t1923\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tEdm\t1920\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tEdm\t1921\t1923\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tEdm\t1942\tonly\t-\tFeb\t 9\t2:00\t1:00\tW # War\nRule\tEdm\t1945\tonly\t-\tAug\t14\t23:00u\t1:00\tP # Peace\nRule\tEdm\t1945\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tEdm\t1947\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tEdm\t1947\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tEdm\t1967\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tEdm\t1967\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tEdm\t1969\tonly\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tEdm\t1969\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tEdm\t1972\t1986\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tEdm\t1972\t2006\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Edmonton\t-7:33:52 -\tLMT\t1906 Sep\n\t\t\t-7:00\tEdm\tM%sT\t1987\n\t\t\t-7:00\tCanada\tM%sT\n\n\n# British Columbia\n\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger write that since 1970 most of this region has\n# been like Vancouver.\n# Dawson Creek uses MST.  Much of east BC is like Edmonton.\n# Matthews and Vincent (1998) write that Creston is like Dawson Creek.\n\n# It seems though that (re: Creston) is not entirely correct:\n\n# From Chris Walton (2011-12-01):\n# There are two areas within the Canadian province of British Columbia\n# that do not currently observe daylight saving:\n# a) The Creston Valley (includes the town of Creston and surrounding area)\n# b) The eastern half of the Peace River Regional District\n# (includes the cities of Dawson Creek and Fort St. John)\n\n# Earlier this year I stumbled across a detailed article about the time\n# keeping history of Creston; it was written by Tammy Hardwick who is the\n# manager of the Creston & District Museum. The article was written in May 2009.\n# <a href=\"http://www.ilovecreston.com/?p=articles&t=spec&ar=260\">\n# http://www.ilovecreston.com/?p=articles&t=spec&ar=260\n# </a>\n# According to the article, Creston has not changed its clocks since June 1918.\n# i.e. Creston has been stuck on UTC-7 for 93 years.\n# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.\n\n# Unfortunately the exact date for the time change in June 1918 remains\n# unknown and will be difficult to ascertain.  I e-mailed Tammy a few months\n# ago to ask if Sunday June 2 was a reasonable guess.  She said it was just\n# as plausible as any other date (in June).  She also said that after writing the\n# article she had discovered another time change in 1916; this is the subject\n# of another article which she wrote in October 2010.\n# <a href=\"http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56\">\n# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56\n# </a>\n\n# Here is a summary of the three clock change events in Creston's history:\n# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)\n# Exact date unknown\n# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)\n# Exact date in October unknown;  Sunday October 1 is a reasonable guess.\n# 3. June 1918: switch to Pacific Daylight Time (GMT-7)\n# Exact date in June unknown; Sunday June 2 is a reasonable guess.\n# note#1:\n# On Oct 27/1918 when daylight saving ended in the rest of Canada,\n# Creston did not change its clocks.\n# note#2:\n# During WWII when the Federal Government legislated a mandatory clock change,\n# Creston did not oblige.\n# note#3:\n# There is no guarantee that Creston will remain on Mountain Standard Time\n# (UTC-7) forever.\n# The subject was debated at least once this year by the town Council.\n# <a href=\"http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html\">\n# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html\n# </a>\n\n# During a period WWII, summer time (Daylight saying) was mandatory in Canada.\n# In Creston, that was handled by shifting the area to PST (-8:00) then applying\n# summer time to cause the offset to be -7:00, the same as it had been before\n# the change.  It can be argued that the timezone abbreviation during this\n# period should be PDT rather than MST, but that doesn't seem important enough\n# (to anyone) to further complicate the rules.\n\n# The transition dates (and times) are guesses.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tVanc\t1918\tonly\t-\tApr\t14\t2:00\t1:00\tD\nRule\tVanc\t1918\tonly\t-\tOct\t27\t2:00\t0\tS\nRule\tVanc\t1942\tonly\t-\tFeb\t 9\t2:00\t1:00\tW # War\nRule\tVanc\t1945\tonly\t-\tAug\t14\t23:00u\t1:00\tP # Peace\nRule\tVanc\t1945\tonly\t-\tSep\t30\t2:00\t0\tS\nRule\tVanc\t1946\t1986\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tVanc\t1946\tonly\t-\tOct\t13\t2:00\t0\tS\nRule\tVanc\t1947\t1961\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tVanc\t1962\t2006\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Vancouver\t-8:12:28 -\tLMT\t1884\n\t\t\t-8:00\tVanc\tP%sT\t1987\n\t\t\t-8:00\tCanada\tP%sT\nZone America/Dawson_Creek -8:00:56 -\tLMT\t1884\n\t\t\t-8:00\tCanada\tP%sT\t1947\n\t\t\t-8:00\tVanc\tP%sT\t1972 Aug 30 2:00\n\t\t\t-7:00\t-\tMST\nZone America/Creston\t-7:46:04 -\tLMT\t1884\n\t\t\t-7:00\t-\tMST\t1916 Oct 1\n\t\t\t-8:00\t-\tPST\t1918 Jun 2\n\t\t\t-7:00\t-\tMST\n\n# Northwest Territories, Nunavut, Yukon\n\n# From Paul Eggert (2006-03-22):\n# Dawson switched to PST in 1973.  Inuvik switched to MST in 1979.\n# Mathew Englander (1996-10-07) gives the following refs:\n#\t* 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,\n#\tc. 7 defines Yukon standard time as UTC-9.  This is still valid;\n#\tsee Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).\n#\t* C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.\n#\t* O.I.C. 1980/02 established DST.\n#\t* O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.\n# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go\n# with Englander.\n# From Chris Walton (2006-06-26):\n# Here is a link to the old daylight saving portion of the interpretation\n# act which was last updated in 1987:\n# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf\n\n# From Rives McDow (1999-09-04):\n# Nunavut ... moved ... to incorporate the whole territory into one time zone.\n# <a href=\"http://www.nunatsiaq.com/nunavut/nvt90903_13.html\">\n# Nunavut moves to single time zone Oct. 31\n# </a>\n#\n# From Antoine Leca (1999-09-06):\n# We then need to create a new timezone for the Kitikmeot region of Nunavut\n# to differentiate it from the Yellowknife region.\n\n# From Paul Eggert (1999-09-20):\n# <a href=\"http://www.nunavut.com/basicfacts/english/basicfacts_1territory.html\">\n# Basic Facts: The New Territory\n# </a> (1999) reports that Pangnirtung operates on eastern time,\n# and that Coral Harbour does not observe DST.  We don't know when\n# Pangnirtung switched to eastern time; we'll guess 1995.\n\n# From Rives McDow (1999-11-08):\n# On October 31, when the rest of Nunavut went to Central time,\n# Pangnirtung wobbled.  Here is the result of their wobble:\n#\n# The following businesses and organizations in Pangnirtung use Central Time:\n#\n#\tFirst Air, Power Corp, Nunavut Construction, Health Center, RCMP,\n#\tEastern Arctic National Parks, A & D Specialist\n#\n# The following businesses and organizations in Pangnirtung use Eastern Time:\n#\n#\tHamlet office, All other businesses, Both schools, Airport operator\n#\n# This has made for an interesting situation there, which warranted the news.\n# No one there that I spoke with seems concerned, or has plans to\n# change the local methods of keeping time, as it evidently does not\n# really interfere with any activities or make things difficult locally.\n# They plan to celebrate New Year's turn-over twice, one hour apart,\n# so it appears that the situation will last at least that long.\n# The Nunavut Intergovernmental Affairs hopes that they will \"come to\n# their senses\", but the locals evidently don't see any problem with\n# the current state of affairs.\n\n# From Michaela Rodrigue, writing in the\n# <a href=\"http://www.nunatsiaq.com/archives/nunavut991130/nvt91119_17.html\">\n# Nunatsiaq News (1999-11-19)</a>:\n# Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,\n# central - or Nunavut time - for government offices, and eastern time\n# for municipal offices and schools....  Igloolik [was similar but then]\n# made the switch to central time on Saturday, Nov. 6.\n\n# From Paul Eggert (2000-10-02):\n# Matthews and Vincent (1998) say the following, but we lack histories\n# for these potential new Zones.\n#\n# The Canadian Forces station at Alert uses Eastern Time while the\n# handful of residents at the Eureka weather station [in the Central\n# zone] skip daylight savings.  Baffin Island, which is crossed by the\n# Central, Eastern and Atlantic Time zones only uses Eastern Time.\n# Gjoa Haven, Taloyoak and Pelly Bay all use Mountain instead of\n# Central Time and Southampton Island [in the Central zone] is not\n# required to use daylight savings.\n\n# From\n# <a href=\"http://www.nunatsiaq.com/archives/nunavut001130/nvt21110_02.html\">\n# Nunavut now has two time zones\n# </a> (2000-11-10):\n# The Nunavut government would allow its employees in Kugluktuk and\n# Cambridge Bay to operate on central time year-round, putting them\n# one hour behind the rest of Nunavut for six months during the winter.\n# At the end of October the two communities had rebelled against\n# Nunavut's unified time zone, refusing to shift to eastern time with\n# the rest of the territory for the winter.  Cambridge Bay remained on\n# central time, while Kugluktuk, even farther west, reverted to\n# mountain time, which they had used before the advent of Nunavut's\n# unified time zone in 1999.\n#\n# From Rives McDow (2001-01-20), quoting the Nunavut government:\n# The preceding decision came into effect at midnight, Saturday Nov 4, 2000.\n\n# From Paul Eggert (2000-12-04):\n# Let's just keep track of the official times for now.\n\n# From Rives McDow (2001-03-07):\n# The premier of Nunavut has issued a ministerial statement advising\n# that effective 2001-04-01, the territory of Nunavut will revert\n# back to three time zones (mountain, central, and eastern).  Of the\n# cities in Nunavut, Coral Harbor is the only one that I know of that\n# has said it will not observe dst, staying on EST year round.  I'm\n# checking for more info, and will get back to you if I come up with\n# more.\n# [Also see <http://www.nunatsiaq.com/nunavut/nvt10309_06.html> (2001-03-09).]\n\n# From Gwillim Law (2005-05-21):\n# According to maps at\n# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg\n# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg\n# (both dated 2003), and\n# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp\n# (from a 1998 Canadian Geographic article), the de facto and de jure time\n# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year\n# round.  Using Google, it's easy to find other websites that confirm this.\n# I wasn't able to find how far back this time regimen goes, but since it\n# predates the creation of Nunavut, it probably goes back many years....\n# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.\n#\n# From Paul Eggert (2005-07-26):\n# For lack of better information, assume that Southampton Island observed\n# daylight saving only during wartime.\n\n# From Chris Walton (2007-03-01):\n# ... the community of Resolute (located on Cornwallis Island in\n# Nunavut) moved from Central Time to Eastern Time last November.\n# Basically the community did not change its clocks at the end of\n# daylight saving....\n# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html\n\n# From Chris Walton (2011-03-21):\n# Back in 2007 I initiated the creation of a new \"zone file\" for Resolute\n# Bay. Resolute Bay is a small community located about 900km north of\n# the Arctic Circle. The zone file was required because Resolute Bay had\n# decided to use UTC-5 instead of UTC-6 for the winter of 2006-2007.\n#\n# According to new information which I received last week, Resolute Bay\n# went back to using UTC-6 in the winter of 2007-2008...\n#\n# On March 11/2007 most of Canada went onto daylight saving. On March\n# 14/2007 I phoned the Resolute Bay hamlet office to do a \"time check.\" I\n# talked to somebody that was both knowledgeable and helpful. I was able\n# to confirm that Resolute Bay was still operating on UTC-5. It was\n# explained to me that Resolute Bay had been on the Eastern Time zone\n# (EST) in the winter, and was now back on the Central Time zone (CDT).\n# i.e. the time zone had changed twice in the last year but the clocks\n# had not moved. The residents had to know which time zone they were in\n# so they could follow the correct TV schedule...\n#\n# On Nov 02/2008 most of Canada went onto standard time. On Nov 03/2008 I\n# phoned the Resolute Bay hamlet office...[D]ue to the challenging nature\n# of the phone call, I decided to seek out an alternate source of\n# information. I found an e-mail address for somebody by the name of\n# Stephanie Adams whose job was listed as \"Inns North Support Officer for\n# Arctic Co-operatives.\" I was under the impression that Stephanie lived\n# and worked in Resolute Bay...\n#\n# On March 14/2011 I phoned the hamlet office again. I was told that\n# Resolute Bay had been using Central Standard Time over the winter of\n# 2010-2011 and that the clocks had therefore been moved one hour ahead\n# on March 13/2011. The person I talked to was aware that Resolute Bay\n# had previously experimented with Eastern Standard Time but he could not\n# tell me when the practice had stopped.\n#\n# On March 17/2011 I searched the Web to find an e-mail address of\n# somebody that might be able to tell me exactly when Resolute Bay went\n# off Eastern Standard Time. I stumbled on the name \"Aziz Kheraj.\" Aziz\n# used to be the mayor of Resolute Bay and he apparently owns half the\n# businesses including \"South Camp Inn.\" This website has some info on\n# Aziz:\n# <a href=\"http://www.uphere.ca/node/493\">\n# http://www.uphere.ca/node/493\n# </a>\n#\n# I sent Aziz an e-mail asking when Resolute Bay had stopped using\n# Eastern Standard Time.\n#\n# Aziz responded quickly with this: \"hi, The time was not changed for the\n# 1 year only, the following year, the community went back to the old way\n# of \"spring ahead-fall behind\" currently we are zulu plus 5 hrs and in\n# the winter Zulu plus 6 hrs\"\n#\n# This of course conflicted with everything I had ascertained in November 2008.\n#\n# I sent Aziz a copy of my 2008 e-mail exchange with Stephanie. Aziz\n# responded with this: \"Hi, Stephanie lives in Winnipeg. I live here, You\n# may want to check with the weather office in Resolute Bay or do a\n# search on the weather through Env. Canada. web site\"\n#\n# If I had realized the Stephanie did not live in Resolute Bay I would\n# never have contacted her.  I now believe that all the information I\n# obtained in November 2008 should be ignored...\n# I apologize for reporting incorrect information in 2008.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNT_YK\t1918\tonly\t-\tApr\t14\t2:00\t1:00\tD\nRule\tNT_YK\t1918\tonly\t-\tOct\t27\t2:00\t0\tS\nRule\tNT_YK\t1919\tonly\t-\tMay\t25\t2:00\t1:00\tD\nRule\tNT_YK\t1919\tonly\t-\tNov\t 1\t0:00\t0\tS\nRule\tNT_YK\t1942\tonly\t-\tFeb\t 9\t2:00\t1:00\tW # War\nRule\tNT_YK\t1945\tonly\t-\tAug\t14\t23:00u\t1:00\tP # Peace\nRule\tNT_YK\t1945\tonly\t-\tSep\t30\t2:00\t0\tS\nRule\tNT_YK\t1965\tonly\t-\tApr\tlastSun\t0:00\t2:00\tDD\nRule\tNT_YK\t1965\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tNT_YK\t1980\t1986\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tNT_YK\t1980\t2006\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tNT_YK\t1987\t2006\t-\tApr\tSun>=1\t2:00\t1:00\tD\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# aka Panniqtuuq\nZone America/Pangnirtung 0\t-\tzzz\t1921 # trading post est.\n\t\t\t-4:00\tNT_YK\tA%sT\t1995 Apr Sun>=1 2:00\n\t\t\t-5:00\tCanada\tE%sT\t1999 Oct 31 2:00\n\t\t\t-6:00\tCanada\tC%sT\t2000 Oct 29 2:00\n\t\t\t-5:00\tCanada\tE%sT\n# formerly Frobisher Bay\nZone America/Iqaluit\t0\t-\tzzz\t1942 Aug # Frobisher Bay est.\n\t\t\t-5:00\tNT_YK\tE%sT\t1999 Oct 31 2:00\n\t\t\t-6:00\tCanada\tC%sT\t2000 Oct 29 2:00\n\t\t\t-5:00\tCanada\tE%sT\n# aka Qausuittuq\nZone America/Resolute\t0\t-\tzzz\t1947 Aug 31 # Resolute founded\n\t\t\t-6:00\tNT_YK\tC%sT\t2000 Oct 29 2:00\n\t\t\t-5:00\t-\tEST\t2001 Apr  1 3:00\n\t\t\t-6:00\tCanada\tC%sT\t2006 Oct 29 2:00\n\t\t\t-5:00\t-\tEST\t2007 Mar 11 3:00\n\t\t\t-6:00\tCanada\tC%sT\n# aka Kangiqiniq\nZone America/Rankin_Inlet 0\t-\tzzz\t1957 # Rankin Inlet founded\n\t\t\t-6:00\tNT_YK\tC%sT\t2000 Oct 29 2:00\n\t\t\t-5:00\t-\tEST\t2001 Apr  1 3:00\n\t\t\t-6:00\tCanada\tC%sT\n# aka Iqaluktuuttiaq\nZone America/Cambridge_Bay 0\t-\tzzz\t1920 # trading post est.?\n\t\t\t-7:00\tNT_YK\tM%sT\t1999 Oct 31 2:00\n\t\t\t-6:00\tCanada\tC%sT\t2000 Oct 29 2:00\n\t\t\t-5:00\t-\tEST\t2000 Nov  5 0:00\n\t\t\t-6:00\t-\tCST\t2001 Apr  1 3:00\n\t\t\t-7:00\tCanada\tM%sT\nZone America/Yellowknife 0\t-\tzzz\t1935 # Yellowknife founded?\n\t\t\t-7:00\tNT_YK\tM%sT\t1980\n\t\t\t-7:00\tCanada\tM%sT\nZone America/Inuvik\t0\t-\tzzz\t1953 # Inuvik founded\n\t\t\t-8:00\tNT_YK\tP%sT\t1979 Apr lastSun 2:00\n\t\t\t-7:00\tNT_YK\tM%sT\t1980\n\t\t\t-7:00\tCanada\tM%sT\nZone America/Whitehorse\t-9:00:12 -\tLMT\t1900 Aug 20\n\t\t\t-9:00\tNT_YK\tY%sT\t1966 Jul 1 2:00\n\t\t\t-8:00\tNT_YK\tP%sT\t1980\n\t\t\t-8:00\tCanada\tP%sT\nZone America/Dawson\t-9:17:40 -\tLMT\t1900 Aug 20\n\t\t\t-9:00\tNT_YK\tY%sT\t1973 Oct 28 0:00\n\t\t\t-8:00\tNT_YK\tP%sT\t1980\n\t\t\t-8:00\tCanada\tP%sT\n\n\n###############################################################################\n\n# Mexico\n\n# From Paul Eggert (2001-03-05):\n# The Investigation and Analysis Service of the\n# Mexican Library of Congress (MLoC) has published a\n# <a href=\"http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/\">\n# history of Mexican local time (in Spanish)\n# </a>.\n#\n# Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.\n# (In all cases we go with the MLoC.)\n# S&P report that Baja was at -8:00 in 1922/1923.\n# S&P say the 1930 transition in Baja was 1930-11-16.\n# S&P report no DST during summer 1931.\n# S&P report a transition at 1932-03-30 23:00, not 1932-04-01.\n\n# From Gwillim Law (2001-02-20):\n# There are some other discrepancies between the Decrees page and the\n# tz database.  I think they can best be explained by supposing that\n# the researchers who prepared the Decrees page failed to find some of\n# the relevant documents.\n\n# From Alan Perry (1996-02-15):\n# A guy from our Mexico subsidiary finally found the Presidential Decree\n# outlining the timezone changes in Mexico.\n#\n# ------------- Begin Forwarded Message -------------\n#\n# I finally got my hands on the Official Presidential Decree that sets up the\n# rules for the DST changes. The rules are:\n#\n# 1. The country is divided in 3 timezones:\n#    - Baja California Norte (the Mexico/BajaNorte TZ)\n#    - Baja California Sur, Nayarit, Sinaloa and Sonora (the Mexico/BajaSur TZ)\n#    - The rest of the country (the Mexico/General TZ)\n#\n# 2. From the first Sunday in April at 2:00 AM to the last Sunday in October\n#    at 2:00 AM, the times in each zone are as follows:\n#    BajaNorte: GMT+7\n#    BajaSur:   GMT+6\n#    General:   GMT+5\n#\n# 3. The rest of the year, the times are as follows:\n#    BajaNorte: GMT+8\n#    BajaSur:   GMT+7\n#    General:   GMT+6\n#\n# The Decree was published in Mexico's Official Newspaper on January 4th.\n#\n# -------------- End Forwarded Message --------------\n# From Paul Eggert (1996-06-12):\n# For an English translation of the decree, see\n# <a href=\"http://mexico-travel.com/extra/timezone_eng.html\">\n# ``Diario Oficial: Time Zone Changeover'' (1996-01-04).\n# </a>\n\n# From Rives McDow (1998-10-08):\n# The State of Quintana Roo has reverted back to central STD and DST times\n# (i.e. UTC -0600 and -0500 as of 1998-08-02).\n\n# From Rives McDow (2000-01-10):\n# Effective April 4, 1999 at 2:00 AM local time, Sonora changed to the time\n# zone 5 hours from the International Date Line, and will not observe daylight\n# savings time so as to stay on the same time zone as the southern part of\n# Arizona year round.\n\n# From Jesper Norgaard, translating\n# <http://www.reforma.com/nacional/articulo/064327/> (2001-01-17):\n# In Oaxaca, the 55.000 teachers from the Section 22 of the National\n# Syndicate of Education Workers, refuse to apply daylight saving each\n# year, so that the more than 10,000 schools work at normal hour the\n# whole year.\n\n# From Gwillim Law (2001-01-19):\n# <http://www.reforma.com/negocios_y_dinero/articulo/064481/> ... says\n# (translated):...\n# January 17, 2000 - The Energy Secretary, Ernesto Martens, announced\n# that Summer Time will be reduced from seven to five months, starting\n# this year....\n# <http://www.publico.com.mx/scripts/texto3.asp?action=pagina&pag=21&pos=p&secc=naci&date=01/17/2001>\n# [translated], says \"summer time will ... take effect on the first Sunday\n# in May, and end on the last Sunday of September.\n\n# From Arthur David Olson (2001-01-25):\n# The 2001-01-24 traditional Washington Post contained the page one\n# story \"Timely Issue Divides Mexicans.\"...\n# http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html\n# ... Mexico City Mayor Lopez Obrador \"...is threatening to keep\n# Mexico City and its 20 million residents on a different time than\n# the rest of the country...\" In particular, Lopez Obrador would abolish\n# observation of Daylight Saving Time.\n\n# <a href=\"http://www.conae.gob.mx/ahorro/decretohorver2001.html#decre\">\n# Official statute published by the Energy Department\n# </a> (2001-02-01) shows Baja and Chihauhua as still using US DST rules,\n# and Sonora with no DST.  This was reported by Jesper Norgaard (2001-02-03).\n\n# From Paul Eggert (2001-03-03):\n#\n# <a href=\"http://www.latimes.com/news/nation/20010303/t000018766.html\">\n# James F. Smith writes in today's LA Times\n# </a>\n# * Sonora will continue to observe standard time.\n# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that\n#   the Federal District will not adopt DST.\n# * 4 of 16 district leaders announced they'll ignore the decree.\n# * The decree does not affect federal-controlled facilities including\n#   the airport, banks, hospitals, and schools.\n#\n# For now we'll assume that the Federal District will bow to federal rules.\n\n# From Jesper Norgaard (2001-04-01):\n# I found some references to the Mexican application of daylight\n# saving, which modifies what I had already sent you, stating earlier\n# that a number of northern Mexican states would go on daylight\n# saving. The modification reverts this to only cover Baja California\n# (Norte), while all other states (except Sonora, who has no daylight\n# saving all year) will follow the original decree of president\n# Vicente Fox, starting daylight saving May 6, 2001 and ending\n# September 30, 2001.\n# References: \"Diario de Monterrey\" <www.diariodemonterrey.com/index.asp>\n# Palabra <http://palabra.infosel.com/010331/primera/ppri3101.pdf> (2001-03-31)\n\n# From Reuters (2001-09-04):\n# Mexico's Supreme Court on Tuesday declared that daylight savings was\n# unconstitutional in Mexico City, creating the possibility the\n# capital will be in a different time zone from the rest of the nation\n# next year....  The Supreme Court's ruling takes effect at 2:00\n# a.m. (0800 GMT) on Sept. 30, when Mexico is scheduled to revert to\n# standard time. \"This is so residents of the Federal District are not\n# subject to unexpected time changes,\" a statement from the court said.\n\n# From Jesper Norgaard Welen (2002-03-12):\n# ... consulting my local grocery store(!) and my coworkers, they all insisted\n# that a new decision had been made to reinstate US style DST in Mexico....\n# http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)\n# confirms this.  Sonora as usual is the only state where DST is not applied.\n\n# From Steffen Thorsen (2009-12-28):\n#\n# Steffen Thorsen wrote:\n# > Mexico's House of Representatives has approved a proposal for northern\n# > Mexico's border cities to share the same daylight saving schedule as\n# > the United States.\n# Now this has passed both the Congress and the Senate, so starting from\n# 2010, some border regions will be the same:\n# <a href=\"http://www.signonsandiego.com/news/2009/dec/28/clocks-will-match-both-sides-border/\">\n# http://www.signonsandiego.com/news/2009/dec/28/clocks-will-match-both-sides-border/\n# </a>\n# <a href=\"http://www.elmananarey.com/diario/noticia/nacional/noticias/empatan_horario_de_frontera_con_eu/621939\">\n# http://www.elmananarey.com/diario/noticia/nacional/noticias/empatan_horario_de_frontera_con_eu/621939\n# </a>\n# (Spanish)\n#\n# Could not find the new law text, but the proposed law text changes are here:\n# <a href=\"http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/20091210-V.pdf\">\n# http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/20091210-V.pdf\n# </a>\n# (Gaceta Parlamentaria)\n#\n# There is also a list of the votes here:\n# <a href=\"http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/V2-101209.html\">\n# http://gaceta.diputados.gob.mx/Gaceta/61/2009/dic/V2-101209.html\n# </a>\n#\n# Our page:\n# <a href=\"http://www.timeanddate.com/news/time/north-mexico-dst-change.html\">\n# http://www.timeanddate.com/news/time/north-mexico-dst-change.html\n# </a>\n\n# From Arthur David Olson (2010-01-20):\n# The page\n# <a href=\"http://dof.gob.mx/nota_detalle.php?codigo=5127480&fecha=06/01/2010\">\n# http://dof.gob.mx/nota_detalle.php?codigo=5127480&fecha=06/01/2010\n# </a>\n# includes this text:\n# En los municipios fronterizos de Tijuana y Mexicali en Baja California;\n# Ju&aacute;rez y Ojinaga en Chihuahua; Acu&ntilde;a y Piedras Negras en Coahuila;\n# An&aacute;huac en Nuevo Le&oacute;n; y Nuevo Laredo, Reynosa y Matamoros en\n# Tamaulipas, la aplicaci&oacute;n de este horario estacional surtir&aacute; efecto\n# desde las dos horas del segundo domingo de marzo y concluir&aacute; a las dos\n# horas del primer domingo de noviembre.\n# En los municipios fronterizos que se encuentren ubicados en la franja\n# fronteriza norte en el territorio comprendido entre la l&iacute;nea\n# internacional y la l&iacute;nea paralela ubicada a una distancia de veinte\n# kil&oacute;metros, as&iacute; como la Ciudad de Ensenada, Baja California, hacia el\n# interior del pa&iacute;s, la aplicaci&oacute;n de este horario estacional surtir&aacute;\n# efecto desde las dos horas del segundo domingo de marzo y concluir&aacute; a\n# las dos horas del primer domingo de noviembre.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tMexico\t1939\tonly\t-\tFeb\t5\t0:00\t1:00\tD\nRule\tMexico\t1939\tonly\t-\tJun\t25\t0:00\t0\tS\nRule\tMexico\t1940\tonly\t-\tDec\t9\t0:00\t1:00\tD\nRule\tMexico\t1941\tonly\t-\tApr\t1\t0:00\t0\tS\nRule\tMexico\t1943\tonly\t-\tDec\t16\t0:00\t1:00\tW # War\nRule\tMexico\t1944\tonly\t-\tMay\t1\t0:00\t0\tS\nRule\tMexico\t1950\tonly\t-\tFeb\t12\t0:00\t1:00\tD\nRule\tMexico\t1950\tonly\t-\tJul\t30\t0:00\t0\tS\nRule\tMexico\t1996\t2000\t-\tApr\tSun>=1\t2:00\t1:00\tD\nRule\tMexico\t1996\t2000\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tMexico\t2001\tonly\t-\tMay\tSun>=1\t2:00\t1:00\tD\nRule\tMexico\t2001\tonly\t-\tSep\tlastSun\t2:00\t0\tS\nRule\tMexico\t2002\tmax\t-\tApr\tSun>=1\t2:00\t1:00\tD\nRule\tMexico\t2002\tmax\t-\tOct\tlastSun\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n# Quintana Roo\nZone America/Cancun\t-5:47:04 -\tLMT\t1922 Jan  1  0:12:56\n\t\t\t-6:00\t-\tCST\t1981 Dec 23\n\t\t\t-5:00\tMexico\tE%sT\t1998 Aug  2  2:00\n\t\t\t-6:00\tMexico\tC%sT\n# Campeche, Yucatan\nZone America/Merida\t-5:58:28 -\tLMT\t1922 Jan  1  0:01:32\n\t\t\t-6:00\t-\tCST\t1981 Dec 23\n\t\t\t-5:00\t-\tEST\t1982 Dec  2\n\t\t\t-6:00\tMexico\tC%sT\n# Coahuila, Durango, Nuevo Leon, Tamaulipas (near US border)\nZone America/Matamoros\t-6:40:00 -\tLMT\t1921 Dec 31 23:20:00\n\t\t\t-6:00\t-\tCST\t1988\n\t\t\t-6:00\tUS\tC%sT\t1989\n\t\t\t-6:00\tMexico\tC%sT\t2010\n\t\t\t-6:00\tUS\tC%sT\n# Coahuila, Durango, Nuevo Leon, Tamaulipas (away from US border)\nZone America/Monterrey\t-6:41:16 -\tLMT\t1921 Dec 31 23:18:44\n\t\t\t-6:00\t-\tCST\t1988\n\t\t\t-6:00\tUS\tC%sT\t1989\n\t\t\t-6:00\tMexico\tC%sT\n# Central Mexico\nZone America/Mexico_City -6:36:36 -\tLMT\t1922 Jan  1 0:23:24\n\t\t\t-7:00\t-\tMST\t1927 Jun 10 23:00\n\t\t\t-6:00\t-\tCST\t1930 Nov 15\n\t\t\t-7:00\t-\tMST\t1931 May  1 23:00\n\t\t\t-6:00\t-\tCST\t1931 Oct\n\t\t\t-7:00\t-\tMST\t1932 Apr  1\n\t\t\t-6:00\tMexico\tC%sT\t2001 Sep 30 02:00\n\t\t\t-6:00\t-\tCST\t2002 Feb 20\n\t\t\t-6:00\tMexico\tC%sT\n# Chihuahua (near US border)\nZone America/Ojinaga\t-6:57:40 -\tLMT\t1922 Jan 1 0:02:20\n\t\t\t-7:00\t-\tMST\t1927 Jun 10 23:00\n\t\t\t-6:00\t-\tCST\t1930 Nov 15\n\t\t\t-7:00\t-\tMST\t1931 May  1 23:00\n\t\t\t-6:00\t-\tCST\t1931 Oct\n\t\t\t-7:00\t-\tMST\t1932 Apr  1\n\t\t\t-6:00\t-\tCST\t1996\n\t\t\t-6:00\tMexico\tC%sT\t1998\n\t\t\t-6:00\t-\tCST\t1998 Apr Sun>=1 3:00\n\t\t\t-7:00\tMexico\tM%sT\t2010\n\t\t\t-7:00\tUS\tM%sT\n# Chihuahua (away from US border)\nZone America/Chihuahua\t-7:04:20 -\tLMT\t1921 Dec 31 23:55:40\n\t\t\t-7:00\t-\tMST\t1927 Jun 10 23:00\n\t\t\t-6:00\t-\tCST\t1930 Nov 15\n\t\t\t-7:00\t-\tMST\t1931 May  1 23:00\n\t\t\t-6:00\t-\tCST\t1931 Oct\n\t\t\t-7:00\t-\tMST\t1932 Apr  1\n\t\t\t-6:00\t-\tCST\t1996\n\t\t\t-6:00\tMexico\tC%sT\t1998\n\t\t\t-6:00\t-\tCST\t1998 Apr Sun>=1 3:00\n\t\t\t-7:00\tMexico\tM%sT\n# Sonora\nZone America/Hermosillo\t-7:23:52 -\tLMT\t1921 Dec 31 23:36:08\n\t\t\t-7:00\t-\tMST\t1927 Jun 10 23:00\n\t\t\t-6:00\t-\tCST\t1930 Nov 15\n\t\t\t-7:00\t-\tMST\t1931 May  1 23:00\n\t\t\t-6:00\t-\tCST\t1931 Oct\n\t\t\t-7:00\t-\tMST\t1932 Apr  1\n\t\t\t-6:00\t-\tCST\t1942 Apr 24\n\t\t\t-7:00\t-\tMST\t1949 Jan 14\n\t\t\t-8:00\t-\tPST\t1970\n\t\t\t-7:00\tMexico\tM%sT\t1999\n\t\t\t-7:00\t-\tMST\n\n# From Alexander Krivenyshev (2010-04-21):\n# According to news, Bah&iacute;a de Banderas (Mexican state of Nayarit)\n# changed time zone UTC-7 to new time zone UTC-6 on April 4, 2010 (to\n# share the same time zone as nearby city Puerto Vallarta, Jalisco).\n#\n# (Spanish)\n# Bah&iacute;a de Banderas homologa su horario al del centro del\n# pa&iacute;s, a partir de este domingo\n# <a href=\"http://www.nayarit.gob.mx/notes.asp?id=20748\">\n# http://www.nayarit.gob.mx/notes.asp?id=20748\n# </a>\n#\n# Bah&iacute;a de Banderas homologa su horario con el del Centro del\n# Pa&iacute;s\n# <a href=\"http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50\">\n# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50\"\n# </a>\n#\n# (English)\n# Puerto Vallarta and Bah&iacute;a de Banderas: One Time Zone\n# <a href=\"http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml\">\n# http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml\n# </a>\n#\n# or\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_mexico08.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_mexico08.html\n# </a>\n#\n# \"Mexico's Senate approved the amendments to the Mexican Schedule System that\n# will allow Bah&iacute;a de Banderas and Puerto Vallarta to share the same time\n# zone ...\"\n# Baja California Sur, Nayarit, Sinaloa\n\n# From Arthur David Olson (2010-05-01):\n# Use \"Bahia_Banderas\" to keep the name to fourteen characters.\n\nZone America/Mazatlan\t-7:05:40 -\tLMT\t1921 Dec 31 23:54:20\n\t\t\t-7:00\t-\tMST\t1927 Jun 10 23:00\n\t\t\t-6:00\t-\tCST\t1930 Nov 15\n\t\t\t-7:00\t-\tMST\t1931 May  1 23:00\n\t\t\t-6:00\t-\tCST\t1931 Oct\n\t\t\t-7:00\t-\tMST\t1932 Apr  1\n\t\t\t-6:00\t-\tCST\t1942 Apr 24\n\t\t\t-7:00\t-\tMST\t1949 Jan 14\n\t\t\t-8:00\t-\tPST\t1970\n\t\t\t-7:00\tMexico\tM%sT\n\nZone America/Bahia_Banderas\t-7:01:00 -\tLMT\t1921 Dec 31 23:59:00\n\t\t\t-7:00\t-\tMST\t1927 Jun 10 23:00\n\t\t\t-6:00\t-\tCST\t1930 Nov 15\n\t\t\t-7:00\t-\tMST\t1931 May  1 23:00\n\t\t\t-6:00\t-\tCST\t1931 Oct\n\t\t\t-7:00\t-\tMST\t1932 Apr  1\n\t\t\t-6:00\t-\tCST\t1942 Apr 24\n\t\t\t-7:00\t-\tMST\t1949 Jan 14\n\t\t\t-8:00\t-\tPST\t1970\n\t\t\t-7:00\tMexico\tM%sT\t2010 Apr 4 2:00\n\t\t\t-6:00\tMexico\tC%sT\n\n# Baja California (near US border)\nZone America/Tijuana\t-7:48:04 -\tLMT\t1922 Jan  1  0:11:56\n\t\t\t-7:00\t-\tMST\t1924\n\t\t\t-8:00\t-\tPST\t1927 Jun 10 23:00\n\t\t\t-7:00\t-\tMST\t1930 Nov 15\n\t\t\t-8:00\t-\tPST\t1931 Apr  1\n\t\t\t-8:00\t1:00\tPDT\t1931 Sep 30\n\t\t\t-8:00\t-\tPST\t1942 Apr 24\n\t\t\t-8:00\t1:00\tPWT\t1945 Aug 14 23:00u\n\t\t\t-8:00\t1:00\tPPT\t1945 Nov 12 # Peace\n\t\t\t-8:00\t-\tPST\t1948 Apr  5\n\t\t\t-8:00\t1:00\tPDT\t1949 Jan 14\n\t\t\t-8:00\t-\tPST\t1954\n\t\t\t-8:00\tCA\tP%sT\t1961\n\t\t\t-8:00\t-\tPST\t1976\n\t\t\t-8:00\tUS\tP%sT\t1996\n\t\t\t-8:00\tMexico\tP%sT\t2001\n\t\t\t-8:00\tUS\tP%sT\t2002 Feb 20\n\t\t\t-8:00\tMexico\tP%sT\t2010\n\t\t\t-8:00\tUS\tP%sT\n# Baja California (away from US border)\nZone America/Santa_Isabel\t-7:39:28 -\tLMT\t1922 Jan  1  0:20:32\n\t\t\t-7:00\t-\tMST\t1924\n\t\t\t-8:00\t-\tPST\t1927 Jun 10 23:00\n\t\t\t-7:00\t-\tMST\t1930 Nov 15\n\t\t\t-8:00\t-\tPST\t1931 Apr  1\n\t\t\t-8:00\t1:00\tPDT\t1931 Sep 30\n\t\t\t-8:00\t-\tPST\t1942 Apr 24\n\t\t\t-8:00\t1:00\tPWT\t1945 Aug 14 23:00u\n\t\t\t-8:00\t1:00\tPPT\t1945 Nov 12 # Peace\n\t\t\t-8:00\t-\tPST\t1948 Apr  5\n\t\t\t-8:00\t1:00\tPDT\t1949 Jan 14\n\t\t\t-8:00\t-\tPST\t1954\n\t\t\t-8:00\tCA\tP%sT\t1961\n\t\t\t-8:00\t-\tPST\t1976\n\t\t\t-8:00\tUS\tP%sT\t1996\n\t\t\t-8:00\tMexico\tP%sT\t2001\n\t\t\t-8:00\tUS\tP%sT\t2002 Feb 20\n\t\t\t-8:00\tMexico\tP%sT\n# From Paul Eggert (2006-03-22):\n# Formerly there was an America/Ensenada zone, which differed from\n# America/Tijuana only in that it did not observe DST from 1976\n# through 1995.  This was as per Shanks (1999).  But Shanks & Pottenger say\n# Ensenada did not observe DST from 1948 through 1975.  Guy Harris reports\n# that the 1987 OAG says \"Only Ensenada, Mexicale, San Felipe and\n# Tijuana observe DST,\" which agrees with Shanks & Pottenger but implies that\n# DST-observance was a town-by-town matter back then.  This concerns\n# data after 1970 so most likely there should be at least one Zone\n# other than America/Tijuana for Baja, but it's not clear yet what its\n# name or contents should be.\n#\n# Revillagigedo Is\n# no information\n\n###############################################################################\n\n# Anguilla\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Anguilla\t-4:12:16 -\tLMT\t1912 Mar 2\n\t\t\t-4:00\t-\tAST\n\n# Antigua and Barbuda\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Antigua\t-4:07:12 -\tLMT\t1912 Mar 2\n\t\t\t-5:00\t-\tEST\t1951\n\t\t\t-4:00\t-\tAST\n\n# Bahamas\n#\n# From Sue Williams (2006-12-07):\n# The Bahamas announced about a month ago that they plan to change their DST\n# rules to sync with the U.S. starting in 2007....\n# http://www.jonesbahamas.com/?c=45&a=10412\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tBahamas\t1964\t1975\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tBahamas\t1964\t1975\t-\tApr\tlastSun\t2:00\t1:00\tD\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Nassau\t-5:09:24 -\tLMT\t1912 Mar 2\n\t\t\t-5:00\tBahamas\tE%sT\t1976\n\t\t\t-5:00\tUS\tE%sT\n\n# Barbados\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tBarb\t1977\tonly\t-\tJun\t12\t2:00\t1:00\tD\nRule\tBarb\t1977\t1978\t-\tOct\tSun>=1\t2:00\t0\tS\nRule\tBarb\t1978\t1980\t-\tApr\tSun>=15\t2:00\t1:00\tD\nRule\tBarb\t1979\tonly\t-\tSep\t30\t2:00\t0\tS\nRule\tBarb\t1980\tonly\t-\tSep\t25\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Barbados\t-3:58:28 -\tLMT\t1924\t\t# Bridgetown\n\t\t\t-3:58:28 -\tBMT\t1932\t  # Bridgetown Mean Time\n\t\t\t-4:00\tBarb\tA%sT\n\n# Belize\n# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tBelize\t1918\t1942\t-\tOct\tSun>=2\t0:00\t0:30\tHD\nRule\tBelize\t1919\t1943\t-\tFeb\tSun>=9\t0:00\t0\tS\nRule\tBelize\t1973\tonly\t-\tDec\t 5\t0:00\t1:00\tD\nRule\tBelize\t1974\tonly\t-\tFeb\t 9\t0:00\t0\tS\nRule\tBelize\t1982\tonly\t-\tDec\t18\t0:00\t1:00\tD\nRule\tBelize\t1983\tonly\t-\tFeb\t12\t0:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Belize\t-5:52:48 -\tLMT\t1912 Apr\n\t\t\t-6:00\tBelize\tC%sT\n\n# Bermuda\n\n# From Dan Jones, reporting in The Royal Gazette (2006-06-26):\n\n# Next year, however, clocks in the US will go forward on the second Sunday\n# in March, until the first Sunday in November.  And, after the Time Zone\n# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on\n# Friday, the same thing will happen in Bermuda.\n# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Atlantic/Bermuda\t-4:19:04 -\tLMT\t1930 Jan  1 2:00    # Hamilton\n\t\t\t-4:00\t-\tAST\t1974 Apr 28 2:00\n\t\t\t-4:00\tBahamas\tA%sT\t1976\n\t\t\t-4:00\tUS\tA%sT\n\n# Cayman Is\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Cayman\t-5:25:32 -\tLMT\t1890\t\t# Georgetown\n\t\t\t-5:07:12 -\tKMT\t1912 Feb    # Kingston Mean Time\n\t\t\t-5:00\t-\tEST\n\n# Costa Rica\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tCR\t1979\t1980\t-\tFeb\tlastSun\t0:00\t1:00\tD\nRule\tCR\t1979\t1980\t-\tJun\tSun>=1\t0:00\t0\tS\nRule\tCR\t1991\t1992\t-\tJan\tSat>=15\t0:00\t1:00\tD\n# IATA SSIM (1991-09) says the following was at 1:00;\n# go with Shanks & Pottenger.\nRule\tCR\t1991\tonly\t-\tJul\t 1\t0:00\t0\tS\nRule\tCR\t1992\tonly\t-\tMar\t15\t0:00\t0\tS\n# There are too many San Joses elsewhere, so we'll use `Costa Rica'.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Costa_Rica\t-5:36:20 -\tLMT\t1890\t\t# San Jose\n\t\t\t-5:36:20 -\tSJMT\t1921 Jan 15 # San Jose Mean Time\n\t\t\t-6:00\tCR\tC%sT\n# Coco\n# no information; probably like America/Costa_Rica\n\n# Cuba\n\n# From Arthur David Olson (1999-03-29):\n# The 1999-03-28 exhibition baseball game held in Havana, Cuba, between\n# the Cuban National Team and the Baltimore Orioles was carried live on\n# the Orioles Radio Network, including affiliate WTOP in Washington, DC.\n# During the game, play-by-play announcer Jim Hunter noted that\n# \"We'll be losing two hours of sleep...Cuba switched to Daylight Saving\n# Time today.\"  (The \"two hour\" remark referred to losing one hour of\n# sleep on 1999-03-28--when the announcers were in Cuba as it switched\n# to DST--and one more hour on 1999-04-04--when the announcers will have\n# returned to Baltimore, which switches on that date.)\n\n# From Evert van der Veer via Steffen Thorsen (2004-10-28):\n# Cuba is not going back to standard time this year.\n# From Paul Eggert (2006-03-22):\n# http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html\n# says that it's due to a problem at the Antonio Guiteras\n# thermoelectric plant, and says \"This October there will be no return\n# to normal hours (after daylight saving time)\".\n# For now, let's assume that it's a temporary measure.\n\n# From Carlos A. Carnero Delgado (2005-11-12):\n# This year (just like in 2004-2005) there's no change in time zone\n# adjustment in Cuba.  We will stay in daylight saving time:\n# http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html\n\n# From Jesper Norgaard Welen (2006-10-21):\n# An article in GRANMA INTERNACIONAL claims that Cuba will end\n# the 3 years of permanent DST next weekend, see\n# http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html\n# \"On Saturday night, October 28 going into Sunday, October 29, at 01:00,\n# watches should be set back one hour -- going back to 00:00 hours -- returning\n# to the normal schedule....\n\n# From Paul Eggert (2007-03-02):\n# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,\n# says Cuban clocks will advance at midnight on March 10.\n# For lack of better information, assume Cuba will use US rules,\n# except that it switches at midnight standard time as usual.\n#\n# From Steffen Thorsen (2007-10-25):\n# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week\n# earlier - on the last Sunday of October, just like in 2006.\n#\n# He supplied these references:\n#\n# http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES\n# http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm\n#\n# From Alex Kryvenishev (2007-10-25):\n# Here is also article from Granma (Cuba):\n#\n# [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre\n# http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html\n#\n# http://www.worldtimezone.com/dst_news/dst_news_cuba03.html\n\n# From Arthur David Olson (2008-03-09):\n# I'm in Maryland which is now observing United States Eastern Daylight\n# Time. At 9:44 local time I used RealPlayer to listen to\n# <a href=\"http://media.enet.cu/radioreloj\">\n# http://media.enet.cu/radioreloj\n# </a>, a Cuban information station, and heard\n# the time announced as \"ocho cuarenta y cuatro\" (\"eight forty-four\"),\n# indicating that Cuba is still on standard time.\n\n# From Steffen Thorsen (2008-03-12):\n# It seems that Cuba will start DST on Sunday, 2007-03-16...\n# It was announced yesterday, according to this source (in Spanish):\n# <a href=\"http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm\">\n# http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm\n# </a>\n#\n# Some more background information is posted here:\n# <a href=\"http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html\">\n# http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html\n# </a>\n#\n# The article also says that Cuba has been observing DST since 1963,\n# while Shanks (and tzdata) has 1965 as the first date (except in the\n# 1940's). Many other web pages in Cuba also claim that it has been\n# observed since 1963, but with the exception of 1970 - an exception\n# which is not present in tzdata/Shanks. So there is a chance we need to\n# change some historic records as well.\n#\n# One example:\n# <a href=\"http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm\">\n# http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm\n# </a>\n\n# From Jesper Norgaard Welen (2008-03-13):\n# The Cuban time change has just been confirmed on the most authoritative\n# web site, the Granma.  Please check out\n# <a href=\"http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html\">\n# http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html\n# </a>\n#\n# Basically as expected after Steffen Thorsens information, the change\n# will take place midnight between Saturday and Sunday.\n\n# From Arthur David Olson (2008-03-12):\n# Assume Sun>=15 (third Sunday) going forward.\n\n# From Alexander Krivenyshev (2009-03-04)\n# According to the Radio Reloj - Cuba will start Daylight Saving Time on\n# midnight between Saturday, March 07, 2009 and Sunday, March 08, 2009-\n# not on midnight March 14 / March 15 as previously thought.\n#\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_cuba05.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_cuba05.html\n# (in Spanish)\n# </a>\n\n# From Arthur David Olson (2009-03-09)\n# I listened over the Internet to\n# <a href=\"http://media.enet.cu/readioreloj\">\n# http://media.enet.cu/readioreloj\n# </a>\n# this morning; when it was 10:05 a. m. here in Bethesda, Maryland the\n# the time was announced as \"diez cinco\"--the same time as here, indicating\n# that has indeed switched to DST. Assume second Sunday from 2009 forward.\n\n# From Steffen Thorsen (2011-03-08):\n# Granma announced that Cuba is going to start DST on 2011-03-20 00:00:00\n# this year. Nothing about the end date known so far (if that has\n# changed at all).\n#\n# Source:\n# <a href=\"http://granma.co.cu/2011/03/08/nacional/artic01.html\">\n# http://granma.co.cu/2011/03/08/nacional/artic01.html\n# </a>\n#\n# Our info:\n# <a href=\"http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html\">\n# http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html\n# </a>\n#\n# From Steffen Thorsen (2011-10-30)\n# Cuba will end DST two weeks later this year. Instead of going back\n# tonight, it has been delayed to 2011-11-13 at 01:00.\n#\n# One source (Spanish)\n# <a href=\"http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html\">\n# http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html\n# </a>\n#\n# Our page:\n# <a href=\"http://www.timeanddate.com/news/time/cuba-time-changes-2011.html\">\n# http://www.timeanddate.com/news/time/cuba-time-changes-2011.html\n# </a>\n#\n# From Steffen Thorsen (2012-03-01)\n# According to Radio Reloj, Cuba will start DST on Midnight between March\n# 31 and April 1.\n#\n# Radio Reloj has the following info (Spanish):\n# <a href=\"http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril\">\n# http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril\n# </a>\n#\n# Our info on it:\n# <a href=\"http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html\">\n# http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html\n# </a>\n\n# From Steffen Thorsen (2012-11-03):\n# Radio Reloj and many other sources report that Cuba is changing back\n# to standard time on 2012-11-04:\n# http://www.radioreloj.cu/index.php/noticias-radio-reloj/36-nacionales/9961-regira-horario-normal-en-cuba-desde-el-domingo-cuatro-de-noviembre\n# From Paul Eggert (2012-11-03):\n# For now, assume the future rule is first Sunday in November.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tCuba\t1928\tonly\t-\tJun\t10\t0:00\t1:00\tD\nRule\tCuba\t1928\tonly\t-\tOct\t10\t0:00\t0\tS\nRule\tCuba\t1940\t1942\t-\tJun\tSun>=1\t0:00\t1:00\tD\nRule\tCuba\t1940\t1942\t-\tSep\tSun>=1\t0:00\t0\tS\nRule\tCuba\t1945\t1946\t-\tJun\tSun>=1\t0:00\t1:00\tD\nRule\tCuba\t1945\t1946\t-\tSep\tSun>=1\t0:00\t0\tS\nRule\tCuba\t1965\tonly\t-\tJun\t1\t0:00\t1:00\tD\nRule\tCuba\t1965\tonly\t-\tSep\t30\t0:00\t0\tS\nRule\tCuba\t1966\tonly\t-\tMay\t29\t0:00\t1:00\tD\nRule\tCuba\t1966\tonly\t-\tOct\t2\t0:00\t0\tS\nRule\tCuba\t1967\tonly\t-\tApr\t8\t0:00\t1:00\tD\nRule\tCuba\t1967\t1968\t-\tSep\tSun>=8\t0:00\t0\tS\nRule\tCuba\t1968\tonly\t-\tApr\t14\t0:00\t1:00\tD\nRule\tCuba\t1969\t1977\t-\tApr\tlastSun\t0:00\t1:00\tD\nRule\tCuba\t1969\t1971\t-\tOct\tlastSun\t0:00\t0\tS\nRule\tCuba\t1972\t1974\t-\tOct\t8\t0:00\t0\tS\nRule\tCuba\t1975\t1977\t-\tOct\tlastSun\t0:00\t0\tS\nRule\tCuba\t1978\tonly\t-\tMay\t7\t0:00\t1:00\tD\nRule\tCuba\t1978\t1990\t-\tOct\tSun>=8\t0:00\t0\tS\nRule\tCuba\t1979\t1980\t-\tMar\tSun>=15\t0:00\t1:00\tD\nRule\tCuba\t1981\t1985\t-\tMay\tSun>=5\t0:00\t1:00\tD\nRule\tCuba\t1986\t1989\t-\tMar\tSun>=14\t0:00\t1:00\tD\nRule\tCuba\t1990\t1997\t-\tApr\tSun>=1\t0:00\t1:00\tD\nRule\tCuba\t1991\t1995\t-\tOct\tSun>=8\t0:00s\t0\tS\nRule\tCuba\t1996\tonly\t-\tOct\t 6\t0:00s\t0\tS\nRule\tCuba\t1997\tonly\t-\tOct\t12\t0:00s\t0\tS\nRule\tCuba\t1998\t1999\t-\tMar\tlastSun\t0:00s\t1:00\tD\nRule\tCuba\t1998\t2003\t-\tOct\tlastSun\t0:00s\t0\tS\nRule\tCuba\t2000\t2004\t-\tApr\tSun>=1\t0:00s\t1:00\tD\nRule\tCuba\t2006\t2010\t-\tOct\tlastSun\t0:00s\t0\tS\nRule\tCuba\t2007\tonly\t-\tMar\tSun>=8\t0:00s\t1:00\tD\nRule\tCuba\t2008\tonly\t-\tMar\tSun>=15\t0:00s\t1:00\tD\nRule\tCuba\t2009\t2010\t-\tMar\tSun>=8\t0:00s\t1:00\tD\nRule\tCuba\t2011\tonly\t-\tMar\tSun>=15\t0:00s\t1:00\tD\nRule\tCuba\t2011\tonly\t-\tNov\t13\t0:00s\t0\tS\nRule\tCuba\t2012\tonly\t-\tApr\t1\t0:00s\t1:00\tD\nRule\tCuba\t2012\tmax\t-\tNov\tSun>=1\t0:00s\t0\tS\nRule\tCuba\t2013\tmax\t-\tMar\tSun>=8\t0:00s\t1:00\tD\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Havana\t-5:29:28 -\tLMT\t1890\n\t\t\t-5:29:36 -\tHMT\t1925 Jul 19 12:00 # Havana MT\n\t\t\t-5:00\tCuba\tC%sT\n\n# Dominica\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Dominica\t-4:05:36 -\tLMT\t1911 Jul 1 0:01\t\t# Roseau\n\t\t\t-4:00\t-\tAST\n\n# Dominican Republic\n\n# From Steffen Thorsen (2000-10-30):\n# Enrique Morales reported to me that the Dominican Republic has changed the\n# time zone to Eastern Standard Time as of Sunday 29 at 2 am....\n# http://www.listin.com.do/antes/261000/republica/princi.html\n\n# From Paul Eggert (2000-12-04):\n# That URL (2000-10-26, in Spanish) says they planned to use US-style DST.\n\n# From Rives McDow (2000-12-01):\n# Dominican Republic changed its mind and presidential decree on Tuesday,\n# November 28, 2000, with a new decree.  On Sunday, December 3 at 1:00 AM the\n# Dominican Republic will be reverting to 8 hours from the International Date\n# Line, and will not be using DST in the foreseeable future.  The reason they\n# decided to use DST was to be in synch with Puerto Rico, who was also going\n# to implement DST.  When Puerto Rico didn't implement DST, the president\n# decided to revert.\n\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tDR\t1966\tonly\t-\tOct\t30\t0:00\t1:00\tD\nRule\tDR\t1967\tonly\t-\tFeb\t28\t0:00\t0\tS\nRule\tDR\t1969\t1973\t-\tOct\tlastSun\t0:00\t0:30\tHD\nRule\tDR\t1970\tonly\t-\tFeb\t21\t0:00\t0\tS\nRule\tDR\t1971\tonly\t-\tJan\t20\t0:00\t0\tS\nRule\tDR\t1972\t1974\t-\tJan\t21\t0:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Santo_Domingo -4:39:36 -\tLMT\t1890\n\t\t\t-4:40\t-\tSDMT\t1933 Apr  1 12:00 # S. Dom. MT\n\t\t\t-5:00\tDR\tE%sT\t1974 Oct 27\n\t\t\t-4:00\t-\tAST\t2000 Oct 29 02:00\n\t\t\t-5:00\tUS\tE%sT\t2000 Dec  3 01:00\n\t\t\t-4:00\t-\tAST\n\n# El Salvador\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tSalv\t1987\t1988\t-\tMay\tSun>=1\t0:00\t1:00\tD\nRule\tSalv\t1987\t1988\t-\tSep\tlastSun\t0:00\t0\tS\n# There are too many San Salvadors elsewhere, so use America/El_Salvador\n# instead of America/San_Salvador.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/El_Salvador -5:56:48 -\tLMT\t1921\t\t# San Salvador\n\t\t\t-6:00\tSalv\tC%sT\n\n# Grenada\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Grenada\t-4:07:00 -\tLMT\t1911 Jul\t# St George's\n\t\t\t-4:00\t-\tAST\n\n# Guadeloupe\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Guadeloupe\t-4:06:08 -\tLMT\t1911 Jun 8\t# Pointe a Pitre\n\t\t\t-4:00\t-\tAST\n# St Barthelemy\nLink America/Guadeloupe\tAmerica/St_Barthelemy\n# St Martin (French part)\nLink America/Guadeloupe\tAmerica/Marigot\n\n# Guatemala\n#\n# From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:\n# Diario Co Latino, at\n# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,\n# says in an article dated 2006-04-19 that the Guatemalan government had\n# decided on that date to advance official time by 60 minutes, to lessen the\n# impact of the elevated cost of oil....  Daylight saving time will last from\n# 2006-04-29 24:00 (Guatemalan standard time) to 2006-09-30 (time unspecified).\n# From Paul Eggert (2006-06-22):\n# The Ministry of Energy and Mines, press release CP-15/2006\n# (2006-04-19), says DST ends at 24:00.  See\n# <http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf>.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tGuat\t1973\tonly\t-\tNov\t25\t0:00\t1:00\tD\nRule\tGuat\t1974\tonly\t-\tFeb\t24\t0:00\t0\tS\nRule\tGuat\t1983\tonly\t-\tMay\t21\t0:00\t1:00\tD\nRule\tGuat\t1983\tonly\t-\tSep\t22\t0:00\t0\tS\nRule\tGuat\t1991\tonly\t-\tMar\t23\t0:00\t1:00\tD\nRule\tGuat\t1991\tonly\t-\tSep\t 7\t0:00\t0\tS\nRule\tGuat\t2006\tonly\t-\tApr\t30\t0:00\t1:00\tD\nRule\tGuat\t2006\tonly\t-\tOct\t 1\t0:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Guatemala\t-6:02:04 -\tLMT\t1918 Oct 5\n\t\t\t-6:00\tGuat\tC%sT\n\n# Haiti\n# From Gwillim Law (2005-04-15):\n# Risto O. Nykanen wrote me that Haiti is now on DST.\n# I searched for confirmation, and I found a\n# <a href=\"http://www.haitianconsulate.org/time.doc\"> press release\n# on the Web page of the Haitian Consulate in Chicago (2005-03-31),\n# </a>.  Translated from French, it says:\n#\n#  \"The Prime Minister's Communication Office notifies the public in general\n#   and the press in particular that, following a decision of the Interior\n#   Ministry and the Territorial Collectivities [I suppose that means the\n#   provinces], Haiti will move to Eastern Daylight Time in the night from next\n#   Saturday the 2nd to Sunday the 3rd.\n#\n#  \"Consequently, the Prime Minister's Communication Office wishes to inform\n#   the population that the country's clocks will be set forward one hour\n#   starting at midnight.  This provision will hold until the last Saturday in\n#   October 2005.\n#\n#  \"Port-au-Prince, March 31, 2005\"\n#\n# From Steffen Thorsen (2006-04-04):\n# I have been informed by users that Haiti observes DST this year like\n# last year, so the current \"only\" rule for 2005 might be changed to a\n# \"max\" rule or to last until 2006. (Who knows if they will observe DST\n# next year or if they will extend their DST like US/Canada next year).\n#\n# I have found this article about it (in French):\n# http://www.haitipressnetwork.com/news.cfm?articleID=7612\n#\n# The reason seems to be an energy crisis.\n\n# From Stephen Colebourne (2007-02-22):\n# Some IATA info: Haiti won't be having DST in 2007.\n\n# From Steffen Thorsen (2012-03-11):\n# According to several news sources, Haiti will observe DST this year,\n# apparently using the same start and end date as USA/Canada.\n# So this means they have already changed their time.\n#\n# (Sources in French):\n# <a href=\"http://www.alterpresse.org/spip.php?article12510\">\n# http://www.alterpresse.org/spip.php?article12510\n# </a>\n# <a href=\"http://radiovision2000haiti.net/home/?p=13253\">\n# http://radiovision2000haiti.net/home/?p=13253\n# </a>\n#\n# Our coverage:\n# <a href=\"http://www.timeanddate.com/news/time/haiti-dst-2012.html\">\n# http://www.timeanddate.com/news/time/haiti-dst-2012.html\n# </a>\n\n# From Arthur David Olson (2012-03-11):\n# The alterpresse.org source seems to show a US-style leap from 2:00 a.m. to\n# 3:00 a.m. rather than the traditional Haitian jump at midnight.\n# Assume a US-style fall back as well XXX.\n# Do not yet assume that the change carries forward past 2012 XXX.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tHaiti\t1983\tonly\t-\tMay\t8\t0:00\t1:00\tD\nRule\tHaiti\t1984\t1987\t-\tApr\tlastSun\t0:00\t1:00\tD\nRule\tHaiti\t1983\t1987\t-\tOct\tlastSun\t0:00\t0\tS\n# Shanks & Pottenger say AT is 2:00, but IATA SSIM (1991/1997) says 1:00s.\n# Go with IATA.\nRule\tHaiti\t1988\t1997\t-\tApr\tSun>=1\t1:00s\t1:00\tD\nRule\tHaiti\t1988\t1997\t-\tOct\tlastSun\t1:00s\t0\tS\nRule\tHaiti\t2005\t2006\t-\tApr\tSun>=1\t0:00\t1:00\tD\nRule\tHaiti\t2005\t2006\t-\tOct\tlastSun\t0:00\t0\tS\nRule\tHaiti\t2012\tonly\t-\tMar\tSun>=8\t2:00\t1:00\tD\nRule\tHaiti\t2012\tonly\t-\tNov\tSun>=1\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Port-au-Prince -4:49:20 -\tLMT\t1890\n\t\t\t-4:49\t-\tPPMT\t1917 Jan 24 12:00 # P-a-P MT\n\t\t\t-5:00\tHaiti\tE%sT\n\n# Honduras\n# Shanks & Pottenger say 1921 Jan 1; go with Whitman's more precise Apr 1.\n\n# From Paul Eggert (2006-05-05):\n# worldtimezone.com reports a 2006-05-02 Spanish-language AP article\n# saying Honduras will start using DST midnight Saturday, effective 4\n# months until September.  La Tribuna reported today\n# <http://www.latribuna.hn/99299.html> that Manuel Zelaya, the president\n# of Honduras, refused to back down on this.\n\n# From Jesper Norgaard Welen (2006-08-08):\n# It seems that Honduras has returned from DST to standard time this Monday at\n# 00:00 hours (prolonging Sunday to 25 hours duration).\n# http://www.worldtimezone.com/dst_news/dst_news_honduras04.html\n\n# From Paul Eggert (2006-08-08):\n# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)\n# <http://www.elheraldo.hn/nota.php?nid=54941&sec=12>.\n# It mentions executive decree 18-2006.\n\n# From Steffen Thorsen (2006-08-17):\n# Honduras will observe DST from 2007 to 2009, exact dates are not\n# published, I have located this authoritative source:\n# http://www.presidencia.gob.hn/noticia.aspx?nId=47\n\n# From Steffen Thorsen (2007-03-30):\n# http://www.laprensahn.com/pais_nota.php?id04962=7386\n# So it seems that Honduras will not enter DST this year....\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tHond\t1987\t1988\t-\tMay\tSun>=1\t0:00\t1:00\tD\nRule\tHond\t1987\t1988\t-\tSep\tlastSun\t0:00\t0\tS\nRule\tHond\t2006\tonly\t-\tMay\tSun>=1\t0:00\t1:00\tD\nRule\tHond\t2006\tonly\t-\tAug\tMon>=1\t0:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Tegucigalpa -5:48:52 -\tLMT\t1921 Apr\n\t\t\t-6:00\tHond\tC%sT\n#\n# Great Swan I ceded by US to Honduras in 1972\n\n# Jamaica\n\n# From Bob Devine (1988-01-28):\n# Follows US rules.\n\n# From U. S. Naval Observatory (1989-01-19):\n# JAMAICA             5 H  BEHIND UTC\n\n# From Shanks & Pottenger:\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Jamaica\t-5:07:12 -\tLMT\t1890\t\t# Kingston\n\t\t\t-5:07:12 -\tKMT\t1912 Feb    # Kingston Mean Time\n\t\t\t-5:00\t-\tEST\t1974 Apr 28 2:00\n\t\t\t-5:00\tUS\tE%sT\t1984\n\t\t\t-5:00\t-\tEST\n\n# Martinique\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Martinique\t-4:04:20 -      LMT\t1890\t\t# Fort-de-France\n\t\t\t-4:04:20 -\tFFMT\t1911 May     # Fort-de-France MT\n\t\t\t-4:00\t-\tAST\t1980 Apr  6\n\t\t\t-4:00\t1:00\tADT\t1980 Sep 28\n\t\t\t-4:00\t-\tAST\n\n# Montserrat\n# From Paul Eggert (2006-03-22):\n# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital.\n# world.gazetteer.com says Cork Hill is the most populous location now.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Montserrat\t-4:08:52 -\tLMT\t1911 Jul 1 0:01   # Cork Hill\n\t\t\t-4:00\t-\tAST\n\n# Nicaragua\n#\n# This uses Shanks & Pottenger for times before 2005.\n#\n# From Steffen Thorsen (2005-04-12):\n# I've got reports from 8 different people that Nicaragua just started\n# DST on Sunday 2005-04-10, in order to save energy because of\n# expensive petroleum.  The exact end date for DST is not yet\n# announced, only \"September\" but some sites also say \"mid-September\".\n# Some background information is available on the President's official site:\n# http://www.presidencia.gob.ni/Presidencia/Files_index/Secretaria/Notas%20de%20Prensa/Presidente/2005/ABRIL/Gobierno-de-nicaragua-adelanta-hora-oficial-06abril.htm\n# The Decree, no 23-2005 is available here:\n# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2005/Decreto%2023-2005%20Se%20adelanta%20en%20una%20hora%20en%20todo%20el%20territorio%20nacional%20apartir%20de%20las%2024horas%20del%2009%20de%20Abril.pdf\n#\n# From Paul Eggert (2005-05-01):\n# The decree doesn't say anything about daylight saving, but for now let's\n# assume that it is daylight saving....\n#\n# From Gwillim Law (2005-04-21):\n# The Associated Press story on the time change, which can be found at\n# http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html\n# and elsewhere, says (fifth paragraph, translated from Spanish):  \"The last\n# time that a change of clocks was applied to save energy was in the year 2000\n# during the Arnoldo Aleman administration.\"...\n# The northamerica file says that Nicaragua has been on UTC-6 continuously\n# since December 1998.  I wasn't able to find any details of Nicaraguan time\n# changes in 2000.  Perhaps a note could be added to the northamerica file, to\n# the effect that we have indirect evidence that DST was observed in 2000.\n#\n# From Jesper Norgaard Welen (2005-11-02):\n# Nicaragua left DST the 2005-10-02 at 00:00 (local time).\n# http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm\n# (2005-09-26)\n#\n# From Jesper Norgaard Welen (2006-05-05):\n# http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410\n# (my informal translation)\n# By order of the president of the republic, Enrique Bolanos, Nicaragua\n# advanced by sixty minutes their official time, yesterday at 2 in the\n# morning, and will stay that way until 30.th. of september.\n#\n# From Jesper Norgaard Welen (2006-09-30):\n# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf\n# My informal translation runs:\n# The natural sun time is restored in all the national territory, in that the\n# time is returned one hour at 01:00 am of October 1 of 2006.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tNic\t1979\t1980\t-\tMar\tSun>=16\t0:00\t1:00\tD\nRule\tNic\t1979\t1980\t-\tJun\tMon>=23\t0:00\t0\tS\nRule\tNic\t2005\tonly\t-\tApr\t10\t0:00\t1:00\tD\nRule\tNic\t2005\tonly\t-\tOct\tSun>=1\t0:00\t0\tS\nRule\tNic\t2006\tonly\t-\tApr\t30\t2:00\t1:00\tD\nRule\tNic\t2006\tonly\t-\tOct\tSun>=1\t1:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Managua\t-5:45:08 -\tLMT\t1890\n\t\t\t-5:45:12 -\tMMT\t1934 Jun 23 # Managua Mean Time?\n\t\t\t-6:00\t-\tCST\t1973 May\n\t\t\t-5:00\t-\tEST\t1975 Feb 16\n\t\t\t-6:00\tNic\tC%sT\t1992 Jan  1 4:00\n\t\t\t-5:00\t-\tEST\t1992 Sep 24\n\t\t\t-6:00\t-\tCST\t1993\n\t\t\t-5:00\t-\tEST\t1997\n\t\t\t-6:00\tNic\tC%sT\n\n# Panama\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Panama\t-5:18:08 -\tLMT\t1890\n\t\t\t-5:19:36 -\tCMT\t1908 Apr 22   # Colon Mean Time\n\t\t\t-5:00\t-\tEST\n\n# Puerto Rico\n# There are too many San Juans elsewhere, so we'll use `Puerto_Rico'.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Puerto_Rico -4:24:25 -\tLMT\t1899 Mar 28 12:00    # San Juan\n\t\t\t-4:00\t-\tAST\t1942 May  3\n\t\t\t-4:00\tUS\tA%sT\t1946\n\t\t\t-4:00\t-\tAST\n\n# St Kitts-Nevis\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/St_Kitts\t-4:10:52 -\tLMT\t1912 Mar 2\t# Basseterre\n\t\t\t-4:00\t-\tAST\n\n# St Lucia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/St_Lucia\t-4:04:00 -\tLMT\t1890\t\t# Castries\n\t\t\t-4:04:00 -\tCMT\t1912\t    # Castries Mean Time\n\t\t\t-4:00\t-\tAST\n\n# St Pierre and Miquelon\n# There are too many St Pierres elsewhere, so we'll use `Miquelon'.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Miquelon\t-3:44:40 -\tLMT\t1911 May 15\t# St Pierre\n\t\t\t-4:00\t-\tAST\t1980 May\n\t\t\t-3:00\t-\tPMST\t1987 # Pierre & Miquelon Time\n\t\t\t-3:00\tCanada\tPM%sT\n\n# St Vincent and the Grenadines\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/St_Vincent\t-4:04:56 -\tLMT\t1890\t\t# Kingstown\n\t\t\t-4:04:56 -\tKMT\t1912\t   # Kingstown Mean Time\n\t\t\t-4:00\t-\tAST\n\n# Turks and Caicos\n#\n# From Chris Dunn in\n# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415007>\n# (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the\n# daylight saving dates for time changes have been adjusted to match\n# the recent U.S. change of dates.\n#\n# From Brian Inglis (2007-04-28):\n# http://www.turksandcaicos.tc/calendar/index.htm [2007-04-26]\n# there is an entry for Nov 4 \"Daylight Savings Time Ends 2007\" and three\n# rows before that there is an out of date entry for Oct:\n# \"Eastern Standard Times Begins 2007\n# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time\"\n# indicating that the normal ET rules are followed.\n#\n# From Paul Eggert (2006-05-01):\n# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)\n# says they switch at midnight.  Go with Shanks & Pottenger.\n#\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tTC\t1979\t1986\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tTC\t1979\t2006\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tTC\t1987\t2006\t-\tApr\tSun>=1\t2:00\t1:00\tD\nRule\tTC\t2007\tmax\t-\tMar\tSun>=8\t2:00\t1:00\tD\nRule\tTC\t2007\tmax\t-\tNov\tSun>=1\t2:00\t0\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Grand_Turk\t-4:44:32 -\tLMT\t1890\n\t\t\t-5:07:12 -\tKMT\t1912 Feb    # Kingston Mean Time\n\t\t\t-5:00\tTC\tE%sT\n\n# British Virgin Is\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Tortola\t-4:18:28 -\tLMT\t1911 Jul    # Road Town\n\t\t\t-4:00\t-\tAST\n\n# Virgin Is\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/St_Thomas\t-4:19:44 -\tLMT\t1911 Jul    # Charlotte Amalie\n\t\t\t-4:00\t-\tAST\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/pacificnew",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# From Arthur David Olson (1989-04-05):\n# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill\n# establishing \"Pacific Presidential Election Time\"; it was not acted on\n# by the Senate or signed into law by the President.\n# You might want to change the \"PE\" (Presidential Election) below to\n# \"Q\" (Quadrennial) to maintain three-character zone abbreviations.\n# If you're really conservative, you might want to change it to \"D\".\n# Avoid \"L\" (Leap Year), which won't be true in 2100.\n\n# If Presidential Election Time is ever established, replace \"XXXX\" below\n# with the year the law takes effect and uncomment the \"##\" lines.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n## Rule\tTwilite\tXXXX\tmax\t-\tApr\tSun>=1\t2:00\t1:00\tD\n## Rule\tTwilite\tXXXX\tmax\tuspres\tOct\tlastSun\t2:00\t1:00\tPE\n## Rule\tTwilite\tXXXX\tmax\tuspres\tNov\tSun>=7\t2:00\t0\tS\n## Rule\tTwilite\tXXXX\tmax\tnonpres\tOct\tlastSun\t2:00\t0\tS\n\n# Zone\tNAME\t\t\tGMTOFF\tRULES/SAVE\tFORMAT\t[UNTIL]\n## Zone\tAmerica/Los_Angeles-PET\t-8:00\tUS\t\tP%sT\tXXXX\n##\t\t\t\t-8:00\tTwilite\t\tP%sT\n\n# For now...\nLink\tAmerica/Los_Angeles\tUS/Pacific-New\t##\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/solar87",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# So much for footnotes about Saudi Arabia.\n# Apparent noon times below are for Riyadh; your mileage will vary.\n# Times were computed using formulas in the U.S. Naval Observatory's\n# Almanac for Computers 1987; the formulas \"will give EqT to an accuracy of\n# [plus or minus two] seconds during the current year.\"\n#\n# Rounding to the nearest five seconds results in fewer than\n# 256 different \"time types\"--a limit that's faced because time types are\n# stored on disk as unsigned chars.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tsol87\t1987\tonly\t-\tJan\t1\t12:03:20s -0:03:20 -\nRule\tsol87\t1987\tonly\t-\tJan\t2\t12:03:50s -0:03:50 -\nRule\tsol87\t1987\tonly\t-\tJan\t3\t12:04:15s -0:04:15 -\nRule\tsol87\t1987\tonly\t-\tJan\t4\t12:04:45s -0:04:45 -\nRule\tsol87\t1987\tonly\t-\tJan\t5\t12:05:10s -0:05:10 -\nRule\tsol87\t1987\tonly\t-\tJan\t6\t12:05:40s -0:05:40 -\nRule\tsol87\t1987\tonly\t-\tJan\t7\t12:06:05s -0:06:05 -\nRule\tsol87\t1987\tonly\t-\tJan\t8\t12:06:30s -0:06:30 -\nRule\tsol87\t1987\tonly\t-\tJan\t9\t12:06:55s -0:06:55 -\nRule\tsol87\t1987\tonly\t-\tJan\t10\t12:07:20s -0:07:20 -\nRule\tsol87\t1987\tonly\t-\tJan\t11\t12:07:45s -0:07:45 -\nRule\tsol87\t1987\tonly\t-\tJan\t12\t12:08:10s -0:08:10 -\nRule\tsol87\t1987\tonly\t-\tJan\t13\t12:08:30s -0:08:30 -\nRule\tsol87\t1987\tonly\t-\tJan\t14\t12:08:55s -0:08:55 -\nRule\tsol87\t1987\tonly\t-\tJan\t15\t12:09:15s -0:09:15 -\nRule\tsol87\t1987\tonly\t-\tJan\t16\t12:09:35s -0:09:35 -\nRule\tsol87\t1987\tonly\t-\tJan\t17\t12:09:55s -0:09:55 -\nRule\tsol87\t1987\tonly\t-\tJan\t18\t12:10:15s -0:10:15 -\nRule\tsol87\t1987\tonly\t-\tJan\t19\t12:10:35s -0:10:35 -\nRule\tsol87\t1987\tonly\t-\tJan\t20\t12:10:55s -0:10:55 -\nRule\tsol87\t1987\tonly\t-\tJan\t21\t12:11:10s -0:11:10 -\nRule\tsol87\t1987\tonly\t-\tJan\t22\t12:11:30s -0:11:30 -\nRule\tsol87\t1987\tonly\t-\tJan\t23\t12:11:45s -0:11:45 -\nRule\tsol87\t1987\tonly\t-\tJan\t24\t12:12:00s -0:12:00 -\nRule\tsol87\t1987\tonly\t-\tJan\t25\t12:12:15s -0:12:15 -\nRule\tsol87\t1987\tonly\t-\tJan\t26\t12:12:30s -0:12:30 -\nRule\tsol87\t1987\tonly\t-\tJan\t27\t12:12:40s -0:12:40 -\nRule\tsol87\t1987\tonly\t-\tJan\t28\t12:12:55s -0:12:55 -\nRule\tsol87\t1987\tonly\t-\tJan\t29\t12:13:05s -0:13:05 -\nRule\tsol87\t1987\tonly\t-\tJan\t30\t12:13:15s -0:13:15 -\nRule\tsol87\t1987\tonly\t-\tJan\t31\t12:13:25s -0:13:25 -\nRule\tsol87\t1987\tonly\t-\tFeb\t1\t12:13:35s -0:13:35 -\nRule\tsol87\t1987\tonly\t-\tFeb\t2\t12:13:40s -0:13:40 -\nRule\tsol87\t1987\tonly\t-\tFeb\t3\t12:13:50s -0:13:50 -\nRule\tsol87\t1987\tonly\t-\tFeb\t4\t12:13:55s -0:13:55 -\nRule\tsol87\t1987\tonly\t-\tFeb\t5\t12:14:00s -0:14:00 -\nRule\tsol87\t1987\tonly\t-\tFeb\t6\t12:14:05s -0:14:05 -\nRule\tsol87\t1987\tonly\t-\tFeb\t7\t12:14:10s -0:14:10 -\nRule\tsol87\t1987\tonly\t-\tFeb\t8\t12:14:10s -0:14:10 -\nRule\tsol87\t1987\tonly\t-\tFeb\t9\t12:14:15s -0:14:15 -\nRule\tsol87\t1987\tonly\t-\tFeb\t10\t12:14:15s -0:14:15 -\nRule\tsol87\t1987\tonly\t-\tFeb\t11\t12:14:15s -0:14:15 -\nRule\tsol87\t1987\tonly\t-\tFeb\t12\t12:14:15s -0:14:15 -\nRule\tsol87\t1987\tonly\t-\tFeb\t13\t12:14:15s -0:14:15 -\nRule\tsol87\t1987\tonly\t-\tFeb\t14\t12:14:15s -0:14:15 -\nRule\tsol87\t1987\tonly\t-\tFeb\t15\t12:14:10s -0:14:10 -\nRule\tsol87\t1987\tonly\t-\tFeb\t16\t12:14:10s -0:14:10 -\nRule\tsol87\t1987\tonly\t-\tFeb\t17\t12:14:05s -0:14:05 -\nRule\tsol87\t1987\tonly\t-\tFeb\t18\t12:14:00s -0:14:00 -\nRule\tsol87\t1987\tonly\t-\tFeb\t19\t12:13:55s -0:13:55 -\nRule\tsol87\t1987\tonly\t-\tFeb\t20\t12:13:50s -0:13:50 -\nRule\tsol87\t1987\tonly\t-\tFeb\t21\t12:13:45s -0:13:45 -\nRule\tsol87\t1987\tonly\t-\tFeb\t22\t12:13:35s -0:13:35 -\nRule\tsol87\t1987\tonly\t-\tFeb\t23\t12:13:30s -0:13:30 -\nRule\tsol87\t1987\tonly\t-\tFeb\t24\t12:13:20s -0:13:20 -\nRule\tsol87\t1987\tonly\t-\tFeb\t25\t12:13:10s -0:13:10 -\nRule\tsol87\t1987\tonly\t-\tFeb\t26\t12:13:00s -0:13:00 -\nRule\tsol87\t1987\tonly\t-\tFeb\t27\t12:12:50s -0:12:50 -\nRule\tsol87\t1987\tonly\t-\tFeb\t28\t12:12:40s -0:12:40 -\nRule\tsol87\t1987\tonly\t-\tMar\t1\t12:12:30s -0:12:30 -\nRule\tsol87\t1987\tonly\t-\tMar\t2\t12:12:20s -0:12:20 -\nRule\tsol87\t1987\tonly\t-\tMar\t3\t12:12:05s -0:12:05 -\nRule\tsol87\t1987\tonly\t-\tMar\t4\t12:11:55s -0:11:55 -\nRule\tsol87\t1987\tonly\t-\tMar\t5\t12:11:40s -0:11:40 -\nRule\tsol87\t1987\tonly\t-\tMar\t6\t12:11:25s -0:11:25 -\nRule\tsol87\t1987\tonly\t-\tMar\t7\t12:11:15s -0:11:15 -\nRule\tsol87\t1987\tonly\t-\tMar\t8\t12:11:00s -0:11:00 -\nRule\tsol87\t1987\tonly\t-\tMar\t9\t12:10:45s -0:10:45 -\nRule\tsol87\t1987\tonly\t-\tMar\t10\t12:10:30s -0:10:30 -\nRule\tsol87\t1987\tonly\t-\tMar\t11\t12:10:15s -0:10:15 -\nRule\tsol87\t1987\tonly\t-\tMar\t12\t12:09:55s -0:09:55 -\nRule\tsol87\t1987\tonly\t-\tMar\t13\t12:09:40s -0:09:40 -\nRule\tsol87\t1987\tonly\t-\tMar\t14\t12:09:25s -0:09:25 -\nRule\tsol87\t1987\tonly\t-\tMar\t15\t12:09:10s -0:09:10 -\nRule\tsol87\t1987\tonly\t-\tMar\t16\t12:08:50s -0:08:50 -\nRule\tsol87\t1987\tonly\t-\tMar\t17\t12:08:35s -0:08:35 -\nRule\tsol87\t1987\tonly\t-\tMar\t18\t12:08:15s -0:08:15 -\nRule\tsol87\t1987\tonly\t-\tMar\t19\t12:08:00s -0:08:00 -\nRule\tsol87\t1987\tonly\t-\tMar\t20\t12:07:40s -0:07:40 -\nRule\tsol87\t1987\tonly\t-\tMar\t21\t12:07:25s -0:07:25 -\nRule\tsol87\t1987\tonly\t-\tMar\t22\t12:07:05s -0:07:05 -\nRule\tsol87\t1987\tonly\t-\tMar\t23\t12:06:50s -0:06:50 -\nRule\tsol87\t1987\tonly\t-\tMar\t24\t12:06:30s -0:06:30 -\nRule\tsol87\t1987\tonly\t-\tMar\t25\t12:06:10s -0:06:10 -\nRule\tsol87\t1987\tonly\t-\tMar\t26\t12:05:55s -0:05:55 -\nRule\tsol87\t1987\tonly\t-\tMar\t27\t12:05:35s -0:05:35 -\nRule\tsol87\t1987\tonly\t-\tMar\t28\t12:05:15s -0:05:15 -\nRule\tsol87\t1987\tonly\t-\tMar\t29\t12:05:00s -0:05:00 -\nRule\tsol87\t1987\tonly\t-\tMar\t30\t12:04:40s -0:04:40 -\nRule\tsol87\t1987\tonly\t-\tMar\t31\t12:04:25s -0:04:25 -\nRule\tsol87\t1987\tonly\t-\tApr\t1\t12:04:05s -0:04:05 -\nRule\tsol87\t1987\tonly\t-\tApr\t2\t12:03:45s -0:03:45 -\nRule\tsol87\t1987\tonly\t-\tApr\t3\t12:03:30s -0:03:30 -\nRule\tsol87\t1987\tonly\t-\tApr\t4\t12:03:10s -0:03:10 -\nRule\tsol87\t1987\tonly\t-\tApr\t5\t12:02:55s -0:02:55 -\nRule\tsol87\t1987\tonly\t-\tApr\t6\t12:02:35s -0:02:35 -\nRule\tsol87\t1987\tonly\t-\tApr\t7\t12:02:20s -0:02:20 -\nRule\tsol87\t1987\tonly\t-\tApr\t8\t12:02:05s -0:02:05 -\nRule\tsol87\t1987\tonly\t-\tApr\t9\t12:01:45s -0:01:45 -\nRule\tsol87\t1987\tonly\t-\tApr\t10\t12:01:30s -0:01:30 -\nRule\tsol87\t1987\tonly\t-\tApr\t11\t12:01:15s -0:01:15 -\nRule\tsol87\t1987\tonly\t-\tApr\t12\t12:00:55s -0:00:55 -\nRule\tsol87\t1987\tonly\t-\tApr\t13\t12:00:40s -0:00:40 -\nRule\tsol87\t1987\tonly\t-\tApr\t14\t12:00:25s -0:00:25 -\nRule\tsol87\t1987\tonly\t-\tApr\t15\t12:00:10s -0:00:10 -\nRule\tsol87\t1987\tonly\t-\tApr\t16\t11:59:55s 0:00:05 -\nRule\tsol87\t1987\tonly\t-\tApr\t17\t11:59:45s 0:00:15 -\nRule\tsol87\t1987\tonly\t-\tApr\t18\t11:59:30s 0:00:30 -\nRule\tsol87\t1987\tonly\t-\tApr\t19\t11:59:15s 0:00:45 -\nRule\tsol87\t1987\tonly\t-\tApr\t20\t11:59:05s 0:00:55 -\nRule\tsol87\t1987\tonly\t-\tApr\t21\t11:58:50s 0:01:10 -\nRule\tsol87\t1987\tonly\t-\tApr\t22\t11:58:40s 0:01:20 -\nRule\tsol87\t1987\tonly\t-\tApr\t23\t11:58:25s 0:01:35 -\nRule\tsol87\t1987\tonly\t-\tApr\t24\t11:58:15s 0:01:45 -\nRule\tsol87\t1987\tonly\t-\tApr\t25\t11:58:05s 0:01:55 -\nRule\tsol87\t1987\tonly\t-\tApr\t26\t11:57:55s 0:02:05 -\nRule\tsol87\t1987\tonly\t-\tApr\t27\t11:57:45s 0:02:15 -\nRule\tsol87\t1987\tonly\t-\tApr\t28\t11:57:35s 0:02:25 -\nRule\tsol87\t1987\tonly\t-\tApr\t29\t11:57:25s 0:02:35 -\nRule\tsol87\t1987\tonly\t-\tApr\t30\t11:57:15s 0:02:45 -\nRule\tsol87\t1987\tonly\t-\tMay\t1\t11:57:10s 0:02:50 -\nRule\tsol87\t1987\tonly\t-\tMay\t2\t11:57:00s 0:03:00 -\nRule\tsol87\t1987\tonly\t-\tMay\t3\t11:56:55s 0:03:05 -\nRule\tsol87\t1987\tonly\t-\tMay\t4\t11:56:50s 0:03:10 -\nRule\tsol87\t1987\tonly\t-\tMay\t5\t11:56:45s 0:03:15 -\nRule\tsol87\t1987\tonly\t-\tMay\t6\t11:56:40s 0:03:20 -\nRule\tsol87\t1987\tonly\t-\tMay\t7\t11:56:35s 0:03:25 -\nRule\tsol87\t1987\tonly\t-\tMay\t8\t11:56:30s 0:03:30 -\nRule\tsol87\t1987\tonly\t-\tMay\t9\t11:56:25s 0:03:35 -\nRule\tsol87\t1987\tonly\t-\tMay\t10\t11:56:25s 0:03:35 -\nRule\tsol87\t1987\tonly\t-\tMay\t11\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t12\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t13\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t14\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t15\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t16\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t17\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t18\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tMay\t19\t11:56:25s 0:03:35 -\nRule\tsol87\t1987\tonly\t-\tMay\t20\t11:56:25s 0:03:35 -\nRule\tsol87\t1987\tonly\t-\tMay\t21\t11:56:30s 0:03:30 -\nRule\tsol87\t1987\tonly\t-\tMay\t22\t11:56:35s 0:03:25 -\nRule\tsol87\t1987\tonly\t-\tMay\t23\t11:56:40s 0:03:20 -\nRule\tsol87\t1987\tonly\t-\tMay\t24\t11:56:45s 0:03:15 -\nRule\tsol87\t1987\tonly\t-\tMay\t25\t11:56:50s 0:03:10 -\nRule\tsol87\t1987\tonly\t-\tMay\t26\t11:56:55s 0:03:05 -\nRule\tsol87\t1987\tonly\t-\tMay\t27\t11:57:00s 0:03:00 -\nRule\tsol87\t1987\tonly\t-\tMay\t28\t11:57:10s 0:02:50 -\nRule\tsol87\t1987\tonly\t-\tMay\t29\t11:57:15s 0:02:45 -\nRule\tsol87\t1987\tonly\t-\tMay\t30\t11:57:25s 0:02:35 -\nRule\tsol87\t1987\tonly\t-\tMay\t31\t11:57:30s 0:02:30 -\nRule\tsol87\t1987\tonly\t-\tJun\t1\t11:57:40s 0:02:20 -\nRule\tsol87\t1987\tonly\t-\tJun\t2\t11:57:50s 0:02:10 -\nRule\tsol87\t1987\tonly\t-\tJun\t3\t11:58:00s 0:02:00 -\nRule\tsol87\t1987\tonly\t-\tJun\t4\t11:58:10s 0:01:50 -\nRule\tsol87\t1987\tonly\t-\tJun\t5\t11:58:20s 0:01:40 -\nRule\tsol87\t1987\tonly\t-\tJun\t6\t11:58:30s 0:01:30 -\nRule\tsol87\t1987\tonly\t-\tJun\t7\t11:58:40s 0:01:20 -\nRule\tsol87\t1987\tonly\t-\tJun\t8\t11:58:50s 0:01:10 -\nRule\tsol87\t1987\tonly\t-\tJun\t9\t11:59:05s 0:00:55 -\nRule\tsol87\t1987\tonly\t-\tJun\t10\t11:59:15s 0:00:45 -\nRule\tsol87\t1987\tonly\t-\tJun\t11\t11:59:30s 0:00:30 -\nRule\tsol87\t1987\tonly\t-\tJun\t12\t11:59:40s 0:00:20 -\nRule\tsol87\t1987\tonly\t-\tJun\t13\t11:59:50s 0:00:10 -\nRule\tsol87\t1987\tonly\t-\tJun\t14\t12:00:05s -0:00:05 -\nRule\tsol87\t1987\tonly\t-\tJun\t15\t12:00:15s -0:00:15 -\nRule\tsol87\t1987\tonly\t-\tJun\t16\t12:00:30s -0:00:30 -\nRule\tsol87\t1987\tonly\t-\tJun\t17\t12:00:45s -0:00:45 -\nRule\tsol87\t1987\tonly\t-\tJun\t18\t12:00:55s -0:00:55 -\nRule\tsol87\t1987\tonly\t-\tJun\t19\t12:01:10s -0:01:10 -\nRule\tsol87\t1987\tonly\t-\tJun\t20\t12:01:20s -0:01:20 -\nRule\tsol87\t1987\tonly\t-\tJun\t21\t12:01:35s -0:01:35 -\nRule\tsol87\t1987\tonly\t-\tJun\t22\t12:01:50s -0:01:50 -\nRule\tsol87\t1987\tonly\t-\tJun\t23\t12:02:00s -0:02:00 -\nRule\tsol87\t1987\tonly\t-\tJun\t24\t12:02:15s -0:02:15 -\nRule\tsol87\t1987\tonly\t-\tJun\t25\t12:02:25s -0:02:25 -\nRule\tsol87\t1987\tonly\t-\tJun\t26\t12:02:40s -0:02:40 -\nRule\tsol87\t1987\tonly\t-\tJun\t27\t12:02:50s -0:02:50 -\nRule\tsol87\t1987\tonly\t-\tJun\t28\t12:03:05s -0:03:05 -\nRule\tsol87\t1987\tonly\t-\tJun\t29\t12:03:15s -0:03:15 -\nRule\tsol87\t1987\tonly\t-\tJun\t30\t12:03:30s -0:03:30 -\nRule\tsol87\t1987\tonly\t-\tJul\t1\t12:03:40s -0:03:40 -\nRule\tsol87\t1987\tonly\t-\tJul\t2\t12:03:50s -0:03:50 -\nRule\tsol87\t1987\tonly\t-\tJul\t3\t12:04:05s -0:04:05 -\nRule\tsol87\t1987\tonly\t-\tJul\t4\t12:04:15s -0:04:15 -\nRule\tsol87\t1987\tonly\t-\tJul\t5\t12:04:25s -0:04:25 -\nRule\tsol87\t1987\tonly\t-\tJul\t6\t12:04:35s -0:04:35 -\nRule\tsol87\t1987\tonly\t-\tJul\t7\t12:04:45s -0:04:45 -\nRule\tsol87\t1987\tonly\t-\tJul\t8\t12:04:55s -0:04:55 -\nRule\tsol87\t1987\tonly\t-\tJul\t9\t12:05:05s -0:05:05 -\nRule\tsol87\t1987\tonly\t-\tJul\t10\t12:05:15s -0:05:15 -\nRule\tsol87\t1987\tonly\t-\tJul\t11\t12:05:20s -0:05:20 -\nRule\tsol87\t1987\tonly\t-\tJul\t12\t12:05:30s -0:05:30 -\nRule\tsol87\t1987\tonly\t-\tJul\t13\t12:05:40s -0:05:40 -\nRule\tsol87\t1987\tonly\t-\tJul\t14\t12:05:45s -0:05:45 -\nRule\tsol87\t1987\tonly\t-\tJul\t15\t12:05:50s -0:05:50 -\nRule\tsol87\t1987\tonly\t-\tJul\t16\t12:06:00s -0:06:00 -\nRule\tsol87\t1987\tonly\t-\tJul\t17\t12:06:05s -0:06:05 -\nRule\tsol87\t1987\tonly\t-\tJul\t18\t12:06:10s -0:06:10 -\nRule\tsol87\t1987\tonly\t-\tJul\t19\t12:06:15s -0:06:15 -\nRule\tsol87\t1987\tonly\t-\tJul\t20\t12:06:15s -0:06:15 -\nRule\tsol87\t1987\tonly\t-\tJul\t21\t12:06:20s -0:06:20 -\nRule\tsol87\t1987\tonly\t-\tJul\t22\t12:06:25s -0:06:25 -\nRule\tsol87\t1987\tonly\t-\tJul\t23\t12:06:25s -0:06:25 -\nRule\tsol87\t1987\tonly\t-\tJul\t24\t12:06:25s -0:06:25 -\nRule\tsol87\t1987\tonly\t-\tJul\t25\t12:06:30s -0:06:30 -\nRule\tsol87\t1987\tonly\t-\tJul\t26\t12:06:30s -0:06:30 -\nRule\tsol87\t1987\tonly\t-\tJul\t27\t12:06:30s -0:06:30 -\nRule\tsol87\t1987\tonly\t-\tJul\t28\t12:06:30s -0:06:30 -\nRule\tsol87\t1987\tonly\t-\tJul\t29\t12:06:25s -0:06:25 -\nRule\tsol87\t1987\tonly\t-\tJul\t30\t12:06:25s -0:06:25 -\nRule\tsol87\t1987\tonly\t-\tJul\t31\t12:06:25s -0:06:25 -\nRule\tsol87\t1987\tonly\t-\tAug\t1\t12:06:20s -0:06:20 -\nRule\tsol87\t1987\tonly\t-\tAug\t2\t12:06:15s -0:06:15 -\nRule\tsol87\t1987\tonly\t-\tAug\t3\t12:06:10s -0:06:10 -\nRule\tsol87\t1987\tonly\t-\tAug\t4\t12:06:05s -0:06:05 -\nRule\tsol87\t1987\tonly\t-\tAug\t5\t12:06:00s -0:06:00 -\nRule\tsol87\t1987\tonly\t-\tAug\t6\t12:05:55s -0:05:55 -\nRule\tsol87\t1987\tonly\t-\tAug\t7\t12:05:50s -0:05:50 -\nRule\tsol87\t1987\tonly\t-\tAug\t8\t12:05:40s -0:05:40 -\nRule\tsol87\t1987\tonly\t-\tAug\t9\t12:05:35s -0:05:35 -\nRule\tsol87\t1987\tonly\t-\tAug\t10\t12:05:25s -0:05:25 -\nRule\tsol87\t1987\tonly\t-\tAug\t11\t12:05:15s -0:05:15 -\nRule\tsol87\t1987\tonly\t-\tAug\t12\t12:05:05s -0:05:05 -\nRule\tsol87\t1987\tonly\t-\tAug\t13\t12:04:55s -0:04:55 -\nRule\tsol87\t1987\tonly\t-\tAug\t14\t12:04:45s -0:04:45 -\nRule\tsol87\t1987\tonly\t-\tAug\t15\t12:04:35s -0:04:35 -\nRule\tsol87\t1987\tonly\t-\tAug\t16\t12:04:25s -0:04:25 -\nRule\tsol87\t1987\tonly\t-\tAug\t17\t12:04:10s -0:04:10 -\nRule\tsol87\t1987\tonly\t-\tAug\t18\t12:04:00s -0:04:00 -\nRule\tsol87\t1987\tonly\t-\tAug\t19\t12:03:45s -0:03:45 -\nRule\tsol87\t1987\tonly\t-\tAug\t20\t12:03:30s -0:03:30 -\nRule\tsol87\t1987\tonly\t-\tAug\t21\t12:03:15s -0:03:15 -\nRule\tsol87\t1987\tonly\t-\tAug\t22\t12:03:00s -0:03:00 -\nRule\tsol87\t1987\tonly\t-\tAug\t23\t12:02:45s -0:02:45 -\nRule\tsol87\t1987\tonly\t-\tAug\t24\t12:02:30s -0:02:30 -\nRule\tsol87\t1987\tonly\t-\tAug\t25\t12:02:15s -0:02:15 -\nRule\tsol87\t1987\tonly\t-\tAug\t26\t12:02:00s -0:02:00 -\nRule\tsol87\t1987\tonly\t-\tAug\t27\t12:01:40s -0:01:40 -\nRule\tsol87\t1987\tonly\t-\tAug\t28\t12:01:25s -0:01:25 -\nRule\tsol87\t1987\tonly\t-\tAug\t29\t12:01:05s -0:01:05 -\nRule\tsol87\t1987\tonly\t-\tAug\t30\t12:00:50s -0:00:50 -\nRule\tsol87\t1987\tonly\t-\tAug\t31\t12:00:30s -0:00:30 -\nRule\tsol87\t1987\tonly\t-\tSep\t1\t12:00:10s -0:00:10 -\nRule\tsol87\t1987\tonly\t-\tSep\t2\t11:59:50s 0:00:10 -\nRule\tsol87\t1987\tonly\t-\tSep\t3\t11:59:35s 0:00:25 -\nRule\tsol87\t1987\tonly\t-\tSep\t4\t11:59:15s 0:00:45 -\nRule\tsol87\t1987\tonly\t-\tSep\t5\t11:58:55s 0:01:05 -\nRule\tsol87\t1987\tonly\t-\tSep\t6\t11:58:35s 0:01:25 -\nRule\tsol87\t1987\tonly\t-\tSep\t7\t11:58:15s 0:01:45 -\nRule\tsol87\t1987\tonly\t-\tSep\t8\t11:57:55s 0:02:05 -\nRule\tsol87\t1987\tonly\t-\tSep\t9\t11:57:30s 0:02:30 -\nRule\tsol87\t1987\tonly\t-\tSep\t10\t11:57:10s 0:02:50 -\nRule\tsol87\t1987\tonly\t-\tSep\t11\t11:56:50s 0:03:10 -\nRule\tsol87\t1987\tonly\t-\tSep\t12\t11:56:30s 0:03:30 -\nRule\tsol87\t1987\tonly\t-\tSep\t13\t11:56:10s 0:03:50 -\nRule\tsol87\t1987\tonly\t-\tSep\t14\t11:55:45s 0:04:15 -\nRule\tsol87\t1987\tonly\t-\tSep\t15\t11:55:25s 0:04:35 -\nRule\tsol87\t1987\tonly\t-\tSep\t16\t11:55:05s 0:04:55 -\nRule\tsol87\t1987\tonly\t-\tSep\t17\t11:54:45s 0:05:15 -\nRule\tsol87\t1987\tonly\t-\tSep\t18\t11:54:20s 0:05:40 -\nRule\tsol87\t1987\tonly\t-\tSep\t19\t11:54:00s 0:06:00 -\nRule\tsol87\t1987\tonly\t-\tSep\t20\t11:53:40s 0:06:20 -\nRule\tsol87\t1987\tonly\t-\tSep\t21\t11:53:15s 0:06:45 -\nRule\tsol87\t1987\tonly\t-\tSep\t22\t11:52:55s 0:07:05 -\nRule\tsol87\t1987\tonly\t-\tSep\t23\t11:52:35s 0:07:25 -\nRule\tsol87\t1987\tonly\t-\tSep\t24\t11:52:15s 0:07:45 -\nRule\tsol87\t1987\tonly\t-\tSep\t25\t11:51:55s 0:08:05 -\nRule\tsol87\t1987\tonly\t-\tSep\t26\t11:51:35s 0:08:25 -\nRule\tsol87\t1987\tonly\t-\tSep\t27\t11:51:10s 0:08:50 -\nRule\tsol87\t1987\tonly\t-\tSep\t28\t11:50:50s 0:09:10 -\nRule\tsol87\t1987\tonly\t-\tSep\t29\t11:50:30s 0:09:30 -\nRule\tsol87\t1987\tonly\t-\tSep\t30\t11:50:10s 0:09:50 -\nRule\tsol87\t1987\tonly\t-\tOct\t1\t11:49:50s 0:10:10 -\nRule\tsol87\t1987\tonly\t-\tOct\t2\t11:49:35s 0:10:25 -\nRule\tsol87\t1987\tonly\t-\tOct\t3\t11:49:15s 0:10:45 -\nRule\tsol87\t1987\tonly\t-\tOct\t4\t11:48:55s 0:11:05 -\nRule\tsol87\t1987\tonly\t-\tOct\t5\t11:48:35s 0:11:25 -\nRule\tsol87\t1987\tonly\t-\tOct\t6\t11:48:20s 0:11:40 -\nRule\tsol87\t1987\tonly\t-\tOct\t7\t11:48:00s 0:12:00 -\nRule\tsol87\t1987\tonly\t-\tOct\t8\t11:47:45s 0:12:15 -\nRule\tsol87\t1987\tonly\t-\tOct\t9\t11:47:25s 0:12:35 -\nRule\tsol87\t1987\tonly\t-\tOct\t10\t11:47:10s 0:12:50 -\nRule\tsol87\t1987\tonly\t-\tOct\t11\t11:46:55s 0:13:05 -\nRule\tsol87\t1987\tonly\t-\tOct\t12\t11:46:40s 0:13:20 -\nRule\tsol87\t1987\tonly\t-\tOct\t13\t11:46:25s 0:13:35 -\nRule\tsol87\t1987\tonly\t-\tOct\t14\t11:46:10s 0:13:50 -\nRule\tsol87\t1987\tonly\t-\tOct\t15\t11:45:55s 0:14:05 -\nRule\tsol87\t1987\tonly\t-\tOct\t16\t11:45:45s 0:14:15 -\nRule\tsol87\t1987\tonly\t-\tOct\t17\t11:45:30s 0:14:30 -\nRule\tsol87\t1987\tonly\t-\tOct\t18\t11:45:20s 0:14:40 -\nRule\tsol87\t1987\tonly\t-\tOct\t19\t11:45:05s 0:14:55 -\nRule\tsol87\t1987\tonly\t-\tOct\t20\t11:44:55s 0:15:05 -\nRule\tsol87\t1987\tonly\t-\tOct\t21\t11:44:45s 0:15:15 -\nRule\tsol87\t1987\tonly\t-\tOct\t22\t11:44:35s 0:15:25 -\nRule\tsol87\t1987\tonly\t-\tOct\t23\t11:44:25s 0:15:35 -\nRule\tsol87\t1987\tonly\t-\tOct\t24\t11:44:20s 0:15:40 -\nRule\tsol87\t1987\tonly\t-\tOct\t25\t11:44:10s 0:15:50 -\nRule\tsol87\t1987\tonly\t-\tOct\t26\t11:44:05s 0:15:55 -\nRule\tsol87\t1987\tonly\t-\tOct\t27\t11:43:55s 0:16:05 -\nRule\tsol87\t1987\tonly\t-\tOct\t28\t11:43:50s 0:16:10 -\nRule\tsol87\t1987\tonly\t-\tOct\t29\t11:43:45s 0:16:15 -\nRule\tsol87\t1987\tonly\t-\tOct\t30\t11:43:45s 0:16:15 -\nRule\tsol87\t1987\tonly\t-\tOct\t31\t11:43:40s 0:16:20 -\nRule\tsol87\t1987\tonly\t-\tNov\t1\t11:43:40s 0:16:20 -\nRule\tsol87\t1987\tonly\t-\tNov\t2\t11:43:35s 0:16:25 -\nRule\tsol87\t1987\tonly\t-\tNov\t3\t11:43:35s 0:16:25 -\nRule\tsol87\t1987\tonly\t-\tNov\t4\t11:43:35s 0:16:25 -\nRule\tsol87\t1987\tonly\t-\tNov\t5\t11:43:35s 0:16:25 -\nRule\tsol87\t1987\tonly\t-\tNov\t6\t11:43:40s 0:16:20 -\nRule\tsol87\t1987\tonly\t-\tNov\t7\t11:43:40s 0:16:20 -\nRule\tsol87\t1987\tonly\t-\tNov\t8\t11:43:45s 0:16:15 -\nRule\tsol87\t1987\tonly\t-\tNov\t9\t11:43:50s 0:16:10 -\nRule\tsol87\t1987\tonly\t-\tNov\t10\t11:43:55s 0:16:05 -\nRule\tsol87\t1987\tonly\t-\tNov\t11\t11:44:00s 0:16:00 -\nRule\tsol87\t1987\tonly\t-\tNov\t12\t11:44:05s 0:15:55 -\nRule\tsol87\t1987\tonly\t-\tNov\t13\t11:44:15s 0:15:45 -\nRule\tsol87\t1987\tonly\t-\tNov\t14\t11:44:20s 0:15:40 -\nRule\tsol87\t1987\tonly\t-\tNov\t15\t11:44:30s 0:15:30 -\nRule\tsol87\t1987\tonly\t-\tNov\t16\t11:44:40s 0:15:20 -\nRule\tsol87\t1987\tonly\t-\tNov\t17\t11:44:50s 0:15:10 -\nRule\tsol87\t1987\tonly\t-\tNov\t18\t11:45:05s 0:14:55 -\nRule\tsol87\t1987\tonly\t-\tNov\t19\t11:45:15s 0:14:45 -\nRule\tsol87\t1987\tonly\t-\tNov\t20\t11:45:30s 0:14:30 -\nRule\tsol87\t1987\tonly\t-\tNov\t21\t11:45:45s 0:14:15 -\nRule\tsol87\t1987\tonly\t-\tNov\t22\t11:46:00s 0:14:00 -\nRule\tsol87\t1987\tonly\t-\tNov\t23\t11:46:15s 0:13:45 -\nRule\tsol87\t1987\tonly\t-\tNov\t24\t11:46:30s 0:13:30 -\nRule\tsol87\t1987\tonly\t-\tNov\t25\t11:46:50s 0:13:10 -\nRule\tsol87\t1987\tonly\t-\tNov\t26\t11:47:10s 0:12:50 -\nRule\tsol87\t1987\tonly\t-\tNov\t27\t11:47:25s 0:12:35 -\nRule\tsol87\t1987\tonly\t-\tNov\t28\t11:47:45s 0:12:15 -\nRule\tsol87\t1987\tonly\t-\tNov\t29\t11:48:05s 0:11:55 -\nRule\tsol87\t1987\tonly\t-\tNov\t30\t11:48:30s 0:11:30 -\nRule\tsol87\t1987\tonly\t-\tDec\t1\t11:48:50s 0:11:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t2\t11:49:10s 0:10:50 -\nRule\tsol87\t1987\tonly\t-\tDec\t3\t11:49:35s 0:10:25 -\nRule\tsol87\t1987\tonly\t-\tDec\t4\t11:50:00s 0:10:00 -\nRule\tsol87\t1987\tonly\t-\tDec\t5\t11:50:25s 0:09:35 -\nRule\tsol87\t1987\tonly\t-\tDec\t6\t11:50:50s 0:09:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t7\t11:51:15s 0:08:45 -\nRule\tsol87\t1987\tonly\t-\tDec\t8\t11:51:40s 0:08:20 -\nRule\tsol87\t1987\tonly\t-\tDec\t9\t11:52:05s 0:07:55 -\nRule\tsol87\t1987\tonly\t-\tDec\t10\t11:52:30s 0:07:30 -\nRule\tsol87\t1987\tonly\t-\tDec\t11\t11:53:00s 0:07:00 -\nRule\tsol87\t1987\tonly\t-\tDec\t12\t11:53:25s 0:06:35 -\nRule\tsol87\t1987\tonly\t-\tDec\t13\t11:53:55s 0:06:05 -\nRule\tsol87\t1987\tonly\t-\tDec\t14\t11:54:25s 0:05:35 -\nRule\tsol87\t1987\tonly\t-\tDec\t15\t11:54:50s 0:05:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t16\t11:55:20s 0:04:40 -\nRule\tsol87\t1987\tonly\t-\tDec\t17\t11:55:50s 0:04:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t18\t11:56:20s 0:03:40 -\nRule\tsol87\t1987\tonly\t-\tDec\t19\t11:56:50s 0:03:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t20\t11:57:20s 0:02:40 -\nRule\tsol87\t1987\tonly\t-\tDec\t21\t11:57:50s 0:02:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t22\t11:58:20s 0:01:40 -\nRule\tsol87\t1987\tonly\t-\tDec\t23\t11:58:50s 0:01:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t24\t11:59:20s 0:00:40 -\nRule\tsol87\t1987\tonly\t-\tDec\t25\t11:59:50s 0:00:10 -\nRule\tsol87\t1987\tonly\t-\tDec\t26\t12:00:20s -0:00:20 -\nRule\tsol87\t1987\tonly\t-\tDec\t27\t12:00:45s -0:00:45 -\nRule\tsol87\t1987\tonly\t-\tDec\t28\t12:01:15s -0:01:15 -\nRule\tsol87\t1987\tonly\t-\tDec\t29\t12:01:45s -0:01:45 -\nRule\tsol87\t1987\tonly\t-\tDec\t30\t12:02:15s -0:02:15 -\nRule\tsol87\t1987\tonly\t-\tDec\t31\t12:02:45s -0:02:45 -\n\n# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs\n# Before and after 1987, we'll operate on local mean solar time.\n\n# Zone\tNAME\t\tGMTOFF\tRULES/SAVE\tFORMAT\t[UNTIL]\nZone\tAsia/Riyadh87\t3:07:04\t-\t\tzzz\t1987\n\t\t\t3:07:04\tsol87\t\tzzz\t1988\n\t\t\t3:07:04\t-\t\tzzz\n# For backward compatibility...\nLink\tAsia/Riyadh87\tMideast/Riyadh87\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/solar88",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Apparent noon times below are for Riyadh; they're a bit off for other places.\n# Times were computed using formulas in the U.S. Naval Observatory's\n# Almanac for Computers 1988; the formulas \"will give EqT to an accuracy of\n# [plus or minus two] seconds during the current year.\"\n#\n# Rounding to the nearest five seconds results in fewer than\n# 256 different \"time types\"--a limit that's faced because time types are\n# stored on disk as unsigned chars.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tsol88\t1988\tonly\t-\tJan\t1\t12:03:15s -0:03:15 -\nRule\tsol88\t1988\tonly\t-\tJan\t2\t12:03:40s -0:03:40 -\nRule\tsol88\t1988\tonly\t-\tJan\t3\t12:04:10s -0:04:10 -\nRule\tsol88\t1988\tonly\t-\tJan\t4\t12:04:40s -0:04:40 -\nRule\tsol88\t1988\tonly\t-\tJan\t5\t12:05:05s -0:05:05 -\nRule\tsol88\t1988\tonly\t-\tJan\t6\t12:05:30s -0:05:30 -\nRule\tsol88\t1988\tonly\t-\tJan\t7\t12:06:00s -0:06:00 -\nRule\tsol88\t1988\tonly\t-\tJan\t8\t12:06:25s -0:06:25 -\nRule\tsol88\t1988\tonly\t-\tJan\t9\t12:06:50s -0:06:50 -\nRule\tsol88\t1988\tonly\t-\tJan\t10\t12:07:15s -0:07:15 -\nRule\tsol88\t1988\tonly\t-\tJan\t11\t12:07:40s -0:07:40 -\nRule\tsol88\t1988\tonly\t-\tJan\t12\t12:08:05s -0:08:05 -\nRule\tsol88\t1988\tonly\t-\tJan\t13\t12:08:25s -0:08:25 -\nRule\tsol88\t1988\tonly\t-\tJan\t14\t12:08:50s -0:08:50 -\nRule\tsol88\t1988\tonly\t-\tJan\t15\t12:09:10s -0:09:10 -\nRule\tsol88\t1988\tonly\t-\tJan\t16\t12:09:30s -0:09:30 -\nRule\tsol88\t1988\tonly\t-\tJan\t17\t12:09:50s -0:09:50 -\nRule\tsol88\t1988\tonly\t-\tJan\t18\t12:10:10s -0:10:10 -\nRule\tsol88\t1988\tonly\t-\tJan\t19\t12:10:30s -0:10:30 -\nRule\tsol88\t1988\tonly\t-\tJan\t20\t12:10:50s -0:10:50 -\nRule\tsol88\t1988\tonly\t-\tJan\t21\t12:11:05s -0:11:05 -\nRule\tsol88\t1988\tonly\t-\tJan\t22\t12:11:25s -0:11:25 -\nRule\tsol88\t1988\tonly\t-\tJan\t23\t12:11:40s -0:11:40 -\nRule\tsol88\t1988\tonly\t-\tJan\t24\t12:11:55s -0:11:55 -\nRule\tsol88\t1988\tonly\t-\tJan\t25\t12:12:10s -0:12:10 -\nRule\tsol88\t1988\tonly\t-\tJan\t26\t12:12:25s -0:12:25 -\nRule\tsol88\t1988\tonly\t-\tJan\t27\t12:12:40s -0:12:40 -\nRule\tsol88\t1988\tonly\t-\tJan\t28\t12:12:50s -0:12:50 -\nRule\tsol88\t1988\tonly\t-\tJan\t29\t12:13:00s -0:13:00 -\nRule\tsol88\t1988\tonly\t-\tJan\t30\t12:13:10s -0:13:10 -\nRule\tsol88\t1988\tonly\t-\tJan\t31\t12:13:20s -0:13:20 -\nRule\tsol88\t1988\tonly\t-\tFeb\t1\t12:13:30s -0:13:30 -\nRule\tsol88\t1988\tonly\t-\tFeb\t2\t12:13:40s -0:13:40 -\nRule\tsol88\t1988\tonly\t-\tFeb\t3\t12:13:45s -0:13:45 -\nRule\tsol88\t1988\tonly\t-\tFeb\t4\t12:13:55s -0:13:55 -\nRule\tsol88\t1988\tonly\t-\tFeb\t5\t12:14:00s -0:14:00 -\nRule\tsol88\t1988\tonly\t-\tFeb\t6\t12:14:05s -0:14:05 -\nRule\tsol88\t1988\tonly\t-\tFeb\t7\t12:14:10s -0:14:10 -\nRule\tsol88\t1988\tonly\t-\tFeb\t8\t12:14:10s -0:14:10 -\nRule\tsol88\t1988\tonly\t-\tFeb\t9\t12:14:15s -0:14:15 -\nRule\tsol88\t1988\tonly\t-\tFeb\t10\t12:14:15s -0:14:15 -\nRule\tsol88\t1988\tonly\t-\tFeb\t11\t12:14:15s -0:14:15 -\nRule\tsol88\t1988\tonly\t-\tFeb\t12\t12:14:15s -0:14:15 -\nRule\tsol88\t1988\tonly\t-\tFeb\t13\t12:14:15s -0:14:15 -\nRule\tsol88\t1988\tonly\t-\tFeb\t14\t12:14:15s -0:14:15 -\nRule\tsol88\t1988\tonly\t-\tFeb\t15\t12:14:10s -0:14:10 -\nRule\tsol88\t1988\tonly\t-\tFeb\t16\t12:14:10s -0:14:10 -\nRule\tsol88\t1988\tonly\t-\tFeb\t17\t12:14:05s -0:14:05 -\nRule\tsol88\t1988\tonly\t-\tFeb\t18\t12:14:00s -0:14:00 -\nRule\tsol88\t1988\tonly\t-\tFeb\t19\t12:13:55s -0:13:55 -\nRule\tsol88\t1988\tonly\t-\tFeb\t20\t12:13:50s -0:13:50 -\nRule\tsol88\t1988\tonly\t-\tFeb\t21\t12:13:45s -0:13:45 -\nRule\tsol88\t1988\tonly\t-\tFeb\t22\t12:13:40s -0:13:40 -\nRule\tsol88\t1988\tonly\t-\tFeb\t23\t12:13:30s -0:13:30 -\nRule\tsol88\t1988\tonly\t-\tFeb\t24\t12:13:20s -0:13:20 -\nRule\tsol88\t1988\tonly\t-\tFeb\t25\t12:13:15s -0:13:15 -\nRule\tsol88\t1988\tonly\t-\tFeb\t26\t12:13:05s -0:13:05 -\nRule\tsol88\t1988\tonly\t-\tFeb\t27\t12:12:55s -0:12:55 -\nRule\tsol88\t1988\tonly\t-\tFeb\t28\t12:12:45s -0:12:45 -\nRule\tsol88\t1988\tonly\t-\tFeb\t29\t12:12:30s -0:12:30 -\nRule\tsol88\t1988\tonly\t-\tMar\t1\t12:12:20s -0:12:20 -\nRule\tsol88\t1988\tonly\t-\tMar\t2\t12:12:10s -0:12:10 -\nRule\tsol88\t1988\tonly\t-\tMar\t3\t12:11:55s -0:11:55 -\nRule\tsol88\t1988\tonly\t-\tMar\t4\t12:11:45s -0:11:45 -\nRule\tsol88\t1988\tonly\t-\tMar\t5\t12:11:30s -0:11:30 -\nRule\tsol88\t1988\tonly\t-\tMar\t6\t12:11:15s -0:11:15 -\nRule\tsol88\t1988\tonly\t-\tMar\t7\t12:11:00s -0:11:00 -\nRule\tsol88\t1988\tonly\t-\tMar\t8\t12:10:45s -0:10:45 -\nRule\tsol88\t1988\tonly\t-\tMar\t9\t12:10:30s -0:10:30 -\nRule\tsol88\t1988\tonly\t-\tMar\t10\t12:10:15s -0:10:15 -\nRule\tsol88\t1988\tonly\t-\tMar\t11\t12:10:00s -0:10:00 -\nRule\tsol88\t1988\tonly\t-\tMar\t12\t12:09:45s -0:09:45 -\nRule\tsol88\t1988\tonly\t-\tMar\t13\t12:09:30s -0:09:30 -\nRule\tsol88\t1988\tonly\t-\tMar\t14\t12:09:10s -0:09:10 -\nRule\tsol88\t1988\tonly\t-\tMar\t15\t12:08:55s -0:08:55 -\nRule\tsol88\t1988\tonly\t-\tMar\t16\t12:08:40s -0:08:40 -\nRule\tsol88\t1988\tonly\t-\tMar\t17\t12:08:20s -0:08:20 -\nRule\tsol88\t1988\tonly\t-\tMar\t18\t12:08:05s -0:08:05 -\nRule\tsol88\t1988\tonly\t-\tMar\t19\t12:07:45s -0:07:45 -\nRule\tsol88\t1988\tonly\t-\tMar\t20\t12:07:30s -0:07:30 -\nRule\tsol88\t1988\tonly\t-\tMar\t21\t12:07:10s -0:07:10 -\nRule\tsol88\t1988\tonly\t-\tMar\t22\t12:06:50s -0:06:50 -\nRule\tsol88\t1988\tonly\t-\tMar\t23\t12:06:35s -0:06:35 -\nRule\tsol88\t1988\tonly\t-\tMar\t24\t12:06:15s -0:06:15 -\nRule\tsol88\t1988\tonly\t-\tMar\t25\t12:06:00s -0:06:00 -\nRule\tsol88\t1988\tonly\t-\tMar\t26\t12:05:40s -0:05:40 -\nRule\tsol88\t1988\tonly\t-\tMar\t27\t12:05:20s -0:05:20 -\nRule\tsol88\t1988\tonly\t-\tMar\t28\t12:05:05s -0:05:05 -\nRule\tsol88\t1988\tonly\t-\tMar\t29\t12:04:45s -0:04:45 -\nRule\tsol88\t1988\tonly\t-\tMar\t30\t12:04:25s -0:04:25 -\nRule\tsol88\t1988\tonly\t-\tMar\t31\t12:04:10s -0:04:10 -\nRule\tsol88\t1988\tonly\t-\tApr\t1\t12:03:50s -0:03:50 -\nRule\tsol88\t1988\tonly\t-\tApr\t2\t12:03:35s -0:03:35 -\nRule\tsol88\t1988\tonly\t-\tApr\t3\t12:03:15s -0:03:15 -\nRule\tsol88\t1988\tonly\t-\tApr\t4\t12:03:00s -0:03:00 -\nRule\tsol88\t1988\tonly\t-\tApr\t5\t12:02:40s -0:02:40 -\nRule\tsol88\t1988\tonly\t-\tApr\t6\t12:02:25s -0:02:25 -\nRule\tsol88\t1988\tonly\t-\tApr\t7\t12:02:05s -0:02:05 -\nRule\tsol88\t1988\tonly\t-\tApr\t8\t12:01:50s -0:01:50 -\nRule\tsol88\t1988\tonly\t-\tApr\t9\t12:01:35s -0:01:35 -\nRule\tsol88\t1988\tonly\t-\tApr\t10\t12:01:15s -0:01:15 -\nRule\tsol88\t1988\tonly\t-\tApr\t11\t12:01:00s -0:01:00 -\nRule\tsol88\t1988\tonly\t-\tApr\t12\t12:00:45s -0:00:45 -\nRule\tsol88\t1988\tonly\t-\tApr\t13\t12:00:30s -0:00:30 -\nRule\tsol88\t1988\tonly\t-\tApr\t14\t12:00:15s -0:00:15 -\nRule\tsol88\t1988\tonly\t-\tApr\t15\t12:00:00s 0:00:00 -\nRule\tsol88\t1988\tonly\t-\tApr\t16\t11:59:45s 0:00:15 -\nRule\tsol88\t1988\tonly\t-\tApr\t17\t11:59:30s 0:00:30 -\nRule\tsol88\t1988\tonly\t-\tApr\t18\t11:59:20s 0:00:40 -\nRule\tsol88\t1988\tonly\t-\tApr\t19\t11:59:05s 0:00:55 -\nRule\tsol88\t1988\tonly\t-\tApr\t20\t11:58:55s 0:01:05 -\nRule\tsol88\t1988\tonly\t-\tApr\t21\t11:58:40s 0:01:20 -\nRule\tsol88\t1988\tonly\t-\tApr\t22\t11:58:30s 0:01:30 -\nRule\tsol88\t1988\tonly\t-\tApr\t23\t11:58:15s 0:01:45 -\nRule\tsol88\t1988\tonly\t-\tApr\t24\t11:58:05s 0:01:55 -\nRule\tsol88\t1988\tonly\t-\tApr\t25\t11:57:55s 0:02:05 -\nRule\tsol88\t1988\tonly\t-\tApr\t26\t11:57:45s 0:02:15 -\nRule\tsol88\t1988\tonly\t-\tApr\t27\t11:57:35s 0:02:25 -\nRule\tsol88\t1988\tonly\t-\tApr\t28\t11:57:30s 0:02:30 -\nRule\tsol88\t1988\tonly\t-\tApr\t29\t11:57:20s 0:02:40 -\nRule\tsol88\t1988\tonly\t-\tApr\t30\t11:57:10s 0:02:50 -\nRule\tsol88\t1988\tonly\t-\tMay\t1\t11:57:05s 0:02:55 -\nRule\tsol88\t1988\tonly\t-\tMay\t2\t11:56:55s 0:03:05 -\nRule\tsol88\t1988\tonly\t-\tMay\t3\t11:56:50s 0:03:10 -\nRule\tsol88\t1988\tonly\t-\tMay\t4\t11:56:45s 0:03:15 -\nRule\tsol88\t1988\tonly\t-\tMay\t5\t11:56:40s 0:03:20 -\nRule\tsol88\t1988\tonly\t-\tMay\t6\t11:56:35s 0:03:25 -\nRule\tsol88\t1988\tonly\t-\tMay\t7\t11:56:30s 0:03:30 -\nRule\tsol88\t1988\tonly\t-\tMay\t8\t11:56:25s 0:03:35 -\nRule\tsol88\t1988\tonly\t-\tMay\t9\t11:56:25s 0:03:35 -\nRule\tsol88\t1988\tonly\t-\tMay\t10\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t11\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t12\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t13\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t14\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t15\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t16\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t17\t11:56:20s 0:03:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t18\t11:56:25s 0:03:35 -\nRule\tsol88\t1988\tonly\t-\tMay\t19\t11:56:25s 0:03:35 -\nRule\tsol88\t1988\tonly\t-\tMay\t20\t11:56:30s 0:03:30 -\nRule\tsol88\t1988\tonly\t-\tMay\t21\t11:56:35s 0:03:25 -\nRule\tsol88\t1988\tonly\t-\tMay\t22\t11:56:40s 0:03:20 -\nRule\tsol88\t1988\tonly\t-\tMay\t23\t11:56:45s 0:03:15 -\nRule\tsol88\t1988\tonly\t-\tMay\t24\t11:56:50s 0:03:10 -\nRule\tsol88\t1988\tonly\t-\tMay\t25\t11:56:55s 0:03:05 -\nRule\tsol88\t1988\tonly\t-\tMay\t26\t11:57:00s 0:03:00 -\nRule\tsol88\t1988\tonly\t-\tMay\t27\t11:57:05s 0:02:55 -\nRule\tsol88\t1988\tonly\t-\tMay\t28\t11:57:15s 0:02:45 -\nRule\tsol88\t1988\tonly\t-\tMay\t29\t11:57:20s 0:02:40 -\nRule\tsol88\t1988\tonly\t-\tMay\t30\t11:57:30s 0:02:30 -\nRule\tsol88\t1988\tonly\t-\tMay\t31\t11:57:40s 0:02:20 -\nRule\tsol88\t1988\tonly\t-\tJun\t1\t11:57:50s 0:02:10 -\nRule\tsol88\t1988\tonly\t-\tJun\t2\t11:57:55s 0:02:05 -\nRule\tsol88\t1988\tonly\t-\tJun\t3\t11:58:05s 0:01:55 -\nRule\tsol88\t1988\tonly\t-\tJun\t4\t11:58:15s 0:01:45 -\nRule\tsol88\t1988\tonly\t-\tJun\t5\t11:58:30s 0:01:30 -\nRule\tsol88\t1988\tonly\t-\tJun\t6\t11:58:40s 0:01:20 -\nRule\tsol88\t1988\tonly\t-\tJun\t7\t11:58:50s 0:01:10 -\nRule\tsol88\t1988\tonly\t-\tJun\t8\t11:59:00s 0:01:00 -\nRule\tsol88\t1988\tonly\t-\tJun\t9\t11:59:15s 0:00:45 -\nRule\tsol88\t1988\tonly\t-\tJun\t10\t11:59:25s 0:00:35 -\nRule\tsol88\t1988\tonly\t-\tJun\t11\t11:59:35s 0:00:25 -\nRule\tsol88\t1988\tonly\t-\tJun\t12\t11:59:50s 0:00:10 -\nRule\tsol88\t1988\tonly\t-\tJun\t13\t12:00:00s 0:00:00 -\nRule\tsol88\t1988\tonly\t-\tJun\t14\t12:00:15s -0:00:15 -\nRule\tsol88\t1988\tonly\t-\tJun\t15\t12:00:25s -0:00:25 -\nRule\tsol88\t1988\tonly\t-\tJun\t16\t12:00:40s -0:00:40 -\nRule\tsol88\t1988\tonly\t-\tJun\t17\t12:00:55s -0:00:55 -\nRule\tsol88\t1988\tonly\t-\tJun\t18\t12:01:05s -0:01:05 -\nRule\tsol88\t1988\tonly\t-\tJun\t19\t12:01:20s -0:01:20 -\nRule\tsol88\t1988\tonly\t-\tJun\t20\t12:01:30s -0:01:30 -\nRule\tsol88\t1988\tonly\t-\tJun\t21\t12:01:45s -0:01:45 -\nRule\tsol88\t1988\tonly\t-\tJun\t22\t12:02:00s -0:02:00 -\nRule\tsol88\t1988\tonly\t-\tJun\t23\t12:02:10s -0:02:10 -\nRule\tsol88\t1988\tonly\t-\tJun\t24\t12:02:25s -0:02:25 -\nRule\tsol88\t1988\tonly\t-\tJun\t25\t12:02:35s -0:02:35 -\nRule\tsol88\t1988\tonly\t-\tJun\t26\t12:02:50s -0:02:50 -\nRule\tsol88\t1988\tonly\t-\tJun\t27\t12:03:00s -0:03:00 -\nRule\tsol88\t1988\tonly\t-\tJun\t28\t12:03:15s -0:03:15 -\nRule\tsol88\t1988\tonly\t-\tJun\t29\t12:03:25s -0:03:25 -\nRule\tsol88\t1988\tonly\t-\tJun\t30\t12:03:40s -0:03:40 -\nRule\tsol88\t1988\tonly\t-\tJul\t1\t12:03:50s -0:03:50 -\nRule\tsol88\t1988\tonly\t-\tJul\t2\t12:04:00s -0:04:00 -\nRule\tsol88\t1988\tonly\t-\tJul\t3\t12:04:10s -0:04:10 -\nRule\tsol88\t1988\tonly\t-\tJul\t4\t12:04:25s -0:04:25 -\nRule\tsol88\t1988\tonly\t-\tJul\t5\t12:04:35s -0:04:35 -\nRule\tsol88\t1988\tonly\t-\tJul\t6\t12:04:45s -0:04:45 -\nRule\tsol88\t1988\tonly\t-\tJul\t7\t12:04:55s -0:04:55 -\nRule\tsol88\t1988\tonly\t-\tJul\t8\t12:05:05s -0:05:05 -\nRule\tsol88\t1988\tonly\t-\tJul\t9\t12:05:10s -0:05:10 -\nRule\tsol88\t1988\tonly\t-\tJul\t10\t12:05:20s -0:05:20 -\nRule\tsol88\t1988\tonly\t-\tJul\t11\t12:05:30s -0:05:30 -\nRule\tsol88\t1988\tonly\t-\tJul\t12\t12:05:35s -0:05:35 -\nRule\tsol88\t1988\tonly\t-\tJul\t13\t12:05:45s -0:05:45 -\nRule\tsol88\t1988\tonly\t-\tJul\t14\t12:05:50s -0:05:50 -\nRule\tsol88\t1988\tonly\t-\tJul\t15\t12:05:55s -0:05:55 -\nRule\tsol88\t1988\tonly\t-\tJul\t16\t12:06:00s -0:06:00 -\nRule\tsol88\t1988\tonly\t-\tJul\t17\t12:06:05s -0:06:05 -\nRule\tsol88\t1988\tonly\t-\tJul\t18\t12:06:10s -0:06:10 -\nRule\tsol88\t1988\tonly\t-\tJul\t19\t12:06:15s -0:06:15 -\nRule\tsol88\t1988\tonly\t-\tJul\t20\t12:06:20s -0:06:20 -\nRule\tsol88\t1988\tonly\t-\tJul\t21\t12:06:25s -0:06:25 -\nRule\tsol88\t1988\tonly\t-\tJul\t22\t12:06:25s -0:06:25 -\nRule\tsol88\t1988\tonly\t-\tJul\t23\t12:06:25s -0:06:25 -\nRule\tsol88\t1988\tonly\t-\tJul\t24\t12:06:30s -0:06:30 -\nRule\tsol88\t1988\tonly\t-\tJul\t25\t12:06:30s -0:06:30 -\nRule\tsol88\t1988\tonly\t-\tJul\t26\t12:06:30s -0:06:30 -\nRule\tsol88\t1988\tonly\t-\tJul\t27\t12:06:30s -0:06:30 -\nRule\tsol88\t1988\tonly\t-\tJul\t28\t12:06:30s -0:06:30 -\nRule\tsol88\t1988\tonly\t-\tJul\t29\t12:06:25s -0:06:25 -\nRule\tsol88\t1988\tonly\t-\tJul\t30\t12:06:25s -0:06:25 -\nRule\tsol88\t1988\tonly\t-\tJul\t31\t12:06:20s -0:06:20 -\nRule\tsol88\t1988\tonly\t-\tAug\t1\t12:06:15s -0:06:15 -\nRule\tsol88\t1988\tonly\t-\tAug\t2\t12:06:15s -0:06:15 -\nRule\tsol88\t1988\tonly\t-\tAug\t3\t12:06:10s -0:06:10 -\nRule\tsol88\t1988\tonly\t-\tAug\t4\t12:06:05s -0:06:05 -\nRule\tsol88\t1988\tonly\t-\tAug\t5\t12:05:55s -0:05:55 -\nRule\tsol88\t1988\tonly\t-\tAug\t6\t12:05:50s -0:05:50 -\nRule\tsol88\t1988\tonly\t-\tAug\t7\t12:05:45s -0:05:45 -\nRule\tsol88\t1988\tonly\t-\tAug\t8\t12:05:35s -0:05:35 -\nRule\tsol88\t1988\tonly\t-\tAug\t9\t12:05:25s -0:05:25 -\nRule\tsol88\t1988\tonly\t-\tAug\t10\t12:05:20s -0:05:20 -\nRule\tsol88\t1988\tonly\t-\tAug\t11\t12:05:10s -0:05:10 -\nRule\tsol88\t1988\tonly\t-\tAug\t12\t12:05:00s -0:05:00 -\nRule\tsol88\t1988\tonly\t-\tAug\t13\t12:04:50s -0:04:50 -\nRule\tsol88\t1988\tonly\t-\tAug\t14\t12:04:35s -0:04:35 -\nRule\tsol88\t1988\tonly\t-\tAug\t15\t12:04:25s -0:04:25 -\nRule\tsol88\t1988\tonly\t-\tAug\t16\t12:04:15s -0:04:15 -\nRule\tsol88\t1988\tonly\t-\tAug\t17\t12:04:00s -0:04:00 -\nRule\tsol88\t1988\tonly\t-\tAug\t18\t12:03:50s -0:03:50 -\nRule\tsol88\t1988\tonly\t-\tAug\t19\t12:03:35s -0:03:35 -\nRule\tsol88\t1988\tonly\t-\tAug\t20\t12:03:20s -0:03:20 -\nRule\tsol88\t1988\tonly\t-\tAug\t21\t12:03:05s -0:03:05 -\nRule\tsol88\t1988\tonly\t-\tAug\t22\t12:02:50s -0:02:50 -\nRule\tsol88\t1988\tonly\t-\tAug\t23\t12:02:35s -0:02:35 -\nRule\tsol88\t1988\tonly\t-\tAug\t24\t12:02:20s -0:02:20 -\nRule\tsol88\t1988\tonly\t-\tAug\t25\t12:02:00s -0:02:00 -\nRule\tsol88\t1988\tonly\t-\tAug\t26\t12:01:45s -0:01:45 -\nRule\tsol88\t1988\tonly\t-\tAug\t27\t12:01:30s -0:01:30 -\nRule\tsol88\t1988\tonly\t-\tAug\t28\t12:01:10s -0:01:10 -\nRule\tsol88\t1988\tonly\t-\tAug\t29\t12:00:50s -0:00:50 -\nRule\tsol88\t1988\tonly\t-\tAug\t30\t12:00:35s -0:00:35 -\nRule\tsol88\t1988\tonly\t-\tAug\t31\t12:00:15s -0:00:15 -\nRule\tsol88\t1988\tonly\t-\tSep\t1\t11:59:55s 0:00:05 -\nRule\tsol88\t1988\tonly\t-\tSep\t2\t11:59:35s 0:00:25 -\nRule\tsol88\t1988\tonly\t-\tSep\t3\t11:59:20s 0:00:40 -\nRule\tsol88\t1988\tonly\t-\tSep\t4\t11:59:00s 0:01:00 -\nRule\tsol88\t1988\tonly\t-\tSep\t5\t11:58:40s 0:01:20 -\nRule\tsol88\t1988\tonly\t-\tSep\t6\t11:58:20s 0:01:40 -\nRule\tsol88\t1988\tonly\t-\tSep\t7\t11:58:00s 0:02:00 -\nRule\tsol88\t1988\tonly\t-\tSep\t8\t11:57:35s 0:02:25 -\nRule\tsol88\t1988\tonly\t-\tSep\t9\t11:57:15s 0:02:45 -\nRule\tsol88\t1988\tonly\t-\tSep\t10\t11:56:55s 0:03:05 -\nRule\tsol88\t1988\tonly\t-\tSep\t11\t11:56:35s 0:03:25 -\nRule\tsol88\t1988\tonly\t-\tSep\t12\t11:56:15s 0:03:45 -\nRule\tsol88\t1988\tonly\t-\tSep\t13\t11:55:50s 0:04:10 -\nRule\tsol88\t1988\tonly\t-\tSep\t14\t11:55:30s 0:04:30 -\nRule\tsol88\t1988\tonly\t-\tSep\t15\t11:55:10s 0:04:50 -\nRule\tsol88\t1988\tonly\t-\tSep\t16\t11:54:50s 0:05:10 -\nRule\tsol88\t1988\tonly\t-\tSep\t17\t11:54:25s 0:05:35 -\nRule\tsol88\t1988\tonly\t-\tSep\t18\t11:54:05s 0:05:55 -\nRule\tsol88\t1988\tonly\t-\tSep\t19\t11:53:45s 0:06:15 -\nRule\tsol88\t1988\tonly\t-\tSep\t20\t11:53:25s 0:06:35 -\nRule\tsol88\t1988\tonly\t-\tSep\t21\t11:53:00s 0:07:00 -\nRule\tsol88\t1988\tonly\t-\tSep\t22\t11:52:40s 0:07:20 -\nRule\tsol88\t1988\tonly\t-\tSep\t23\t11:52:20s 0:07:40 -\nRule\tsol88\t1988\tonly\t-\tSep\t24\t11:52:00s 0:08:00 -\nRule\tsol88\t1988\tonly\t-\tSep\t25\t11:51:40s 0:08:20 -\nRule\tsol88\t1988\tonly\t-\tSep\t26\t11:51:15s 0:08:45 -\nRule\tsol88\t1988\tonly\t-\tSep\t27\t11:50:55s 0:09:05 -\nRule\tsol88\t1988\tonly\t-\tSep\t28\t11:50:35s 0:09:25 -\nRule\tsol88\t1988\tonly\t-\tSep\t29\t11:50:15s 0:09:45 -\nRule\tsol88\t1988\tonly\t-\tSep\t30\t11:49:55s 0:10:05 -\nRule\tsol88\t1988\tonly\t-\tOct\t1\t11:49:35s 0:10:25 -\nRule\tsol88\t1988\tonly\t-\tOct\t2\t11:49:20s 0:10:40 -\nRule\tsol88\t1988\tonly\t-\tOct\t3\t11:49:00s 0:11:00 -\nRule\tsol88\t1988\tonly\t-\tOct\t4\t11:48:40s 0:11:20 -\nRule\tsol88\t1988\tonly\t-\tOct\t5\t11:48:25s 0:11:35 -\nRule\tsol88\t1988\tonly\t-\tOct\t6\t11:48:05s 0:11:55 -\nRule\tsol88\t1988\tonly\t-\tOct\t7\t11:47:50s 0:12:10 -\nRule\tsol88\t1988\tonly\t-\tOct\t8\t11:47:30s 0:12:30 -\nRule\tsol88\t1988\tonly\t-\tOct\t9\t11:47:15s 0:12:45 -\nRule\tsol88\t1988\tonly\t-\tOct\t10\t11:47:00s 0:13:00 -\nRule\tsol88\t1988\tonly\t-\tOct\t11\t11:46:45s 0:13:15 -\nRule\tsol88\t1988\tonly\t-\tOct\t12\t11:46:30s 0:13:30 -\nRule\tsol88\t1988\tonly\t-\tOct\t13\t11:46:15s 0:13:45 -\nRule\tsol88\t1988\tonly\t-\tOct\t14\t11:46:00s 0:14:00 -\nRule\tsol88\t1988\tonly\t-\tOct\t15\t11:45:45s 0:14:15 -\nRule\tsol88\t1988\tonly\t-\tOct\t16\t11:45:35s 0:14:25 -\nRule\tsol88\t1988\tonly\t-\tOct\t17\t11:45:20s 0:14:40 -\nRule\tsol88\t1988\tonly\t-\tOct\t18\t11:45:10s 0:14:50 -\nRule\tsol88\t1988\tonly\t-\tOct\t19\t11:45:00s 0:15:00 -\nRule\tsol88\t1988\tonly\t-\tOct\t20\t11:44:45s 0:15:15 -\nRule\tsol88\t1988\tonly\t-\tOct\t21\t11:44:40s 0:15:20 -\nRule\tsol88\t1988\tonly\t-\tOct\t22\t11:44:30s 0:15:30 -\nRule\tsol88\t1988\tonly\t-\tOct\t23\t11:44:20s 0:15:40 -\nRule\tsol88\t1988\tonly\t-\tOct\t24\t11:44:10s 0:15:50 -\nRule\tsol88\t1988\tonly\t-\tOct\t25\t11:44:05s 0:15:55 -\nRule\tsol88\t1988\tonly\t-\tOct\t26\t11:44:00s 0:16:00 -\nRule\tsol88\t1988\tonly\t-\tOct\t27\t11:43:55s 0:16:05 -\nRule\tsol88\t1988\tonly\t-\tOct\t28\t11:43:50s 0:16:10 -\nRule\tsol88\t1988\tonly\t-\tOct\t29\t11:43:45s 0:16:15 -\nRule\tsol88\t1988\tonly\t-\tOct\t30\t11:43:40s 0:16:20 -\nRule\tsol88\t1988\tonly\t-\tOct\t31\t11:43:40s 0:16:20 -\nRule\tsol88\t1988\tonly\t-\tNov\t1\t11:43:35s 0:16:25 -\nRule\tsol88\t1988\tonly\t-\tNov\t2\t11:43:35s 0:16:25 -\nRule\tsol88\t1988\tonly\t-\tNov\t3\t11:43:35s 0:16:25 -\nRule\tsol88\t1988\tonly\t-\tNov\t4\t11:43:35s 0:16:25 -\nRule\tsol88\t1988\tonly\t-\tNov\t5\t11:43:40s 0:16:20 -\nRule\tsol88\t1988\tonly\t-\tNov\t6\t11:43:40s 0:16:20 -\nRule\tsol88\t1988\tonly\t-\tNov\t7\t11:43:45s 0:16:15 -\nRule\tsol88\t1988\tonly\t-\tNov\t8\t11:43:45s 0:16:15 -\nRule\tsol88\t1988\tonly\t-\tNov\t9\t11:43:50s 0:16:10 -\nRule\tsol88\t1988\tonly\t-\tNov\t10\t11:44:00s 0:16:00 -\nRule\tsol88\t1988\tonly\t-\tNov\t11\t11:44:05s 0:15:55 -\nRule\tsol88\t1988\tonly\t-\tNov\t12\t11:44:10s 0:15:50 -\nRule\tsol88\t1988\tonly\t-\tNov\t13\t11:44:20s 0:15:40 -\nRule\tsol88\t1988\tonly\t-\tNov\t14\t11:44:30s 0:15:30 -\nRule\tsol88\t1988\tonly\t-\tNov\t15\t11:44:40s 0:15:20 -\nRule\tsol88\t1988\tonly\t-\tNov\t16\t11:44:50s 0:15:10 -\nRule\tsol88\t1988\tonly\t-\tNov\t17\t11:45:00s 0:15:00 -\nRule\tsol88\t1988\tonly\t-\tNov\t18\t11:45:15s 0:14:45 -\nRule\tsol88\t1988\tonly\t-\tNov\t19\t11:45:25s 0:14:35 -\nRule\tsol88\t1988\tonly\t-\tNov\t20\t11:45:40s 0:14:20 -\nRule\tsol88\t1988\tonly\t-\tNov\t21\t11:45:55s 0:14:05 -\nRule\tsol88\t1988\tonly\t-\tNov\t22\t11:46:10s 0:13:50 -\nRule\tsol88\t1988\tonly\t-\tNov\t23\t11:46:30s 0:13:30 -\nRule\tsol88\t1988\tonly\t-\tNov\t24\t11:46:45s 0:13:15 -\nRule\tsol88\t1988\tonly\t-\tNov\t25\t11:47:05s 0:12:55 -\nRule\tsol88\t1988\tonly\t-\tNov\t26\t11:47:20s 0:12:40 -\nRule\tsol88\t1988\tonly\t-\tNov\t27\t11:47:40s 0:12:20 -\nRule\tsol88\t1988\tonly\t-\tNov\t28\t11:48:00s 0:12:00 -\nRule\tsol88\t1988\tonly\t-\tNov\t29\t11:48:25s 0:11:35 -\nRule\tsol88\t1988\tonly\t-\tNov\t30\t11:48:45s 0:11:15 -\nRule\tsol88\t1988\tonly\t-\tDec\t1\t11:49:05s 0:10:55 -\nRule\tsol88\t1988\tonly\t-\tDec\t2\t11:49:30s 0:10:30 -\nRule\tsol88\t1988\tonly\t-\tDec\t3\t11:49:55s 0:10:05 -\nRule\tsol88\t1988\tonly\t-\tDec\t4\t11:50:15s 0:09:45 -\nRule\tsol88\t1988\tonly\t-\tDec\t5\t11:50:40s 0:09:20 -\nRule\tsol88\t1988\tonly\t-\tDec\t6\t11:51:05s 0:08:55 -\nRule\tsol88\t1988\tonly\t-\tDec\t7\t11:51:35s 0:08:25 -\nRule\tsol88\t1988\tonly\t-\tDec\t8\t11:52:00s 0:08:00 -\nRule\tsol88\t1988\tonly\t-\tDec\t9\t11:52:25s 0:07:35 -\nRule\tsol88\t1988\tonly\t-\tDec\t10\t11:52:55s 0:07:05 -\nRule\tsol88\t1988\tonly\t-\tDec\t11\t11:53:20s 0:06:40 -\nRule\tsol88\t1988\tonly\t-\tDec\t12\t11:53:50s 0:06:10 -\nRule\tsol88\t1988\tonly\t-\tDec\t13\t11:54:15s 0:05:45 -\nRule\tsol88\t1988\tonly\t-\tDec\t14\t11:54:45s 0:05:15 -\nRule\tsol88\t1988\tonly\t-\tDec\t15\t11:55:15s 0:04:45 -\nRule\tsol88\t1988\tonly\t-\tDec\t16\t11:55:45s 0:04:15 -\nRule\tsol88\t1988\tonly\t-\tDec\t17\t11:56:15s 0:03:45 -\nRule\tsol88\t1988\tonly\t-\tDec\t18\t11:56:40s 0:03:20 -\nRule\tsol88\t1988\tonly\t-\tDec\t19\t11:57:10s 0:02:50 -\nRule\tsol88\t1988\tonly\t-\tDec\t20\t11:57:40s 0:02:20 -\nRule\tsol88\t1988\tonly\t-\tDec\t21\t11:58:10s 0:01:50 -\nRule\tsol88\t1988\tonly\t-\tDec\t22\t11:58:40s 0:01:20 -\nRule\tsol88\t1988\tonly\t-\tDec\t23\t11:59:10s 0:00:50 -\nRule\tsol88\t1988\tonly\t-\tDec\t24\t11:59:40s 0:00:20 -\nRule\tsol88\t1988\tonly\t-\tDec\t25\t12:00:10s -0:00:10 -\nRule\tsol88\t1988\tonly\t-\tDec\t26\t12:00:40s -0:00:40 -\nRule\tsol88\t1988\tonly\t-\tDec\t27\t12:01:10s -0:01:10 -\nRule\tsol88\t1988\tonly\t-\tDec\t28\t12:01:40s -0:01:40 -\nRule\tsol88\t1988\tonly\t-\tDec\t29\t12:02:10s -0:02:10 -\nRule\tsol88\t1988\tonly\t-\tDec\t30\t12:02:35s -0:02:35 -\nRule\tsol88\t1988\tonly\t-\tDec\t31\t12:03:05s -0:03:05 -\n\n# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs\n# Before and after 1988, we'll operate on local mean solar time.\n\n# Zone\tNAME\t\tGMTOFF\tRULES/SAVE\tFORMAT\t[UNTIL]\nZone\tAsia/Riyadh88\t3:07:04\t-\t\tzzz\t1988\n\t\t\t3:07:04\tsol88\t\tzzz\t1989\n\t\t\t3:07:04\t-\t\tzzz\n# For backward compatibility...\nLink\tAsia/Riyadh88\tMideast/Riyadh88\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/solar89",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Apparent noon times below are for Riyadh; they're a bit off for other places.\n# Times were computed using a formula provided by the U. S. Naval Observatory:\n#\teqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)\n#\t\t-12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)\n#\t\t+ 19.3 * cos(3 * l);\n# where l is the \"mean longitude of the Sun\" given by\n#\tl = 279.642 degrees + 0.985647 * d\n# and d is the interval in days from January 0, 0 hours Universal Time\n# (equaling the day of the year plus the fraction of a day from zero hours).\n# The accuracy of the formula is plus or minus three seconds.\n#\n# Rounding to the nearest five seconds results in fewer than\n# 256 different \"time types\"--a limit that's faced because time types are\n# stored on disk as unsigned chars.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tsol89\t1989\tonly\t-\tJan\t1\t12:03:35s -0:03:35 -\nRule\tsol89\t1989\tonly\t-\tJan\t2\t12:04:05s -0:04:05 -\nRule\tsol89\t1989\tonly\t-\tJan\t3\t12:04:30s -0:04:30 -\nRule\tsol89\t1989\tonly\t-\tJan\t4\t12:05:00s -0:05:00 -\nRule\tsol89\t1989\tonly\t-\tJan\t5\t12:05:25s -0:05:25 -\nRule\tsol89\t1989\tonly\t-\tJan\t6\t12:05:50s -0:05:50 -\nRule\tsol89\t1989\tonly\t-\tJan\t7\t12:06:15s -0:06:15 -\nRule\tsol89\t1989\tonly\t-\tJan\t8\t12:06:45s -0:06:45 -\nRule\tsol89\t1989\tonly\t-\tJan\t9\t12:07:10s -0:07:10 -\nRule\tsol89\t1989\tonly\t-\tJan\t10\t12:07:35s -0:07:35 -\nRule\tsol89\t1989\tonly\t-\tJan\t11\t12:07:55s -0:07:55 -\nRule\tsol89\t1989\tonly\t-\tJan\t12\t12:08:20s -0:08:20 -\nRule\tsol89\t1989\tonly\t-\tJan\t13\t12:08:45s -0:08:45 -\nRule\tsol89\t1989\tonly\t-\tJan\t14\t12:09:05s -0:09:05 -\nRule\tsol89\t1989\tonly\t-\tJan\t15\t12:09:25s -0:09:25 -\nRule\tsol89\t1989\tonly\t-\tJan\t16\t12:09:45s -0:09:45 -\nRule\tsol89\t1989\tonly\t-\tJan\t17\t12:10:05s -0:10:05 -\nRule\tsol89\t1989\tonly\t-\tJan\t18\t12:10:25s -0:10:25 -\nRule\tsol89\t1989\tonly\t-\tJan\t19\t12:10:45s -0:10:45 -\nRule\tsol89\t1989\tonly\t-\tJan\t20\t12:11:05s -0:11:05 -\nRule\tsol89\t1989\tonly\t-\tJan\t21\t12:11:20s -0:11:20 -\nRule\tsol89\t1989\tonly\t-\tJan\t22\t12:11:35s -0:11:35 -\nRule\tsol89\t1989\tonly\t-\tJan\t23\t12:11:55s -0:11:55 -\nRule\tsol89\t1989\tonly\t-\tJan\t24\t12:12:10s -0:12:10 -\nRule\tsol89\t1989\tonly\t-\tJan\t25\t12:12:20s -0:12:20 -\nRule\tsol89\t1989\tonly\t-\tJan\t26\t12:12:35s -0:12:35 -\nRule\tsol89\t1989\tonly\t-\tJan\t27\t12:12:50s -0:12:50 -\nRule\tsol89\t1989\tonly\t-\tJan\t28\t12:13:00s -0:13:00 -\nRule\tsol89\t1989\tonly\t-\tJan\t29\t12:13:10s -0:13:10 -\nRule\tsol89\t1989\tonly\t-\tJan\t30\t12:13:20s -0:13:20 -\nRule\tsol89\t1989\tonly\t-\tJan\t31\t12:13:30s -0:13:30 -\nRule\tsol89\t1989\tonly\t-\tFeb\t1\t12:13:40s -0:13:40 -\nRule\tsol89\t1989\tonly\t-\tFeb\t2\t12:13:45s -0:13:45 -\nRule\tsol89\t1989\tonly\t-\tFeb\t3\t12:13:55s -0:13:55 -\nRule\tsol89\t1989\tonly\t-\tFeb\t4\t12:14:00s -0:14:00 -\nRule\tsol89\t1989\tonly\t-\tFeb\t5\t12:14:05s -0:14:05 -\nRule\tsol89\t1989\tonly\t-\tFeb\t6\t12:14:10s -0:14:10 -\nRule\tsol89\t1989\tonly\t-\tFeb\t7\t12:14:10s -0:14:10 -\nRule\tsol89\t1989\tonly\t-\tFeb\t8\t12:14:15s -0:14:15 -\nRule\tsol89\t1989\tonly\t-\tFeb\t9\t12:14:15s -0:14:15 -\nRule\tsol89\t1989\tonly\t-\tFeb\t10\t12:14:20s -0:14:20 -\nRule\tsol89\t1989\tonly\t-\tFeb\t11\t12:14:20s -0:14:20 -\nRule\tsol89\t1989\tonly\t-\tFeb\t12\t12:14:20s -0:14:20 -\nRule\tsol89\t1989\tonly\t-\tFeb\t13\t12:14:15s -0:14:15 -\nRule\tsol89\t1989\tonly\t-\tFeb\t14\t12:14:15s -0:14:15 -\nRule\tsol89\t1989\tonly\t-\tFeb\t15\t12:14:10s -0:14:10 -\nRule\tsol89\t1989\tonly\t-\tFeb\t16\t12:14:10s -0:14:10 -\nRule\tsol89\t1989\tonly\t-\tFeb\t17\t12:14:05s -0:14:05 -\nRule\tsol89\t1989\tonly\t-\tFeb\t18\t12:14:00s -0:14:00 -\nRule\tsol89\t1989\tonly\t-\tFeb\t19\t12:13:55s -0:13:55 -\nRule\tsol89\t1989\tonly\t-\tFeb\t20\t12:13:50s -0:13:50 -\nRule\tsol89\t1989\tonly\t-\tFeb\t21\t12:13:40s -0:13:40 -\nRule\tsol89\t1989\tonly\t-\tFeb\t22\t12:13:35s -0:13:35 -\nRule\tsol89\t1989\tonly\t-\tFeb\t23\t12:13:25s -0:13:25 -\nRule\tsol89\t1989\tonly\t-\tFeb\t24\t12:13:15s -0:13:15 -\nRule\tsol89\t1989\tonly\t-\tFeb\t25\t12:13:05s -0:13:05 -\nRule\tsol89\t1989\tonly\t-\tFeb\t26\t12:12:55s -0:12:55 -\nRule\tsol89\t1989\tonly\t-\tFeb\t27\t12:12:45s -0:12:45 -\nRule\tsol89\t1989\tonly\t-\tFeb\t28\t12:12:35s -0:12:35 -\nRule\tsol89\t1989\tonly\t-\tMar\t1\t12:12:25s -0:12:25 -\nRule\tsol89\t1989\tonly\t-\tMar\t2\t12:12:10s -0:12:10 -\nRule\tsol89\t1989\tonly\t-\tMar\t3\t12:12:00s -0:12:00 -\nRule\tsol89\t1989\tonly\t-\tMar\t4\t12:11:45s -0:11:45 -\nRule\tsol89\t1989\tonly\t-\tMar\t5\t12:11:35s -0:11:35 -\nRule\tsol89\t1989\tonly\t-\tMar\t6\t12:11:20s -0:11:20 -\nRule\tsol89\t1989\tonly\t-\tMar\t7\t12:11:05s -0:11:05 -\nRule\tsol89\t1989\tonly\t-\tMar\t8\t12:10:50s -0:10:50 -\nRule\tsol89\t1989\tonly\t-\tMar\t9\t12:10:35s -0:10:35 -\nRule\tsol89\t1989\tonly\t-\tMar\t10\t12:10:20s -0:10:20 -\nRule\tsol89\t1989\tonly\t-\tMar\t11\t12:10:05s -0:10:05 -\nRule\tsol89\t1989\tonly\t-\tMar\t12\t12:09:50s -0:09:50 -\nRule\tsol89\t1989\tonly\t-\tMar\t13\t12:09:30s -0:09:30 -\nRule\tsol89\t1989\tonly\t-\tMar\t14\t12:09:15s -0:09:15 -\nRule\tsol89\t1989\tonly\t-\tMar\t15\t12:09:00s -0:09:00 -\nRule\tsol89\t1989\tonly\t-\tMar\t16\t12:08:40s -0:08:40 -\nRule\tsol89\t1989\tonly\t-\tMar\t17\t12:08:25s -0:08:25 -\nRule\tsol89\t1989\tonly\t-\tMar\t18\t12:08:05s -0:08:05 -\nRule\tsol89\t1989\tonly\t-\tMar\t19\t12:07:50s -0:07:50 -\nRule\tsol89\t1989\tonly\t-\tMar\t20\t12:07:30s -0:07:30 -\nRule\tsol89\t1989\tonly\t-\tMar\t21\t12:07:15s -0:07:15 -\nRule\tsol89\t1989\tonly\t-\tMar\t22\t12:06:55s -0:06:55 -\nRule\tsol89\t1989\tonly\t-\tMar\t23\t12:06:35s -0:06:35 -\nRule\tsol89\t1989\tonly\t-\tMar\t24\t12:06:20s -0:06:20 -\nRule\tsol89\t1989\tonly\t-\tMar\t25\t12:06:00s -0:06:00 -\nRule\tsol89\t1989\tonly\t-\tMar\t26\t12:05:40s -0:05:40 -\nRule\tsol89\t1989\tonly\t-\tMar\t27\t12:05:25s -0:05:25 -\nRule\tsol89\t1989\tonly\t-\tMar\t28\t12:05:05s -0:05:05 -\nRule\tsol89\t1989\tonly\t-\tMar\t29\t12:04:50s -0:04:50 -\nRule\tsol89\t1989\tonly\t-\tMar\t30\t12:04:30s -0:04:30 -\nRule\tsol89\t1989\tonly\t-\tMar\t31\t12:04:10s -0:04:10 -\nRule\tsol89\t1989\tonly\t-\tApr\t1\t12:03:55s -0:03:55 -\nRule\tsol89\t1989\tonly\t-\tApr\t2\t12:03:35s -0:03:35 -\nRule\tsol89\t1989\tonly\t-\tApr\t3\t12:03:20s -0:03:20 -\nRule\tsol89\t1989\tonly\t-\tApr\t4\t12:03:00s -0:03:00 -\nRule\tsol89\t1989\tonly\t-\tApr\t5\t12:02:45s -0:02:45 -\nRule\tsol89\t1989\tonly\t-\tApr\t6\t12:02:25s -0:02:25 -\nRule\tsol89\t1989\tonly\t-\tApr\t7\t12:02:10s -0:02:10 -\nRule\tsol89\t1989\tonly\t-\tApr\t8\t12:01:50s -0:01:50 -\nRule\tsol89\t1989\tonly\t-\tApr\t9\t12:01:35s -0:01:35 -\nRule\tsol89\t1989\tonly\t-\tApr\t10\t12:01:20s -0:01:20 -\nRule\tsol89\t1989\tonly\t-\tApr\t11\t12:01:05s -0:01:05 -\nRule\tsol89\t1989\tonly\t-\tApr\t12\t12:00:50s -0:00:50 -\nRule\tsol89\t1989\tonly\t-\tApr\t13\t12:00:35s -0:00:35 -\nRule\tsol89\t1989\tonly\t-\tApr\t14\t12:00:20s -0:00:20 -\nRule\tsol89\t1989\tonly\t-\tApr\t15\t12:00:05s -0:00:05 -\nRule\tsol89\t1989\tonly\t-\tApr\t16\t11:59:50s 0:00:10 -\nRule\tsol89\t1989\tonly\t-\tApr\t17\t11:59:35s 0:00:25 -\nRule\tsol89\t1989\tonly\t-\tApr\t18\t11:59:20s 0:00:40 -\nRule\tsol89\t1989\tonly\t-\tApr\t19\t11:59:10s 0:00:50 -\nRule\tsol89\t1989\tonly\t-\tApr\t20\t11:58:55s 0:01:05 -\nRule\tsol89\t1989\tonly\t-\tApr\t21\t11:58:45s 0:01:15 -\nRule\tsol89\t1989\tonly\t-\tApr\t22\t11:58:30s 0:01:30 -\nRule\tsol89\t1989\tonly\t-\tApr\t23\t11:58:20s 0:01:40 -\nRule\tsol89\t1989\tonly\t-\tApr\t24\t11:58:10s 0:01:50 -\nRule\tsol89\t1989\tonly\t-\tApr\t25\t11:58:00s 0:02:00 -\nRule\tsol89\t1989\tonly\t-\tApr\t26\t11:57:50s 0:02:10 -\nRule\tsol89\t1989\tonly\t-\tApr\t27\t11:57:40s 0:02:20 -\nRule\tsol89\t1989\tonly\t-\tApr\t28\t11:57:30s 0:02:30 -\nRule\tsol89\t1989\tonly\t-\tApr\t29\t11:57:20s 0:02:40 -\nRule\tsol89\t1989\tonly\t-\tApr\t30\t11:57:15s 0:02:45 -\nRule\tsol89\t1989\tonly\t-\tMay\t1\t11:57:05s 0:02:55 -\nRule\tsol89\t1989\tonly\t-\tMay\t2\t11:57:00s 0:03:00 -\nRule\tsol89\t1989\tonly\t-\tMay\t3\t11:56:50s 0:03:10 -\nRule\tsol89\t1989\tonly\t-\tMay\t4\t11:56:45s 0:03:15 -\nRule\tsol89\t1989\tonly\t-\tMay\t5\t11:56:40s 0:03:20 -\nRule\tsol89\t1989\tonly\t-\tMay\t6\t11:56:35s 0:03:25 -\nRule\tsol89\t1989\tonly\t-\tMay\t7\t11:56:30s 0:03:30 -\nRule\tsol89\t1989\tonly\t-\tMay\t8\t11:56:30s 0:03:30 -\nRule\tsol89\t1989\tonly\t-\tMay\t9\t11:56:25s 0:03:35 -\nRule\tsol89\t1989\tonly\t-\tMay\t10\t11:56:25s 0:03:35 -\nRule\tsol89\t1989\tonly\t-\tMay\t11\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t12\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t13\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t14\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t15\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t16\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t17\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t18\t11:56:25s 0:03:35 -\nRule\tsol89\t1989\tonly\t-\tMay\t19\t11:56:25s 0:03:35 -\nRule\tsol89\t1989\tonly\t-\tMay\t20\t11:56:30s 0:03:30 -\nRule\tsol89\t1989\tonly\t-\tMay\t21\t11:56:35s 0:03:25 -\nRule\tsol89\t1989\tonly\t-\tMay\t22\t11:56:35s 0:03:25 -\nRule\tsol89\t1989\tonly\t-\tMay\t23\t11:56:40s 0:03:20 -\nRule\tsol89\t1989\tonly\t-\tMay\t24\t11:56:45s 0:03:15 -\nRule\tsol89\t1989\tonly\t-\tMay\t25\t11:56:55s 0:03:05 -\nRule\tsol89\t1989\tonly\t-\tMay\t26\t11:57:00s 0:03:00 -\nRule\tsol89\t1989\tonly\t-\tMay\t27\t11:57:05s 0:02:55 -\nRule\tsol89\t1989\tonly\t-\tMay\t28\t11:57:15s 0:02:45 -\nRule\tsol89\t1989\tonly\t-\tMay\t29\t11:57:20s 0:02:40 -\nRule\tsol89\t1989\tonly\t-\tMay\t30\t11:57:30s 0:02:30 -\nRule\tsol89\t1989\tonly\t-\tMay\t31\t11:57:35s 0:02:25 -\nRule\tsol89\t1989\tonly\t-\tJun\t1\t11:57:45s 0:02:15 -\nRule\tsol89\t1989\tonly\t-\tJun\t2\t11:57:55s 0:02:05 -\nRule\tsol89\t1989\tonly\t-\tJun\t3\t11:58:05s 0:01:55 -\nRule\tsol89\t1989\tonly\t-\tJun\t4\t11:58:15s 0:01:45 -\nRule\tsol89\t1989\tonly\t-\tJun\t5\t11:58:25s 0:01:35 -\nRule\tsol89\t1989\tonly\t-\tJun\t6\t11:58:35s 0:01:25 -\nRule\tsol89\t1989\tonly\t-\tJun\t7\t11:58:45s 0:01:15 -\nRule\tsol89\t1989\tonly\t-\tJun\t8\t11:59:00s 0:01:00 -\nRule\tsol89\t1989\tonly\t-\tJun\t9\t11:59:10s 0:00:50 -\nRule\tsol89\t1989\tonly\t-\tJun\t10\t11:59:20s 0:00:40 -\nRule\tsol89\t1989\tonly\t-\tJun\t11\t11:59:35s 0:00:25 -\nRule\tsol89\t1989\tonly\t-\tJun\t12\t11:59:45s 0:00:15 -\nRule\tsol89\t1989\tonly\t-\tJun\t13\t12:00:00s 0:00:00 -\nRule\tsol89\t1989\tonly\t-\tJun\t14\t12:00:10s -0:00:10 -\nRule\tsol89\t1989\tonly\t-\tJun\t15\t12:00:25s -0:00:25 -\nRule\tsol89\t1989\tonly\t-\tJun\t16\t12:00:35s -0:00:35 -\nRule\tsol89\t1989\tonly\t-\tJun\t17\t12:00:50s -0:00:50 -\nRule\tsol89\t1989\tonly\t-\tJun\t18\t12:01:05s -0:01:05 -\nRule\tsol89\t1989\tonly\t-\tJun\t19\t12:01:15s -0:01:15 -\nRule\tsol89\t1989\tonly\t-\tJun\t20\t12:01:30s -0:01:30 -\nRule\tsol89\t1989\tonly\t-\tJun\t21\t12:01:40s -0:01:40 -\nRule\tsol89\t1989\tonly\t-\tJun\t22\t12:01:55s -0:01:55 -\nRule\tsol89\t1989\tonly\t-\tJun\t23\t12:02:10s -0:02:10 -\nRule\tsol89\t1989\tonly\t-\tJun\t24\t12:02:20s -0:02:20 -\nRule\tsol89\t1989\tonly\t-\tJun\t25\t12:02:35s -0:02:35 -\nRule\tsol89\t1989\tonly\t-\tJun\t26\t12:02:45s -0:02:45 -\nRule\tsol89\t1989\tonly\t-\tJun\t27\t12:03:00s -0:03:00 -\nRule\tsol89\t1989\tonly\t-\tJun\t28\t12:03:10s -0:03:10 -\nRule\tsol89\t1989\tonly\t-\tJun\t29\t12:03:25s -0:03:25 -\nRule\tsol89\t1989\tonly\t-\tJun\t30\t12:03:35s -0:03:35 -\nRule\tsol89\t1989\tonly\t-\tJul\t1\t12:03:45s -0:03:45 -\nRule\tsol89\t1989\tonly\t-\tJul\t2\t12:04:00s -0:04:00 -\nRule\tsol89\t1989\tonly\t-\tJul\t3\t12:04:10s -0:04:10 -\nRule\tsol89\t1989\tonly\t-\tJul\t4\t12:04:20s -0:04:20 -\nRule\tsol89\t1989\tonly\t-\tJul\t5\t12:04:30s -0:04:30 -\nRule\tsol89\t1989\tonly\t-\tJul\t6\t12:04:40s -0:04:40 -\nRule\tsol89\t1989\tonly\t-\tJul\t7\t12:04:50s -0:04:50 -\nRule\tsol89\t1989\tonly\t-\tJul\t8\t12:05:00s -0:05:00 -\nRule\tsol89\t1989\tonly\t-\tJul\t9\t12:05:10s -0:05:10 -\nRule\tsol89\t1989\tonly\t-\tJul\t10\t12:05:20s -0:05:20 -\nRule\tsol89\t1989\tonly\t-\tJul\t11\t12:05:25s -0:05:25 -\nRule\tsol89\t1989\tonly\t-\tJul\t12\t12:05:35s -0:05:35 -\nRule\tsol89\t1989\tonly\t-\tJul\t13\t12:05:40s -0:05:40 -\nRule\tsol89\t1989\tonly\t-\tJul\t14\t12:05:50s -0:05:50 -\nRule\tsol89\t1989\tonly\t-\tJul\t15\t12:05:55s -0:05:55 -\nRule\tsol89\t1989\tonly\t-\tJul\t16\t12:06:00s -0:06:00 -\nRule\tsol89\t1989\tonly\t-\tJul\t17\t12:06:05s -0:06:05 -\nRule\tsol89\t1989\tonly\t-\tJul\t18\t12:06:10s -0:06:10 -\nRule\tsol89\t1989\tonly\t-\tJul\t19\t12:06:15s -0:06:15 -\nRule\tsol89\t1989\tonly\t-\tJul\t20\t12:06:20s -0:06:20 -\nRule\tsol89\t1989\tonly\t-\tJul\t21\t12:06:20s -0:06:20 -\nRule\tsol89\t1989\tonly\t-\tJul\t22\t12:06:25s -0:06:25 -\nRule\tsol89\t1989\tonly\t-\tJul\t23\t12:06:25s -0:06:25 -\nRule\tsol89\t1989\tonly\t-\tJul\t24\t12:06:30s -0:06:30 -\nRule\tsol89\t1989\tonly\t-\tJul\t25\t12:06:30s -0:06:30 -\nRule\tsol89\t1989\tonly\t-\tJul\t26\t12:06:30s -0:06:30 -\nRule\tsol89\t1989\tonly\t-\tJul\t27\t12:06:30s -0:06:30 -\nRule\tsol89\t1989\tonly\t-\tJul\t28\t12:06:30s -0:06:30 -\nRule\tsol89\t1989\tonly\t-\tJul\t29\t12:06:25s -0:06:25 -\nRule\tsol89\t1989\tonly\t-\tJul\t30\t12:06:25s -0:06:25 -\nRule\tsol89\t1989\tonly\t-\tJul\t31\t12:06:20s -0:06:20 -\nRule\tsol89\t1989\tonly\t-\tAug\t1\t12:06:20s -0:06:20 -\nRule\tsol89\t1989\tonly\t-\tAug\t2\t12:06:15s -0:06:15 -\nRule\tsol89\t1989\tonly\t-\tAug\t3\t12:06:10s -0:06:10 -\nRule\tsol89\t1989\tonly\t-\tAug\t4\t12:06:05s -0:06:05 -\nRule\tsol89\t1989\tonly\t-\tAug\t5\t12:06:00s -0:06:00 -\nRule\tsol89\t1989\tonly\t-\tAug\t6\t12:05:50s -0:05:50 -\nRule\tsol89\t1989\tonly\t-\tAug\t7\t12:05:45s -0:05:45 -\nRule\tsol89\t1989\tonly\t-\tAug\t8\t12:05:35s -0:05:35 -\nRule\tsol89\t1989\tonly\t-\tAug\t9\t12:05:30s -0:05:30 -\nRule\tsol89\t1989\tonly\t-\tAug\t10\t12:05:20s -0:05:20 -\nRule\tsol89\t1989\tonly\t-\tAug\t11\t12:05:10s -0:05:10 -\nRule\tsol89\t1989\tonly\t-\tAug\t12\t12:05:00s -0:05:00 -\nRule\tsol89\t1989\tonly\t-\tAug\t13\t12:04:50s -0:04:50 -\nRule\tsol89\t1989\tonly\t-\tAug\t14\t12:04:40s -0:04:40 -\nRule\tsol89\t1989\tonly\t-\tAug\t15\t12:04:30s -0:04:30 -\nRule\tsol89\t1989\tonly\t-\tAug\t16\t12:04:15s -0:04:15 -\nRule\tsol89\t1989\tonly\t-\tAug\t17\t12:04:05s -0:04:05 -\nRule\tsol89\t1989\tonly\t-\tAug\t18\t12:03:50s -0:03:50 -\nRule\tsol89\t1989\tonly\t-\tAug\t19\t12:03:35s -0:03:35 -\nRule\tsol89\t1989\tonly\t-\tAug\t20\t12:03:25s -0:03:25 -\nRule\tsol89\t1989\tonly\t-\tAug\t21\t12:03:10s -0:03:10 -\nRule\tsol89\t1989\tonly\t-\tAug\t22\t12:02:55s -0:02:55 -\nRule\tsol89\t1989\tonly\t-\tAug\t23\t12:02:40s -0:02:40 -\nRule\tsol89\t1989\tonly\t-\tAug\t24\t12:02:20s -0:02:20 -\nRule\tsol89\t1989\tonly\t-\tAug\t25\t12:02:05s -0:02:05 -\nRule\tsol89\t1989\tonly\t-\tAug\t26\t12:01:50s -0:01:50 -\nRule\tsol89\t1989\tonly\t-\tAug\t27\t12:01:30s -0:01:30 -\nRule\tsol89\t1989\tonly\t-\tAug\t28\t12:01:15s -0:01:15 -\nRule\tsol89\t1989\tonly\t-\tAug\t29\t12:00:55s -0:00:55 -\nRule\tsol89\t1989\tonly\t-\tAug\t30\t12:00:40s -0:00:40 -\nRule\tsol89\t1989\tonly\t-\tAug\t31\t12:00:20s -0:00:20 -\nRule\tsol89\t1989\tonly\t-\tSep\t1\t12:00:00s 0:00:00 -\nRule\tsol89\t1989\tonly\t-\tSep\t2\t11:59:45s 0:00:15 -\nRule\tsol89\t1989\tonly\t-\tSep\t3\t11:59:25s 0:00:35 -\nRule\tsol89\t1989\tonly\t-\tSep\t4\t11:59:05s 0:00:55 -\nRule\tsol89\t1989\tonly\t-\tSep\t5\t11:58:45s 0:01:15 -\nRule\tsol89\t1989\tonly\t-\tSep\t6\t11:58:25s 0:01:35 -\nRule\tsol89\t1989\tonly\t-\tSep\t7\t11:58:05s 0:01:55 -\nRule\tsol89\t1989\tonly\t-\tSep\t8\t11:57:45s 0:02:15 -\nRule\tsol89\t1989\tonly\t-\tSep\t9\t11:57:20s 0:02:40 -\nRule\tsol89\t1989\tonly\t-\tSep\t10\t11:57:00s 0:03:00 -\nRule\tsol89\t1989\tonly\t-\tSep\t11\t11:56:40s 0:03:20 -\nRule\tsol89\t1989\tonly\t-\tSep\t12\t11:56:20s 0:03:40 -\nRule\tsol89\t1989\tonly\t-\tSep\t13\t11:56:00s 0:04:00 -\nRule\tsol89\t1989\tonly\t-\tSep\t14\t11:55:35s 0:04:25 -\nRule\tsol89\t1989\tonly\t-\tSep\t15\t11:55:15s 0:04:45 -\nRule\tsol89\t1989\tonly\t-\tSep\t16\t11:54:55s 0:05:05 -\nRule\tsol89\t1989\tonly\t-\tSep\t17\t11:54:35s 0:05:25 -\nRule\tsol89\t1989\tonly\t-\tSep\t18\t11:54:10s 0:05:50 -\nRule\tsol89\t1989\tonly\t-\tSep\t19\t11:53:50s 0:06:10 -\nRule\tsol89\t1989\tonly\t-\tSep\t20\t11:53:30s 0:06:30 -\nRule\tsol89\t1989\tonly\t-\tSep\t21\t11:53:10s 0:06:50 -\nRule\tsol89\t1989\tonly\t-\tSep\t22\t11:52:45s 0:07:15 -\nRule\tsol89\t1989\tonly\t-\tSep\t23\t11:52:25s 0:07:35 -\nRule\tsol89\t1989\tonly\t-\tSep\t24\t11:52:05s 0:07:55 -\nRule\tsol89\t1989\tonly\t-\tSep\t25\t11:51:45s 0:08:15 -\nRule\tsol89\t1989\tonly\t-\tSep\t26\t11:51:25s 0:08:35 -\nRule\tsol89\t1989\tonly\t-\tSep\t27\t11:51:05s 0:08:55 -\nRule\tsol89\t1989\tonly\t-\tSep\t28\t11:50:40s 0:09:20 -\nRule\tsol89\t1989\tonly\t-\tSep\t29\t11:50:20s 0:09:40 -\nRule\tsol89\t1989\tonly\t-\tSep\t30\t11:50:00s 0:10:00 -\nRule\tsol89\t1989\tonly\t-\tOct\t1\t11:49:45s 0:10:15 -\nRule\tsol89\t1989\tonly\t-\tOct\t2\t11:49:25s 0:10:35 -\nRule\tsol89\t1989\tonly\t-\tOct\t3\t11:49:05s 0:10:55 -\nRule\tsol89\t1989\tonly\t-\tOct\t4\t11:48:45s 0:11:15 -\nRule\tsol89\t1989\tonly\t-\tOct\t5\t11:48:30s 0:11:30 -\nRule\tsol89\t1989\tonly\t-\tOct\t6\t11:48:10s 0:11:50 -\nRule\tsol89\t1989\tonly\t-\tOct\t7\t11:47:50s 0:12:10 -\nRule\tsol89\t1989\tonly\t-\tOct\t8\t11:47:35s 0:12:25 -\nRule\tsol89\t1989\tonly\t-\tOct\t9\t11:47:20s 0:12:40 -\nRule\tsol89\t1989\tonly\t-\tOct\t10\t11:47:00s 0:13:00 -\nRule\tsol89\t1989\tonly\t-\tOct\t11\t11:46:45s 0:13:15 -\nRule\tsol89\t1989\tonly\t-\tOct\t12\t11:46:30s 0:13:30 -\nRule\tsol89\t1989\tonly\t-\tOct\t13\t11:46:15s 0:13:45 -\nRule\tsol89\t1989\tonly\t-\tOct\t14\t11:46:00s 0:14:00 -\nRule\tsol89\t1989\tonly\t-\tOct\t15\t11:45:50s 0:14:10 -\nRule\tsol89\t1989\tonly\t-\tOct\t16\t11:45:35s 0:14:25 -\nRule\tsol89\t1989\tonly\t-\tOct\t17\t11:45:20s 0:14:40 -\nRule\tsol89\t1989\tonly\t-\tOct\t18\t11:45:10s 0:14:50 -\nRule\tsol89\t1989\tonly\t-\tOct\t19\t11:45:00s 0:15:00 -\nRule\tsol89\t1989\tonly\t-\tOct\t20\t11:44:50s 0:15:10 -\nRule\tsol89\t1989\tonly\t-\tOct\t21\t11:44:40s 0:15:20 -\nRule\tsol89\t1989\tonly\t-\tOct\t22\t11:44:30s 0:15:30 -\nRule\tsol89\t1989\tonly\t-\tOct\t23\t11:44:20s 0:15:40 -\nRule\tsol89\t1989\tonly\t-\tOct\t24\t11:44:10s 0:15:50 -\nRule\tsol89\t1989\tonly\t-\tOct\t25\t11:44:05s 0:15:55 -\nRule\tsol89\t1989\tonly\t-\tOct\t26\t11:44:00s 0:16:00 -\nRule\tsol89\t1989\tonly\t-\tOct\t27\t11:43:50s 0:16:10 -\nRule\tsol89\t1989\tonly\t-\tOct\t28\t11:43:45s 0:16:15 -\nRule\tsol89\t1989\tonly\t-\tOct\t29\t11:43:40s 0:16:20 -\nRule\tsol89\t1989\tonly\t-\tOct\t30\t11:43:40s 0:16:20 -\nRule\tsol89\t1989\tonly\t-\tOct\t31\t11:43:35s 0:16:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t1\t11:43:35s 0:16:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t2\t11:43:35s 0:16:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t3\t11:43:30s 0:16:30 -\nRule\tsol89\t1989\tonly\t-\tNov\t4\t11:43:35s 0:16:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t5\t11:43:35s 0:16:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t6\t11:43:35s 0:16:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t7\t11:43:40s 0:16:20 -\nRule\tsol89\t1989\tonly\t-\tNov\t8\t11:43:45s 0:16:15 -\nRule\tsol89\t1989\tonly\t-\tNov\t9\t11:43:50s 0:16:10 -\nRule\tsol89\t1989\tonly\t-\tNov\t10\t11:43:55s 0:16:05 -\nRule\tsol89\t1989\tonly\t-\tNov\t11\t11:44:00s 0:16:00 -\nRule\tsol89\t1989\tonly\t-\tNov\t12\t11:44:05s 0:15:55 -\nRule\tsol89\t1989\tonly\t-\tNov\t13\t11:44:15s 0:15:45 -\nRule\tsol89\t1989\tonly\t-\tNov\t14\t11:44:25s 0:15:35 -\nRule\tsol89\t1989\tonly\t-\tNov\t15\t11:44:35s 0:15:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t16\t11:44:45s 0:15:15 -\nRule\tsol89\t1989\tonly\t-\tNov\t17\t11:44:55s 0:15:05 -\nRule\tsol89\t1989\tonly\t-\tNov\t18\t11:45:10s 0:14:50 -\nRule\tsol89\t1989\tonly\t-\tNov\t19\t11:45:20s 0:14:40 -\nRule\tsol89\t1989\tonly\t-\tNov\t20\t11:45:35s 0:14:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t21\t11:45:50s 0:14:10 -\nRule\tsol89\t1989\tonly\t-\tNov\t22\t11:46:05s 0:13:55 -\nRule\tsol89\t1989\tonly\t-\tNov\t23\t11:46:25s 0:13:35 -\nRule\tsol89\t1989\tonly\t-\tNov\t24\t11:46:40s 0:13:20 -\nRule\tsol89\t1989\tonly\t-\tNov\t25\t11:47:00s 0:13:00 -\nRule\tsol89\t1989\tonly\t-\tNov\t26\t11:47:20s 0:12:40 -\nRule\tsol89\t1989\tonly\t-\tNov\t27\t11:47:35s 0:12:25 -\nRule\tsol89\t1989\tonly\t-\tNov\t28\t11:47:55s 0:12:05 -\nRule\tsol89\t1989\tonly\t-\tNov\t29\t11:48:20s 0:11:40 -\nRule\tsol89\t1989\tonly\t-\tNov\t30\t11:48:40s 0:11:20 -\nRule\tsol89\t1989\tonly\t-\tDec\t1\t11:49:00s 0:11:00 -\nRule\tsol89\t1989\tonly\t-\tDec\t2\t11:49:25s 0:10:35 -\nRule\tsol89\t1989\tonly\t-\tDec\t3\t11:49:50s 0:10:10 -\nRule\tsol89\t1989\tonly\t-\tDec\t4\t11:50:15s 0:09:45 -\nRule\tsol89\t1989\tonly\t-\tDec\t5\t11:50:35s 0:09:25 -\nRule\tsol89\t1989\tonly\t-\tDec\t6\t11:51:00s 0:09:00 -\nRule\tsol89\t1989\tonly\t-\tDec\t7\t11:51:30s 0:08:30 -\nRule\tsol89\t1989\tonly\t-\tDec\t8\t11:51:55s 0:08:05 -\nRule\tsol89\t1989\tonly\t-\tDec\t9\t11:52:20s 0:07:40 -\nRule\tsol89\t1989\tonly\t-\tDec\t10\t11:52:50s 0:07:10 -\nRule\tsol89\t1989\tonly\t-\tDec\t11\t11:53:15s 0:06:45 -\nRule\tsol89\t1989\tonly\t-\tDec\t12\t11:53:45s 0:06:15 -\nRule\tsol89\t1989\tonly\t-\tDec\t13\t11:54:10s 0:05:50 -\nRule\tsol89\t1989\tonly\t-\tDec\t14\t11:54:40s 0:05:20 -\nRule\tsol89\t1989\tonly\t-\tDec\t15\t11:55:10s 0:04:50 -\nRule\tsol89\t1989\tonly\t-\tDec\t16\t11:55:40s 0:04:20 -\nRule\tsol89\t1989\tonly\t-\tDec\t17\t11:56:05s 0:03:55 -\nRule\tsol89\t1989\tonly\t-\tDec\t18\t11:56:35s 0:03:25 -\nRule\tsol89\t1989\tonly\t-\tDec\t19\t11:57:05s 0:02:55 -\nRule\tsol89\t1989\tonly\t-\tDec\t20\t11:57:35s 0:02:25 -\nRule\tsol89\t1989\tonly\t-\tDec\t21\t11:58:05s 0:01:55 -\nRule\tsol89\t1989\tonly\t-\tDec\t22\t11:58:35s 0:01:25 -\nRule\tsol89\t1989\tonly\t-\tDec\t23\t11:59:05s 0:00:55 -\nRule\tsol89\t1989\tonly\t-\tDec\t24\t11:59:35s 0:00:25 -\nRule\tsol89\t1989\tonly\t-\tDec\t25\t12:00:05s -0:00:05 -\nRule\tsol89\t1989\tonly\t-\tDec\t26\t12:00:35s -0:00:35 -\nRule\tsol89\t1989\tonly\t-\tDec\t27\t12:01:05s -0:01:05 -\nRule\tsol89\t1989\tonly\t-\tDec\t28\t12:01:35s -0:01:35 -\nRule\tsol89\t1989\tonly\t-\tDec\t29\t12:02:00s -0:02:00 -\nRule\tsol89\t1989\tonly\t-\tDec\t30\t12:02:30s -0:02:30 -\nRule\tsol89\t1989\tonly\t-\tDec\t31\t12:03:00s -0:03:00 -\n\n# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs\n# Before and after 1989, we'll operate on local mean solar time.\n\n# Zone\tNAME\t\tGMTOFF\tRULES/SAVE\tFORMAT\t[UNTIL]\nZone\tAsia/Riyadh89\t3:07:04\t-\t\tzzz\t1989\n\t\t\t3:07:04\tsol89\t\tzzz\t1990\n\t\t\t3:07:04\t-\t\tzzz\n# For backward compatibility...\nLink\tAsia/Riyadh89\tMideast/Riyadh89\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/southamerica",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# This data is by no means authoritative; if you think you know better,\n# go ahead and edit the file (and please send any changes to\n# tz@iana.org for general use in the future).\n\n# From Paul Eggert (2006-03-22):\n# A good source for time zone historical data outside the U.S. is\n# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),\n# San Diego: ACS Publications, Inc. (2003).\n#\n# Gwillim Law writes that a good source\n# for recent time zone data is the International Air Transport\n# Association's Standard Schedules Information Manual (IATA SSIM),\n# published semiannually.  Law sent in several helpful summaries\n# of the IATA's data after 1990.\n#\n# Except where otherwise noted, Shanks & Pottenger is the source for\n# entries through 1990, and IATA SSIM is the source for entries afterwards.\n#\n# Earlier editions of these tables used the North American style (e.g. ARST and\n# ARDT for Argentine Standard and Daylight Time), but the following quote\n# suggests that it's better to use European style (e.g. ART and ARST).\n#\tI suggest the use of _Summer time_ instead of the more cumbersome\n#\t_daylight-saving time_.  _Summer time_ seems to be in general use\n#\tin Europe and South America.\n#\t-- E O Cutler, _New York Times_ (1937-02-14), quoted in\n#\tH L Mencken, _The American Language: Supplement I_ (1960), p 466\n#\n# Earlier editions of these tables also used the North American style\n# for time zones in Brazil, but this was incorrect, as Brazilians say\n# \"summer time\".  Reinaldo Goulart, a Sao Paulo businessman active in\n# the railroad sector, writes (1999-07-06):\n#\tThe subject of time zones is currently a matter of discussion/debate in\n#\tBrazil.  Let's say that \"the Brasilia time\" is considered the\n#\t\"official time\" because Brasilia is the capital city.\n#\tThe other three time zones are called \"Brasilia time \"minus one\" or\n#\t\"plus one\" or \"plus two\".  As far as I know there is no such\n#\tname/designation as \"Eastern Time\" or \"Central Time\".\n# So I invented the following (English-language) abbreviations for now.\n# Corrections are welcome!\n#\t\tstd\tdst\n#\t-2:00\tFNT\tFNST\tFernando de Noronha\n#\t-3:00\tBRT\tBRST\tBrasilia\n#\t-4:00\tAMT\tAMST\tAmazon\n#\t-5:00\tACT\tACST\tAcre\n\n###############################################################################\n\n###############################################################################\n\n# Argentina\n\n# From Bob Devine (1988-01-28):\n# Argentina: first Sunday in October to first Sunday in April since 1976.\n# Double Summer time from 1969 to 1974.  Switches at midnight.\n\n# From U. S. Naval Observatory (1988-01-199):\n# ARGENTINA           3 H BEHIND   UTC\n\n# From Hernan G. Otero (1995-06-26):\n# I am sending modifications to the Argentine time zone table...\n# AR was chosen because they are the ISO letters that represent Argentina.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tArg\t1930\tonly\t-\tDec\t 1\t0:00\t1:00\tS\nRule\tArg\t1931\tonly\t-\tApr\t 1\t0:00\t0\t-\nRule\tArg\t1931\tonly\t-\tOct\t15\t0:00\t1:00\tS\nRule\tArg\t1932\t1940\t-\tMar\t 1\t0:00\t0\t-\nRule\tArg\t1932\t1939\t-\tNov\t 1\t0:00\t1:00\tS\nRule\tArg\t1940\tonly\t-\tJul\t 1\t0:00\t1:00\tS\nRule\tArg\t1941\tonly\t-\tJun\t15\t0:00\t0\t-\nRule\tArg\t1941\tonly\t-\tOct\t15\t0:00\t1:00\tS\nRule\tArg\t1943\tonly\t-\tAug\t 1\t0:00\t0\t-\nRule\tArg\t1943\tonly\t-\tOct\t15\t0:00\t1:00\tS\nRule\tArg\t1946\tonly\t-\tMar\t 1\t0:00\t0\t-\nRule\tArg\t1946\tonly\t-\tOct\t 1\t0:00\t1:00\tS\nRule\tArg\t1963\tonly\t-\tOct\t 1\t0:00\t0\t-\nRule\tArg\t1963\tonly\t-\tDec\t15\t0:00\t1:00\tS\nRule\tArg\t1964\t1966\t-\tMar\t 1\t0:00\t0\t-\nRule\tArg\t1964\t1966\t-\tOct\t15\t0:00\t1:00\tS\nRule\tArg\t1967\tonly\t-\tApr\t 2\t0:00\t0\t-\nRule\tArg\t1967\t1968\t-\tOct\tSun>=1\t0:00\t1:00\tS\nRule\tArg\t1968\t1969\t-\tApr\tSun>=1\t0:00\t0\t-\nRule\tArg\t1974\tonly\t-\tJan\t23\t0:00\t1:00\tS\nRule\tArg\t1974\tonly\t-\tMay\t 1\t0:00\t0\t-\nRule\tArg\t1988\tonly\t-\tDec\t 1\t0:00\t1:00\tS\n#\n# From Hernan G. Otero (1995-06-26):\n# These corrections were contributed by InterSoft Argentina S.A.,\n# obtaining the data from the:\n# Talleres de Hidrografia Naval Argentina\n# (Argentine Naval Hydrography Institute)\nRule\tArg\t1989\t1993\t-\tMar\tSun>=1\t0:00\t0\t-\nRule\tArg\t1989\t1992\t-\tOct\tSun>=15\t0:00\t1:00\tS\n#\n# From Hernan G. Otero (1995-06-26):\n# From this moment on, the law that mandated the daylight saving\n# time corrections was derogated and no more modifications\n# to the time zones (for daylight saving) are now made.\n#\n# From Rives McDow (2000-01-10):\n# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,\n# which did not result in the switch of a time zone, as they stayed 9 hours\n# from the International Date Line.\nRule\tArg\t1999\tonly\t-\tOct\tSun>=1\t0:00\t1:00\tS\n# From Paul Eggert (2007-12-28):\n# DST was set to expire on March 5, not March 3, but since it was converted\n# to standard time on March 3 it's more convenient for us to pretend that\n# it ended on March 3.\nRule\tArg\t2000\tonly\t-\tMar\t3\t0:00\t0\t-\n#\n# From Peter Gradelski via Steffen Thorsen (2000-03-01):\n# We just checked with our Sao Paulo office and they say the government of\n# Argentina decided not to become one of the countries that go on or off DST.\n# So Buenos Aires should be -3 hours from GMT at all times.\n#\n# From Fabian L. Arce Jofre (2000-04-04):\n# The law that claimed DST for Argentina was derogated by President Fernando\n# de la Rua on March 2, 2000, because it would make people spend more energy\n# in the winter time, rather than less.  The change took effect on March 3.\n#\n# From Mariano Absatz (2001-06-06):\n# one of the major newspapers here in Argentina said that the 1999\n# Timezone Law (which never was effectively applied) will (would?) be\n# in effect.... The article is at\n# http://ar.clarin.com/diario/2001-06-06/e-01701.htm\n# ... The Law itself is \"Ley No 25155\", sanctioned on 1999-08-25, enacted\n# 1999-09-17, and published 1999-09-21.  The official publication is at:\n# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF\n# Regretfully, you have to subscribe (and pay) for the on-line version....\n#\n# (2001-06-12):\n# the timezone for Argentina will not change next Sunday.\n# Apparently it will do so on Sunday 24th....\n# http://ar.clarin.com/diario/2001-06-12/s-03501.htm\n#\n# (2001-06-25):\n# Last Friday (yes, the last working day before the date of the change), the\n# Senate annulled the 1999 law that introduced the changes later postponed.\n# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm\n# It remains the vote of the Deputies..., but it will be the same....\n# This kind of things had always been done this way in Argentina.\n# We are still -03:00 all year round in all of the country.\n#\n# From Steffen Thorsen (2007-12-21):\n# A user (Leonardo Chaim) reported that Argentina will adopt DST....\n# all of the country (all Zone-entries) are affected.  News reports like\n# http://www.lanacion.com.ar/opinion/nota.asp?nota_id=973037 indicate\n# that Argentina will use DST next year as well, from October to\n# March, although exact rules are not given.\n#\n# From Jesper Norgaard Welen (2007-12-26)\n# The last hurdle of Argentina DST is over, the proposal was approved in\n# the lower chamber too (Deputados) with a vote 192 for and 2 against.\n# By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to\n# the original scanned proposal, where the dates and the zero hours are\n# clear and unambiguous...This is the article about final approval:\n# <a href=\"http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996\">\n# http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996\n# </a>\n#\n# From Paul Eggert (2007-12-22):\n# For dates after mid-2008, the following rules are my guesses and\n# are quite possibly wrong, but are more likely than no DST at all.\n\n# From Alexander Krivenyshev (2008-09-05):\n# As per message from Carlos Alberto Fonseca Arauz (Nicaragua),\n# Argentina will start DST on Sunday October 19, 2008.\n#\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_argentina03.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_argentina03.html\n# </a>\n# OR\n# <a href=\"http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)\">\n# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)\n# </a>\n\n# From Rodrigo Severo (2008-10-06):\n# Here is some info available at a Gentoo bug related to TZ on Argentina's DST:\n# ...\n# ------- Comment #1 from [jmdocile]  2008-10-06 16:28 0000 -------\n# Hi, there is a problem with timezone-data-2008e and maybe with\n# timezone-data-2008f\n# Argentinian law [Number] 25.155 is no longer valid.\n# <a href=\"http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm\">\n# http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm\n# </a>\n# The new one is law [Number] 26.350\n# <a href=\"http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm\">\n# http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm\n# </a>\n# So there is no summer time in Argentina for now.\n\n# From Mariano Absatz (2008-10-20):\n# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST in Argentina\n# From 2008-10-19 until 2009-03-15\n# <a href=\"http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01\">\n# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01\n# </a>\n#\n# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer 2008/2009:\n# Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La Pampa, Neuquen, Rio Negro, Chubut, Santa Cruz\n# and Tierra del Fuego\n# <a href=\"http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01\">\n# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01\n# </a>\n#\n# Press release 235 dated Saturday October 18th, from the Government of the Province of Jujuy saying\n# it will not apply DST either (even when it was not included in Decree 1705/2008)\n# <a href=\"http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc\">\n# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc\n# </a>\n\n# From fullinet (2009-10-18):\n# As announced in\n# <a hef=\"http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356\">\n# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356\n# </a>\n# (an official .gob.ar) under title: \"Sin Cambio de Hora\" (english: \"No hour change\")\n#\n# \"Por el momento, el Gobierno Nacional resolvio no modificar la hora\n# oficial, decision que estaba en estudio para su implementacion el\n# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio\n# que la Argentina hoy, en estas condiciones meteorologicas, no necesita\n# la modificacion del huso horario, ya que 2009 nos encuentra con\n# crecimiento en la produccion y distribucion energetica.\"\n\nRule\tArg\t2007\tonly\t-\tDec\t30\t0:00\t1:00\tS\nRule\tArg\t2008\t2009\t-\tMar\tSun>=15\t0:00\t0\t-\nRule\tArg\t2008\tonly\t-\tOct\tSun>=15\t0:00\t1:00\tS\n\n# From Mariano Absatz (2004-05-21):\n# Today it was officially published that the Province of Mendoza is changing\n# its timezone this winter... starting tomorrow night....\n# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf\n# From Paul Eggert (2004-05-24):\n# It's Law No. 7,210.  This change is due to a public power emergency, so for\n# now we'll assume it's for this year only.\n#\n# From Paul Eggert (2006-03-22):\n# <a href=\"http://www.spicasc.net/horvera.html\">\n# Hora de verano para la Republica Argentina (2003-06-08)\n# </a> says that standard time in Argentina from 1894-10-31\n# to 1920-05-01 was -4:16:48.25.  Go with this more-precise value\n# over Shanks & Pottenger.\n#\n# From Mariano Absatz (2004-06-05):\n# These media articles from a major newspaper mostly cover the current state:\n# http://www.lanacion.com.ar/04/05/27/de_604825.asp\n# http://www.lanacion.com.ar/04/05/28/de_605203.asp\n#\n# The following eight (8) provinces pulled clocks back to UTC-04:00 at\n# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).\n# Apparently, all nine provinces would go back to UTC-03:00 at the same\n# time in October 17th.\n#\n# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,\n# Tierra del Fuego, Tucuman.\n#\n# From Mariano Absatz (2004-06-14):\n# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00\n# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's\n# annoyance with the change is much higher than the power savings obtained....\n#\n# From Gwillim Law (2004-06-14):\n# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...\n#     \"The time change in Tierra del Fuego was a conflicted decision from\n#   the start.  The government had decreed that the measure would take\n#   effect on June 1, but a normative error forced the new time to begin\n#   three days earlier, from a Saturday to a Sunday....\n# Our understanding was that the change was originally scheduled to take place\n# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other\n# provinces).  Sunday was May 30, only two days earlier.  So the article\n# contains a contradiction.  I would give more credence to the Saturday/Sunday\n# date than the \"three days earlier\" phrase, and conclude that Tierra del\n# Fuego set its clocks back at 2004-05-30 00:00.\n#\n# From Steffen Thorsen (2004-10-05):\n# The previous law 7210 which changed the province of Mendoza's time zone\n# back in May have been modified slightly in a new law 7277, which set the\n# new end date to 2004-09-26 (original date was 2004-10-17).\n# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf\n#\n# From Mariano Absatz (2004-10-05):\n# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between\n# Sunday, May 30th and Monday, May 31st.  It changed back to UTC-03:00\n# at midnight between Saturday, July 24th and Sunday, July 25th....\n# http://www.sanjuan.gov.ar/prensa/archivo/000329.html\n# http://www.sanjuan.gov.ar/prensa/archivo/000426.html\n# http://www.sanjuan.gov.ar/prensa/archivo/000441.html\n\n# From Alex Krivenyshev (2008-01-17):\n# Here are articles that Argentina Province San Luis is planning to end DST\n# as earlier as upcoming Monday January 21, 2008 or February 2008:\n#\n# Provincia argentina retrasa reloj y marca diferencia con resto del pais\n# (Argentine Province delayed clock and mark difference with the rest of the\n# country)\n# <a href=\"http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel\">\n# http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel\n# </a>\n#\n# Es inminente que en San Luis atrasen una hora los relojes\n# (It is imminent in San Luis clocks one hour delay)\n# <a href=\"http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414\">\n# http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414\n# </a>\n#\n# <a href=\"http://www.worldtimezone.net/dst_news/dst_news_argentina02.html\">\n# http://www.worldtimezone.net/dst_news/dst_news_argentina02.html\n# </a>\n\n# From Jesper Norgaard Welen (2008-01-18):\n# The page of the San Luis provincial government\n# <a href=\"http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812\">\n# http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812\n# </a>\n# confirms what Alex Krivenyshev has earlier sent to the tz\n# emailing list about that San Luis plans to return to standard\n# time much earlier than the rest of the country. It also\n# confirms that upon request the provinces San Juan and Mendoza\n# refused to follow San Luis in this change.\n#\n# The change is supposed to take place Monday the 21.st at 0:00\n# hours. As far as I understand it if this goes ahead, we need\n# a new timezone for San Luis (although there are also documented\n# independent changes in the southamerica file of San Luis in\n# 1990 and 1991 which has not been confirmed).\n\n# From Jesper Norgaard Welen (2008-01-25):\n# Unfortunately the below page has become defunct, about the San Luis\n# time change. Perhaps because it now is part of a group of pages \"Most\n# important pages of 2008.\"\n#\n# You can use\n# <a href=\"http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834\">\n# http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834\n# </a>\n# instead it seems. Or use \"Buscador\" from the main page of the San Luis\n# government, and fill in \"huso\" and click OK, and you will get 3 pages\n# from which the first one is identical to the above.\n\n# From Mariano Absatz (2008-01-28):\n# I can confirm that the Province of San Luis (and so far only that\n# province) decided to go back to UTC-3 effective midnight Jan 20th 2008\n# (that is, Monday 21st at 0:00 is the time the clocks were delayed back\n# 1 hour), and they intend to keep UTC-3 as their timezone all year round\n# (that is, unless they change their mind any minute now).\n#\n# So we'll have to add yet another city to 'southamerica' (I think San\n# Luis city is the mos populated city in the Province, so it'd be\n# America/Argentina/San_Luis... of course I can't remember if San Luis's\n# history of particular changes goes along with Mendoza or San Juan :-(\n# (I only remember not being able to collect hard facts about San Luis\n# back in 2004, when these provinces changed to UTC-4 for a few days, I\n# mailed them personally and never got an answer).\n\n# From Paul Eggert (2008-06-30):\n# Unless otherwise specified, data are from Shanks & Pottenger through 1992,\n# from the IATA otherwise.  As noted below, Shanks & Pottenger say that\n# America/Cordoba split into 6 subregions during 1991/1992, one of which\n# was America/San_Luis, but we haven't verified this yet so for now we'll\n# keep America/Cordoba a single region rather than splitting it into the\n# other 5 subregions.\n\n# From Mariano Absatz (2009-03-13):\n# Yesterday (with our usual 2-day notice) the Province of San Luis\n# decided that next Sunday instead of \"staying\" @utc-03:00 they will go\n# to utc-04:00 until the second Saturday in October...\n#\n# The press release is at\n# <a href=\"http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102\">\n# http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102\n# </a>\n# (I couldn't find the decree, but\n# <a href=\"http://www.sanluis.gov.ar\">\n# www.sanluis.gov.ar\n# <a/>\n# is the official page for the Province Government).\n#\n# There's also a note in only one of the major national papers (La Nacin) at\n# <a href=\"http://www.lanacion.com.ar/nota.asp?nota_id=1107912\">\n# http://www.lanacion.com.ar/nota.asp?nota_id=1107912\n# </a>\n#\n# The press release says:\n#  (...) anunci que el prximo domingo a las 00:00 los puntanos debern\n# atrasar una hora sus relojes.\n#\n# A partir de entonces, San Luis establecer el huso horario propio de\n# la Provincia. De esta manera, durante el periodo del calendario anual\n# 2009, el cambio horario quedar comprendido entre las 00:00 del tercer\n# domingo de marzo y las 24:00 del segundo sbado de octubre.\n# Quick&dirty translation\n# (...) announced that next Sunday, at 00:00, Puntanos (the San Luis\n# inhabitants) will have to turn back one hour their clocks\n#\n# Since then, San Luis will establish its own Province timezone. Thus,\n# during 2009, this timezone change will run from 00:00 the third Sunday\n# in March until 24:00 of the second Saturday in October.\n\n# From Mariano Absatz (2009-10-16):\n# ...the Province of San Luis is a case in itself.\n#\n# The Law at\n# <a href=\"http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276>\"\n# http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276\n# </a>\n# is ambiguous because establishes a calendar from the 2nd Sunday in\n# October at 0:00 thru the 2nd Saturday in March at 24:00 and the\n# complement of that starting on the 2nd Sunday of March at 0:00 and\n# ending on the 2nd Saturday of March at 24:00.\n#\n# This clearly breaks every time the 1st of March or October is a Sunday.\n#\n# IMHO, the \"spirit of the Law\" is to make the changes at 0:00 on the 2nd\n# Sunday of October and March.\n#\n# The problem is that the changes in the rest of the Provinces that did\n# change in 2007/2008, were made according to the Federal Law and Decrees\n# that did so on the 3rd Sunday of October and March.\n#\n# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday\n# (October 11th) at 0:00.\n#\n# So I guess a new set of rules, besides \"Arg\", must be made and the last\n# America/Argentina/San_Luis entries should change to use these...\n#\n# I'm enclosing a patch that does what I say... regretfully, the San Luis\n# timezone must be called \"WART/WARST\" even when most of the time (like,\n# right now) WARST == ART... that is, since last Sunday, all the country\n# is using UTC-3, but in my patch, San Luis calls it \"WARST\" and the rest\n# of the country calls it \"ART\".\n# ...\n\n# From Alexander Krivenyshev (2010-04-09):\n# According to news reports from El Diario de la Republica Province San\n# Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time\n# after April 11, 2010--will continue to have same time as rest of\n# Argentina (UTC-3) (no DST).\n#\n# Confirmaron la pr&oacute;rroga del huso horario de verano (Spanish)\n# <a href=\"http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9\">\n# http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9\n# </a>\n# or (some English translation):\n# <a href=\"http://www.worldtimezone.com/dst_news/dst_news_argentina08.html\">\n# http://www.worldtimezone.com/dst_news/dst_news_argentina08.html\n# </a>\n\n# From Mariano Absatz (2010-04-12):\n# yes...I can confirm this...and given that San Luis keeps calling\n# UTC-03:00 \"summer time\", we should't just let San Luis go back to \"Arg\"\n# rules...San Luis is still using \"Western ARgentina Time\" and it got\n# stuck on Summer daylight savings time even though the summer is over.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n#\n# Buenos Aires (BA), Capital Federal (CF),\nZone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May # Cordoba Mean Time\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\tArg\tAR%sT\n#\n# Cordoba (CB), Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN),\n# Chaco (CC), Formosa (FM), Santiago del Estero (SE)\n#\n# Shanks & Pottenger also make the following claims, which we haven't verified:\n# - Formosa switched to -3:00 on 1991-01-07.\n# - Misiones switched to -3:00 on 1990-12-29.\n# - Chaco switched to -3:00 on 1991-01-04.\n# - Santiago del Estero switched to -4:00 on 1991-04-01,\n#   then to -3:00 on 1991-04-26.\n#\nZone America/Argentina/Cordoba -4:16:48 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1991 Mar  3\n\t\t\t-4:00\t-\tWART\t1991 Oct 20\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\tArg\tAR%sT\n#\n# Salta (SA), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)\nZone America/Argentina/Salta -4:21:40 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1991 Mar  3\n\t\t\t-4:00\t-\tWART\t1991 Oct 20\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n#\n# Tucuman (TM)\nZone America/Argentina/Tucuman -4:20:52 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1991 Mar  3\n\t\t\t-4:00\t-\tWART\t1991 Oct 20\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 Jun  1\n\t\t\t-4:00\t-\tWART\t2004 Jun 13\n\t\t\t-3:00\tArg\tAR%sT\n#\n# La Rioja (LR)\nZone America/Argentina/La_Rioja -4:27:24 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1991 Mar  1\n\t\t\t-4:00\t-\tWART\t1991 May  7\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 Jun  1\n\t\t\t-4:00\t-\tWART\t2004 Jun 20\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n#\n# San Juan (SJ)\nZone America/Argentina/San_Juan -4:34:04 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1991 Mar  1\n\t\t\t-4:00\t-\tWART\t1991 May  7\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 May 31\n\t\t\t-4:00\t-\tWART\t2004 Jul 25\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n#\n# Jujuy (JY)\nZone America/Argentina/Jujuy -4:21:12 -\tLMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1990 Mar  4\n\t\t\t-4:00\t-\tWART\t1990 Oct 28\n\t\t\t-4:00\t1:00\tWARST\t1991 Mar 17\n\t\t\t-4:00\t-\tWART\t1991 Oct  6\n\t\t\t-3:00\t1:00\tARST\t1992\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n#\n# Catamarca (CT), Chubut (CH)\nZone America/Argentina/Catamarca -4:23:08 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1991 Mar  3\n\t\t\t-4:00\t-\tWART\t1991 Oct 20\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 Jun  1\n\t\t\t-4:00\t-\tWART\t2004 Jun 20\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n#\n# Mendoza (MZ)\nZone America/Argentina/Mendoza -4:35:16 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1990 Mar  4\n\t\t\t-4:00\t-\tWART\t1990 Oct 15\n\t\t\t-4:00\t1:00\tWARST\t1991 Mar  1\n\t\t\t-4:00\t-\tWART\t1991 Oct 15\n\t\t\t-4:00\t1:00\tWARST\t1992 Mar  1\n\t\t\t-4:00\t-\tWART\t1992 Oct 18\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 May 23\n\t\t\t-4:00\t-\tWART\t2004 Sep 26\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n#\n# San Luis (SL)\n\nRule\tSanLuis\t2008\t2009\t-\tMar\tSun>=8\t0:00\t0\t-\nRule\tSanLuis\t2007\t2009\t-\tOct\tSun>=8\t0:00\t1:00\tS\n\nZone America/Argentina/San_Luis -4:25:24 - LMT\t1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1990\n\t\t\t-3:00\t1:00\tARST\t1990 Mar 14\n\t\t\t-4:00\t-\tWART\t1990 Oct 15\n\t\t\t-4:00\t1:00\tWARST\t1991 Mar  1\n\t\t\t-4:00\t-\tWART\t1991 Jun  1\n\t\t\t-3:00\t-\tART\t1999 Oct  3\n\t\t\t-4:00\t1:00\tWARST\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 May 31\n\t\t\t-4:00\t-\tWART\t2004 Jul 25\n\t\t\t-3:00\tArg\tAR%sT\t2008 Jan 21\n\t\t\t-4:00\tSanLuis\tWAR%sT\n#\n# Santa Cruz (SC)\nZone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May # Cordoba Mean Time\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 Jun  1\n\t\t\t-4:00\t-\tWART\t2004 Jun 20\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n#\n# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)\nZone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31\n\t\t\t-4:16:48 -\tCMT\t1920 May # Cordoba Mean Time\n\t\t\t-4:00\t-\tART\t1930 Dec\n\t\t\t-4:00\tArg\tAR%sT\t1969 Oct  5\n\t\t\t-3:00\tArg\tAR%sT\t1999 Oct  3\n\t\t\t-4:00\tArg\tAR%sT\t2000 Mar  3\n\t\t\t-3:00\t-\tART\t2004 May 30\n\t\t\t-4:00\t-\tWART\t2004 Jun 20\n\t\t\t-3:00\tArg\tAR%sT\t2008 Oct 18\n\t\t\t-3:00\t-\tART\n\n# Aruba\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Aruba\t-4:40:24 -\tLMT\t1912 Feb 12\t# Oranjestad\n\t\t\t-4:30\t-\tANT\t1965 # Netherlands Antilles Time\n\t\t\t-4:00\t-\tAST\n\n# Bolivia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/La_Paz\t-4:32:36 -\tLMT\t1890\n\t\t\t-4:32:36 -\tCMT\t1931 Oct 15 # Calamarca MT\n\t\t\t-4:32:36 1:00\tBOST\t1932 Mar 21 # Bolivia ST\n\t\t\t-4:00\t-\tBOT\t# Bolivia Time\n\n# Brazil\n\n# From Paul Eggert (1993-11-18):\n# The mayor of Rio recently attempted to change the time zone rules\n# just in his city, in order to leave more summer time for the tourist trade.\n# The rule change lasted only part of the day;\n# the federal government refused to follow the city's rules, and business\n# was in a chaos, so the mayor backed down that afternoon.\n\n# From IATA SSIM (1996-02):\n# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),\n# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),\n# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),\n# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].\n# [The last three states are new to this issue of the IATA SSIM.]\n\n# From Gwillim Law (1996-10-07):\n# Geography, history (Tocantins was part of Goias until 1989), and other\n# sources of time zone information lead me to believe that AL, SE, and TO were\n# always in BR1, and so the only change was whether or not they observed DST....\n# The earliest issue of the SSIM I have is 2/91.  Each issue from then until\n# 9/95 says that DST is observed only in the ten states I quoted from 9/95,\n# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2\n# (UTC-4)....  The other two time zones given for Brazil are BR3, which is\n# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is\n# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's\n# become part of the state of Pernambuco).  The boundary between BR1 and BR2\n# has never been clearly stated.  They've simply been called East and West.\n# However, some conclusions can be drawn from another IATA manual: the Airline\n# Coding Directory, which lists close to 400 airports in Brazil.  For each\n# airport it gives a time zone which is coded to the SSIM.  From that\n# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),\n# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do\n# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.\n\n# From Marcos Tadeu (1998-09-27):\n# <a href=\"http://pcdsh01.on.br/verao1.html\">\n# Brazilian official page\n# </a>\n\n# From Jesper Norgaard (2000-11-03):\n# [For an official list of which regions in Brazil use which time zones, see:]\n# http://pcdsh01.on.br/Fusbr.htm\n# http://pcdsh01.on.br/Fusbrhv.htm\n\n# From Celso Doria via David Madeo (2002-10-09):\n# The reason for the delay this year has to do with elections in Brazil.\n#\n# Unlike in the United States, elections in Brazil are 100% computerized and\n# the results are known almost immediately.  Yesterday, it was the first\n# round of the elections when 115 million Brazilians voted for President,\n# Governor, Senators, Federal Deputies, and State Deputies.  Nobody is\n# counting (or re-counting) votes anymore and we know there will be a second\n# round for the Presidency and also for some Governors.  The 2nd round will\n# take place on October 27th.\n#\n# The reason why the DST will only begin November 3rd is that the thousands\n# of electoral machines used cannot have their time changed, and since the\n# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,\n# the Government decided to postpone DST, instead of changing the Constitution\n# (maybe, for the next elections, it will be possible to change the clock)...\n\n# From Rodrigo Severo (2004-10-04):\n# It's just the biannual change made necessary by the much hyped, supposedly\n# modern Brazilian eletronic voting machines which, apparently, can't deal\n# with a time change between the first and the second rounds of the elections.\n\n# From Steffen Thorsen (2007-09-20):\n# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:\n# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975\n\n# From Paul Schulze (2008-06-24):\n# ...by law number 11.662 of April 24, 2008 (published in the \"Diario\n# Oficial da Uniao\"...) in Brazil there are changes in the timezones,\n# effective today (00:00am at June 24, 2008) as follows:\n#\n# a) The timezone UTC+5 is e[x]tinguished, with all the Acre state and the\n# part of the Amazonas state that had this timezone now being put to the\n# timezone UTC+4\n# b) The whole Para state now is put at timezone UTC+3, instead of just\n# part of it, as was before.\n#\n# This change follows a proposal of senator Tiao Viana of Acre state, that\n# proposed it due to concerns about open television channels displaying\n# programs inappropriate to youths in the states that had the timezone\n# UTC+5 too early in the night. In the occasion, some more corrections\n# were proposed, trying to unify the timezones of any given state. This\n# change modifies timezone rules defined in decree 2.784 of 18 June,\n# 1913.\n\n# From Rodrigo Severo (2008-06-24):\n# Just correcting the URL:\n# <a href=\"https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008\">\n# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008\n# </a>\n#\n# As a result of the above Decree I believe the America/Rio_Branco\n# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall\n# be created to represent the...west side of the Para State. I\n# suggest this new timezone be called Santarem as the most\n# important/populated city in the affected area.\n#\n# This new timezone would be the same as the Rio_Branco timezone up to\n# the 2008/06/24 change which would be to UTC-3 instead of UTC-4.\n\n# From Alex Krivenyshev (2008-06-24):\n# This is a quick reference page for New and Old Brazil Time Zones map.\n# <a href=\"http://www.worldtimezone.com/brazil-time-new-old.php\">\n# http://www.worldtimezone.com/brazil-time-new-old.php\n# </a>\n#\n# - 4 time zones replaced by 3 time zones-eliminating time zone UTC- 05\n# (state Acre and the part of the Amazonas will be UTC/GMT- 04) - western\n# part of Par state is moving to one timezone UTC- 03 (from UTC -04).\n\n# From Paul Eggert (2002-10-10):\n# The official decrees referenced below are mostly taken from\n# <a href=\"http://pcdsh01.on.br/DecHV.html\">\n# Decretos sobre o Horario de Verao no Brasil\n# </a>.\n\n# From Steffen Thorsen (2008-08-29):\n# As announced by the government and many newspapers in Brazil late\n# yesterday, Brazil will start DST on 2008-10-19 (need to change rule) and\n# it will end on 2009-02-15 (current rule for Brazil is fine). Based on\n# past years experience with the elections, there was a good chance that\n# the start was postponed to November, but it did not happen this year.\n#\n# It has not yet been posted to http://pcdsh01.on.br/DecHV.html\n#\n# An official page about it:\n# <a href=\"http://www.mme.gov.br/site/news/detail.do?newsId=16722\">\n# http://www.mme.gov.br/site/news/detail.do?newsId=16722\n# </a>\n# Note that this link does not always work directly, but must be accessed\n# by going to\n# <a href=\"http://www.mme.gov.br/first\">\n# http://www.mme.gov.br/first\n# </a>\n#\n# One example link that works directly:\n# <a href=\"http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54\">\n# http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54\n# (Portuguese)\n# </a>\n#\n# We have a written a short article about it as well:\n# <a href=\"http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html\">\n# http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html\n# </a>\n#\n# From Alexander Krivenyshev (2011-10-04):\n# State Bahia will return to Daylight savings time this year after 8 years off.\n# The announcement was made by Governor Jaques Wagner in an interview to a\n# television station in Salvador.\n\n# In Portuguese:\n# <a href=\"http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html\">\n# http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html\n# </a> and\n# <a href=\"http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html\">\n# http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html\n# </a>\n\n# From Guilherme Bernardes Rodrigues (2011-10-07):\n# There is news in the media, however there is still no decree about it.\n# I just send a e-mail to Zulmira Brando at\n# <a href=\"http://pcdsh01.on.br/\">http://pcdsh01.on.br/</a> the\n# oficial agency about time in Brazil, and she confirmed that the old rule is\n# still in force.\n\n# From Guilherme Bernardes Rodrigues (2011-10-14)\n# It's official, the President signed a decree that includes Bahia in summer\n# time.\n#\t [ and in a second message (same day): ]\n# I found the decree.\n#\n# DECRETO No- 7.584, DE 13 DE OUTUBRO DE 2011\n# Link :\n# <a href=\"http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6\">\n# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6\n# </a>\n\n# From Kelley Cook (2012-10-16):\n# The governor of state of Bahia in Brazil announced on Thursday that\n# due to public pressure, he is reversing the DST policy they implemented\n# last year and will not be going to Summer Time on October 21st....\n# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia\n\n# From Rodrigo Severo (2012-10-16):\n# Tocantins state will have DST.\n# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# Decree <a href=\"http://pcdsh01.on.br/HV20466.htm\">20,466</a> (1931-10-01)\n# Decree <a href=\"http://pcdsh01.on.br/HV21896.htm\">21,896</a> (1932-01-10)\nRule\tBrazil\t1931\tonly\t-\tOct\t 3\t11:00\t1:00\tS\nRule\tBrazil\t1932\t1933\t-\tApr\t 1\t 0:00\t0\t-\nRule\tBrazil\t1932\tonly\t-\tOct\t 3\t 0:00\t1:00\tS\n# Decree <a href=\"http://pcdsh01.on.br/HV23195.htm\">23,195</a> (1933-10-10)\n# revoked DST.\n# Decree <a href=\"http://pcdsh01.on.br/HV27496.htm\">27,496</a> (1949-11-24)\n# Decree <a href=\"http://pcdsh01.on.br/HV27998.htm\">27,998</a> (1950-04-13)\nRule\tBrazil\t1949\t1952\t-\tDec\t 1\t 0:00\t1:00\tS\nRule\tBrazil\t1950\tonly\t-\tApr\t16\t 1:00\t0\t-\nRule\tBrazil\t1951\t1952\t-\tApr\t 1\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV32308.htm\">32,308</a> (1953-02-24)\nRule\tBrazil\t1953\tonly\t-\tMar\t 1\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV34724.htm\">34,724</a> (1953-11-30)\n# revoked DST.\n# Decree <a href=\"http://pcdsh01.on.br/HV52700.htm\">52,700</a> (1963-10-18)\n# established DST from 1963-10-23 00:00 to 1964-02-29 00:00\n# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.\n# Decree <a href=\"http://pcdsh01.on.br/HV53071.htm\">53,071</a> (1963-12-03)\n# extended the above decree to all of the national territory on 12-09.\nRule\tBrazil\t1963\tonly\t-\tDec\t 9\t 0:00\t1:00\tS\n# Decree <a href=\"http://pcdsh01.on.br/HV53604.htm\">53,604</a> (1964-02-25)\n# extended summer time by one day to 1964-03-01 00:00 (start of school).\nRule\tBrazil\t1964\tonly\t-\tMar\t 1\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV55639.htm\">55,639</a> (1965-01-27)\nRule\tBrazil\t1965\tonly\t-\tJan\t31\t 0:00\t1:00\tS\nRule\tBrazil\t1965\tonly\t-\tMar\t31\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV57303.htm\">57,303</a> (1965-11-22)\nRule\tBrazil\t1965\tonly\t-\tDec\t 1\t 0:00\t1:00\tS\n# Decree <a href=\"http://pcdsh01.on.br/HV57843.htm\">57,843</a> (1966-02-18)\nRule\tBrazil\t1966\t1968\t-\tMar\t 1\t 0:00\t0\t-\nRule\tBrazil\t1966\t1967\t-\tNov\t 1\t 0:00\t1:00\tS\n# Decree <a href=\"http://pcdsh01.on.br/HV63429.htm\">63,429</a> (1968-10-15)\n# revoked DST.\n# Decree <a href=\"http://pcdsh01.on.br/HV91698.htm\">91,698</a> (1985-09-27)\nRule\tBrazil\t1985\tonly\t-\tNov\t 2\t 0:00\t1:00\tS\n# Decree 92,310 (1986-01-21)\n# Decree 92,463 (1986-03-13)\nRule\tBrazil\t1986\tonly\t-\tMar\t15\t 0:00\t0\t-\n# Decree 93,316 (1986-10-01)\nRule\tBrazil\t1986\tonly\t-\tOct\t25\t 0:00\t1:00\tS\nRule\tBrazil\t1987\tonly\t-\tFeb\t14\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV94922.htm\">94,922</a> (1987-09-22)\nRule\tBrazil\t1987\tonly\t-\tOct\t25\t 0:00\t1:00\tS\nRule\tBrazil\t1988\tonly\t-\tFeb\t 7\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV96676.htm\">96,676</a> (1988-09-12)\n# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)\nRule\tBrazil\t1988\tonly\t-\tOct\t16\t 0:00\t1:00\tS\nRule\tBrazil\t1989\tonly\t-\tJan\t29\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV98077.htm\">98,077</a> (1989-08-21)\n# with the same exceptions\nRule\tBrazil\t1989\tonly\t-\tOct\t15\t 0:00\t1:00\tS\nRule\tBrazil\t1990\tonly\t-\tFeb\t11\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV99530.htm\">99,530</a> (1990-09-17)\n# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.\n# Decree 99,629 (1990-10-19) adds BA, MT.\nRule\tBrazil\t1990\tonly\t-\tOct\t21\t 0:00\t1:00\tS\nRule\tBrazil\t1991\tonly\t-\tFeb\t17\t 0:00\t0\t-\n# <a href=\"http://pcdsh01.on.br/HV1991.htm\">Unnumbered decree</a> (1991-09-25)\n# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.\nRule\tBrazil\t1991\tonly\t-\tOct\t20\t 0:00\t1:00\tS\nRule\tBrazil\t1992\tonly\t-\tFeb\t 9\t 0:00\t0\t-\n# <a href=\"http://pcdsh01.on.br/HV1992.htm\">Unnumbered decree</a> (1992-10-16)\n# adopted by same states.\nRule\tBrazil\t1992\tonly\t-\tOct\t25\t 0:00\t1:00\tS\nRule\tBrazil\t1993\tonly\t-\tJan\t31\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV942.htm\">942</a> (1993-09-28)\n# adopted by same states, plus AM.\n# Decree <a href=\"http://pcdsh01.on.br/HV1252.htm\">1,252</a> (1994-09-22;\n# web page corrected 2004-01-07) adopted by same states, minus AM.\n# Decree <a href=\"http://pcdsh01.on.br/HV1636.htm\">1,636</a> (1995-09-14)\n# adopted by same states, plus MT and TO.\n# Decree <a href=\"http://pcdsh01.on.br/HV1674.htm\">1,674</a> (1995-10-13)\n# adds AL, SE.\nRule\tBrazil\t1993\t1995\t-\tOct\tSun>=11\t 0:00\t1:00\tS\nRule\tBrazil\t1994\t1995\t-\tFeb\tSun>=15\t 0:00\t0\t-\nRule\tBrazil\t1996\tonly\t-\tFeb\t11\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/HV2000.htm\">2,000</a> (1996-09-04)\n# adopted by same states, minus AL, SE.\nRule\tBrazil\t1996\tonly\t-\tOct\t 6\t 0:00\t1:00\tS\nRule\tBrazil\t1997\tonly\t-\tFeb\t16\t 0:00\t0\t-\n# From Daniel C. Sobral (1998-02-12):\n# In 1997, the DS began on October 6. The stated reason was that\n# because international television networks ignored Brazil's policy on DS,\n# they bought the wrong times on satellite for coverage of Pope's visit.\n# This year, the ending date of DS was postponed to March 1\n# to help dealing with the shortages of electric power.\n#\n# Decree 2,317 (1997-09-04), adopted by same states.\nRule\tBrazil\t1997\tonly\t-\tOct\t 6\t 0:00\t1:00\tS\n# Decree <a href=\"http://pcdsh01.on.br/figuras/HV2495.JPG\">2,495</a>\n# (1998-02-10)\nRule\tBrazil\t1998\tonly\t-\tMar\t 1\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/figuras/Hv98.jpg\">2,780</a> (1998-09-11)\n# adopted by the same states as before.\nRule\tBrazil\t1998\tonly\t-\tOct\t11\t 0:00\t1:00\tS\nRule\tBrazil\t1999\tonly\t-\tFeb\t21\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/figuras/HV3150.gif\">3,150</a>\n# (1999-08-23) adopted by same states.\n# Decree <a href=\"http://pcdsh01.on.br/DecHV99.gif\">3,188</a> (1999-09-30)\n# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.\nRule\tBrazil\t1999\tonly\t-\tOct\t 3\t 0:00\t1:00\tS\nRule\tBrazil\t2000\tonly\t-\tFeb\t27\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/DEC3592.htm\">3,592</a> (2000-09-06)\n# adopted by the same states as before.\n# Decree <a href=\"http://pcdsh01.on.br/Dec3630.jpg\">3,630</a> (2000-10-13)\n# repeals DST in PE and RR, effective 2000-10-15 00:00.\n# Decree <a href=\"http://pcdsh01.on.br/Dec3632.jpg\">3,632</a> (2000-10-17)\n# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.\n# Decree <a href=\"http://pcdsh01.on.br/figuras/HV3916.gif\">3,916</a>\n# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.\nRule\tBrazil\t2000\t2001\t-\tOct\tSun>=8\t 0:00\t1:00\tS\nRule\tBrazil\t2001\t2006\t-\tFeb\tSun>=15\t 0:00\t0\t-\n# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.\n# <a href=\"http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm\">4,399</a>\nRule\tBrazil\t2002\tonly\t-\tNov\t 3\t 0:00\t1:00\tS\n# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.\n# <a href=\"http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm\">4,844</a>\nRule\tBrazil\t2003\tonly\t-\tOct\t19\t 0:00\t1:00\tS\n# Decree 5,223 (2004-10-01) reestablishes DST in MT.\n# <a href=\"http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2004/Decreto/D5223.htm\">5,223</a>\nRule\tBrazil\t2004\tonly\t-\tNov\t 2\t 0:00\t1:00\tS\n# Decree <a href=\"http://pcdsh01.on.br/DecHV5539.gif\">5,539</a> (2005-09-19),\n# adopted by the same states as before.\nRule\tBrazil\t2005\tonly\t-\tOct\t16\t 0:00\t1:00\tS\n# Decree <a href=\"http://pcdsh01.on.br/DecHV5920.gif\">5,920</a> (2006-10-03),\n# adopted by the same states as before.\nRule\tBrazil\t2006\tonly\t-\tNov\t 5\t 0:00\t1:00\tS\nRule\tBrazil\t2007\tonly\t-\tFeb\t25\t 0:00\t0\t-\n# Decree <a href=\"http://pcdsh01.on.br/DecHV6212.gif\">6,212</a> (2007-09-26),\n# adopted by the same states as before.\nRule\tBrazil\t2007\tonly\t-\tOct\tSun>=8\t 0:00\t1:00\tS\n# From Frederico A. C. Neves (2008-09-10):\n# Acording to this decree\n# <a href=\"http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm\">\n# http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm\n# </a>\n# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the\n# 3rd Feb Sunday. There is an exception on the return date when this is\n# the Carnival Sunday then the return date will be the next Sunday...\nRule\tBrazil\t2008\tmax\t-\tOct\tSun>=15\t0:00\t1:00\tS\nRule\tBrazil\t2008\t2011\t-\tFeb\tSun>=15\t0:00\t0\t-\nRule\tBrazil\t2012\tonly\t-\tFeb\tSun>=22\t0:00\t0\t-\nRule\tBrazil\t2013\t2014\t-\tFeb\tSun>=15\t0:00\t0\t-\nRule\tBrazil\t2015\tonly\t-\tFeb\tSun>=22\t0:00\t0\t-\nRule\tBrazil\t2016\t2022\t-\tFeb\tSun>=15\t0:00\t0\t-\nRule\tBrazil\t2023\tonly\t-\tFeb\tSun>=22\t0:00\t0\t-\nRule\tBrazil\t2024\t2025\t-\tFeb\tSun>=15\t0:00\t0\t-\nRule\tBrazil\t2026\tonly\t-\tFeb\tSun>=22\t0:00\t0\t-\nRule\tBrazil\t2027\t2033\t-\tFeb\tSun>=15\t0:00\t0\t-\nRule\tBrazil\t2034\tonly\t-\tFeb\tSun>=22\t0:00\t0\t-\nRule\tBrazil\t2035\t2036\t-\tFeb\tSun>=15\t0:00\t0\t-\nRule\tBrazil\t2037\tonly\t-\tFeb\tSun>=22\t0:00\t0\t-\n# From Arthur David Olson (2008-09-29):\n# The next is wrong in some years but is better than nothing.\nRule\tBrazil\t2038\tmax\t-\tFeb\tSun>=15\t0:00\t0\t-\n\n# The latest ruleset listed above says that the following states observe DST:\n# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\n#\n# Fernando de Noronha (administratively part of PE)\nZone America/Noronha\t-2:09:40 -\tLMT\t1914\n\t\t\t-2:00\tBrazil\tFN%sT\t1990 Sep 17\n\t\t\t-2:00\t-\tFNT\t1999 Sep 30\n\t\t\t-2:00\tBrazil\tFN%sT\t2000 Oct 15\n\t\t\t-2:00\t-\tFNT\t2001 Sep 13\n\t\t\t-2:00\tBrazil\tFN%sT\t2002 Oct  1\n\t\t\t-2:00\t-\tFNT\n# Other Atlantic islands have no permanent settlement.\n# These include Trindade and Martin Vaz (administratively part of ES),\n# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).\n# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;\n# it also included the Penedos.\n#\n# Amapa (AP), east Para (PA)\n# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.\n# The division between east and west Para is the river Xingu.\n# In the north a very small part from the river Javary (now Jari I guess,\n# the border with Amapa) to the Amazon, then to the Xingu.\nZone America/Belem\t-3:13:56 -\tLMT\t1914\n\t\t\t-3:00\tBrazil\tBR%sT\t1988 Sep 12\n\t\t\t-3:00\t-\tBRT\n#\n# west Para (PA)\n# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.\nZone America/Santarem\t-3:38:48 -\tLMT\t1914\n\t\t\t-4:00\tBrazil\tAM%sT\t1988 Sep 12\n\t\t\t-4:00\t-\tAMT\t2008 Jun 24 00:00\n\t\t\t-3:00\t-\tBRT\n#\n# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),\n# Paraiba (PB)\nZone America/Fortaleza\t-2:34:00 -\tLMT\t1914\n\t\t\t-3:00\tBrazil\tBR%sT\t1990 Sep 17\n\t\t\t-3:00\t-\tBRT\t1999 Sep 30\n\t\t\t-3:00\tBrazil\tBR%sT\t2000 Oct 22\n\t\t\t-3:00\t-\tBRT\t2001 Sep 13\n\t\t\t-3:00\tBrazil\tBR%sT\t2002 Oct  1\n\t\t\t-3:00\t-\tBRT\n#\n# Pernambuco (PE) (except Atlantic islands)\nZone America/Recife\t-2:19:36 -\tLMT\t1914\n\t\t\t-3:00\tBrazil\tBR%sT\t1990 Sep 17\n\t\t\t-3:00\t-\tBRT\t1999 Sep 30\n\t\t\t-3:00\tBrazil\tBR%sT\t2000 Oct 15\n\t\t\t-3:00\t-\tBRT\t2001 Sep 13\n\t\t\t-3:00\tBrazil\tBR%sT\t2002 Oct  1\n\t\t\t-3:00\t-\tBRT\n#\n# Tocantins (TO)\nZone America/Araguaina\t-3:12:48 -\tLMT\t1914\n\t\t\t-3:00\tBrazil\tBR%sT\t1990 Sep 17\n\t\t\t-3:00\t-\tBRT\t1995 Sep 14\n\t\t\t-3:00\tBrazil\tBR%sT\t2003 Sep 24\n\t\t\t-3:00\t-\tBRT\t2012 Oct 21\n\t\t\t-3:00\tBrazil\tBR%sT\n#\n# Alagoas (AL), Sergipe (SE)\nZone America/Maceio\t-2:22:52 -\tLMT\t1914\n\t\t\t-3:00\tBrazil\tBR%sT\t1990 Sep 17\n\t\t\t-3:00\t-\tBRT\t1995 Oct 13\n\t\t\t-3:00\tBrazil\tBR%sT\t1996 Sep  4\n\t\t\t-3:00\t-\tBRT\t1999 Sep 30\n\t\t\t-3:00\tBrazil\tBR%sT\t2000 Oct 22\n\t\t\t-3:00\t-\tBRT\t2001 Sep 13\n\t\t\t-3:00\tBrazil\tBR%sT\t2002 Oct  1\n\t\t\t-3:00\t-\tBRT\n#\n# Bahia (BA)\n# There are too many Salvadors elsewhere, so use America/Bahia instead\n# of America/Salvador.\nZone America/Bahia\t-2:34:04 -\tLMT\t1914\n\t\t\t-3:00\tBrazil\tBR%sT\t2003 Sep 24\n\t\t\t-3:00\t-\tBRT\t2011 Oct 16\n\t\t\t-3:00\tBrazil\tBR%sT\t2012 Oct 21\n\t\t\t-3:00\t-\tBRT\n#\n# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),\n# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),\n# Santa Catarina (SC), Rio Grande do Sul (RS)\nZone America/Sao_Paulo\t-3:06:28 -\tLMT\t1914\n\t\t\t-3:00\tBrazil\tBR%sT\t1963 Oct 23 00:00\n\t\t\t-3:00\t1:00\tBRST\t1964\n\t\t\t-3:00\tBrazil\tBR%sT\n#\n# Mato Grosso do Sul (MS)\nZone America/Campo_Grande -3:38:28 -\tLMT\t1914\n\t\t\t-4:00\tBrazil\tAM%sT\n#\n# Mato Grosso (MT)\nZone America/Cuiaba\t-3:44:20 -\tLMT\t1914\n\t\t\t-4:00\tBrazil\tAM%sT\t2003 Sep 24\n\t\t\t-4:00\t-\tAMT\t2004 Oct  1\n\t\t\t-4:00\tBrazil\tAM%sT\n#\n# Rondonia (RO)\nZone America/Porto_Velho -4:15:36 -\tLMT\t1914\n\t\t\t-4:00\tBrazil\tAM%sT\t1988 Sep 12\n\t\t\t-4:00\t-\tAMT\n#\n# Roraima (RR)\nZone America/Boa_Vista\t-4:02:40 -\tLMT\t1914\n\t\t\t-4:00\tBrazil\tAM%sT\t1988 Sep 12\n\t\t\t-4:00\t-\tAMT\t1999 Sep 30\n\t\t\t-4:00\tBrazil\tAM%sT\t2000 Oct 15\n\t\t\t-4:00\t-\tAMT\n#\n# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto\n# The great circle line from Tabatinga to Porto Acre divides\n# east from west Amazonas.\nZone America/Manaus\t-4:00:04 -\tLMT\t1914\n\t\t\t-4:00\tBrazil\tAM%sT\t1988 Sep 12\n\t\t\t-4:00\t-\tAMT\t1993 Sep 28\n\t\t\t-4:00\tBrazil\tAM%sT\t1994 Sep 22\n\t\t\t-4:00\t-\tAMT\n#\n# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,\n#\tEirunepe, Envira, Ipixuna\nZone America/Eirunepe\t-4:39:28 -\tLMT\t1914\n\t\t\t-5:00\tBrazil\tAC%sT\t1988 Sep 12\n\t\t\t-5:00\t-\tACT\t1993 Sep 28\n\t\t\t-5:00\tBrazil\tAC%sT\t1994 Sep 22\n\t\t\t-5:00\t-\tACT\t2008 Jun 24 00:00\n\t\t\t-4:00\t-\tAMT\n#\n# Acre (AC)\nZone America/Rio_Branco\t-4:31:12 -\tLMT\t1914\n\t\t\t-5:00\tBrazil\tAC%sT\t1988 Sep 12\n\t\t\t-5:00\t-\tACT\t2008 Jun 24 00:00\n\t\t\t-4:00\t-\tAMT\n\n# Chile\n\n# From Eduardo Krell (1995-10-19):\n# The law says to switch to DST at midnight [24:00] on the second SATURDAY\n# of October....  The law is the same for March and October.\n# (1998-09-29):\n# Because of the drought this year, the government decided to go into\n# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...\n# (unless there's another dry season next year, I guess).\n\n# From Julio I. Pacheco Troncoso (1999-03-18):\n# Because of the same drought, the government decided to end DST later,\n# on April 3, (one-time change).\n\n# From Oscar van Vlijmen (2006-10-08):\n# http://www.horaoficial.cl/cambio.htm\n\n# From Jesper Norgaard Welen (2006-10-08):\n# I think that there are some obvious mistakes in the suggested link\n# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4\n# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15\n# (they should have been 1990-09-15 and 1990-09-16 respectively), but\n# anyhow it clears up some doubts too.\n\n# From Paul Eggert (2006-12-27):\n# The following data for Chile and America/Santiago are from\n# <http://www.horaoficial.cl/horaof.htm> (2006-09-20), transcribed by\n# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks\n# & Pottenger, except with DST transitions after 1932 cloned from\n# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,\n# but we have no other source.\n\n# From German Poo-Caaman~o (2008-03-03):\n# Due to drought, Chile extends Daylight Time in three weeks.  This\n# is one-time change (Saturday 3/29 at 24:00 for America/Santiago\n# and Saturday 3/29 at 22:00 for Pacific/Easter)\n# The Supreme Decree is located at\n# <a href=\"http://www.shoa.cl/servicios/supremo316.pdf\">\n# http://www.shoa.cl/servicios/supremo316.pdf\n# </a>\n# and the instructions for 2008 are located in:\n# <a href=\"http://www.horaoficial.cl/cambio.htm\">\n# http://www.horaoficial.cl/cambio.htm\n# </a>.\n\n# From Jose Miguel Garrido (2008-03-05):\n# ...\n# You could see the announces of the change on\n# <a href=\"http://www.shoa.cl/noticias/2008/04hora/hora.htm\">\n# http://www.shoa.cl/noticias/2008/04hora/hora.htm\n# </a>.\n\n# From Angel Chiang (2010-03-04):\n# Subject: DST in Chile exceptionally extended to 3 April due to earthquake\n# <a href=\"http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098\">\n# http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098\n# </a>\n# (in Spanish, last paragraph).\n#\n# This is breaking news. There should be more information available later.\n\n# From Arthur Daivd Olson (2010-03-06):\n# Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.\n\n# From Glenn Eychaner (2011-03-02): [geychaner@mac.com]\n# It appears that the Chilean government has decided to postpone the\n# change from summer time to winter time again, by three weeks to April\n# 2nd:\n# <a href=\"http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651\">\n# http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651\n# </a>\n#\n# This is not yet reflected in the offical \"cambio de hora\" site, but\n# probably will be soon:\n# <a href=\"http://www.horaoficial.cl/cambio.htm\">\n# http://www.horaoficial.cl/cambio.htm\n# </a>\n\n# From Arthur David Olson (2011-03-02):\n# The emol.com article mentions a water shortage as the cause of the\n# postponement, which may mean that it's not a permanent change.\n\n# From Glenn Eychaner (2011-03-28):\n# The article:\n# <a href=\"http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}\">\n# http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}\n# </a>\n#\n# In English:\n# Chile's clocks will go back an hour this year on the 7th of May instead\n# of this Saturday. They will go forward again the 3rd Saturday in\n# August, not in October as they have since 1968. This is a pilot plan\n# which will be reevaluated in 2012.\n\n# From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):\n# As stated in the website of the Chilean Energy Ministry\n# http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html\n# The Chilean Government has decided to postpone the entrance into winter time\n# (to leave DST) from March 11 2012 to April 28th 2012. The decision has not\n# been yet formalized but it will within the next days.\n# Quote from the website communication:\n#\n# 6. For the year 2012, the dates of entry into winter time will be as follows:\n# a. Saturday April 28, 2012, clocks should go back 60 minutes; that is, at\n# 23:59:59, instead of passing to 0:00, the time should be adjusted to be 23:00\n# of the same day.\n# b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,\n# at 23:59:59, instead of passing to 0:00, the time should be adjusted to be\n# 01:00 on September 2.\n#\n# Note that...this is yet another \"temporary\" change that will be reevaluated\n# AGAIN in 2013.\n\n# NOTE: ChileAQ rules for Antarctic bases are stored separately in the\n# 'antarctica' file.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tChile\t1927\t1932\t-\tSep\t 1\t0:00\t1:00\tS\nRule\tChile\t1928\t1932\t-\tApr\t 1\t0:00\t0\t-\nRule\tChile\t1942\tonly\t-\tJun\t 1\t4:00u\t0\t-\nRule\tChile\t1942\tonly\t-\tAug\t 1\t5:00u\t1:00\tS\nRule\tChile\t1946\tonly\t-\tJul\t15\t4:00u\t1:00\tS\nRule\tChile\t1946\tonly\t-\tSep\t 1\t3:00u\t0:00\t-\nRule\tChile\t1947\tonly\t-\tApr\t 1\t4:00u\t0\t-\nRule\tChile\t1968\tonly\t-\tNov\t 3\t4:00u\t1:00\tS\nRule\tChile\t1969\tonly\t-\tMar\t30\t3:00u\t0\t-\nRule\tChile\t1969\tonly\t-\tNov\t23\t4:00u\t1:00\tS\nRule\tChile\t1970\tonly\t-\tMar\t29\t3:00u\t0\t-\nRule\tChile\t1971\tonly\t-\tMar\t14\t3:00u\t0\t-\nRule\tChile\t1970\t1972\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChile\t1972\t1986\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChile\t1973\tonly\t-\tSep\t30\t4:00u\t1:00\tS\nRule\tChile\t1974\t1987\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChile\t1987\tonly\t-\tApr\t12\t3:00u\t0\t-\nRule\tChile\t1988\t1989\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChile\t1988\tonly\t-\tOct\tSun>=1\t4:00u\t1:00\tS\nRule\tChile\t1989\tonly\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChile\t1990\tonly\t-\tMar\t18\t3:00u\t0\t-\nRule\tChile\t1990\tonly\t-\tSep\t16\t4:00u\t1:00\tS\nRule\tChile\t1991\t1996\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChile\t1991\t1997\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChile\t1997\tonly\t-\tMar\t30\t3:00u\t0\t-\nRule\tChile\t1998\tonly\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChile\t1998\tonly\t-\tSep\t27\t4:00u\t1:00\tS\nRule\tChile\t1999\tonly\t-\tApr\t 4\t3:00u\t0\t-\nRule\tChile\t1999\t2010\t-\tOct\tSun>=9\t4:00u\t1:00\tS\nRule\tChile\t2000\t2007\t-\tMar\tSun>=9\t3:00u\t0\t-\n# N.B.: the end of March 29 in Chile is March 30 in Universal time,\n# which is used below in specifying the transition.\nRule\tChile\t2008\tonly\t-\tMar\t30\t3:00u\t0\t-\nRule\tChile\t2009\tonly\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChile\t2010\tonly\t-\tApr\tSun>=1\t3:00u\t0\t-\nRule\tChile\t2011\tonly\t-\tMay\tSun>=2\t3:00u\t0\t-\nRule\tChile\t2011\tonly\t-\tAug\tSun>=16\t4:00u\t1:00\tS\nRule\tChile\t2012\tonly\t-\tApr\tSun>=23\t3:00u\t0\t-\nRule\tChile\t2012\tonly\t-\tSep\tSun>=2\t4:00u\t1:00\tS\nRule\tChile\t2013\tmax\t-\tMar\tSun>=9\t3:00u\t0\t-\nRule\tChile\t2013\tmax\t-\tOct\tSun>=9\t4:00u\t1:00\tS\n# IATA SSIM anomalies: (1992-02) says 1992-03-14;\n# (1996-09) says 1998-03-08.  Ignore these.\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Santiago\t-4:42:46 -\tLMT\t1890\n\t\t\t-4:42:46 -\tSMT\t1910 \t    # Santiago Mean Time\n\t\t\t-5:00\t-\tCLT\t1916 Jul  1 # Chile Time\n\t\t\t-4:42:46 -\tSMT\t1918 Sep  1 # Santiago Mean Time\n\t\t\t-4:00\t-\tCLT\t1919 Jul  1 # Chile Time\n\t\t\t-4:42:46 -\tSMT\t1927 Sep  1 # Santiago Mean Time\n\t\t\t-5:00\tChile\tCL%sT\t1947 May 22 # Chile Time\n\t\t\t-4:00\tChile\tCL%sT\nZone Pacific/Easter\t-7:17:44 -\tLMT\t1890\n\t\t\t-7:17:28 -\tEMT\t1932 Sep    # Easter Mean Time\n\t\t\t-7:00\tChile\tEAS%sT\t1982 Mar 13 21:00 # Easter I Time\n\t\t\t-6:00\tChile\tEAS%sT\n#\n# Sala y Gomez Island is like Pacific/Easter.\n# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,\n# San Felix, and Antarctic bases, are like America/Santiago.\n\n# Colombia\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tCO\t1992\tonly\t-\tMay\t 3\t0:00\t1:00\tS\nRule\tCO\t1993\tonly\t-\tApr\t 4\t0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Bogota\t-4:56:20 -\tLMT\t1884 Mar 13\n\t\t\t-4:56:20 -\tBMT\t1914 Nov 23 # Bogota Mean Time\n\t\t\t-5:00\tCO\tCO%sT\t# Colombia Time\n# Malpelo, Providencia, San Andres\n# no information; probably like America/Bogota\n\n# Curacao\n#\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger say that The Bottom and Philipsburg have been at\n# -4:00 since standard time was introduced on 1912-03-02; and that\n# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from\n# 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say\n# Saba Island has been like Curacao.\n# This all predates our 1970 cutoff, though.\n#\n# By July 2007 Curacao and St Maarten are planned to become\n# associated states within the Netherlands, much like Aruba;\n# Bonaire, Saba and St Eustatius would become directly part of the\n# Netherlands as Kingdom Islands.  This won't affect their time zones\n# though, as far as we know.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Curacao\t-4:35:44 -\tLMT\t1912 Feb 12\t# Willemstad\n\t\t\t-4:30\t-\tANT\t1965 # Netherlands Antilles Time\n\t\t\t-4:00\t-\tAST\n\n# From Arthur David Olson (2011-06-15):\n# At least for now, use links for places with new iso3166 codes.\n# The name \"Lower Prince's Quarter\" is both longer than fourteen charaters\n# and contains an apostrophe; use \"Lower_Princes\" below.\n\nLink\tAmerica/Curacao\tAmerica/Lower_Princes # Sint Maarten\nLink\tAmerica/Curacao\tAmerica/Kralendijk # Bonaire, Sint Estatius and Saba\n\n# Ecuador\n#\n# From Paul Eggert (2007-03-04):\n# Apparently Ecuador had a failed experiment with DST in 1992.\n# <http://midena.gov.ec/content/view/1261/208/> (2007-02-27) and\n# <http://www.hoy.com.ec/NoticiaNue.asp?row_id=249856> (2006-11-06) both\n# talk about \"hora Sixto\".  Leave this alone for now, as we have no data.\n#\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Guayaquil\t-5:19:20 -\tLMT\t1890\n\t\t\t-5:14:00 -\tQMT\t1931 # Quito Mean Time\n\t\t\t-5:00\t-\tECT\t     # Ecuador Time\nZone Pacific/Galapagos\t-5:58:24 -\tLMT\t1931 # Puerto Baquerizo Moreno\n\t\t\t-5:00\t-\tECT\t1986\n\t\t\t-6:00\t-\tGALT\t     # Galapagos Time\n\n# Falklands\n\n# From Paul Eggert (2006-03-22):\n# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except\n# the IATA gives 1996-09-08.  Go with Shanks & Pottenger.\n\n# From Falkland Islands Government Office, London (2001-01-22)\n# via Jesper Norgaard:\n# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15\n# April 2001 and advance one hour to summer time at 2 am on Sunday 2\n# September.  It is anticipated that the clocks will revert back at 2\n# am on Sunday 21 April 2002 and advance to summer time at 2 am on\n# Sunday 1 September.\n\n# From Rives McDow (2001-02-13):\n#\n# I have communicated several times with people there, and the last\n# time I had communications that was helpful was in 1998.  Here is\n# what was said then:\n#\n# \"The general rule was that Stanley used daylight saving and the Camp\n# did not. However for various reasons many people in the Camp have\n# started to use daylight saving (known locally as 'Stanley Time')\n# There is no rule as to who uses daylight saving - it is a matter of\n# personal choice and so it is impossible to draw a map showing who\n# uses it and who does not. Any list would be out of date as soon as\n# it was produced. This year daylight saving ended on April 18/19th\n# and started again on September 12/13th.  I do not know what the rule\n# is, but can find out if you like.  We do not change at the same time\n# as UK or Chile.\"\n#\n# I did have in my notes that the rule was \"Second Saturday in Sep at\n# 0:00 until third Saturday in Apr at 0:00\".  I think that this does\n# not agree in some cases with Shanks; is this true?\n#\n# Also, there is no mention in the list that some areas in the\n# Falklands do not use DST.  I have found in my communications there\n# that these areas are on the western half of East Falkland and all of\n# West Falkland.  Stanley is the only place that consistently observes\n# DST.  Again, as in other places in the world, the farmers don't like\n# it.  West Falkland is almost entirely sheep farmers.\n#\n# I know one lady there that keeps a list of which farm keeps DST and\n# which doesn't each year.  She runs a shop in Stanley, and says that\n# the list changes each year.  She uses it to communicate to her\n# customers, catching them when they are home for lunch or dinner.\n\n# From Paul Eggert (2001-03-05):\n# For now, we'll just record the time in Stanley, since we have no\n# better info.\n\n# From Steffen Thorsen (2011-04-01):\n# The Falkland Islands will not turn back clocks this winter, but stay on\n# daylight saving time.\n#\n# One source:\n# <a href=\"http://www.falklandnews.com/public/story.cfm?get=5914&source=3\">\n# http://www.falklandnews.com/public/story.cfm?get=5914&source=3\n# </a>\n#\n# We have gotten this confirmed by a clerk of the legislative assembly:\n# Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the\n# third Sunday of April at 0200hrs and advance to Summer Time (UTC/GMT -3\n# hours) on the first Sunday of September at 0200hrs.\n#\n# IMPORTANT NOTE: During 2011, on a trial basis, the Falkland Islands\n# will not revert to local mean time, but clocks will remain on Summer\n# time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term\n# change to local time following the trial period will be notified.\n#\n# From Andrew Newman (2012-02-24)\n# A letter from Justin McPhee, Chief Executive,\n# Cable & Wireless Falkland Islands (dated 2012-02-22)\n# states...\n#   The current Atlantic/Stanley entry under South America expects the\n#   clocks to go back to standard Falklands Time (FKT) on the 15th April.\n#   The database entry states that in 2011 Stanley was staying on fixed\n#   summer time on a trial basis only.  FIG need to contact IANA and/or\n#   the maintainers of the database to inform them we're adopting\n#   the same policy this year and suggest recommendations for future years.\n#\n# For now we will assume permanent summer time for the Falklands\n# until advised differently (to apply for 2012 and beyond, after the 2011\n# experiment was apparently successful.)\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tFalk\t1937\t1938\t-\tSep\tlastSun\t0:00\t1:00\tS\nRule\tFalk\t1938\t1942\t-\tMar\tSun>=19\t0:00\t0\t-\nRule\tFalk\t1939\tonly\t-\tOct\t1\t0:00\t1:00\tS\nRule\tFalk\t1940\t1942\t-\tSep\tlastSun\t0:00\t1:00\tS\nRule\tFalk\t1943\tonly\t-\tJan\t1\t0:00\t0\t-\nRule\tFalk\t1983\tonly\t-\tSep\tlastSun\t0:00\t1:00\tS\nRule\tFalk\t1984\t1985\t-\tApr\tlastSun\t0:00\t0\t-\nRule\tFalk\t1984\tonly\t-\tSep\t16\t0:00\t1:00\tS\nRule\tFalk\t1985\t2000\t-\tSep\tSun>=9\t0:00\t1:00\tS\nRule\tFalk\t1986\t2000\t-\tApr\tSun>=16\t0:00\t0\t-\nRule\tFalk\t2001\t2010\t-\tApr\tSun>=15\t2:00\t0\t-\nRule\tFalk\t2001\t2010\t-\tSep\tSun>=1\t2:00\t1:00\tS\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Atlantic/Stanley\t-3:51:24 -\tLMT\t1890\n\t\t\t-3:51:24 -\tSMT\t1912 Mar 12  # Stanley Mean Time\n\t\t\t-4:00\tFalk\tFK%sT\t1983 May     # Falkland Is Time\n\t\t\t-3:00\tFalk\tFK%sT\t1985 Sep 15\n\t\t\t-4:00\tFalk\tFK%sT\t2010 Sep 5 02:00\n\t\t\t-3:00\t-\tFKST\n\n# French Guiana\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Cayenne\t-3:29:20 -\tLMT\t1911 Jul\n\t\t\t-4:00\t-\tGFT\t1967 Oct # French Guiana Time\n\t\t\t-3:00\t-\tGFT\n\n# Guyana\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Guyana\t-3:52:40 -\tLMT\t1915 Mar\t# Georgetown\n\t\t\t-3:45\t-\tGBGT\t1966 May 26 # Br Guiana Time\n\t\t\t-3:45\t-\tGYT\t1975 Jul 31 # Guyana Time\n\t\t\t-3:00\t-\tGYT\t1991\n# IATA SSIM (1996-06) says -4:00.  Assume a 1991 switch.\n\t\t\t-4:00\t-\tGYT\n\n# Paraguay\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,\n# and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999\n# editions of Shanks, and with the IATA, who say transitions occur at 00:00.\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tPara\t1975\t1988\t-\tOct\t 1\t0:00\t1:00\tS\nRule\tPara\t1975\t1978\t-\tMar\t 1\t0:00\t0\t-\nRule\tPara\t1979\t1991\t-\tApr\t 1\t0:00\t0\t-\nRule\tPara\t1989\tonly\t-\tOct\t22\t0:00\t1:00\tS\nRule\tPara\t1990\tonly\t-\tOct\t 1\t0:00\t1:00\tS\nRule\tPara\t1991\tonly\t-\tOct\t 6\t0:00\t1:00\tS\nRule\tPara\t1992\tonly\t-\tMar\t 1\t0:00\t0\t-\nRule\tPara\t1992\tonly\t-\tOct\t 5\t0:00\t1:00\tS\nRule\tPara\t1993\tonly\t-\tMar\t31\t0:00\t0\t-\nRule\tPara\t1993\t1995\t-\tOct\t 1\t0:00\t1:00\tS\nRule\tPara\t1994\t1995\t-\tFeb\tlastSun\t0:00\t0\t-\nRule\tPara\t1996\tonly\t-\tMar\t 1\t0:00\t0\t-\n# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.\n# From Steffen Thorsen (2000-10-02):\n# I have three independent reports that Paraguay changed to DST this Sunday\n# (10-01).\n#\n# Translated by Gwillim Law (2001-02-27) from\n# <a href=\"http://www.diarionoticias.com.py/011000/nacional/naciona1.htm\">\n# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)\n# </a>:\n# Starting at 0:00 today, the clock will be set forward 60 minutes, in\n# fulfillment of Decree No. 7,273 of the Executive Power....  The time change\n# system has been operating for several years.  Formerly there was a separate\n# decree each year; the new law has the same effect, but permanently.  Every\n# year, the time will change on the first Sunday of October; likewise, the\n# clock will be set back on the first Sunday of March.\n#\nRule\tPara\t1996\t2001\t-\tOct\tSun>=1\t0:00\t1:00\tS\n# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.\nRule\tPara\t1997\tonly\t-\tFeb\tlastSun\t0:00\t0\t-\n# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but\n# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).\nRule\tPara\t1998\t2001\t-\tMar\tSun>=1\t0:00\t0\t-\n# From Rives McDow (2002-02-28):\n# A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the\n# dst method to be from the first Sunday in September to the first Sunday in\n# April.\nRule\tPara\t2002\t2004\t-\tApr\tSun>=1\t0:00\t0\t-\nRule\tPara\t2002\t2003\t-\tSep\tSun>=1\t0:00\t1:00\tS\n#\n# From Jesper Norgaard Welen (2005-01-02):\n# There are several sources that claim that Paraguay made\n# a timezone rule change in autumn 2004.\n# From Steffen Thorsen (2005-01-05):\n# Decree 1,867 (2004-03-05)\n# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)\n# <http://www.presidencia.gov.py/decretos/D1867.pdf>\nRule\tPara\t2004\t2009\t-\tOct\tSun>=15\t0:00\t1:00\tS\nRule\tPara\t2005\t2009\t-\tMar\tSun>=8\t0:00\t0\t-\n# From Carlos Raul Perasso (2010-02-18):\n# By decree number 3958 issued yesterday (\n# <a href=\"http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf\">\n# http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf\n# </a>\n# )\n# Paraguay changes its DST schedule, postponing the March rule to April and\n# modifying the October date. The decree reads:\n# ...\n# Art. 1. It is hereby established that from the second Sunday of the month of\n# April of this year (2010), the official time is to be set back 60 minutes,\n# and that on the first Sunday of the month of October, it is to be set\n# forward 60 minutes, in all the territory of the Paraguayan Republic.\n# ...\nRule\tPara\t2010\tmax\t-\tOct\tSun>=1\t0:00\t1:00\tS\nRule\tPara\t2010\tmax\t-\tApr\tSun>=8\t0:00\t0\t-\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Asuncion\t-3:50:40 -\tLMT\t1890\n\t\t\t-3:50:40 -\tAMT\t1931 Oct 10 # Asuncion Mean Time\n\t\t\t-4:00\t-\tPYT\t1972 Oct # Paraguay Time\n\t\t\t-3:00\t-\tPYT\t1974 Apr\n\t\t\t-4:00\tPara\tPY%sT\n\n# Peru\n#\n# <a href=\"news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net\">\n# From Evelyn C. Leeper via Mark Brader (2003-10-26):</a>\n# When we were in Peru in 1985-1986, they apparently switched over\n# sometime between December 29 and January 3 while we were on the Amazon.\n#\n# From Paul Eggert (2006-03-22):\n# Shanks & Pottenger don't have this transition.  Assume 1986 was like 1987.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tPeru\t1938\tonly\t-\tJan\t 1\t0:00\t1:00\tS\nRule\tPeru\t1938\tonly\t-\tApr\t 1\t0:00\t0\t-\nRule\tPeru\t1938\t1939\t-\tSep\tlastSun\t0:00\t1:00\tS\nRule\tPeru\t1939\t1940\t-\tMar\tSun>=24\t0:00\t0\t-\nRule\tPeru\t1986\t1987\t-\tJan\t 1\t0:00\t1:00\tS\nRule\tPeru\t1986\t1987\t-\tApr\t 1\t0:00\t0\t-\nRule\tPeru\t1990\tonly\t-\tJan\t 1\t0:00\t1:00\tS\nRule\tPeru\t1990\tonly\t-\tApr\t 1\t0:00\t0\t-\n# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.\nRule\tPeru\t1994\tonly\t-\tJan\t 1\t0:00\t1:00\tS\nRule\tPeru\t1994\tonly\t-\tApr\t 1\t0:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Lima\t-5:08:12 -\tLMT\t1890\n\t\t\t-5:08:36 -\tLMT\t1908 Jul 28 # Lima Mean Time?\n\t\t\t-5:00\tPeru\tPE%sT\t# Peru Time\n\n# South Georgia\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone Atlantic/South_Georgia -2:26:08 -\tLMT\t1890\t\t# Grytviken\n\t\t\t-2:00\t-\tGST\t# South Georgia Time\n\n# South Sandwich Is\n# uninhabited; scientific personnel have wintered\n\n# Suriname\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Paramaribo\t-3:40:40 -\tLMT\t1911\n\t\t\t-3:40:52 -\tPMT\t1935     # Paramaribo Mean Time\n\t\t\t-3:40:36 -\tPMT\t1945 Oct # The capital moved?\n\t\t\t-3:30\t-\tNEGT\t1975 Nov 20 # Dutch Guiana Time\n\t\t\t-3:30\t-\tSRT\t1984 Oct # Suriname Time\n\t\t\t-3:00\t-\tSRT\n\n# Trinidad and Tobago\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Port_of_Spain -4:06:04 -\tLMT\t1912 Mar 2\n\t\t\t-4:00\t-\tAST\n\n# Uruguay\n# From Paul Eggert (1993-11-18):\n# Uruguay wins the prize for the strangest peacetime manipulation of the rules.\n# From Shanks & Pottenger:\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\n# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.\nRule\tUruguay\t1923\tonly\t-\tOct\t 2\t 0:00\t0:30\tHS\nRule\tUruguay\t1924\t1926\t-\tApr\t 1\t 0:00\t0\t-\nRule\tUruguay\t1924\t1925\t-\tOct\t 1\t 0:00\t0:30\tHS\nRule\tUruguay\t1933\t1935\t-\tOct\tlastSun\t 0:00\t0:30\tHS\n# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.\nRule\tUruguay\t1934\t1936\t-\tMar\tSat>=25\t23:30s\t0\t-\nRule\tUruguay\t1936\tonly\t-\tNov\t 1\t 0:00\t0:30\tHS\nRule\tUruguay\t1937\t1941\t-\tMar\tlastSun\t 0:00\t0\t-\n# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.\nRule\tUruguay\t1937\t1940\t-\tOct\tlastSun\t 0:00\t0:30\tHS\n# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,\n# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger.\nRule\tUruguay\t1941\tonly\t-\tAug\t 1\t 0:00\t0:30\tHS\nRule\tUruguay\t1942\tonly\t-\tJan\t 1\t 0:00\t0\t-\nRule\tUruguay\t1942\tonly\t-\tDec\t14\t 0:00\t1:00\tS\nRule\tUruguay\t1943\tonly\t-\tMar\t14\t 0:00\t0\t-\nRule\tUruguay\t1959\tonly\t-\tMay\t24\t 0:00\t1:00\tS\nRule\tUruguay\t1959\tonly\t-\tNov\t15\t 0:00\t0\t-\nRule\tUruguay\t1960\tonly\t-\tJan\t17\t 0:00\t1:00\tS\nRule\tUruguay\t1960\tonly\t-\tMar\t 6\t 0:00\t0\t-\nRule\tUruguay\t1965\t1967\t-\tApr\tSun>=1\t 0:00\t1:00\tS\nRule\tUruguay\t1965\tonly\t-\tSep\t26\t 0:00\t0\t-\nRule\tUruguay\t1966\t1967\t-\tOct\t31\t 0:00\t0\t-\nRule\tUruguay\t1968\t1970\t-\tMay\t27\t 0:00\t0:30\tHS\nRule\tUruguay\t1968\t1970\t-\tDec\t 2\t 0:00\t0\t-\nRule\tUruguay\t1972\tonly\t-\tApr\t24\t 0:00\t1:00\tS\nRule\tUruguay\t1972\tonly\t-\tAug\t15\t 0:00\t0\t-\nRule\tUruguay\t1974\tonly\t-\tMar\t10\t 0:00\t0:30\tHS\nRule\tUruguay\t1974\tonly\t-\tDec\t22\t 0:00\t1:00\tS\nRule\tUruguay\t1976\tonly\t-\tOct\t 1\t 0:00\t0\t-\nRule\tUruguay\t1977\tonly\t-\tDec\t 4\t 0:00\t1:00\tS\nRule\tUruguay\t1978\tonly\t-\tApr\t 1\t 0:00\t0\t-\nRule\tUruguay\t1979\tonly\t-\tOct\t 1\t 0:00\t1:00\tS\nRule\tUruguay\t1980\tonly\t-\tMay\t 1\t 0:00\t0\t-\nRule\tUruguay\t1987\tonly\t-\tDec\t14\t 0:00\t1:00\tS\nRule\tUruguay\t1988\tonly\t-\tMar\t14\t 0:00\t0\t-\nRule\tUruguay\t1988\tonly\t-\tDec\t11\t 0:00\t1:00\tS\nRule\tUruguay\t1989\tonly\t-\tMar\t12\t 0:00\t0\t-\nRule\tUruguay\t1989\tonly\t-\tOct\t29\t 0:00\t1:00\tS\n# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,\n# and that 1992/3's DST was from 10-25 to 03-01.  Go with IATA.\nRule\tUruguay\t1990\t1992\t-\tMar\tSun>=1\t 0:00\t0\t-\nRule\tUruguay\t1990\t1991\t-\tOct\tSun>=21\t 0:00\t1:00\tS\nRule\tUruguay\t1992\tonly\t-\tOct\t18\t 0:00\t1:00\tS\nRule\tUruguay\t1993\tonly\t-\tFeb\t28\t 0:00\t0\t-\n# From Eduardo Cota (2004-09-20):\n# The uruguayan government has decreed a change in the local time....\n# http://www.presidencia.gub.uy/decretos/2004091502.htm\nRule\tUruguay\t2004\tonly\t-\tSep\t19\t 0:00\t1:00\tS\n# From Steffen Thorsen (2005-03-11):\n# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to\n# save energy ... it was postponed two weeks....\n# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm\nRule\tUruguay\t2005\tonly\t-\tMar\t27\t 2:00\t0\t-\n# From Eduardo Cota (2005-09-27):\n# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF\n# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at\n# 02:00 local time, official time in Uruguay will be at GMT -2.\nRule\tUruguay\t2005\tonly\t-\tOct\t 9\t 2:00\t1:00\tS\nRule\tUruguay\t2006\tonly\t-\tMar\t12\t 2:00\t0\t-\n# From Jesper Norgaard Welen (2006-09-06):\n# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF\nRule\tUruguay\t2006\tmax\t-\tOct\tSun>=1\t 2:00\t1:00\tS\nRule\tUruguay\t2007\tmax\t-\tMar\tSun>=8\t 2:00\t0\t-\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone America/Montevideo\t-3:44:44 -\tLMT\t1898 Jun 28\n\t\t\t-3:44:44 -\tMMT\t1920 May  1\t# Montevideo MT\n\t\t\t-3:30\tUruguay\tUY%sT\t1942 Dec 14\t# Uruguay Time\n\t\t\t-3:00\tUruguay\tUY%sT\n\n# Venezuela\n#\n# From John Stainforth (2007-11-28):\n# ... the change for Venezuela originally expected for 2007-12-31 has\n# been brought forward to 2007-12-09.  The official announcement was\n# published today in the \"Gaceta Oficial de la Republica Bolivariana\n# de Venezuela, numero 38.819\" (official document for all laws or\n# resolution publication)\n# http://www.globovision.com/news.php?nid=72208\n\n# Zone\tNAME\t\tGMTOFF\tRULES\tFORMAT\t[UNTIL]\nZone\tAmerica/Caracas\t-4:27:44 -\tLMT\t1890\n\t\t\t-4:27:40 -\tCMT\t1912 Feb 12 # Caracas Mean Time?\n\t\t\t-4:30\t-\tVET\t1965\t     # Venezuela Time\n\t\t\t-4:00\t-\tVET\t2007 Dec  9 03:00\n\t\t\t-4:30\t-\tVET\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/systemv",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n\n# Old rules, should the need arise.\n# No attempt is made to handle Newfoundland, since it cannot be expressed\n# using the System V \"TZ\" scheme (half-hour offset), or anything outside\n# North America (no support for non-standard DST start/end dates), nor\n# the changes in the DST rules in the US after 1976 (which occurred after\n# the old rules were written).\n#\n# If you need the old rules, uncomment ## lines.\n# Compile this *without* leap second correction for true conformance.\n\n# Rule\tNAME\tFROM\tTO\tTYPE\tIN\tON\tAT\tSAVE\tLETTER/S\nRule\tSystemV\tmin\t1973\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tSystemV\tmin\t1973\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tSystemV\t1974\tonly\t-\tJan\t6\t2:00\t1:00\tD\nRule\tSystemV\t1974\tonly\t-\tNov\tlastSun\t2:00\t0\tS\nRule\tSystemV\t1975\tonly\t-\tFeb\t23\t2:00\t1:00\tD\nRule\tSystemV\t1975\tonly\t-\tOct\tlastSun\t2:00\t0\tS\nRule\tSystemV\t1976\tmax\t-\tApr\tlastSun\t2:00\t1:00\tD\nRule\tSystemV\t1976\tmax\t-\tOct\tlastSun\t2:00\t0\tS\n\n# Zone\tNAME\t\tGMTOFF\tRULES/SAVE\tFORMAT\t[UNTIL]\n## Zone\tSystemV/AST4ADT\t-4:00\tSystemV\t\tA%sT\n## Zone\tSystemV/EST5EDT\t-5:00\tSystemV\t\tE%sT\n## Zone\tSystemV/CST6CDT\t-6:00\tSystemV\t\tC%sT\n## Zone\tSystemV/MST7MDT\t-7:00\tSystemV\t\tM%sT\n## Zone\tSystemV/PST8PDT\t-8:00\tSystemV\t\tP%sT\n## Zone\tSystemV/YST9YDT\t-9:00\tSystemV\t\tY%sT\n## Zone\tSystemV/AST4\t-4:00\t-\t\tAST\n## Zone\tSystemV/EST5\t-5:00\t-\t\tEST\n## Zone\tSystemV/CST6\t-6:00\t-\t\tCST\n## Zone\tSystemV/MST7\t-7:00\t-\t\tMST\n## Zone\tSystemV/PST8\t-8:00\t-\t\tPST\n## Zone\tSystemV/YST9\t-9:00\t-\t\tYST\n## Zone\tSystemV/HST10\t-10:00\t-\t\tHST\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/yearistype.sh",
    "content": "#! /bin/sh\n\n: 'This file is in the public domain, so clarified as of'\n: '2006-07-17 by Arthur David Olson.'\n\ncase $#-$1 in\n\t2-|2-0*|2-*[!0-9]*)\n\t\techo \"$0: wild year - $1\" >&2\n\t\texit 1 ;;\nesac\n\ncase $#-$2 in\n\t2-even)\n\t\tcase $1 in\n\t\t\t*[24680])\t\t\texit 0 ;;\n\t\t\t*)\t\t\t\texit 1 ;;\n\t\tesac ;;\n\t2-nonpres|2-nonuspres)\n\t\tcase $1 in\n\t\t\t*[02468][048]|*[13579][26])\texit 1 ;;\n\t\t\t*)\t\t\t\texit 0 ;;\n\t\tesac ;;\n\t2-odd)\n\t\tcase $1 in\n\t\t\t*[13579])\t\t\texit 0 ;;\n\t\t\t*)\t\t\t\texit 1 ;;\n\t\tesac ;;\n\t2-uspres)\n\t\tcase $1 in\n\t\t\t*[02468][048]|*[13579][26])\texit 0 ;;\n\t\t\t*)\t\t\t\texit 1 ;;\n\t\tesac ;;\n\t2-*)\n\t\techo \"$0: wild type - $2\" >&2 ;;\nesac\n\necho \"$0: usage is $0 year even|odd|uspres|nonpres|nonuspres\" >&2\nexit 1\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/axes-time-zones/tz/zone.tab",
    "content": "# <pre>\n# This file is in the public domain, so clarified as of\n# 2009-05-17 by Arthur David Olson.\n#\n# TZ zone descriptions\n#\n# From Paul Eggert (1996-08-05):\n#\n# This file contains a table with the following columns:\n# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.\n# 2.  Latitude and longitude of the zone's principal location\n#     in ISO 6709 sign-degrees-minutes-seconds format,\n#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,\n#     first latitude (+ is north), then longitude (+ is east).\n# 3.  Zone name used in value of TZ environment variable.\n# 4.  Comments; present if and only if the country has multiple rows.\n#\n# Columns are separated by a single tab.\n# The table is sorted first by country, then an order within the country that\n# (1) makes some geographical sense, and\n# (2) puts the most populous zones first, where that does not contradict (1).\n#\n# Lines beginning with `#' are comments.\n#\n#country-\n#code\tcoordinates\tTZ\t\t\tcomments\nAD\t+4230+00131\tEurope/Andorra\nAE\t+2518+05518\tAsia/Dubai\nAF\t+3431+06912\tAsia/Kabul\nAG\t+1703-06148\tAmerica/Antigua\nAI\t+1812-06304\tAmerica/Anguilla\nAL\t+4120+01950\tEurope/Tirane\nAM\t+4011+04430\tAsia/Yerevan\nAO\t-0848+01314\tAfrica/Luanda\nAQ\t-7750+16636\tAntarctica/McMurdo\tMcMurdo Station, Ross Island\nAQ\t-9000+00000\tAntarctica/South_Pole\tAmundsen-Scott Station, South Pole\nAQ\t-6734-06808\tAntarctica/Rothera\tRothera Station, Adelaide Island\nAQ\t-6448-06406\tAntarctica/Palmer\tPalmer Station, Anvers Island\nAQ\t-6736+06253\tAntarctica/Mawson\tMawson Station, Holme Bay\nAQ\t-6835+07758\tAntarctica/Davis\tDavis Station, Vestfold Hills\nAQ\t-6617+11031\tAntarctica/Casey\tCasey Station, Bailey Peninsula\nAQ\t-7824+10654\tAntarctica/Vostok\tVostok Station, Lake Vostok\nAQ\t-6640+14001\tAntarctica/DumontDUrville\tDumont-d'Urville Station, Terre Adelie\nAQ\t-690022+0393524\tAntarctica/Syowa\tSyowa Station, E Ongul I\nAQ\t-5430+15857\tAntarctica/Macquarie\tMacquarie Island Station, Macquarie Island\nAR\t-3436-05827\tAmerica/Argentina/Buenos_Aires\tBuenos Aires (BA, CF)\nAR\t-3124-06411\tAmerica/Argentina/Cordoba\tmost locations (CB, CC, CN, ER, FM, MN, SE, SF)\nAR\t-2447-06525\tAmerica/Argentina/Salta\t(SA, LP, NQ, RN)\nAR\t-2411-06518\tAmerica/Argentina/Jujuy\tJujuy (JY)\nAR\t-2649-06513\tAmerica/Argentina/Tucuman\tTucuman (TM)\nAR\t-2828-06547\tAmerica/Argentina/Catamarca\tCatamarca (CT), Chubut (CH)\nAR\t-2926-06651\tAmerica/Argentina/La_Rioja\tLa Rioja (LR)\nAR\t-3132-06831\tAmerica/Argentina/San_Juan\tSan Juan (SJ)\nAR\t-3253-06849\tAmerica/Argentina/Mendoza\tMendoza (MZ)\nAR\t-3319-06621\tAmerica/Argentina/San_Luis\tSan Luis (SL)\nAR\t-5138-06913\tAmerica/Argentina/Rio_Gallegos\tSanta Cruz (SC)\nAR\t-5448-06818\tAmerica/Argentina/Ushuaia\tTierra del Fuego (TF)\nAS\t-1416-17042\tPacific/Pago_Pago\nAT\t+4813+01620\tEurope/Vienna\nAU\t-3133+15905\tAustralia/Lord_Howe\tLord Howe Island\nAU\t-4253+14719\tAustralia/Hobart\tTasmania - most locations\nAU\t-3956+14352\tAustralia/Currie\tTasmania - King Island\nAU\t-3749+14458\tAustralia/Melbourne\tVictoria\nAU\t-3352+15113\tAustralia/Sydney\tNew South Wales - most locations\nAU\t-3157+14127\tAustralia/Broken_Hill\tNew South Wales - Yancowinna\nAU\t-2728+15302\tAustralia/Brisbane\tQueensland - most locations\nAU\t-2016+14900\tAustralia/Lindeman\tQueensland - Holiday Islands\nAU\t-3455+13835\tAustralia/Adelaide\tSouth Australia\nAU\t-1228+13050\tAustralia/Darwin\tNorthern Territory\nAU\t-3157+11551\tAustralia/Perth\tWestern Australia - most locations\nAU\t-3143+12852\tAustralia/Eucla\tWestern Australia - Eucla area\nAW\t+1230-06958\tAmerica/Aruba\nAX\t+6006+01957\tEurope/Mariehamn\nAZ\t+4023+04951\tAsia/Baku\nBA\t+4352+01825\tEurope/Sarajevo\nBB\t+1306-05937\tAmerica/Barbados\nBD\t+2343+09025\tAsia/Dhaka\nBE\t+5050+00420\tEurope/Brussels\nBF\t+1222-00131\tAfrica/Ouagadougou\nBG\t+4241+02319\tEurope/Sofia\nBH\t+2623+05035\tAsia/Bahrain\nBI\t-0323+02922\tAfrica/Bujumbura\nBJ\t+0629+00237\tAfrica/Porto-Novo\nBL\t+1753-06251\tAmerica/St_Barthelemy\nBM\t+3217-06446\tAtlantic/Bermuda\nBN\t+0456+11455\tAsia/Brunei\nBO\t-1630-06809\tAmerica/La_Paz\nBQ\t+120903-0681636\tAmerica/Kralendijk\nBR\t-0351-03225\tAmerica/Noronha\tAtlantic islands\nBR\t-0127-04829\tAmerica/Belem\tAmapa, E Para\nBR\t-0343-03830\tAmerica/Fortaleza\tNE Brazil (MA, PI, CE, RN, PB)\nBR\t-0803-03454\tAmerica/Recife\tPernambuco\nBR\t-0712-04812\tAmerica/Araguaina\tTocantins\nBR\t-0940-03543\tAmerica/Maceio\tAlagoas, Sergipe\nBR\t-1259-03831\tAmerica/Bahia\tBahia\nBR\t-2332-04637\tAmerica/Sao_Paulo\tS & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)\nBR\t-2027-05437\tAmerica/Campo_Grande\tMato Grosso do Sul\nBR\t-1535-05605\tAmerica/Cuiaba\tMato Grosso\nBR\t-0226-05452\tAmerica/Santarem\tW Para\nBR\t-0846-06354\tAmerica/Porto_Velho\tRondonia\nBR\t+0249-06040\tAmerica/Boa_Vista\tRoraima\nBR\t-0308-06001\tAmerica/Manaus\tE Amazonas\nBR\t-0640-06952\tAmerica/Eirunepe\tW Amazonas\nBR\t-0958-06748\tAmerica/Rio_Branco\tAcre\nBS\t+2505-07721\tAmerica/Nassau\nBT\t+2728+08939\tAsia/Thimphu\nBW\t-2439+02555\tAfrica/Gaborone\nBY\t+5354+02734\tEurope/Minsk\nBZ\t+1730-08812\tAmerica/Belize\nCA\t+4734-05243\tAmerica/St_Johns\tNewfoundland Time, including SE Labrador\nCA\t+4439-06336\tAmerica/Halifax\tAtlantic Time - Nova Scotia (most places), PEI\nCA\t+4612-05957\tAmerica/Glace_Bay\tAtlantic Time - Nova Scotia - places that did not observe DST 1966-1971\nCA\t+4606-06447\tAmerica/Moncton\tAtlantic Time - New Brunswick\nCA\t+5320-06025\tAmerica/Goose_Bay\tAtlantic Time - Labrador - most locations\nCA\t+5125-05707\tAmerica/Blanc-Sablon\tAtlantic Standard Time - Quebec - Lower North Shore\nCA\t+4531-07334\tAmerica/Montreal\tEastern Time - Quebec - most locations\nCA\t+4339-07923\tAmerica/Toronto\tEastern Time - Ontario - most locations\nCA\t+4901-08816\tAmerica/Nipigon\tEastern Time - Ontario & Quebec - places that did not observe DST 1967-1973\nCA\t+4823-08915\tAmerica/Thunder_Bay\tEastern Time - Thunder Bay, Ontario\nCA\t+6344-06828\tAmerica/Iqaluit\tEastern Time - east Nunavut - most locations\nCA\t+6608-06544\tAmerica/Pangnirtung\tEastern Time - Pangnirtung, Nunavut\nCA\t+744144-0944945\tAmerica/Resolute\tCentral Standard Time - Resolute, Nunavut\nCA\t+484531-0913718\tAmerica/Atikokan\tEastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut\nCA\t+624900-0920459\tAmerica/Rankin_Inlet\tCentral Time - central Nunavut\nCA\t+4953-09709\tAmerica/Winnipeg\tCentral Time - Manitoba & west Ontario\nCA\t+4843-09434\tAmerica/Rainy_River\tCentral Time - Rainy River & Fort Frances, Ontario\nCA\t+5024-10439\tAmerica/Regina\tCentral Standard Time - Saskatchewan - most locations\nCA\t+5017-10750\tAmerica/Swift_Current\tCentral Standard Time - Saskatchewan - midwest\nCA\t+5333-11328\tAmerica/Edmonton\tMountain Time - Alberta, east British Columbia & west Saskatchewan\nCA\t+690650-1050310\tAmerica/Cambridge_Bay\tMountain Time - west Nunavut\nCA\t+6227-11421\tAmerica/Yellowknife\tMountain Time - central Northwest Territories\nCA\t+682059-1334300\tAmerica/Inuvik\tMountain Time - west Northwest Territories\nCA\t+4906-11631\tAmerica/Creston\tMountain Standard Time - Creston, British Columbia\nCA\t+5946-12014\tAmerica/Dawson_Creek\tMountain Standard Time - Dawson Creek & Fort Saint John, British Columbia\nCA\t+4916-12307\tAmerica/Vancouver\tPacific Time - west British Columbia\nCA\t+6043-13503\tAmerica/Whitehorse\tPacific Time - south Yukon\nCA\t+6404-13925\tAmerica/Dawson\tPacific Time - north Yukon\nCC\t-1210+09655\tIndian/Cocos\nCD\t-0418+01518\tAfrica/Kinshasa\twest Dem. Rep. of Congo\nCD\t-1140+02728\tAfrica/Lubumbashi\teast Dem. Rep. of Congo\nCF\t+0422+01835\tAfrica/Bangui\nCG\t-0416+01517\tAfrica/Brazzaville\nCH\t+4723+00832\tEurope/Zurich\nCI\t+0519-00402\tAfrica/Abidjan\nCK\t-2114-15946\tPacific/Rarotonga\nCL\t-3327-07040\tAmerica/Santiago\tmost locations\nCL\t-2709-10926\tPacific/Easter\tEaster Island & Sala y Gomez\nCM\t+0403+00942\tAfrica/Douala\nCN\t+3114+12128\tAsia/Shanghai\teast China - Beijing, Guangdong, Shanghai, etc.\nCN\t+4545+12641\tAsia/Harbin\tHeilongjiang (except Mohe), Jilin\nCN\t+2934+10635\tAsia/Chongqing\tcentral China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.\nCN\t+4348+08735\tAsia/Urumqi\tmost of Tibet & Xinjiang\nCN\t+3929+07559\tAsia/Kashgar\twest Tibet & Xinjiang\nCO\t+0436-07405\tAmerica/Bogota\nCR\t+0956-08405\tAmerica/Costa_Rica\nCU\t+2308-08222\tAmerica/Havana\nCV\t+1455-02331\tAtlantic/Cape_Verde\nCW\t+1211-06900\tAmerica/Curacao\nCX\t-1025+10543\tIndian/Christmas\nCY\t+3510+03322\tAsia/Nicosia\nCZ\t+5005+01426\tEurope/Prague\nDE\t+5230+01322\tEurope/Berlin\nDJ\t+1136+04309\tAfrica/Djibouti\nDK\t+5540+01235\tEurope/Copenhagen\nDM\t+1518-06124\tAmerica/Dominica\nDO\t+1828-06954\tAmerica/Santo_Domingo\nDZ\t+3647+00303\tAfrica/Algiers\nEC\t-0210-07950\tAmerica/Guayaquil\tmainland\nEC\t-0054-08936\tPacific/Galapagos\tGalapagos Islands\nEE\t+5925+02445\tEurope/Tallinn\nEG\t+3003+03115\tAfrica/Cairo\nEH\t+2709-01312\tAfrica/El_Aaiun\nER\t+1520+03853\tAfrica/Asmara\nES\t+4024-00341\tEurope/Madrid\tmainland\nES\t+3553-00519\tAfrica/Ceuta\tCeuta & Melilla\nES\t+2806-01524\tAtlantic/Canary\tCanary Islands\nET\t+0902+03842\tAfrica/Addis_Ababa\nFI\t+6010+02458\tEurope/Helsinki\nFJ\t-1808+17825\tPacific/Fiji\nFK\t-5142-05751\tAtlantic/Stanley\nFM\t+0725+15147\tPacific/Chuuk\tChuuk (Truk) and Yap\nFM\t+0658+15813\tPacific/Pohnpei\tPohnpei (Ponape)\nFM\t+0519+16259\tPacific/Kosrae\tKosrae\nFO\t+6201-00646\tAtlantic/Faroe\nFR\t+4852+00220\tEurope/Paris\nGA\t+0023+00927\tAfrica/Libreville\nGB\t+513030-0000731\tEurope/London\nGD\t+1203-06145\tAmerica/Grenada\nGE\t+4143+04449\tAsia/Tbilisi\nGF\t+0456-05220\tAmerica/Cayenne\nGG\t+4927-00232\tEurope/Guernsey\nGH\t+0533-00013\tAfrica/Accra\nGI\t+3608-00521\tEurope/Gibraltar\nGL\t+6411-05144\tAmerica/Godthab\tmost locations\nGL\t+7646-01840\tAmerica/Danmarkshavn\teast coast, north of Scoresbysund\nGL\t+7029-02158\tAmerica/Scoresbysund\tScoresbysund / Ittoqqortoormiit\nGL\t+7634-06847\tAmerica/Thule\tThule / Pituffik\nGM\t+1328-01639\tAfrica/Banjul\nGN\t+0931-01343\tAfrica/Conakry\nGP\t+1614-06132\tAmerica/Guadeloupe\nGQ\t+0345+00847\tAfrica/Malabo\nGR\t+3758+02343\tEurope/Athens\nGS\t-5416-03632\tAtlantic/South_Georgia\nGT\t+1438-09031\tAmerica/Guatemala\nGU\t+1328+14445\tPacific/Guam\nGW\t+1151-01535\tAfrica/Bissau\nGY\t+0648-05810\tAmerica/Guyana\nHK\t+2217+11409\tAsia/Hong_Kong\nHN\t+1406-08713\tAmerica/Tegucigalpa\nHR\t+4548+01558\tEurope/Zagreb\nHT\t+1832-07220\tAmerica/Port-au-Prince\nHU\t+4730+01905\tEurope/Budapest\nID\t-0610+10648\tAsia/Jakarta\tJava & Sumatra\nID\t-0002+10920\tAsia/Pontianak\twest & central Borneo\nID\t-0507+11924\tAsia/Makassar\teast & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor\nID\t-0232+14042\tAsia/Jayapura\twest New Guinea (Irian Jaya) & Malukus (Moluccas)\nIE\t+5320-00615\tEurope/Dublin\nIL\t+3146+03514\tAsia/Jerusalem\nIM\t+5409-00428\tEurope/Isle_of_Man\nIN\t+2232+08822\tAsia/Kolkata\nIO\t-0720+07225\tIndian/Chagos\nIQ\t+3321+04425\tAsia/Baghdad\nIR\t+3540+05126\tAsia/Tehran\nIS\t+6409-02151\tAtlantic/Reykjavik\nIT\t+4154+01229\tEurope/Rome\nJE\t+4912-00207\tEurope/Jersey\nJM\t+1800-07648\tAmerica/Jamaica\nJO\t+3157+03556\tAsia/Amman\nJP\t+353916+1394441\tAsia/Tokyo\nKE\t-0117+03649\tAfrica/Nairobi\nKG\t+4254+07436\tAsia/Bishkek\nKH\t+1133+10455\tAsia/Phnom_Penh\nKI\t+0125+17300\tPacific/Tarawa\tGilbert Islands\nKI\t-0308-17105\tPacific/Enderbury\tPhoenix Islands\nKI\t+0152-15720\tPacific/Kiritimati\tLine Islands\nKM\t-1141+04316\tIndian/Comoro\nKN\t+1718-06243\tAmerica/St_Kitts\nKP\t+3901+12545\tAsia/Pyongyang\nKR\t+3733+12658\tAsia/Seoul\nKW\t+2920+04759\tAsia/Kuwait\nKY\t+1918-08123\tAmerica/Cayman\nKZ\t+4315+07657\tAsia/Almaty\tmost locations\nKZ\t+4448+06528\tAsia/Qyzylorda\tQyzylorda (Kyzylorda, Kzyl-Orda)\nKZ\t+5017+05710\tAsia/Aqtobe\tAqtobe (Aktobe)\nKZ\t+4431+05016\tAsia/Aqtau\tAtyrau (Atirau, Gur'yev), Mangghystau (Mankistau)\nKZ\t+5113+05121\tAsia/Oral\tWest Kazakhstan\nLA\t+1758+10236\tAsia/Vientiane\nLB\t+3353+03530\tAsia/Beirut\nLC\t+1401-06100\tAmerica/St_Lucia\nLI\t+4709+00931\tEurope/Vaduz\nLK\t+0656+07951\tAsia/Colombo\nLR\t+0618-01047\tAfrica/Monrovia\nLS\t-2928+02730\tAfrica/Maseru\nLT\t+5441+02519\tEurope/Vilnius\nLU\t+4936+00609\tEurope/Luxembourg\nLV\t+5657+02406\tEurope/Riga\nLY\t+3254+01311\tAfrica/Tripoli\nMA\t+3339-00735\tAfrica/Casablanca\nMC\t+4342+00723\tEurope/Monaco\nMD\t+4700+02850\tEurope/Chisinau\nME\t+4226+01916\tEurope/Podgorica\nMF\t+1804-06305\tAmerica/Marigot\nMG\t-1855+04731\tIndian/Antananarivo\nMH\t+0709+17112\tPacific/Majuro\tmost locations\nMH\t+0905+16720\tPacific/Kwajalein\tKwajalein\nMK\t+4159+02126\tEurope/Skopje\nML\t+1239-00800\tAfrica/Bamako\nMM\t+1647+09610\tAsia/Rangoon\nMN\t+4755+10653\tAsia/Ulaanbaatar\tmost locations\nMN\t+4801+09139\tAsia/Hovd\tBayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan\nMN\t+4804+11430\tAsia/Choibalsan\tDornod, Sukhbaatar\nMO\t+2214+11335\tAsia/Macau\nMP\t+1512+14545\tPacific/Saipan\nMQ\t+1436-06105\tAmerica/Martinique\nMR\t+1806-01557\tAfrica/Nouakchott\nMS\t+1643-06213\tAmerica/Montserrat\nMT\t+3554+01431\tEurope/Malta\nMU\t-2010+05730\tIndian/Mauritius\nMV\t+0410+07330\tIndian/Maldives\nMW\t-1547+03500\tAfrica/Blantyre\nMX\t+1924-09909\tAmerica/Mexico_City\tCentral Time - most locations\nMX\t+2105-08646\tAmerica/Cancun\tCentral Time - Quintana Roo\nMX\t+2058-08937\tAmerica/Merida\tCentral Time - Campeche, Yucatan\nMX\t+2540-10019\tAmerica/Monterrey\tMexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border\nMX\t+2550-09730\tAmerica/Matamoros\tUS Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border\nMX\t+2313-10625\tAmerica/Mazatlan\tMountain Time - S Baja, Nayarit, Sinaloa\nMX\t+2838-10605\tAmerica/Chihuahua\tMexican Mountain Time - Chihuahua away from US border\nMX\t+2934-10425\tAmerica/Ojinaga\tUS Mountain Time - Chihuahua near US border\nMX\t+2904-11058\tAmerica/Hermosillo\tMountain Standard Time - Sonora\nMX\t+3232-11701\tAmerica/Tijuana\tUS Pacific Time - Baja California near US border\nMX\t+3018-11452\tAmerica/Santa_Isabel\tMexican Pacific Time - Baja California away from US border\nMX\t+2048-10515\tAmerica/Bahia_Banderas\tMexican Central Time - Bahia de Banderas\nMY\t+0310+10142\tAsia/Kuala_Lumpur\tpeninsular Malaysia\nMY\t+0133+11020\tAsia/Kuching\tSabah & Sarawak\nMZ\t-2558+03235\tAfrica/Maputo\nNA\t-2234+01706\tAfrica/Windhoek\nNC\t-2216+16627\tPacific/Noumea\nNE\t+1331+00207\tAfrica/Niamey\nNF\t-2903+16758\tPacific/Norfolk\nNG\t+0627+00324\tAfrica/Lagos\nNI\t+1209-08617\tAmerica/Managua\nNL\t+5222+00454\tEurope/Amsterdam\nNO\t+5955+01045\tEurope/Oslo\nNP\t+2743+08519\tAsia/Kathmandu\nNR\t-0031+16655\tPacific/Nauru\nNU\t-1901-16955\tPacific/Niue\nNZ\t-3652+17446\tPacific/Auckland\tmost locations\nNZ\t-4357-17633\tPacific/Chatham\tChatham Islands\nOM\t+2336+05835\tAsia/Muscat\nPA\t+0858-07932\tAmerica/Panama\nPE\t-1203-07703\tAmerica/Lima\nPF\t-1732-14934\tPacific/Tahiti\tSociety Islands\nPF\t-0900-13930\tPacific/Marquesas\tMarquesas Islands\nPF\t-2308-13457\tPacific/Gambier\tGambier Islands\nPG\t-0930+14710\tPacific/Port_Moresby\nPH\t+1435+12100\tAsia/Manila\nPK\t+2452+06703\tAsia/Karachi\nPL\t+5215+02100\tEurope/Warsaw\nPM\t+4703-05620\tAmerica/Miquelon\nPN\t-2504-13005\tPacific/Pitcairn\nPR\t+182806-0660622\tAmerica/Puerto_Rico\nPS\t+3130+03428\tAsia/Gaza\tGaza Strip\nPS\t+313200+0350542\tAsia/Hebron\tWest Bank\nPT\t+3843-00908\tEurope/Lisbon\tmainland\nPT\t+3238-01654\tAtlantic/Madeira\tMadeira Islands\nPT\t+3744-02540\tAtlantic/Azores\tAzores\nPW\t+0720+13429\tPacific/Palau\nPY\t-2516-05740\tAmerica/Asuncion\nQA\t+2517+05132\tAsia/Qatar\nRE\t-2052+05528\tIndian/Reunion\nRO\t+4426+02606\tEurope/Bucharest\nRS\t+4450+02030\tEurope/Belgrade\nRU\t+5443+02030\tEurope/Kaliningrad\tMoscow-01 - Kaliningrad\nRU\t+5545+03735\tEurope/Moscow\tMoscow+00 - west Russia\nRU\t+4844+04425\tEurope/Volgograd\tMoscow+00 - Caspian Sea\nRU\t+5312+05009\tEurope/Samara\tMoscow+00 - Samara, Udmurtia\nRU\t+5651+06036\tAsia/Yekaterinburg\tMoscow+02 - Urals\nRU\t+5500+07324\tAsia/Omsk\tMoscow+03 - west Siberia\nRU\t+5502+08255\tAsia/Novosibirsk\tMoscow+03 - Novosibirsk\nRU\t+5345+08707\tAsia/Novokuznetsk\tMoscow+03 - Novokuznetsk\nRU\t+5601+09250\tAsia/Krasnoyarsk\tMoscow+04 - Yenisei River\nRU\t+5216+10420\tAsia/Irkutsk\tMoscow+05 - Lake Baikal\nRU\t+6200+12940\tAsia/Yakutsk\tMoscow+06 - Lena River\nRU\t+4310+13156\tAsia/Vladivostok\tMoscow+07 - Amur River\nRU\t+4658+14242\tAsia/Sakhalin\tMoscow+07 - Sakhalin Island\nRU\t+5934+15048\tAsia/Magadan\tMoscow+08 - Magadan\nRU\t+5301+15839\tAsia/Kamchatka\tMoscow+08 - Kamchatka\nRU\t+6445+17729\tAsia/Anadyr\tMoscow+08 - Bering Sea\nRW\t-0157+03004\tAfrica/Kigali\nSA\t+2438+04643\tAsia/Riyadh\nSB\t-0932+16012\tPacific/Guadalcanal\nSC\t-0440+05528\tIndian/Mahe\nSD\t+1536+03232\tAfrica/Khartoum\nSE\t+5920+01803\tEurope/Stockholm\nSG\t+0117+10351\tAsia/Singapore\nSH\t-1555-00542\tAtlantic/St_Helena\nSI\t+4603+01431\tEurope/Ljubljana\nSJ\t+7800+01600\tArctic/Longyearbyen\nSK\t+4809+01707\tEurope/Bratislava\nSL\t+0830-01315\tAfrica/Freetown\nSM\t+4355+01228\tEurope/San_Marino\nSN\t+1440-01726\tAfrica/Dakar\nSO\t+0204+04522\tAfrica/Mogadishu\nSR\t+0550-05510\tAmerica/Paramaribo\nSS\t+0451+03136\tAfrica/Juba\nST\t+0020+00644\tAfrica/Sao_Tome\nSV\t+1342-08912\tAmerica/El_Salvador\nSX\t+180305-0630250\tAmerica/Lower_Princes\nSY\t+3330+03618\tAsia/Damascus\nSZ\t-2618+03106\tAfrica/Mbabane\nTC\t+2128-07108\tAmerica/Grand_Turk\nTD\t+1207+01503\tAfrica/Ndjamena\nTF\t-492110+0701303\tIndian/Kerguelen\nTG\t+0608+00113\tAfrica/Lome\nTH\t+1345+10031\tAsia/Bangkok\nTJ\t+3835+06848\tAsia/Dushanbe\nTK\t-0922-17114\tPacific/Fakaofo\nTL\t-0833+12535\tAsia/Dili\nTM\t+3757+05823\tAsia/Ashgabat\nTN\t+3648+01011\tAfrica/Tunis\nTO\t-2110-17510\tPacific/Tongatapu\nTR\t+4101+02858\tEurope/Istanbul\nTT\t+1039-06131\tAmerica/Port_of_Spain\nTV\t-0831+17913\tPacific/Funafuti\nTW\t+2503+12130\tAsia/Taipei\nTZ\t-0648+03917\tAfrica/Dar_es_Salaam\nUA\t+5026+03031\tEurope/Kiev\tmost locations\nUA\t+4837+02218\tEurope/Uzhgorod\tRuthenia\nUA\t+4750+03510\tEurope/Zaporozhye\tZaporozh'ye, E Lugansk / Zaporizhia, E Luhansk\nUA\t+4457+03406\tEurope/Simferopol\tcentral Crimea\nUG\t+0019+03225\tAfrica/Kampala\nUM\t+1645-16931\tPacific/Johnston\tJohnston Atoll\nUM\t+2813-17722\tPacific/Midway\tMidway Islands\nUM\t+1917+16637\tPacific/Wake\tWake Island\nUS\t+404251-0740023\tAmerica/New_York\tEastern Time\nUS\t+421953-0830245\tAmerica/Detroit\tEastern Time - Michigan - most locations\nUS\t+381515-0854534\tAmerica/Kentucky/Louisville\tEastern Time - Kentucky - Louisville area\nUS\t+364947-0845057\tAmerica/Kentucky/Monticello\tEastern Time - Kentucky - Wayne County\nUS\t+394606-0860929\tAmerica/Indiana/Indianapolis\tEastern Time - Indiana - most locations\nUS\t+384038-0873143\tAmerica/Indiana/Vincennes\tEastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties\nUS\t+410305-0863611\tAmerica/Indiana/Winamac\tEastern Time - Indiana - Pulaski County\nUS\t+382232-0862041\tAmerica/Indiana/Marengo\tEastern Time - Indiana - Crawford County\nUS\t+382931-0871643\tAmerica/Indiana/Petersburg\tEastern Time - Indiana - Pike County\nUS\t+384452-0850402\tAmerica/Indiana/Vevay\tEastern Time - Indiana - Switzerland County\nUS\t+415100-0873900\tAmerica/Chicago\tCentral Time\nUS\t+375711-0864541\tAmerica/Indiana/Tell_City\tCentral Time - Indiana - Perry County\nUS\t+411745-0863730\tAmerica/Indiana/Knox\tCentral Time - Indiana - Starke County\nUS\t+450628-0873651\tAmerica/Menominee\tCentral Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties\nUS\t+470659-1011757\tAmerica/North_Dakota/Center\tCentral Time - North Dakota - Oliver County\nUS\t+465042-1012439\tAmerica/North_Dakota/New_Salem\tCentral Time - North Dakota - Morton County (except Mandan area)\nUS\t+471551-1014640\tAmerica/North_Dakota/Beulah\tCentral Time - North Dakota - Mercer County\nUS\t+394421-1045903\tAmerica/Denver\tMountain Time\nUS\t+433649-1161209\tAmerica/Boise\tMountain Time - south Idaho & east Oregon\nUS\t+364708-1084111\tAmerica/Shiprock\tMountain Time - Navajo\nUS\t+332654-1120424\tAmerica/Phoenix\tMountain Standard Time - Arizona\nUS\t+340308-1181434\tAmerica/Los_Angeles\tPacific Time\nUS\t+611305-1495401\tAmerica/Anchorage\tAlaska Time\nUS\t+581807-1342511\tAmerica/Juneau\tAlaska Time - Alaska panhandle\nUS\t+571035-1351807\tAmerica/Sitka\tAlaska Time - southeast Alaska panhandle\nUS\t+593249-1394338\tAmerica/Yakutat\tAlaska Time - Alaska panhandle neck\nUS\t+643004-1652423\tAmerica/Nome\tAlaska Time - west Alaska\nUS\t+515248-1763929\tAmerica/Adak\tAleutian Islands\nUS\t+550737-1313435\tAmerica/Metlakatla\tMetlakatla Time - Annette Island\nUS\t+211825-1575130\tPacific/Honolulu\tHawaii\nUY\t-3453-05611\tAmerica/Montevideo\nUZ\t+3940+06648\tAsia/Samarkand\twest Uzbekistan\nUZ\t+4120+06918\tAsia/Tashkent\teast Uzbekistan\nVA\t+415408+0122711\tEurope/Vatican\nVC\t+1309-06114\tAmerica/St_Vincent\nVE\t+1030-06656\tAmerica/Caracas\nVG\t+1827-06437\tAmerica/Tortola\nVI\t+1821-06456\tAmerica/St_Thomas\nVN\t+1045+10640\tAsia/Ho_Chi_Minh\nVU\t-1740+16825\tPacific/Efate\nWF\t-1318-17610\tPacific/Wallis\nWS\t-1350-17144\tPacific/Apia\nYE\t+1245+04512\tAsia/Aden\nYT\t-1247+04514\tIndian/Mayotte\nZA\t-2615+02800\tAfrica/Johannesburg\nZM\t-1525+02817\tAfrica/Lusaka\nZW\t-1750+03103\tAfrica/Harare\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/basic-options/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Basic Options</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function () {\n\n\t\tvar d1 = [];\n\t\tfor (var i = 0; i < Math.PI * 2; i += 0.25) {\n\t\t\td1.push([i, Math.sin(i)]);\n\t\t}\n\n\t\tvar d2 = [];\n\t\tfor (var i = 0; i < Math.PI * 2; i += 0.25) {\n\t\t\td2.push([i, Math.cos(i)]);\n\t\t}\n\n\t\tvar d3 = [];\n\t\tfor (var i = 0; i < Math.PI * 2; i += 0.1) {\n\t\t\td3.push([i, Math.tan(i)]);\n\t\t}\n\n\t\t$.plot(\"#placeholder\", [\n\t\t\t{ label: \"sin(x)\", data: d1 },\n\t\t\t{ label: \"cos(x)\", data: d2 },\n\t\t\t{ label: \"tan(x)\", data: d3 }\n\t\t], {\n\t\t\tseries: {\n\t\t\t\tlines: { show: true },\n\t\t\t\tpoints: { show: true }\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tticks: [\n\t\t\t\t\t0, [ Math.PI/2, \"\\u03c0/2\" ], [ Math.PI, \"\\u03c0\" ],\n\t\t\t\t\t[ Math.PI * 3/2, \"3\\u03c0/2\" ], [ Math.PI * 2, \"2\\u03c0\" ]\n\t\t\t\t]\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tticks: 10,\n\t\t\t\tmin: -2,\n\t\t\t\tmax: 2,\n\t\t\t\ttickDecimals: 3\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\tbackgroundColor: { colors: [ \"#fff\", \"#eee\" ] },\n\t\t\t\tborderWidth: {\n\t\t\t\t\ttop: 1,\n\t\t\t\t\tright: 1,\n\t\t\t\t\tbottom: 2,\n\t\t\t\t\tleft: 2\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Basic Options</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>There are plenty of options you can set to control the precise looks of your plot. You can control the ticks on the axes, the legend, the graph type, etc.</p>\n\n\t\t<p>Flot goes to great lengths to provide sensible defaults so that you don't have to customize much for a good-looking result.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/basic-usage/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Basic Usage</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d1 = [];\n\t\tfor (var i = 0; i < 14; i += 0.5) {\n\t\t\td1.push([i, Math.sin(i)]);\n\t\t}\n\n\t\tvar d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n\t\t// A null signifies separate line segments\n\n\t\tvar d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];\n\n\t\t$.plot(\"#placeholder\", [ d1, d2, d3 ]);\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Basic Usage</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>You don't have to do much to get an attractive plot.  Create a placeholder, make sure it has dimensions (so Flot knows at what size to draw the plot), then call the plot function with your data.</p>\n\n\t\t<p>The axes are automatically scaled.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/canvas/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Canvas text</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.time.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.canvas.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar oilPrices = [[1167692400000,61.05], [1167778800000,58.32], [1167865200000,57.35], [1167951600000,56.31], [1168210800000,55.55], [1168297200000,55.64], [1168383600000,54.02], [1168470000000,51.88], [1168556400000,52.99], [1168815600000,52.99], [1168902000000,51.21], [1168988400000,52.24], [1169074800000,50.48], [1169161200000,51.99], [1169420400000,51.13], [1169506800000,55.04], [1169593200000,55.37], [1169679600000,54.23], [1169766000000,55.42], [1170025200000,54.01], [1170111600000,56.97], [1170198000000,58.14], [1170284400000,58.14], [1170370800000,59.02], [1170630000000,58.74], [1170716400000,58.88], [1170802800000,57.71], [1170889200000,59.71], [1170975600000,59.89], [1171234800000,57.81], [1171321200000,59.06], [1171407600000,58.00], [1171494000000,57.99], [1171580400000,59.39], [1171839600000,59.39], [1171926000000,58.07], [1172012400000,60.07], [1172098800000,61.14], [1172444400000,61.39], [1172530800000,61.46], [1172617200000,61.79], [1172703600000,62.00], [1172790000000,60.07], [1173135600000,60.69], [1173222000000,61.82], [1173308400000,60.05], [1173654000000,58.91], [1173740400000,57.93], [1173826800000,58.16], [1173913200000,57.55], [1173999600000,57.11], [1174258800000,56.59], [1174345200000,59.61], [1174518000000,61.69], [1174604400000,62.28], [1174860000000,62.91], [1174946400000,62.93], [1175032800000,64.03], [1175119200000,66.03], [1175205600000,65.87], [1175464800000,64.64], [1175637600000,64.38], [1175724000000,64.28], [1175810400000,64.28], [1176069600000,61.51], [1176156000000,61.89], [1176242400000,62.01], [1176328800000,63.85], [1176415200000,63.63], [1176674400000,63.61], [1176760800000,63.10], [1176847200000,63.13], [1176933600000,61.83], [1177020000000,63.38], [1177279200000,64.58], [1177452000000,65.84], [1177538400000,65.06], [1177624800000,66.46], [1177884000000,64.40], [1178056800000,63.68], [1178143200000,63.19], [1178229600000,61.93], [1178488800000,61.47], [1178575200000,61.55], [1178748000000,61.81], [1178834400000,62.37], [1179093600000,62.46], [1179180000000,63.17], [1179266400000,62.55], [1179352800000,64.94], [1179698400000,66.27], [1179784800000,65.50], [1179871200000,65.77], [1179957600000,64.18], [1180044000000,65.20], [1180389600000,63.15], [1180476000000,63.49], [1180562400000,65.08], [1180908000000,66.30], [1180994400000,65.96], [1181167200000,66.93], [1181253600000,65.98], [1181599200000,65.35], [1181685600000,66.26], [1181858400000,68.00], [1182117600000,69.09], [1182204000000,69.10], [1182290400000,68.19], [1182376800000,68.19], [1182463200000,69.14], [1182722400000,68.19], [1182808800000,67.77], [1182895200000,68.97], [1182981600000,69.57], [1183068000000,70.68], [1183327200000,71.09], [1183413600000,70.92], [1183586400000,71.81], [1183672800000,72.81], [1183932000000,72.19], [1184018400000,72.56], [1184191200000,72.50], [1184277600000,74.15], [1184623200000,75.05], [1184796000000,75.92], [1184882400000,75.57], [1185141600000,74.89], [1185228000000,73.56], [1185314400000,75.57], [1185400800000,74.95], [1185487200000,76.83], [1185832800000,78.21], [1185919200000,76.53], [1186005600000,76.86], [1186092000000,76.00], [1186437600000,71.59], [1186696800000,71.47], [1186956000000,71.62], [1187042400000,71.00], [1187301600000,71.98], [1187560800000,71.12], [1187647200000,69.47], [1187733600000,69.26], [1187820000000,69.83], [1187906400000,71.09], [1188165600000,71.73], [1188338400000,73.36], [1188511200000,74.04], [1188856800000,76.30], [1189116000000,77.49], [1189461600000,78.23], [1189548000000,79.91], [1189634400000,80.09], [1189720800000,79.10], [1189980000000,80.57], [1190066400000,81.93], [1190239200000,83.32], [1190325600000,81.62], [1190584800000,80.95], [1190671200000,79.53], [1190757600000,80.30], [1190844000000,82.88], [1190930400000,81.66], [1191189600000,80.24], [1191276000000,80.05], [1191362400000,79.94], [1191448800000,81.44], [1191535200000,81.22], [1191794400000,79.02], [1191880800000,80.26], [1191967200000,80.30], [1192053600000,83.08], [1192140000000,83.69], [1192399200000,86.13], [1192485600000,87.61], [1192572000000,87.40], [1192658400000,89.47], [1192744800000,88.60], [1193004000000,87.56], [1193090400000,87.56], [1193176800000,87.10], [1193263200000,91.86], [1193612400000,93.53], [1193698800000,94.53], [1193871600000,95.93], [1194217200000,93.98], [1194303600000,96.37], [1194476400000,95.46], [1194562800000,96.32], [1195081200000,93.43], [1195167600000,95.10], [1195426800000,94.64], [1195513200000,95.10], [1196031600000,97.70], [1196118000000,94.42], [1196204400000,90.62], [1196290800000,91.01], [1196377200000,88.71], [1196636400000,88.32], [1196809200000,90.23], [1196982000000,88.28], [1197241200000,87.86], [1197327600000,90.02], [1197414000000,92.25], [1197586800000,90.63], [1197846000000,90.63], [1197932400000,90.49], [1198018800000,91.24], [1198105200000,91.06], [1198191600000,90.49], [1198710000000,96.62], [1198796400000,96.00], [1199142000000,99.62], [1199314800000,99.18], [1199401200000,95.09], [1199660400000,96.33], [1199833200000,95.67], [1200351600000,91.90], [1200438000000,90.84], [1200524400000,90.13], [1200610800000,90.57], [1200956400000,89.21], [1201042800000,86.99], [1201129200000,89.85], [1201474800000,90.99], [1201561200000,91.64], [1201647600000,92.33], [1201734000000,91.75], [1202079600000,90.02], [1202166000000,88.41], [1202252400000,87.14], [1202338800000,88.11], [1202425200000,91.77], [1202770800000,92.78], [1202857200000,93.27], [1202943600000,95.46], [1203030000000,95.46], [1203289200000,101.74], [1203462000000,98.81], [1203894000000,100.88], [1204066800000,99.64], [1204153200000,102.59], [1204239600000,101.84], [1204498800000,99.52], [1204585200000,99.52], [1204671600000,104.52], [1204758000000,105.47], [1204844400000,105.15], [1205103600000,108.75], [1205276400000,109.92], [1205362800000,110.33], [1205449200000,110.21], [1205708400000,105.68], [1205967600000,101.84], [1206313200000,100.86], [1206399600000,101.22], [1206486000000,105.90], [1206572400000,107.58], [1206658800000,105.62], [1206914400000,101.58], [1207000800000,100.98], [1207173600000,103.83], [1207260000000,106.23], [1207605600000,108.50], [1207778400000,110.11], [1207864800000,110.14], [1208210400000,113.79], [1208296800000,114.93], [1208383200000,114.86], [1208728800000,117.48], [1208815200000,118.30], [1208988000000,116.06], [1209074400000,118.52], [1209333600000,118.75], [1209420000000,113.46], [1209592800000,112.52], [1210024800000,121.84], [1210111200000,123.53], [1210197600000,123.69], [1210543200000,124.23], [1210629600000,125.80], [1210716000000,126.29], [1211148000000,127.05], [1211320800000,129.07], [1211493600000,132.19], [1211839200000,128.85], [1212357600000,127.76], [1212703200000,138.54], [1212962400000,136.80], [1213135200000,136.38], [1213308000000,134.86], [1213653600000,134.01], [1213740000000,136.68], [1213912800000,135.65], [1214172000000,134.62], [1214258400000,134.62], [1214344800000,134.62], [1214431200000,139.64], [1214517600000,140.21], [1214776800000,140.00], [1214863200000,140.97], [1214949600000,143.57], [1215036000000,145.29], [1215381600000,141.37], [1215468000000,136.04], [1215727200000,146.40], [1215986400000,145.18], [1216072800000,138.74], [1216159200000,134.60], [1216245600000,129.29], [1216332000000,130.65], [1216677600000,127.95], [1216850400000,127.95], [1217282400000,122.19], [1217455200000,124.08], [1217541600000,125.10], [1217800800000,121.41], [1217887200000,119.17], [1217973600000,118.58], [1218060000000,120.02], [1218405600000,114.45], [1218492000000,113.01], [1218578400000,116.00], [1218751200000,113.77], [1219010400000,112.87], [1219096800000,114.53], [1219269600000,114.98], [1219356000000,114.98], [1219701600000,116.27], [1219788000000,118.15], [1219874400000,115.59], [1219960800000,115.46], [1220306400000,109.71], [1220392800000,109.35], [1220565600000,106.23], [1220824800000,106.34]];\n\n\t\tvar exchangeRates = [[1167606000000,0.7580], [1167692400000,0.7580], [1167778800000,0.75470], [1167865200000,0.75490], [1167951600000,0.76130], [1168038000000,0.76550], [1168124400000,0.76930], [1168210800000,0.76940], [1168297200000,0.76880], [1168383600000,0.76780], [1168470000000,0.77080], [1168556400000,0.77270], [1168642800000,0.77490], [1168729200000,0.77410], [1168815600000,0.77410], [1168902000000,0.77320], [1168988400000,0.77270], [1169074800000,0.77370], [1169161200000,0.77240], [1169247600000,0.77120], [1169334000000,0.7720], [1169420400000,0.77210], [1169506800000,0.77170], [1169593200000,0.77040], [1169679600000,0.7690], [1169766000000,0.77110], [1169852400000,0.7740], [1169938800000,0.77450], [1170025200000,0.77450], [1170111600000,0.7740], [1170198000000,0.77160], [1170284400000,0.77130], [1170370800000,0.76780], [1170457200000,0.76880], [1170543600000,0.77180], [1170630000000,0.77180], [1170716400000,0.77280], [1170802800000,0.77290], [1170889200000,0.76980], [1170975600000,0.76850], [1171062000000,0.76810], [1171148400000,0.7690], [1171234800000,0.7690], [1171321200000,0.76980], [1171407600000,0.76990], [1171494000000,0.76510], [1171580400000,0.76130], [1171666800000,0.76160], [1171753200000,0.76140], [1171839600000,0.76140], [1171926000000,0.76070], [1172012400000,0.76020], [1172098800000,0.76110], [1172185200000,0.76220], [1172271600000,0.76150], [1172358000000,0.75980], [1172444400000,0.75980], [1172530800000,0.75920], [1172617200000,0.75730], [1172703600000,0.75660], [1172790000000,0.75670], [1172876400000,0.75910], [1172962800000,0.75820], [1173049200000,0.75850], [1173135600000,0.76130], [1173222000000,0.76310], [1173308400000,0.76150], [1173394800000,0.760], [1173481200000,0.76130], [1173567600000,0.76270], [1173654000000,0.76270], [1173740400000,0.76080], [1173826800000,0.75830], [1173913200000,0.75750], [1173999600000,0.75620], [1174086000000,0.7520], [1174172400000,0.75120], [1174258800000,0.75120], [1174345200000,0.75170], [1174431600000,0.7520], [1174518000000,0.75110], [1174604400000,0.7480], [1174690800000,0.75090], [1174777200000,0.75310], [1174860000000,0.75310], [1174946400000,0.75270], [1175032800000,0.74980], [1175119200000,0.74930], [1175205600000,0.75040], [1175292000000,0.750], [1175378400000,0.74910], [1175464800000,0.74910], [1175551200000,0.74850], [1175637600000,0.74840], [1175724000000,0.74920], [1175810400000,0.74710], [1175896800000,0.74590], [1175983200000,0.74770], [1176069600000,0.74770], [1176156000000,0.74830], [1176242400000,0.74580], [1176328800000,0.74480], [1176415200000,0.7430], [1176501600000,0.73990], [1176588000000,0.73950], [1176674400000,0.73950], [1176760800000,0.73780], [1176847200000,0.73820], [1176933600000,0.73620], [1177020000000,0.73550], [1177106400000,0.73480], [1177192800000,0.73610], [1177279200000,0.73610], [1177365600000,0.73650], [1177452000000,0.73620], [1177538400000,0.73310], [1177624800000,0.73390], [1177711200000,0.73440], [1177797600000,0.73270], [1177884000000,0.73270], [1177970400000,0.73360], [1178056800000,0.73330], [1178143200000,0.73590], [1178229600000,0.73590], [1178316000000,0.73720], [1178402400000,0.7360], [1178488800000,0.7360], [1178575200000,0.7350], [1178661600000,0.73650], [1178748000000,0.73840], [1178834400000,0.73950], [1178920800000,0.74130], [1179007200000,0.73970], [1179093600000,0.73960], [1179180000000,0.73850], [1179266400000,0.73780], [1179352800000,0.73660], [1179439200000,0.740], [1179525600000,0.74110], [1179612000000,0.74060], [1179698400000,0.74050], [1179784800000,0.74140], [1179871200000,0.74310], [1179957600000,0.74310], [1180044000000,0.74380], [1180130400000,0.74430], [1180216800000,0.74430], [1180303200000,0.74430], [1180389600000,0.74340], [1180476000000,0.74290], [1180562400000,0.74420], [1180648800000,0.7440], [1180735200000,0.74390], [1180821600000,0.74370], [1180908000000,0.74370], [1180994400000,0.74290], [1181080800000,0.74030], [1181167200000,0.73990], [1181253600000,0.74180], [1181340000000,0.74680], [1181426400000,0.7480], [1181512800000,0.7480], [1181599200000,0.7490], [1181685600000,0.74940], [1181772000000,0.75220], [1181858400000,0.75150], [1181944800000,0.75020], [1182031200000,0.74720], [1182117600000,0.74720], [1182204000000,0.74620], [1182290400000,0.74550], [1182376800000,0.74490], [1182463200000,0.74670], [1182549600000,0.74580], [1182636000000,0.74270], [1182722400000,0.74270], [1182808800000,0.7430], [1182895200000,0.74290], [1182981600000,0.7440], [1183068000000,0.7430], [1183154400000,0.74220], [1183240800000,0.73880], [1183327200000,0.73880], [1183413600000,0.73690], [1183500000000,0.73450], [1183586400000,0.73450], [1183672800000,0.73450], [1183759200000,0.73520], [1183845600000,0.73410], [1183932000000,0.73410], [1184018400000,0.7340], [1184104800000,0.73240], [1184191200000,0.72720], [1184277600000,0.72640], [1184364000000,0.72550], [1184450400000,0.72580], [1184536800000,0.72580], [1184623200000,0.72560], [1184709600000,0.72570], [1184796000000,0.72470], [1184882400000,0.72430], [1184968800000,0.72440], [1185055200000,0.72350], [1185141600000,0.72350], [1185228000000,0.72350], [1185314400000,0.72350], [1185400800000,0.72620], [1185487200000,0.72880], [1185573600000,0.73010], [1185660000000,0.73370], [1185746400000,0.73370], [1185832800000,0.73240], [1185919200000,0.72970], [1186005600000,0.73170], [1186092000000,0.73150], [1186178400000,0.72880], [1186264800000,0.72630], [1186351200000,0.72630], [1186437600000,0.72420], [1186524000000,0.72530], [1186610400000,0.72640], [1186696800000,0.7270], [1186783200000,0.73120], [1186869600000,0.73050], [1186956000000,0.73050], [1187042400000,0.73180], [1187128800000,0.73580], [1187215200000,0.74090], [1187301600000,0.74540], [1187388000000,0.74370], [1187474400000,0.74240], [1187560800000,0.74240], [1187647200000,0.74150], [1187733600000,0.74190], [1187820000000,0.74140], [1187906400000,0.73770], [1187992800000,0.73550], [1188079200000,0.73150], [1188165600000,0.73150], [1188252000000,0.7320], [1188338400000,0.73320], [1188424800000,0.73460], [1188511200000,0.73280], [1188597600000,0.73230], [1188684000000,0.7340], [1188770400000,0.7340], [1188856800000,0.73360], [1188943200000,0.73510], [1189029600000,0.73460], [1189116000000,0.73210], [1189202400000,0.72940], [1189288800000,0.72660], [1189375200000,0.72660], [1189461600000,0.72540], [1189548000000,0.72420], [1189634400000,0.72130], [1189720800000,0.71970], [1189807200000,0.72090], [1189893600000,0.7210], [1189980000000,0.7210], [1190066400000,0.7210], [1190152800000,0.72090], [1190239200000,0.71590], [1190325600000,0.71330], [1190412000000,0.71050], [1190498400000,0.70990], [1190584800000,0.70990], [1190671200000,0.70930], [1190757600000,0.70930], [1190844000000,0.70760], [1190930400000,0.7070], [1191016800000,0.70490], [1191103200000,0.70120], [1191189600000,0.70110], [1191276000000,0.70190], [1191362400000,0.70460], [1191448800000,0.70630], [1191535200000,0.70890], [1191621600000,0.70770], [1191708000000,0.70770], [1191794400000,0.70770], [1191880800000,0.70910], [1191967200000,0.71180], [1192053600000,0.70790], [1192140000000,0.70530], [1192226400000,0.7050], [1192312800000,0.70550], [1192399200000,0.70550], [1192485600000,0.70450], [1192572000000,0.70510], [1192658400000,0.70510], [1192744800000,0.70170], [1192831200000,0.70], [1192917600000,0.69950], [1193004000000,0.69940], [1193090400000,0.70140], [1193176800000,0.70360], [1193263200000,0.70210], [1193349600000,0.70020], [1193436000000,0.69670], [1193522400000,0.6950], [1193612400000,0.6950], [1193698800000,0.69390], [1193785200000,0.6940], [1193871600000,0.69220], [1193958000000,0.69190], [1194044400000,0.69140], [1194130800000,0.68940], [1194217200000,0.68910], [1194303600000,0.69040], [1194390000000,0.6890], [1194476400000,0.68340], [1194562800000,0.68230], [1194649200000,0.68070], [1194735600000,0.68150], [1194822000000,0.68150], [1194908400000,0.68470], [1194994800000,0.68590], [1195081200000,0.68220], [1195167600000,0.68270], [1195254000000,0.68370], [1195340400000,0.68230], [1195426800000,0.68220], [1195513200000,0.68220], [1195599600000,0.67920], [1195686000000,0.67460], [1195772400000,0.67350], [1195858800000,0.67310], [1195945200000,0.67420], [1196031600000,0.67440], [1196118000000,0.67390], [1196204400000,0.67310], [1196290800000,0.67610], [1196377200000,0.67610], [1196463600000,0.67850], [1196550000000,0.68180], [1196636400000,0.68360], [1196722800000,0.68230], [1196809200000,0.68050], [1196895600000,0.67930], [1196982000000,0.68490], [1197068400000,0.68330], [1197154800000,0.68250], [1197241200000,0.68250], [1197327600000,0.68160], [1197414000000,0.67990], [1197500400000,0.68130], [1197586800000,0.68090], [1197673200000,0.68680], [1197759600000,0.69330], [1197846000000,0.69330], [1197932400000,0.69450], [1198018800000,0.69440], [1198105200000,0.69460], [1198191600000,0.69640], [1198278000000,0.69650], [1198364400000,0.69560], [1198450800000,0.69560], [1198537200000,0.6950], [1198623600000,0.69480], [1198710000000,0.69280], [1198796400000,0.68870], [1198882800000,0.68240], [1198969200000,0.67940], [1199055600000,0.67940], [1199142000000,0.68030], [1199228400000,0.68550], [1199314800000,0.68240], [1199401200000,0.67910], [1199487600000,0.67830], [1199574000000,0.67850], [1199660400000,0.67850], [1199746800000,0.67970], [1199833200000,0.680], [1199919600000,0.68030], [1200006000000,0.68050], [1200092400000,0.6760], [1200178800000,0.6770], [1200265200000,0.6770], [1200351600000,0.67360], [1200438000000,0.67260], [1200524400000,0.67640], [1200610800000,0.68210], [1200697200000,0.68310], [1200783600000,0.68420], [1200870000000,0.68420], [1200956400000,0.68870], [1201042800000,0.69030], [1201129200000,0.68480], [1201215600000,0.68240], [1201302000000,0.67880], [1201388400000,0.68140], [1201474800000,0.68140], [1201561200000,0.67970], [1201647600000,0.67690], [1201734000000,0.67650], [1201820400000,0.67330], [1201906800000,0.67290], [1201993200000,0.67580], [1202079600000,0.67580], [1202166000000,0.6750], [1202252400000,0.6780], [1202338800000,0.68330], [1202425200000,0.68560], [1202511600000,0.69030], [1202598000000,0.68960], [1202684400000,0.68960], [1202770800000,0.68820], [1202857200000,0.68790], [1202943600000,0.68620], [1203030000000,0.68520], [1203116400000,0.68230], [1203202800000,0.68130], [1203289200000,0.68130], [1203375600000,0.68220], [1203462000000,0.68020], [1203548400000,0.68020], [1203634800000,0.67840], [1203721200000,0.67480], [1203807600000,0.67470], [1203894000000,0.67470], [1203980400000,0.67480], [1204066800000,0.67330], [1204153200000,0.6650], [1204239600000,0.66110], [1204326000000,0.65830], [1204412400000,0.6590], [1204498800000,0.6590], [1204585200000,0.65810], [1204671600000,0.65780], [1204758000000,0.65740], [1204844400000,0.65320], [1204930800000,0.65020], [1205017200000,0.65140], [1205103600000,0.65140], [1205190000000,0.65070], [1205276400000,0.6510], [1205362800000,0.64890], [1205449200000,0.64240], [1205535600000,0.64060], [1205622000000,0.63820], [1205708400000,0.63820], [1205794800000,0.63410], [1205881200000,0.63440], [1205967600000,0.63780], [1206054000000,0.64390], [1206140400000,0.64780], [1206226800000,0.64810], [1206313200000,0.64810], [1206399600000,0.64940], [1206486000000,0.64380], [1206572400000,0.63770], [1206658800000,0.63290], [1206745200000,0.63360], [1206831600000,0.63330], [1206914400000,0.63330], [1207000800000,0.6330], [1207087200000,0.63710], [1207173600000,0.64030], [1207260000000,0.63960], [1207346400000,0.63640], [1207432800000,0.63560], [1207519200000,0.63560], [1207605600000,0.63680], [1207692000000,0.63570], [1207778400000,0.63540], [1207864800000,0.6320], [1207951200000,0.63320], [1208037600000,0.63280], [1208124000000,0.63310], [1208210400000,0.63420], [1208296800000,0.63210], [1208383200000,0.63020], [1208469600000,0.62780], [1208556000000,0.63080], [1208642400000,0.63240], [1208728800000,0.63240], [1208815200000,0.63070], [1208901600000,0.62770], [1208988000000,0.62690], [1209074400000,0.63350], [1209160800000,0.63920], [1209247200000,0.640], [1209333600000,0.64010], [1209420000000,0.63960], [1209506400000,0.64070], [1209592800000,0.64230], [1209679200000,0.64290], [1209765600000,0.64720], [1209852000000,0.64850], [1209938400000,0.64860], [1210024800000,0.64670], [1210111200000,0.64440], [1210197600000,0.64670], [1210284000000,0.65090], [1210370400000,0.64780], [1210456800000,0.64610], [1210543200000,0.64610], [1210629600000,0.64680], [1210716000000,0.64490], [1210802400000,0.6470], [1210888800000,0.64610], [1210975200000,0.64520], [1211061600000,0.64220], [1211148000000,0.64220], [1211234400000,0.64250], [1211320800000,0.64140], [1211407200000,0.63660], [1211493600000,0.63460], [1211580000000,0.6350], [1211666400000,0.63460], [1211752800000,0.63460], [1211839200000,0.63430], [1211925600000,0.63460], [1212012000000,0.63790], [1212098400000,0.64160], [1212184800000,0.64420], [1212271200000,0.64310], [1212357600000,0.64310], [1212444000000,0.64350], [1212530400000,0.6440], [1212616800000,0.64730], [1212703200000,0.64690], [1212789600000,0.63860], [1212876000000,0.63560], [1212962400000,0.6340], [1213048800000,0.63460], [1213135200000,0.6430], [1213221600000,0.64520], [1213308000000,0.64670], [1213394400000,0.65060], [1213480800000,0.65040], [1213567200000,0.65030], [1213653600000,0.64810], [1213740000000,0.64510], [1213826400000,0.6450], [1213912800000,0.64410], [1213999200000,0.64140], [1214085600000,0.64090], [1214172000000,0.64090], [1214258400000,0.64280], [1214344800000,0.64310], [1214431200000,0.64180], [1214517600000,0.63710], [1214604000000,0.63490], [1214690400000,0.63330], [1214776800000,0.63340], [1214863200000,0.63380], [1214949600000,0.63420], [1215036000000,0.6320], [1215122400000,0.63180], [1215208800000,0.6370], [1215295200000,0.63680], [1215381600000,0.63680], [1215468000000,0.63830], [1215554400000,0.63710], [1215640800000,0.63710], [1215727200000,0.63550], [1215813600000,0.6320], [1215900000000,0.62770], [1215986400000,0.62760], [1216072800000,0.62910], [1216159200000,0.62740], [1216245600000,0.62930], [1216332000000,0.63110], [1216418400000,0.6310], [1216504800000,0.63120], [1216591200000,0.63120], [1216677600000,0.63040], [1216764000000,0.62940], [1216850400000,0.63480], [1216936800000,0.63780], [1217023200000,0.63680], [1217109600000,0.63680], [1217196000000,0.63680], [1217282400000,0.6360], [1217368800000,0.6370], [1217455200000,0.64180], [1217541600000,0.64110], [1217628000000,0.64350], [1217714400000,0.64270], [1217800800000,0.64270], [1217887200000,0.64190], [1217973600000,0.64460], [1218060000000,0.64680], [1218146400000,0.64870], [1218232800000,0.65940], [1218319200000,0.66660], [1218405600000,0.66660], [1218492000000,0.66780], [1218578400000,0.67120], [1218664800000,0.67050], [1218751200000,0.67180], [1218837600000,0.67840], [1218924000000,0.68110], [1219010400000,0.68110], [1219096800000,0.67940], [1219183200000,0.68040], [1219269600000,0.67810], [1219356000000,0.67560], [1219442400000,0.67350], [1219528800000,0.67630], [1219615200000,0.67620], [1219701600000,0.67770], [1219788000000,0.68150], [1219874400000,0.68020], [1219960800000,0.6780], [1220047200000,0.67960], [1220133600000,0.68170], [1220220000000,0.68170], [1220306400000,0.68320], [1220392800000,0.68770], [1220479200000,0.69120], [1220565600000,0.69140], [1220652000000,0.70090], [1220738400000,0.70120], [1220824800000,0.7010], [1220911200000,0.70050]];\n\n\t\tvar data = [\n\t\t\t{ data: oilPrices, label: \"Oil price ($)\" },\n\t\t\t{ data: exchangeRates, label: \"USD/EUR exchange rate\", yaxis: 2 }\n\t\t];\n\n\t\tvar options = {\n\t\t\tcanvas: true,\n\t\t\txaxes: [ { mode: \"time\" } ],\n\t\t\tyaxes: [ { min: 0 }, {\n\t\t\t\tposition: \"right\",\n\t\t\t\talignTicksWithAxis: 1,\n\t\t\t\ttickFormatter: function(value, axis) {\n\t\t\t\t\treturn value.toFixed(axis.tickDecimals) + \"€\";\n\t\t\t\t}\n\t\t\t} ],\n\t\t\tlegend: { position: \"sw\" }\n\t\t}\n\n\t\t$.plot(\"#placeholder\", data, options);\n\n\t\t$(\"input\").change(function () {\n\t\t\toptions.canvas = $(this).is(\":checked\");\n\t\t\t$.plot(\"#placeholder\", data, options);\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Canvas text</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>This example uses the same dataset (raw oil price in US $/barrel of crude oil vs. the exchange rate from US $ to €) as the multiple-axes example, but uses the canvas plugin to render axis tick labels using canvas text.</p>\n\n\t\t<p><input type=\"checkbox\" checked=\"checked\">Enable canvas text</input></p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/categories/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Categories</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.categories.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar data = [ [\"January\", 10], [\"February\", 8], [\"March\", 4], [\"April\", 13], [\"May\", 17], [\"June\", 9] ];\n\n\t\t$.plot(\"#placeholder\", [ data ], {\n\t\t\tseries: {\n\t\t\t\tbars: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tbarWidth: 0.6,\n\t\t\t\t\talign: \"center\"\n\t\t\t\t}\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tmode: \"categories\",\n\t\t\t\ttickLength: 0\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Categories</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>With the categories plugin you can plot categories/textual data easily.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n\n\n\n\n\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/examples.css",
    "content": "* {\tpadding: 0; margin: 0; vertical-align: top; }\n\nbody {\n\tbackground: url(background.png) repeat-x;\n\tfont: 18px/1.5em \"proxima-nova\", Helvetica, Arial, sans-serif;\n}\n\na {\tcolor: #069; }\na:hover { color: #28b; }\n\nh2 {\n\tmargin-top: 15px;\n\tfont: normal 32px \"omnes-pro\", Helvetica, Arial, sans-serif;\n}\n\nh3 {\n\tmargin-left: 30px;\n\tfont: normal 26px \"omnes-pro\", Helvetica, Arial, sans-serif;\n\tcolor: #666;\n}\n\np {\n\tmargin-top: 10px;\n}\n\nbutton {\n\tfont-size: 18px;\n\tpadding: 1px 7px;\n}\n\ninput {\n\tfont-size: 18px;\n}\n\ninput[type=checkbox] {\n\tmargin: 7px;\n}\n\n#header {\n\tposition: relative;\n\twidth: 900px;\n\tmargin: auto;\n}\n\n#header h2 {\n\tmargin-left: 10px;\n\tvertical-align: middle;\n\tfont-size: 42px;\n\tfont-weight: bold;\n\ttext-decoration: none;\n\tcolor: #000;\n}\n\n#content {\n\twidth: 880px;\n\tmargin: 0 auto;\n\tpadding: 10px;\n}\n\n#footer {\n\tmargin-top: 25px;\n\tmargin-bottom: 10px;\n\ttext-align: center;\n\tfont-size: 12px;\n\tcolor: #999;\n}\n\n.demo-container {\n\tbox-sizing: border-box;\n\twidth: 850px;\n\theight: 450px;\n\tpadding: 20px 15px 15px 15px;\n\tmargin: 15px auto 30px auto;\n\tborder: 1px solid #ddd;\n\tbackground: #fff;\n\tbackground: linear-gradient(#f6f6f6 0, #fff 50px);\n\tbackground: -o-linear-gradient(#f6f6f6 0, #fff 50px);\n\tbackground: -ms-linear-gradient(#f6f6f6 0, #fff 50px);\n\tbackground: -moz-linear-gradient(#f6f6f6 0, #fff 50px);\n\tbackground: -webkit-linear-gradient(#f6f6f6 0, #fff 50px);\n\tbox-shadow: 0 3px 10px rgba(0,0,0,0.15);\n\t-o-box-shadow: 0 3px 10px rgba(0,0,0,0.1);\n\t-ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1);\n\t-moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1);\n\t-webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1);\n}\n\n.demo-placeholder {\n\twidth: 100%;\n\theight: 100%;\n\tfont-size: 14px;\n\tline-height: 1.2em;\n}\n\n.legend table {\n\tborder-spacing: 5px;\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/image/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Image Plots</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.image.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar data = [[[\"hs-2004-27-a-large-web.jpg\", -10, -10, 10, 10]]];\n\n\t\tvar options = {\n\t\t\tseries: {\n\t\t\t\timages: {\n\t\t\t\t\tshow: true\n\t\t\t\t}\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tmin: -8,\n\t\t\t\tmax: 4\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tmin: -8,\n\t\t\t\tmax: 4\n\t\t\t}\n\t\t};\n\n\t\t$.plot.image.loadDataImages(data, options, function () {\n\t\t\t$.plot(\"#placeholder\", data, options);\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Image Plots</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\" style=\"width:600px;height:600px;\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>The Cat's Eye Nebula (<a href=\"http://hubblesite.org/gallery/album/nebula/pr2004027a/\">picture from Hubble</a>).</p>\n\n\t\t<p>With the image plugin, you can plot static images against a set of axes. This is for useful for adding ticks to complex prerendered visualizations. Instead of inputting data points, you specify the images and where their two opposite corners are supposed to be in plot space.</p>\n\n\t\t<p>Images represent a little further complication because you need to make sure they are loaded before you can use them (Flot skips incomplete images). The plugin comes with a couple of helpers for doing that.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples</title>\n\t<link href=\"examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<style>\n\n\th3 {\n\t\tmargin-top: 30px;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t</style>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Flot Examples</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<p>Here are some examples for <a href=\"http://www.flotcharts.org\">Flot</a>, the Javascript charting library for jQuery:</p>\n\n\t\t<h3>Basic Usage</h3>\n\n\t\t<ul>\n\t\t\t<li><a href=\"basic-usage/index.html\">Basic example</a></li>\n\t\t\t<li><a href=\"series-types/index.html\">Different graph types</a> and <a href=\"categories/index.html\">simple categories/textual data</a></li>\n\t\t\t<li><a href=\"basic-options/index.html\">Setting various options</a> and <a href=\"annotating/index.html\">annotating a chart</a></li>\n\t\t\t<li><a href=\"ajax/index.html\">Updating graphs with AJAX</a> and <a href=\"realtime/index.html\">real-time updates</a></li>\n\t\t</ul>\n\n\t\t<h3>Interactivity</h3>\n\n\t\t<ul>\n\t\t\t<li><a href=\"series-toggle/index.html\">Turning series on/off</a></li>\n\t\t\t<li><a href=\"selection/index.html\">Rectangular selection support and zooming</a> and <a href=\"zooming/index.html\">zooming with overview</a> (both with selection plugin)</li>\n\t\t\t<li><a href=\"interacting/index.html\">Interacting with the data points</a></li>\n\t\t\t<li><a href=\"navigate/index.html\">Panning and zooming</a> (with navigation plugin)</li>\n\t\t\t<li><a href=\"resize/index.html\">Automatically redraw when window is resized</a> (with resize plugin)</li>\n\t\t</ul>\n\n\t\t<h3>Additional Features</h3>\n\n\t\t<ul>\n\t\t\t<li><a href=\"symbols/index.html\">Using other symbols than circles for points</a> (with symbol plugin)</li>\n\t\t\t<li><a href=\"axes-time/index.html\">Plotting time series</a>, <a href=\"visitors/index.html\">visitors per day with zooming and weekends</a> (with selection plugin) and <a href=\"axes-time-zones/index.html\">time zone support</a></li>\n\t\t\t<li><a href=\"axes-multiple/index.html\">Multiple axes</a> and <a href=\"axes-interacting/index.html\">interacting with the axes</a></li>\n\t\t\t<li><a href=\"threshold/index.html\">Thresholding the data</a> (with threshold plugin)</li>\n\t\t\t<li><a href=\"stacking/index.html\">Stacked charts</a> (with stacking plugin)</li>\n\t\t\t<li><a href=\"percentiles/index.html\">Using filled areas to plot percentiles</a> (with fillbetween plugin)</li>\n\t\t\t<li><a href=\"tracking/index.html\">Tracking curves with crosshair</a> (with crosshair plugin)</li>\n\t\t\t<li><a href=\"image/index.html\">Plotting prerendered images</a> (with image plugin)</li>\n\t\t\t<li><a href=\"series-errorbars/index.html\">Plotting error bars</a> (with errorbars plugin)</li>\n\t\t\t<li><a href=\"series-pie/index.html\">Pie charts</a> (with pie plugin)</li>\n\t\t\t<li><a href=\"canvas/index.html\">Rendering text with canvas instead of HTML</a> (with canvas plugin)</li>\n\t\t</ul>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2013 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/interacting/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Interactivity</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar sin = [],\n\t\t\tcos = [];\n\n\t\tfor (var i = 0; i < 14; i += 0.5) {\n\t\t\tsin.push([i, Math.sin(i)]);\n\t\t\tcos.push([i, Math.cos(i)]);\n\t\t}\n\n\t\tvar plot = $.plot(\"#placeholder\", [\n\t\t\t{ data: sin, label: \"sin(x)\"},\n\t\t\t{ data: cos, label: \"cos(x)\"}\n\t\t], {\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: true\n\t\t\t\t},\n\t\t\t\tpoints: {\n\t\t\t\t\tshow: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\thoverable: true,\n\t\t\t\tclickable: true\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tmin: -1.2,\n\t\t\t\tmax: 1.2\n\t\t\t}\n\t\t});\n\n\t\t$(\"<div id='tooltip'></div>\").css({\n\t\t\tposition: \"absolute\",\n\t\t\tdisplay: \"none\",\n\t\t\tborder: \"1px solid #fdd\",\n\t\t\tpadding: \"2px\",\n\t\t\t\"background-color\": \"#fee\",\n\t\t\topacity: 0.80\n\t\t}).appendTo(\"body\");\n\n\t\t$(\"#placeholder\").bind(\"plothover\", function (event, pos, item) {\n\n\t\t\tif ($(\"#enablePosition:checked\").length > 0) {\n\t\t\t\tvar str = \"(\" + pos.x.toFixed(2) + \", \" + pos.y.toFixed(2) + \")\";\n\t\t\t\t$(\"#hoverdata\").text(str);\n\t\t\t}\n\n\t\t\tif ($(\"#enableTooltip:checked\").length > 0) {\n\t\t\t\tif (item) {\n\t\t\t\t\tvar x = item.datapoint[0].toFixed(2),\n\t\t\t\t\t\ty = item.datapoint[1].toFixed(2);\n\n\t\t\t\t\t$(\"#tooltip\").html(item.series.label + \" of \" + x + \" = \" + y)\n\t\t\t\t\t\t.css({top: item.pageY+5, left: item.pageX+5})\n\t\t\t\t\t\t.fadeIn(200);\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#tooltip\").hide();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t$(\"#placeholder\").bind(\"plotclick\", function (event, pos, item) {\n\t\t\tif (item) {\n\t\t\t\t$(\"#clickdata\").text(\" - click point \" + item.dataIndex + \" in \" + item.series.label);\n\t\t\t\tplot.highlight(item.series, item.datapoint);\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\t<div id=\"header\">\n\t\t<h2>Interactivity</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>One of the goals of Flot is to support user interactions. Try pointing and clicking on the points.</p>\n\n\t\t<p>\n\t\t\t<label><input id=\"enablePosition\" type=\"checkbox\" checked=\"checked\"></input>Show mouse position</label>\n\t\t\t<span id=\"hoverdata\"></span>\n\t\t\t<span id=\"clickdata\"></span>\n\t\t</p>\n\n\t\t<p>A tooltip is easy to build with a bit of jQuery code and the data returned from the plot.</p>\n\n\t\t<p><label><input id=\"enableTooltip\" type=\"checkbox\" checked=\"checked\"></input>Enable tooltip</label></p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/navigate/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Navigation</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<style type=\"text/css\">\n\n\t#placeholder .button {\n\t\tposition: absolute;\n\t\tcursor: pointer;\n\t}\n\n\t#placeholder div.button {\n\t\tfont-size: smaller;\n\t\tcolor: #999;\n\t\tbackground-color: #eee;\n\t\tpadding: 2px;\n\t}\n\t.message {\n\t\tpadding-left: 50px;\n\t\tfont-size: smaller;\n\t}\n\n\t</style>\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.navigate.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\t// generate data set from a parametric function with a fractal look\n\n\t\tfunction sumf(f, t, m) {\n\t\t\tvar res = 0;\n\t\t\tfor (var i = 1; i < m; ++i) {\n\t\t\t\tres += f(i * i * t) / (i * i);\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tvar d1 = [];\n\t\tfor (var t = 0; t <= 2 * Math.PI; t += 0.01) {\n\t\t\td1.push([sumf(Math.cos, t, 10), sumf(Math.sin, t, 10)]);\n\t\t}\n\n\t\tvar data = [ d1 ],\n\t\t\tplaceholder = $(\"#placeholder\");\n\n\t\tvar plot = $.plot(placeholder, data, {\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: true\n\t\t\t\t},\n\t\t\t\tshadowSize: 0\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tzoomRange: [0.1, 10],\n\t\t\t\tpanRange: [-10, 10]\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tzoomRange: [0.1, 10],\n\t\t\t\tpanRange: [-10, 10]\n\t\t\t},\n\t\t\tzoom: {\n\t\t\t\tinteractive: true\n\t\t\t},\n\t\t\tpan: {\n\t\t\t\tinteractive: true\n\t\t\t}\n\t\t});\n\n\t\t// show pan/zoom messages to illustrate events \n\n\t\tplaceholder.bind(\"plotpan\", function (event, plot) {\n\t\t\tvar axes = plot.getAxes();\n\t\t\t$(\".message\").html(\"Panning to x: \"  + axes.xaxis.min.toFixed(2)\n\t\t\t+ \" &ndash; \" + axes.xaxis.max.toFixed(2)\n\t\t\t+ \" and y: \" + axes.yaxis.min.toFixed(2)\n\t\t\t+ \" &ndash; \" + axes.yaxis.max.toFixed(2));\n\t\t});\n\n\t\tplaceholder.bind(\"plotzoom\", function (event, plot) {\n\t\t\tvar axes = plot.getAxes();\n\t\t\t$(\".message\").html(\"Zooming to x: \"  + axes.xaxis.min.toFixed(2)\n\t\t\t+ \" &ndash; \" + axes.xaxis.max.toFixed(2)\n\t\t\t+ \" and y: \" + axes.yaxis.min.toFixed(2)\n\t\t\t+ \" &ndash; \" + axes.yaxis.max.toFixed(2));\n\t\t});\n\n\t\t// add zoom out button \n\n\t\t$(\"<div class='button' style='right:20px;top:20px'>zoom out</div>\")\n\t\t\t.appendTo(placeholder)\n\t\t\t.click(function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tplot.zoomOut();\n\t\t\t});\n\n\t\t// and add panning buttons\n\n\t\t// little helper for taking the repetitive work out of placing\n\t\t// panning arrows\n\n\t\tfunction addArrow(dir, right, top, offset) {\n\t\t\t$(\"<img class='button' src='arrow-\" + dir + \".gif' style='right:\" + right + \"px;top:\" + top + \"px'>\")\n\t\t\t\t.appendTo(placeholder)\n\t\t\t\t.click(function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tplot.pan(offset);\n\t\t\t\t});\n\t\t}\n\n\t\taddArrow(\"left\", 55, 60, { left: -100 });\n\t\taddArrow(\"right\", 25, 60, { left: 100 });\n\t\taddArrow(\"up\", 40, 45, { top: -100 });\n\t\taddArrow(\"down\", 40, 75, { top: 100 });\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Navigation</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p class=\"message\"></p>\n\n\t\t<p>With the navigate plugin it is easy to add panning and zooming. Drag to pan, double click to zoom (or use the mouse scrollwheel).</p>\n\n\t\t<p>The plugin fires events (useful for synchronizing several plots) and adds a couple of public methods so you can easily build a little user interface around it, like the little buttons at the top right in the plot.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/percentiles/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Percentiles</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.fillbetween.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar males = {\"15%\": [[2, 88.0], [3, 93.3], [4, 102.0], [5, 108.5], [6, 115.7], [7, 115.6], [8, 124.6], [9, 130.3], [10, 134.3], [11, 141.4], [12, 146.5], [13, 151.7], [14, 159.9], [15, 165.4], [16, 167.8], [17, 168.7], [18, 169.5], [19, 168.0]], \"90%\": [[2, 96.8], [3, 105.2], [4, 113.9], [5, 120.8], [6, 127.0], [7, 133.1], [8, 139.1], [9, 143.9], [10, 151.3], [11, 161.1], [12, 164.8], [13, 173.5], [14, 179.0], [15, 182.0], [16, 186.9], [17, 185.2], [18, 186.3], [19, 186.6]], \"25%\": [[2, 89.2], [3, 94.9], [4, 104.4], [5, 111.4], [6, 117.5], [7, 120.2], [8, 127.1], [9, 132.9], [10, 136.8], [11, 144.4], [12, 149.5], [13, 154.1], [14, 163.1], [15, 169.2], [16, 170.4], [17, 171.2], [18, 172.4], [19, 170.8]], \"10%\": [[2, 86.9], [3, 92.6], [4, 99.9], [5, 107.0], [6, 114.0], [7, 113.5], [8, 123.6], [9, 129.2], [10, 133.0], [11, 140.6], [12, 145.2], [13, 149.7], [14, 158.4], [15, 163.5], [16, 166.9], [17, 167.5], [18, 167.1], [19, 165.3]], \"mean\": [[2, 91.9], [3, 98.5], [4, 107.1], [5, 114.4], [6, 120.6], [7, 124.7], [8, 131.1], [9, 136.8], [10, 142.3], [11, 150.0], [12, 154.7], [13, 161.9], [14, 168.7], [15, 173.6], [16, 175.9], [17, 176.6], [18, 176.8], [19, 176.7]], \"75%\": [[2, 94.5], [3, 102.1], [4, 110.8], [5, 117.9], [6, 124.0], [7, 129.3], [8, 134.6], [9, 141.4], [10, 147.0], [11, 156.1], [12, 160.3], [13, 168.3], [14, 174.7], [15, 178.0], [16, 180.2], [17, 181.7], [18, 181.3], [19, 182.5]], \"85%\": [[2, 96.2], [3, 103.8], [4, 111.8], [5, 119.6], [6, 125.6], [7, 131.5], [8, 138.0], [9, 143.3], [10, 149.3], [11, 159.8], [12, 162.5], [13, 171.3], [14, 177.5], [15, 180.2], [16, 183.8], [17, 183.4], [18, 183.5], [19, 185.5]], \"50%\": [[2, 91.9], [3, 98.2], [4, 106.8], [5, 114.6], [6, 120.8], [7, 125.2], [8, 130.3], [9, 137.1], [10, 141.5], [11, 149.4], [12, 153.9], [13, 162.2], [14, 169.0], [15, 174.8], [16, 176.0], [17, 176.8], [18, 176.4], [19, 177.4]]};\n\n\t\tvar females = {\"15%\": [[2, 84.8], [3, 93.7], [4, 100.6], [5, 105.8], [6, 113.3], [7, 119.3], [8, 124.3], [9, 131.4], [10, 136.9], [11, 143.8], [12, 149.4], [13, 151.2], [14, 152.3], [15, 155.9], [16, 154.7], [17, 157.0], [18, 156.1], [19, 155.4]], \"90%\": [[2, 95.6], [3, 104.1], [4, 111.9], [5, 119.6], [6, 127.6], [7, 133.1], [8, 138.7], [9, 147.1], [10, 152.8], [11, 161.3], [12, 166.6], [13, 167.9], [14, 169.3], [15, 170.1], [16, 172.4], [17, 169.2], [18, 171.1], [19, 172.4]], \"25%\": [[2, 87.2], [3, 95.9], [4, 101.9], [5, 107.4], [6, 114.8], [7, 121.4], [8, 126.8], [9, 133.4], [10, 138.6], [11, 146.2], [12, 152.0], [13, 153.8], [14, 155.7], [15, 158.4], [16, 157.0], [17, 158.5], [18, 158.4], [19, 158.1]], \"10%\": [[2, 84.0], [3, 91.9], [4, 99.2], [5, 105.2], [6, 112.7], [7, 118.0], [8, 123.3], [9, 130.2], [10, 135.0], [11, 141.1], [12, 148.3], [13, 150.0], [14, 150.7], [15, 154.3], [16, 153.6], [17, 155.6], [18, 154.7], [19, 153.1]], \"mean\": [[2, 90.2], [3, 98.3], [4, 105.2], [5, 112.2], [6, 119.0], [7, 125.8], [8, 131.3], [9, 138.6], [10, 144.2], [11, 151.3], [12, 156.7], [13, 158.6], [14, 160.5], [15, 162.1], [16, 162.9], [17, 162.2], [18, 163.0], [19, 163.1]], \"75%\": [[2, 93.2], [3, 101.5], [4, 107.9], [5, 116.6], [6, 122.8], [7, 129.3], [8, 135.2], [9, 143.7], [10, 148.7], [11, 156.9], [12, 160.8], [13, 163.0], [14, 165.0], [15, 165.8], [16, 168.7], [17, 166.2], [18, 167.6], [19, 168.0]], \"85%\": [[2, 94.5], [3, 102.8], [4, 110.4], [5, 119.0], [6, 125.7], [7, 131.5], [8, 137.9], [9, 146.0], [10, 151.3], [11, 159.9], [12, 164.0], [13, 166.5], [14, 167.5], [15, 168.5], [16, 171.5], [17, 168.0], [18, 169.8], [19, 170.3]], \"50%\": [[2, 90.2], [3, 98.1], [4, 105.2], [5, 111.7], [6, 118.2], [7, 125.6], [8, 130.5], [9, 138.3], [10, 143.7], [11, 151.4], [12, 156.7], [13, 157.7], [14, 161.0], [15, 162.0], [16, 162.8], [17, 162.2], [18, 162.8], [19, 163.3]]};\n\n\t\tvar dataset = [\n\t\t\t{ label: \"Female mean\", data: females[\"mean\"], lines: { show: true }, color: \"rgb(255,50,50)\" },\n\t\t\t{ id: \"f15%\", data: females[\"15%\"], lines: { show: true, lineWidth: 0, fill: false }, color: \"rgb(255,50,50)\" },\n\t\t\t{ id: \"f25%\", data: females[\"25%\"], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(255,50,50)\", fillBetween: \"f15%\" },\n\t\t\t{ id: \"f50%\", data: females[\"50%\"], lines: { show: true, lineWidth: 0.5, fill: 0.4, shadowSize: 0 }, color: \"rgb(255,50,50)\", fillBetween: \"f25%\" },\n\t\t\t{ id: \"f75%\", data: females[\"75%\"], lines: { show: true, lineWidth: 0, fill: 0.4 }, color: \"rgb(255,50,50)\", fillBetween: \"f50%\" },\n\t\t\t{ id: \"f85%\", data: females[\"85%\"], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(255,50,50)\", fillBetween: \"f75%\" },\n\n\t\t\t{ label: \"Male mean\", data: males[\"mean\"], lines: { show: true }, color: \"rgb(50,50,255)\" },\n\t\t\t{ id: \"m15%\", data: males[\"15%\"], lines: { show: true, lineWidth: 0, fill: false }, color: \"rgb(50,50,255)\" },\n\t\t\t{ id: \"m25%\", data: males[\"25%\"], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(50,50,255)\", fillBetween: \"m15%\" },\n\t\t\t{ id: \"m50%\", data: males[\"50%\"], lines: { show: true, lineWidth: 0.5, fill: 0.4, shadowSize: 0 }, color: \"rgb(50,50,255)\", fillBetween: \"m25%\" },\n\t\t\t{ id: \"m75%\", data: males[\"75%\"], lines: { show: true, lineWidth: 0, fill: 0.4 }, color: \"rgb(50,50,255)\", fillBetween: \"m50%\" },\n\t\t\t{ id: \"m85%\", data: males[\"85%\"], lines: { show: true, lineWidth: 0, fill: 0.2 }, color: \"rgb(50,50,255)\", fillBetween: \"m75%\" }\n\t\t];\n\n\t\t$.plot($(\"#placeholder\"), dataset, {\n\t\t\txaxis: {\n\t\t\t\ttickDecimals: 0\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\ttickFormatter: function (v) {\n\t\t\t\t\treturn v + \" cm\";\n\t\t\t\t}\n\t\t\t},\n\t\t\tlegend: {\n\t\t\t\tposition: \"se\"\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Percentiles</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>Height in centimeters of individuals from the US (2003-2006) as function of age in years (source: <a href=\"http://www.cdc.gov/nchs/data/nhsr/nhsr010.pdf\">CDC</a>). The 15%-85%, 25%-75% and 50% percentiles are indicated.</p>\n\n\t\t<p>For each point of a filled curve, you can specify an arbitrary bottom. As this example illustrates, this can be useful for plotting percentiles. If you have the data sets available without appropriate fill bottoms, you can use the fillbetween plugin to compute the data point bottoms automatically.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/realtime/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Real-time updates</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\t// We use an inline data source in the example, usually data would\n\t\t// be fetched from a server\n\n\t\tvar data = [],\n\t\t\ttotalPoints = 300;\n\n\t\tfunction getRandomData() {\n\n\t\t\tif (data.length > 0)\n\t\t\t\tdata = data.slice(1);\n\n\t\t\t// Do a random walk\n\n\t\t\twhile (data.length < totalPoints) {\n\n\t\t\t\tvar prev = data.length > 0 ? data[data.length - 1] : 50,\n\t\t\t\t\ty = prev + Math.random() * 10 - 5;\n\n\t\t\t\tif (y < 0) {\n\t\t\t\t\ty = 0;\n\t\t\t\t} else if (y > 100) {\n\t\t\t\t\ty = 100;\n\t\t\t\t}\n\n\t\t\t\tdata.push(y);\n\t\t\t}\n\n\t\t\t// Zip the generated y values with the x values\n\n\t\t\tvar res = [];\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tres.push([i, data[i]])\n\t\t\t}\n\n\t\t\treturn res;\n\t\t}\n\n\t\t// Set up the control widget\n\n\t\tvar updateInterval = 30;\n\t\t$(\"#updateInterval\").val(updateInterval).change(function () {\n\t\t\tvar v = $(this).val();\n\t\t\tif (v && !isNaN(+v)) {\n\t\t\t\tupdateInterval = +v;\n\t\t\t\tif (updateInterval < 1) {\n\t\t\t\t\tupdateInterval = 1;\n\t\t\t\t} else if (updateInterval > 2000) {\n\t\t\t\t\tupdateInterval = 2000;\n\t\t\t\t}\n\t\t\t\t$(this).val(\"\" + updateInterval);\n\t\t\t}\n\t\t});\n\n\t\tvar plot = $.plot(\"#placeholder\", [ getRandomData() ], {\n\t\t\tseries: {\n\t\t\t\tshadowSize: 0\t// Drawing is faster without shadows\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 100\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tshow: false\n\t\t\t}\n\t\t});\n\n\t\tfunction update() {\n\n\t\t\tplot.setData([getRandomData()]);\n\n\t\t\t// Since the axes don't change, we don't need to call plot.setupGrid()\n\n\t\t\tplot.draw();\n\t\t\tsetTimeout(update, updateInterval);\n\t\t}\n\n\t\tupdate();\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Real-time updates</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>You can update a chart periodically to get a real-time effect by using a timer to insert the new data in the plot and redraw it.</p>\n\n\t\t<p>Time between updates: <input id=\"updateInterval\" type=\"text\" value=\"\" style=\"text-align: right; width:5em\"> milliseconds</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/resize/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Resizing</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<link href=\"../shared/jquery-ui/jquery-ui.min.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../shared/jquery-ui/jquery-ui.min.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.resize.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d1 = [];\n\t\tfor (var i = 0; i < 14; i += 0.5) {\n\t\t\td1.push([i, Math.sin(i)]);\n\t\t}\n\n\t\tvar d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\t\tvar d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];\n\n\t\tvar placeholder = $(\"#placeholder\");\n\t\tvar plot = $.plot(placeholder, [d1, d2, d3]);\n\n\t\t// The plugin includes a jQuery plugin for adding resize events to any\n\t\t// element.  Add a callback so we can display the placeholder size.\n\n\t\tplaceholder.resize(function () {\n\t\t\t$(\".message\").text(\"Placeholder is now \"\n\t\t\t\t+ $(this).width() + \"x\" + $(this).height()\n\t\t\t\t+ \" pixels\");\n\t\t});\n\n\t\t$(\".demo-container\").resizable({\n\t\t\tmaxWidth: 900,\n\t\t\tmaxHeight: 500,\n\t\t\tminWidth: 450,\n\t\t\tminHeight: 250\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Resizing</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p class=\"message\"></p>\n\n\t\t<p>Sometimes it makes more sense to just let the plot take up the available space. In that case, we need to redraw the plot each time the placeholder changes its size. If you include the resize plugin, this is handled automatically.</p>\n\n\t\t<p>Drag the bottom and right sides of the plot to resize it.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/selection/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Selection</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.selection.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\t// Shim allowing us to get the state of the check-box on jQuery versions\n\t\t// prior to 1.6, when prop was added.  The reason we don't just use attr\n\t\t// is because it doesn't work in jQuery versions 1.9.x and later.\n\n\t\t// TODO: Remove this once Flot's minimum supported jQuery reaches 1.6.\n\t\tif (typeof $.fn.prop != 'function') {\n\t\t    $.fn.prop = $.fn.attr;\n\t\t}\n\n\t\tvar data = [{\n\t\t\tlabel: \"United States\",\n\t\t\tdata: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]\n\t\t}, {\n\t\t\tlabel: \"Russia\", \n\t\t\tdata: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]\n\t\t}, {\n\t\t\tlabel: \"United Kingdom\",\n\t\t\tdata: [[1990, 10.0], [1991, 11.3], [1992, 9.9], [1993, 9.6], [1994, 9.5], [1995, 9.5], [1996, 9.9], [1997, 9.3], [1998, 9.2], [1999, 9.2], [2000, 9.5], [2001, 9.6], [2002, 9.3], [2003, 9.4], [2004, 9.79]]\n\t\t}, {\n\t\t\tlabel: \"Germany\",\n\t\t\tdata: [[1990, 12.4], [1991, 11.2], [1992, 10.8], [1993, 10.5], [1994, 10.4], [1995, 10.2], [1996, 10.5], [1997, 10.2], [1998, 10.1], [1999, 9.6], [2000, 9.7], [2001, 10.0], [2002, 9.7], [2003, 9.8], [2004, 9.79]]\n\t\t}, {\n\t\t\tlabel: \"Denmark\",\n\t\t\tdata: [[1990, 9.7], [1991, 12.1], [1992, 10.3], [1993, 11.3], [1994, 11.7], [1995, 10.6], [1996, 12.8], [1997, 10.8], [1998, 10.3], [1999, 9.4], [2000, 8.7], [2001, 9.0], [2002, 8.9], [2003, 10.1], [2004, 9.80]]\n\t\t}, {\n\t\t\tlabel: \"Sweden\",\n\t\t\tdata: [[1990, 5.8], [1991, 6.0], [1992, 5.9], [1993, 5.5], [1994, 5.7], [1995, 5.3], [1996, 6.1], [1997, 5.4], [1998, 5.4], [1999, 5.1], [2000, 5.2], [2001, 5.4], [2002, 6.2], [2003, 5.9], [2004, 5.89]]\n\t\t}, {\n\t\t\tlabel: \"Norway\",\n\t\t\tdata: [[1990, 8.3], [1991, 8.3], [1992, 7.8], [1993, 8.3], [1994, 8.4], [1995, 5.9], [1996, 6.4], [1997, 6.7], [1998, 6.9], [1999, 7.6], [2000, 7.4], [2001, 8.1], [2002, 12.5], [2003, 9.9], [2004, 19.0]]\n\t\t}];\n\n\t\tvar options = {\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: true\n\t\t\t\t},\n\t\t\t\tpoints: {\n\t\t\t\t\tshow: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tlegend: {\n\t\t\t\tnoColumns: 2\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\ttickDecimals: 0\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tmin: 0\n\t\t\t},\n\t\t\tselection: {\n\t\t\t\tmode: \"x\"\n\t\t\t}\n\t\t};\n\n\t\tvar placeholder = $(\"#placeholder\");\n\n\t\tplaceholder.bind(\"plotselected\", function (event, ranges) {\n\n\t\t\t$(\"#selection\").text(ranges.xaxis.from.toFixed(1) + \" to \" + ranges.xaxis.to.toFixed(1));\n\n\t\t\tvar zoom = $(\"#zoom\").prop(\"checked\");\n\n\t\t\tif (zoom) {\n\t\t\t\t$.each(plot.getXAxes(), function(_, axis) {\n\t\t\t\t\tvar opts = axis.options;\n\t\t\t\t\topts.min = ranges.xaxis.from;\n\t\t\t\t\topts.max = ranges.xaxis.to;\n\t\t\t\t});\n\t\t\t\tplot.setupGrid();\n\t\t\t\tplot.draw();\n\t\t\t\tplot.clearSelection();\n\t\t\t}\n\t\t});\n\n\t\tplaceholder.bind(\"plotunselected\", function (event) {\n\t\t\t$(\"#selection\").text(\"\");\n\t\t});\n\n\t\tvar plot = $.plot(placeholder, data, options);\n\n\t\t$(\"#clearSelection\").click(function () {\n\t\t\tplot.clearSelection();\n\t\t});\n\n\t\t$(\"#setSelection\").click(function () {\n\t\t\tplot.setSelection({\n\t\t\t\txaxis: {\n\t\t\t\t\tfrom: 1994,\n\t\t\t\t\tto: 1995\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Selection</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>1000 kg. CO<sub>2</sub> emissions per year per capita for various countries (source: <a href=\"http://en.wikipedia.org/wiki/List_of_countries_by_carbon_dioxide_emissions_per_capita\">Wikipedia</a>).</p>\n\n\t\t<p>Flot supports selections through the selection plugin. You can enable rectangular selection or one-dimensional selection if the user should only be able to select on one axis. Try left-click and drag on the plot above where selection on the x axis is enabled.</p>\n\n\t\t<p>You selected: <span id=\"selection\"></span></p>\n\n\t\t<p>The plot command returns a plot object you can use to control the selection. Click the buttons below.</p>\n\n\t\t<p>\n\t\t\t<button id=\"clearSelection\">Clear selection</button>\n\t\t\t<button id=\"setSelection\">Select year 1994</button>\n\t\t</p>\n\n\t\t<p>Selections are really useful for zooming. Just replot the chart with min and max values for the axes set to the values in the \"plotselected\" event triggered. Enable the checkbox below and select a region again.</p>\n\n\t\t<p><label><input id=\"zoom\" type=\"checkbox\"></input>Zoom to selection.</label></p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/series-errorbars/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Error Bars</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.errorbars.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.navigate.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tfunction drawArrow(ctx, x, y, radius){\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x + radius, y + radius);\n\t\t\tctx.lineTo(x, y);\n\t\t\tctx.lineTo(x - radius, y + radius);\n\t\t\tctx.stroke();\n\t\t}\n\n\t\tfunction drawSemiCircle(ctx, x, y, radius){\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(x, y, radius, 0, Math.PI, false);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.stroke();\n\t\t}\n\n\t\tvar data1 = [\n\t\t\t[1,1,.5,.1,.3],\n\t\t\t[2,2,.3,.5,.2],\n\t\t\t[3,3,.9,.5,.2],\n\t\t\t[1.5,-.05,.5,.1,.3],\n\t\t\t[3.15,1.,.5,.1,.3],\n\t\t\t[2.5,-1.,.5,.1,.3]\n\t\t];\n\n\t\tvar data1_points = {\n\t\t\tshow: true,\n\t\t\tradius: 5,\n\t\t\tfillColor: \"blue\", \n\t\t\terrorbars: \"xy\", \n\t\t\txerr: {show: true, asymmetric: true, upperCap: \"-\", lowerCap: \"-\"}, \n\t\t\tyerr: {show: true, color: \"red\", upperCap: \"-\"}\n\t\t};\n\n\t\tvar data2 = [\n\t\t\t[.7,3,.2,.4],\n\t\t\t[1.5,2.2,.3,.4],\n\t\t\t[2.3,1,.5,.2]\n\t\t];\n\n\t\tvar data2_points = {\n\t\t\tshow: true,\n\t\t\tradius: 5,\n\t\t\terrorbars: \"y\", \n\t\t\tyerr: {show:true, asymmetric:true, upperCap: drawArrow, lowerCap: drawSemiCircle}\n\t\t};\n\n\t\tvar data3 = [\n\t\t\t[1,2,.4],\n\t\t\t[2,0.5,.3],\n\t\t\t[2.7,2,.5]\n\t\t];\n\n\t\tvar data3_points = {\n\t\t\t//do not show points\n\t\t\tradius: 0,\n\t\t\terrorbars: \"y\", \n\t\t\tyerr: {show:true, upperCap: \"-\", lowerCap: \"-\", radius: 5}\n\t\t};\n\n\t\tvar data4 = [\n\t\t\t[1.3, 1],\n\t\t\t[1.75, 2.5],\n\t\t\t[2.5, 0.5]\n\t\t];\n\n\t\tvar data4_errors = [0.1, 0.4, 0.2];\n\t\tfor (var i = 0; i < data4.length; i++) {\n\t\t\tdata4_errors[i] = data4[i].concat(data4_errors[i])\n\t\t}\n\n\t\tvar data = [\n\t\t\t{color: \"blue\", points: data1_points, data: data1, label: \"data1\"}, \n\t\t\t{color: \"red\",  points: data2_points, data: data2, label: \"data2\"},\n\t\t\t{color: \"green\", lines: {show: true}, points: data3_points, data: data3, label: \"data3\"},\n\t\t\t// bars with errors\n\t\t\t{color: \"orange\", bars: {show: true, align: \"center\", barWidth: 0.25}, data: data4, label: \"data4\"},\n\t\t\t{color: \"orange\", points: data3_points, data: data4_errors}\n\t\t];\n\n\t\t$.plot($(\"#placeholder\"), data , {\n\t\t\tlegend: {\n\t\t\t\tposition: \"sw\",\n\t\t\t\tshow: true\n\t\t\t},\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tmin: 0.6,\n\t\t\t\tmax: 3.1\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 3.5\n\t\t\t},\n\t\t\tzoom: {\n\t\t\t\tinteractive: true\n\t\t\t},\n\t\t\tpan: {\n\t\t\t\tinteractive: true\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Error Bars</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>With the errorbars plugin you can plot error bars to show standard deviation and other useful statistical properties.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/series-pie/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Pie Charts</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<style type=\"text/css\">\n\n\t.demo-container {\n\t\tposition: relative;\n\t\theight: 400px;\n\t}\n\n\t#placeholder {\n\t\twidth: 550px;\n\t}\n\n\t#menu {\n\t\tposition: absolute;\n\t\ttop: 20px;\n\t\tleft: 625px;\n\t\tbottom: 20px;\n\t\tright: 20px;\n\t\twidth: 200px;\n\t}\n\n\t#menu button {\n\t\tdisplay: inline-block;\n\t\twidth: 200px;\n\t\tpadding: 3px 0 2px 0;\n\t\tmargin-bottom: 4px;\n\t\tbackground: #eee;\n\t\tborder: 1px solid #999;\n\t\tborder-radius: 2px;\n\t\tfont-size: 16px;\n\t\t-o-box-shadow: 0 1px 2px rgba(0,0,0,0.15);\n\t\t-ms-box-shadow: 0 1px 2px rgba(0,0,0,0.15);\n\t\t-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.15);\n\t\t-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.15);\n\t\tbox-shadow: 0 1px 2px rgba(0,0,0,0.15);\n\t\tcursor: pointer;\n\t}\n\n\t#description {\n\t\tmargin: 15px 10px 20px 10px;\n\t}\n\n\t#code {\n\t\tdisplay: block;\n\t\twidth: 870px;\n\t\tpadding: 15px;\n\t\tmargin: 10px auto;\n\t\tborder: 1px dashed #999;\n\t\tbackground-color: #f8f8f8;\n\t\tfont-size: 16px;\n\t\tline-height: 20px;\n\t\tcolor: #666;\n\t}\n\n\tul {\n\t\tfont-size: 10pt;\n\t}\n\n\tul li {\n\t\tmargin-bottom: 0.5em;\n\t}\n\n\tul.options li {\n\t\tlist-style: none;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tul li i {\n\t\tcolor: #999;\n\t}\n\n\t</style>\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.pie.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\t// Example Data\n\n\t\t//var data = [\n\t\t//\t{ label: \"Series1\",  data: 10},\n\t\t//\t{ label: \"Series2\",  data: 30},\n\t\t//\t{ label: \"Series3\",  data: 90},\n\t\t//\t{ label: \"Series4\",  data: 70},\n\t\t//\t{ label: \"Series5\",  data: 80},\n\t\t//\t{ label: \"Series6\",  data: 110}\n\t\t//];\n\n\t\t//var data = [\n\t\t//\t{ label: \"Series1\",  data: [[1,10]]},\n\t\t//\t{ label: \"Series2\",  data: [[1,30]]},\n\t\t//\t{ label: \"Series3\",  data: [[1,90]]},\n\t\t//\t{ label: \"Series4\",  data: [[1,70]]},\n\t\t//\t{ label: \"Series5\",  data: [[1,80]]},\n\t\t//\t{ label: \"Series6\",  data: [[1,0]]}\n\t\t//];\n\n\t\t//var data = [\n\t\t//\t{ label: \"Series A\",  data: 0.2063},\n\t\t//\t{ label: \"Series B\",  data: 38888}\n\t\t//];\n\n\t\t// Randomly Generated Data\n\n\t\tvar data = [],\n\t\t\tseries = Math.floor(Math.random() * 6) + 3;\n\n\t\tfor (var i = 0; i < series; i++) {\n\t\t\tdata[i] = {\n\t\t\t\tlabel: \"Series\" + (i + 1),\n\t\t\t\tdata: Math.floor(Math.random() * 100) + 1\n\t\t\t}\n\t\t}\n\n\t\tvar placeholder = $(\"#placeholder\");\n\n\t\t$(\"#example-1\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Default pie chart\");\n\t\t\t$(\"#description\").text(\"The default pie chart with no options set.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-2\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Default without legend\");\n\t\t\t$(\"#description\").text(\"The default pie chart when the legend is disabled. Since the labels would normally be outside the container, the chart is resized to fit.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-3\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Custom Label Formatter\");\n\t\t\t$(\"#description\").text(\"Added a semi-transparent background to the labels and a custom labelFormatter function.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tradius: 1,\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tradius: 1,\n\t\t\t\t\t\t\tformatter: labelFormatter,\n\t\t\t\t\t\t\tbackground: {\n\t\t\t\t\t\t\t\topacity: 0.8\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\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            radius: 1,\",\n\t\t\t\t\"            label: {\",\n\t\t\t\t\"                show: true,\",\n\t\t\t\t\"                radius: 1,\",\n\t\t\t\t\"                formatter: labelFormatter,\",\n\t\t\t\t\"                background: {\",\n\t\t\t\t\"                    opacity: 0.8\",\n\t\t\t\t\"                }\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-4\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Label Radius\");\n\t\t\t$(\"#description\").text(\"Slightly more transparent label backgrounds and adjusted the radius values to place them within the pie.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tradius: 1,\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tradius: 3/4,\n\t\t\t\t\t\t\tformatter: labelFormatter,\n\t\t\t\t\t\t\tbackground: {\n\t\t\t\t\t\t\t\topacity: 0.5\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\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            radius: 1,\",\n\t\t\t\t\"            label: {\",\n\t\t\t\t\"                show: true,\",\n\t\t\t\t\"                radius: 3/4,\",\n\t\t\t\t\"                formatter: labelFormatter,\",\n\t\t\t\t\"                background: {\",\n\t\t\t\t\"                    opacity: 0.5\",\n\t\t\t\t\"                }\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-5\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Label Styles #1\");\n\t\t\t$(\"#description\").text(\"Semi-transparent, black-colored label background.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tradius: 1,\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tradius: 3/4,\n\t\t\t\t\t\t\tformatter: labelFormatter,\n\t\t\t\t\t\t\tbackground: { \n\t\t\t\t\t\t\t\topacity: 0.5,\n\t\t\t\t\t\t\t\tcolor: \"#000\"\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\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: { \",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            radius: 1,\",\n\t\t\t\t\"            label: {\",\n\t\t\t\t\"                show: true,\",\n\t\t\t\t\"                radius: 3/4,\",\n\t\t\t\t\"                formatter: labelFormatter,\",\n\t\t\t\t\"                background: { \",\n\t\t\t\t\"                    opacity: 0.5,\",\n\t\t\t\t\"                    color: '#000'\",\n\t\t\t\t\"                }\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-6\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Label Styles #2\");\n\t\t\t$(\"#description\").text(\"Semi-transparent, black-colored label background placed at pie edge.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tradius: 3/4,\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tradius: 3/4,\n\t\t\t\t\t\t\tformatter: labelFormatter,\n\t\t\t\t\t\t\tbackground: { \n\t\t\t\t\t\t\t\topacity: 0.5,\n\t\t\t\t\t\t\t\tcolor: \"#000\"\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\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            radius: 3/4,\",\n\t\t\t\t\"            label: {\",\n\t\t\t\t\"                show: true,\",\n\t\t\t\t\"                radius: 3/4,\",\n\t\t\t\t\"                formatter: labelFormatter,\",\n\t\t\t\t\"                background: {\",\n\t\t\t\t\"                    opacity: 0.5,\",\n\t\t\t\t\"                    color: '#000'\",\n\t\t\t\t\"                }\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-7\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Hidden Labels\");\n\t\t\t$(\"#description\").text(\"Labels can be hidden if the slice is less than a given percentage of the pie (10% in this case).\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tradius: 1,\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tradius: 2/3,\n\t\t\t\t\t\t\tformatter: labelFormatter,\n\t\t\t\t\t\t\tthreshold: 0.1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            radius: 1,\",\n\t\t\t\t\"            label: {\",\n\t\t\t\t\"                show: true,\",\n\t\t\t\t\"                radius: 2/3,\",\n\t\t\t\t\"                formatter: labelFormatter,\",\n\t\t\t\t\"                threshold: 0.1\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-8\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Combined Slice\");\n\t\t\t$(\"#description\").text(\"Multiple slices less than a given percentage (5% in this case) of the pie can be combined into a single, larger slice.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tcombine: {\n\t\t\t\t\t\t\tcolor: \"#999\",\n\t\t\t\t\t\t\tthreshold: 0.05\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            combine: {\",\n\t\t\t\t\"                color: '#999',\",\n\t\t\t\t\"                threshold: 0.1\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-9\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Rectangular Pie\");\n\t\t\t$(\"#description\").text(\"The radius can also be set to a specific size (even larger than the container itself).\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tradius: 500,\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tformatter: labelFormatter,\n\t\t\t\t\t\t\tthreshold: 0.1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            radius: 500,\",\n\t\t\t\t\"            label: {\",\n\t\t\t\t\"                show: true,\",\n\t\t\t\t\"                formatter: labelFormatter,\",\n\t\t\t\t\"                threshold: 0.1\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-10\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Tilted Pie\");\n\t\t\t$(\"#description\").text(\"The pie can be tilted at an angle.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tradius: 1,\n\t\t\t\t\t\ttilt: 0.5,\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tradius: 1,\n\t\t\t\t\t\t\tformatter: labelFormatter,\n\t\t\t\t\t\t\tbackground: {\n\t\t\t\t\t\t\t\topacity: 0.8\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcombine: {\n\t\t\t\t\t\t\tcolor: \"#999\",\n\t\t\t\t\t\t\tthreshold: 0.1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlegend: {\n\t\t\t\t\tshow: false\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true,\",\n\t\t\t\t\"            radius: 1,\",\n\t\t\t\t\"            tilt: 0.5,\",\n\t\t\t\t\"            label: {\",\n\t\t\t\t\"                show: true,\",\n\t\t\t\t\"                radius: 1,\",\n\t\t\t\t\"                formatter: labelFormatter,\",\n\t\t\t\t\"                background: {\",\n\t\t\t\t\"                    opacity: 0.8\",\n\t\t\t\t\"                }\",\n\t\t\t\t\"            },\",\n\t\t\t\t\"            combine: {\",\n\t\t\t\t\"                color: '#999',\",\n\t\t\t\t\"                threshold: 0.1\",\n\t\t\t\t\"            }\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    legend: {\",\n\t\t\t\t\"        show: false\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\",\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-11\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Donut Hole\");\n\t\t\t$(\"#description\").text(\"A donut hole can be added.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tinnerRadius: 0.5,\n\t\t\t\t\t\tshow: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            innerRadius: 0.5,\",\n\t\t\t\t\"            show: true\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\t\t});\n\n\t\t$(\"#example-12\").click(function() {\n\n\t\t\tplaceholder.unbind();\n\n\t\t\t$(\"#title\").text(\"Interactivity\");\n\t\t\t$(\"#description\").text(\"The pie can be made interactive with hover and click events.\");\n\n\t\t\t$.plot(placeholder, data, {\n\t\t\t\tseries: {\n\t\t\t\t\tpie: { \n\t\t\t\t\t\tshow: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgrid: {\n\t\t\t\t\thoverable: true,\n\t\t\t\t\tclickable: true\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetCode([\n\t\t\t\t\"$.plot('#placeholder', data, {\",\n\t\t\t\t\"    series: {\",\n\t\t\t\t\"        pie: {\",\n\t\t\t\t\"            show: true\",\n\t\t\t\t\"        }\",\n\t\t\t\t\"    },\",\n\t\t\t\t\"    grid: {\",\n\t\t\t\t\"        hoverable: true,\",\n\t\t\t\t\"        clickable: true\",\n\t\t\t\t\"    }\",\n\t\t\t\t\"});\"\n\t\t\t]);\n\n\t\t\tplaceholder.bind(\"plothover\", function(event, pos, obj) {\n\n\t\t\t\tif (!obj) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar percent = parseFloat(obj.series.percent).toFixed(2);\n\t\t\t\t$(\"#hover\").html(\"<span style='font-weight:bold; color:\" + obj.series.color + \"'>\" + obj.series.label + \" (\" + percent + \"%)</span>\");\n\t\t\t});\n\n\t\t\tplaceholder.bind(\"plotclick\", function(event, pos, obj) {\n\n\t\t\t\tif (!obj) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpercent = parseFloat(obj.series.percent).toFixed(2);\n\t\t\t\talert(\"\"  + obj.series.label + \": \" + percent + \"%\");\n\t\t\t});\n\t\t});\n\n\t\t// Show the initial default chart\n\n\t\t$(\"#example-1\").click();\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t// A custom label formatter used by several of the plots\n\n\tfunction labelFormatter(label, series) {\n\t\treturn \"<div style='font-size:8pt; text-align:center; padding:2px; color:white;'>\" + label + \"<br/>\" + Math.round(series.percent) + \"%</div>\";\n\t}\n\n\t//\n\n\tfunction setCode(lines) {\n\t\t$(\"#code\").text(lines.join(\"\\n\"));\n\t}\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Pie Charts</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<h3 id=\"title\"></h3>\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t\t<div id=\"menu\">\n\t\t\t\t<button id=\"example-1\">Default Options</button>\n\t\t\t\t<button id=\"example-2\">Without Legend</button>\n\t\t\t\t<button id=\"example-3\">Label Formatter</button>\n\t\t\t\t<button id=\"example-4\">Label Radius</button>\n\t\t\t\t<button id=\"example-5\">Label Styles #1</button>\n\t\t\t\t<button id=\"example-6\">Label Styles #2</button>\n\t\t\t\t<button id=\"example-7\">Hidden Labels</button>\n\t\t\t\t<button id=\"example-8\">Combined Slice</button>\n\t\t\t\t<button id=\"example-9\">Rectangular Pie</button>\n\t\t\t\t<button id=\"example-10\">Tilted Pie</button>\n\t\t\t\t<button id=\"example-11\">Donut Hole</button>\n\t\t\t\t<button id=\"example-12\">Interactivity</button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<p id=\"description\"></p>\n\n\t\t<h3>Source Code</h3>\n\t\t<pre><code id=\"code\"></code></pre>\n\n\t\t<br/>\n\n\t\t<h2>Pie Options</h2>\n\n\t\t<ul class=\"options\">\n\t\t\t<li style=\"border-bottom: 1px dotted #ccc;\"><b>option:</b> <i>default value</i> - Description of option</li>\n\t\t\t<li><b>show:</b> <i>false</i> - Enable the plugin and draw as a pie.</li>\n\t\t\t<li><b>radius:</b> <i>'auto'</i> - Sets the radius of the pie. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length. If set to 'auto', it will be set to 1 if the legend is enabled and 3/4 if not.</li>\n\t\t\t<li><b>innerRadius:</b> <i>0</i> - Sets the radius of the donut hole. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the radius, otherwise it will use the value as a direct pixel length.</li>\n\t\t\t<li><b>startAngle:</b> <i>3/2</i> - Factor of PI used for the starting angle (in radians) It can range between 0 and 2 (where 0 and 2 have the same result).</li>\n\t\t\t<li><b>tilt:</b> <i>1</i> - Percentage of tilt ranging from 0 and 1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn).</li>\n\t\t\t<li><b>shadow:</b> <ul>\n\t\t\t\t<li><b>top:</b> <i>5</i> - Vertical distance in pixel of the tilted pie shadow.</li>\n\t\t\t\t<li><b>left:</b> <i>15</i> - Horizontal distance in pixel of the tilted pie shadow.</li>\n\t\t\t\t<li><b>alpha:</b> <i>0.02</i> - Alpha value of the tilted pie shadow.</li>\n\t\t\t</ul>\n\t\t\t<li><b>offset:</b> <ul>\n\t\t\t\t<li><b>top:</b> <i>0</i> - Pixel distance to move the pie up and down (relative to the center).</li>\n\t\t\t\t<li><b>left:</b> <i>'auto'</i> - Pixel distance to move the pie left and right (relative to the center).</li>\n\t\t\t</ul>\n\t\t\t<li><b>stroke:</b> <ul>\n\t\t\t\t<li><b>color:</b> <i>'#FFF'</i> - Color of the border of each slice. Hexadecimal color definitions are prefered (other formats may or may not work).</li>\n\t\t\t\t<li><b>width:</b> <i>1</i> - Pixel width of the border of each slice.</li>\n\t\t\t</ul>\n\t\t\t<li><b>label:</b> <ul>\n\t\t\t\t<li><b>show:</b> <i>'auto'</i> - Enable/Disable the labels. This can be set to true, false, or 'auto'. When set to 'auto', it will be set to false if the legend is enabled and true if not.</li>\n\t\t\t\t<li><b>radius:</b> <i>1</i> - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.</li>\n\t\t\t\t<li><b>threshold:</b> <i>0</i> - Hides the labels of any pie slice that is smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will hide all slices 3% or less of the total.</li>\n\t\t\t\t<li><b>formatter:</b> <i>[function]</i> - This function specifies how the positioned labels should be formatted, and is applied after the legend's labelFormatter function. The labels can also still be styled using the class \"pieLabel\" (i.e. \".pieLabel\" or \"#graph1 .pieLabel\").</li>\n\t\t\t\t<li><b>radius:</b> <i>1</i> - Sets the radius at which to place the labels. If value is between 0 and 1 (inclusive) then it will use that as a percentage of the available space (size of the container), otherwise it will use the value as a direct pixel length.</li>\n\t\t\t\t<li><b>background:</b> <ul>\n\t\t\t\t\t<li><b>color:</b> <i>null</i> - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the slice.</li>\n\t\t\t\t\t<li><b>opacity:</b> <i>0</i> - Opacity of the background for the positioned labels. Acceptable values range from 0 to 1, where 0 is completely transparent and 1 is completely opaque.</li>\n\t\t\t\t</ul>\n\t\t\t</ul>\n\t\t\t<li><b>combine:</b> <ul>\n\t\t\t\t<li><b>threshold:</b> <i>0</i> - Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will combine all slices 3% or less into one slice).</li>\n\t\t\t\t<li><b>color:</b> <i>null</i> - Backgound color of the positioned labels. If null, the plugin will automatically use the color of the first slice to be combined.</li>\n\t\t\t\t<li><b>label:</b> <i>'Other'</i> - Label text for the combined slice.</li>\n\t\t\t</ul>\n\t\t\t<li><b>highlight:</b> <ul>\n\t\t\t\t<li><b>opacity:</b> <i>0.5</i> - Opacity of the highlight overlay on top of the current pie slice. Currently this just uses a white overlay, but support for changing the color of the overlay will also be added at a later date.\n\t\t\t</ul>\n\t\t</ul>\n\t\t\n\t\t<h2>Changes/Features</h2>\n\t\t<ul>\n\t\t\t<li style=\"list-style: none;\"><i>v1.0 - November 20th, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>The pie plug-in is now part of the Flot repository! This should make it a lot easier to deal with.</li>\n\t\t\t<li>Added a new option (innerRadius) to add a \"donut hole\" to the center of the pie, based on comtributions from Anthony Aragues. I was a little reluctant to add this feature because it doesn't work very well with the shadow created for the tilted pie, but figured it was worthwhile for non-tilted pies. Also, excanvas apparently doesn't support compositing, so it will fall back to using the stroke color to fill in the center (but I recommend setting the stroke color to the background color anyway).</li>\n\t\t\t<li>Changed the lineJoin for the border of the pie slices to use the 'round' option. This should make the center of the pie look better, particularly when there are numerous thin slices.</li>\n\t\t\t<li>Included a bug fix submitted by btburnett3 to display a slightly smaller slice in the event that the slice is 100% and being rendered with Internet Explorer. I haven't experienced this bug myself, but it doesn't seem to hurt anything so I've included it.</li>\n\t\t\t<li>The tilt value is now used when calculating the maximum radius of the pie in relation to the height of the container. This should prevent the pie from being smaller than it needed to in some cases, as well as reducing the amount of extra white space generated above and below the pie.</li>\n\t\t\t<li><b>Hover and Click functionality are now availabe!</b><ul>\n\t\t\t\t<li>Thanks to btburnett3 for the original hover functionality and Anthony Aragues for the modification that makes it compatable with excanvas, this was a huge help!</li>\n\t\t\t\t<li>Added a new option (highlight opacity) to modify the highlight created when mousing over a slice. Currently this just uses a white overlay, but an option to change the hightlight color will be added when the appropriate functionality becomes available.\n\t\t\t\t<li>I had a major setback that required me to practically rebuild the hover/click events from scratch one piece at a time (I discovered that it only worked with a single pie on a page at a time), but the end result ended up being virtually identical to the original, so I'm not quite sure what exactly made it work.</li>\n\t\t\t\t<li><span style=\"color: red;\">Warning:</span> There are some minor issues with using this functionality in conjuction with some of the other more advanced features (tilt and donut). When using a donut hole, the inner portion still triggers the events even though that portion of the pie is no longer visible. When tilted, the interactive portions still use the original, untilted version of the pie when determining mouse position (this is because the isPointInPath function apparently doesn't work with transformations), however hover and click both work this way, so the appropriate slice is still highlighted when clicking, and it isn't as noticable of a problem.</li>\n\t\t\t</ul></li>\n\t\t\t<li>Included a bug fix submitted by Xavi Ivars to fix array issues when other javascript libraries are included in addition to jQuery</li>\n\t\t\t<br/>\n\t\t\t<li style=\"list-style: none;\"><i>v0.4 - July 1st, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>Each series will now be shown in the legend, even if it's value is zero. The series will not get a positioned label because it will overlap with the other labels present and often makes them unreadable.</li>\n\t\t\t<li>Data can now be passed in using the standard Flot method using an array of datapoints, the pie plugin will simply use the first y-value that it finds for each series in this case. The plugin uses this datastructure internally, but you can still use the old method of passing in a single numerical value for each series (the plugin will convert it as necessary). This should make it easier to transition from other types of graphs (such as a stacked bar graph) to a pie.</li>\n\t\t\t<li>The pie can now be tilted at an angle with a new \"tilt\" option. Acceptable values range from 0-1, where 1 has no change (fully vertical) and 0 is completely flat (fully horizontal -- in which case nothing actually gets drawn). If the plugin determines that it will fit within the canvas, a drop shadow will be drawn under the tilted pie (this also requires a tilt value of 0.8 or less).</li>\n\t\t\t<br/>\n\t\t\t<li style=\"list-style: none;\"><i>v0.3.2 - June 25th, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>Fixed a bug that was causing the pie to be shifted too far left or right when the legend is showing in some cases.</li>\n\t\t\t<br/>\n\t\t\t<li style=\"list-style: none;\"><i>v0.3.1 - June 24th, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>Fixed a bug that was causing nothing to be drawn and generating a javascript error if any of the data values were set to zero.</li>\n\t\t\t<br/>\n\t\t\t<li style=\"list-style: none;\"><i>v0.3 - June 23rd, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>The legend now works without any modifications! Because of changes made to flot and the plugin system (thanks Ole Laursen!) I was able to simplify a number of things and am now able to use the legend without the direct access hack that was required in the previous version.</li>\n\t\t\t<br/>\n\t\t\t<li style=\"list-style: none;\"><i>v0.2 - June 22nd, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>The legend now works but only if you make the necessary changes to jquery.flot.js. Because of this, I changed the default values for pie.radius and pie.label.show to new 'auto' settings that change the default behavior of the size and labels depending on whether the legend functionality is available or not.</li>\n\t\t\t<br/>\n\t\t\t<li style=\"list-style: none;\"><i>v0.1 - June 18th, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>Rewrote the entire pie code into a flot plugin (since that is now an option), so it should be much easier to use and the code is cleaned up a bit. However, the (standard flot) legend is no longer available because the only way to prevent the grid lines from being displayed also prevents the legend from being displayed. Hopefully this can be fixed at a later date.</li>\n\t\t\t<li>Restructured and combined some of the options. It should be much easier to deal with now.</li>\n\t\t\t<li>Added the ability to change the starting point of the pie (still defaults to the top).</li>\n\t\t\t<li>Modified the default options to show the labels to compensate for the lack of a legend.</li>\n\t\t\t<li>Modified this page to use a random dataset. <span style=\"color: red\">Note: you may need to refresh the page to see the effects of some of the examples.</span></li>\n\t\t\t<br/>\n\t\t\t<li style=\"list-style: none;\"><i>May 21st, 2009 - Brian Medendorp</i></li>\n\t\t\t<li>Merged original pie modifications by Sergey Nosenko into the latest SVN version <i>(as of May 15th, 2009)</i> so that it will work with ie8.</li>\n\t\t\t<li>Pie graph will now be centered in the canvas unless moved because of the legend or manually via the options. Additionally it prevents the pie from being moved beyond the edge of the canvas.</li>\n\t\t\t<li>Modified the code related to the labelFormatter option to apply flot's legend labelFormatter first. This is so that the labels will be consistent, but still provide extra formatting for the positioned labels (such as adding the percentage value).</li>\n\t\t\t<li>Positioned labels now have their backgrounds applied as a seperate element (much like the legend background) so that the opacity value can be set independently from the label itself (foreground). Additionally, the background color defaults to that of the matching slice.</li>\n\t\t\t<li>As long as the labelOffset and radiusLimit are not set to hard values, the pie will be shrunk if the labels will extend outside the edge of the canvas</li>\n\t\t\t<li>Added new options \"radiusLimitFactor\" and \"radiusLimit\" which limits how large the (visual) radius of the pie is in relation to the full radius (as calculated from the canvas dimensions) or a hard-pixel value (respectively). This allows for pushing the labels \"outside\" the pie.</li>\n\t\t\t<li>Added a new option \"labelHidePercent\" that does not show the positioned labels of slices smaller than the specified percentage. This is to help prevent a bunch of overlapping labels from small slices.</li>\n\t\t\t<li>Added a new option \"sliceCombinePercent\" that combines all slices smaller than the specified percentage into one larger slice. This is to help make the pie more attractive when there are a number of tiny slices. The options \"sliceCombineColor\" and \"sliceCombineLabel\" have also been added to change the color and name of the new slice if desired.</li>\n\t\t\t<li>Tested in Firefox (3.0.10, 3.5b4), Internet Explorer (6.0.2900, 7.0.5730, 8.0.6001), Chrome (1.0.154), Opera (9.64), and Safari (3.1.1, 4 beta 5528.16).\n\t\t</ul>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/series-toggle/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Toggling Series</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar datasets = {\n\t\t\t\"usa\": {\n\t\t\t\tlabel: \"USA\",\n\t\t\t\tdata: [[1988, 483994], [1989, 479060], [1990, 457648], [1991, 401949], [1992, 424705], [1993, 402375], [1994, 377867], [1995, 357382], [1996, 337946], [1997, 336185], [1998, 328611], [1999, 329421], [2000, 342172], [2001, 344932], [2002, 387303], [2003, 440813], [2004, 480451], [2005, 504638], [2006, 528692]]\n\t\t\t},        \n\t\t\t\"russia\": {\n\t\t\t\tlabel: \"Russia\",\n\t\t\t\tdata: [[1988, 218000], [1989, 203000], [1990, 171000], [1992, 42500], [1993, 37600], [1994, 36600], [1995, 21700], [1996, 19200], [1997, 21300], [1998, 13600], [1999, 14000], [2000, 19100], [2001, 21300], [2002, 23600], [2003, 25100], [2004, 26100], [2005, 31100], [2006, 34700]]\n\t\t\t},\n\t\t\t\"uk\": {\n\t\t\t\tlabel: \"UK\",\n\t\t\t\tdata: [[1988, 62982], [1989, 62027], [1990, 60696], [1991, 62348], [1992, 58560], [1993, 56393], [1994, 54579], [1995, 50818], [1996, 50554], [1997, 48276], [1998, 47691], [1999, 47529], [2000, 47778], [2001, 48760], [2002, 50949], [2003, 57452], [2004, 60234], [2005, 60076], [2006, 59213]]\n\t\t\t},\n\t\t\t\"germany\": {\n\t\t\t\tlabel: \"Germany\",\n\t\t\t\tdata: [[1988, 55627], [1989, 55475], [1990, 58464], [1991, 55134], [1992, 52436], [1993, 47139], [1994, 43962], [1995, 43238], [1996, 42395], [1997, 40854], [1998, 40993], [1999, 41822], [2000, 41147], [2001, 40474], [2002, 40604], [2003, 40044], [2004, 38816], [2005, 38060], [2006, 36984]]\n\t\t\t},\n\t\t\t\"denmark\": {\n\t\t\t\tlabel: \"Denmark\",\n\t\t\t\tdata: [[1988, 3813], [1989, 3719], [1990, 3722], [1991, 3789], [1992, 3720], [1993, 3730], [1994, 3636], [1995, 3598], [1996, 3610], [1997, 3655], [1998, 3695], [1999, 3673], [2000, 3553], [2001, 3774], [2002, 3728], [2003, 3618], [2004, 3638], [2005, 3467], [2006, 3770]]\n\t\t\t},\n\t\t\t\"sweden\": {\n\t\t\t\tlabel: \"Sweden\",\n\t\t\t\tdata: [[1988, 6402], [1989, 6474], [1990, 6605], [1991, 6209], [1992, 6035], [1993, 6020], [1994, 6000], [1995, 6018], [1996, 3958], [1997, 5780], [1998, 5954], [1999, 6178], [2000, 6411], [2001, 5993], [2002, 5833], [2003, 5791], [2004, 5450], [2005, 5521], [2006, 5271]]\n\t\t\t},\n\t\t\t\"norway\": {\n\t\t\t\tlabel: \"Norway\",\n\t\t\t\tdata: [[1988, 4382], [1989, 4498], [1990, 4535], [1991, 4398], [1992, 4766], [1993, 4441], [1994, 4670], [1995, 4217], [1996, 4275], [1997, 4203], [1998, 4482], [1999, 4506], [2000, 4358], [2001, 4385], [2002, 5269], [2003, 5066], [2004, 5194], [2005, 4887], [2006, 4891]]\n\t\t\t}\n\t\t};\n\n\t\t// hard-code color indices to prevent them from shifting as\n\t\t// countries are turned on/off\n\n\t\tvar i = 0;\n\t\t$.each(datasets, function(key, val) {\n\t\t\tval.color = i;\n\t\t\t++i;\n\t\t});\n\n\t\t// insert checkboxes \n\t\tvar choiceContainer = $(\"#choices\");\n\t\t$.each(datasets, function(key, val) {\n\t\t\tchoiceContainer.append(\"<br/><input type='checkbox' name='\" + key +\n\t\t\t\t\"' checked='checked' id='id\" + key + \"'></input>\" +\n\t\t\t\t\"<label for='id\" + key + \"'>\"\n\t\t\t\t+ val.label + \"</label>\");\n\t\t});\n\n\t\tchoiceContainer.find(\"input\").click(plotAccordingToChoices);\n\n\t\tfunction plotAccordingToChoices() {\n\n\t\t\tvar data = [];\n\n\t\t\tchoiceContainer.find(\"input:checked\").each(function () {\n\t\t\t\tvar key = $(this).attr(\"name\");\n\t\t\t\tif (key && datasets[key]) {\n\t\t\t\t\tdata.push(datasets[key]);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (data.length > 0) {\n\t\t\t\t$.plot(\"#placeholder\", data, {\n\t\t\t\t\tyaxis: {\n\t\t\t\t\t\tmin: 0\n\t\t\t\t\t},\n\t\t\t\t\txaxis: {\n\t\t\t\t\t\ttickDecimals: 0\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tplotAccordingToChoices();\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Toggling Series</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\" style=\"float:left; width:675px;\"></div>\n\t\t\t<p id=\"choices\" style=\"float:right; width:135px;\"></p>\n\t\t</div>\n\n\t\t<p>This example shows military budgets for various countries in constant (2005) million US dollars (source: <a href=\"http://www.sipri.org/\">SIPRI</a>).</p>\n\n\t\t<p>Since all data is available client-side, it's pretty easy to make the plot interactive. Try turning countries on and off with the checkboxes next to the plot.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/series-types/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Series Types</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d1 = [];\n\t\tfor (var i = 0; i < 14; i += 0.5) {\n\t\t\td1.push([i, Math.sin(i)]);\n\t\t}\n\n\t\tvar d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];\n\n\t\tvar d3 = [];\n\t\tfor (var i = 0; i < 14; i += 0.5) {\n\t\t\td3.push([i, Math.cos(i)]);\n\t\t}\n\n\t\tvar d4 = [];\n\t\tfor (var i = 0; i < 14; i += 0.1) {\n\t\t\td4.push([i, Math.sqrt(i * 10)]);\n\t\t}\n\n\t\tvar d5 = [];\n\t\tfor (var i = 0; i < 14; i += 0.5) {\n\t\t\td5.push([i, Math.sqrt(i)]);\n\t\t}\n\n\t\tvar d6 = [];\n\t\tfor (var i = 0; i < 14; i += 0.5 + Math.random()) {\n\t\t\td6.push([i, Math.sqrt(2*i + Math.sin(i) + 5)]);\n\t\t}\n\n\t\t$.plot(\"#placeholder\", [{\n\t\t\tdata: d1,\n\t\t\tlines: { show: true, fill: true }\n\t\t}, {\n\t\t\tdata: d2,\n\t\t\tbars: { show: true }\n\t\t}, {\n\t\t\tdata: d3,\n\t\t\tpoints: { show: true }\n\t\t}, {\n\t\t\tdata: d4,\n\t\t\tlines: { show: true }\n\t\t}, {\n\t\t\tdata: d5,\n\t\t\tlines: { show: true },\n\t\t\tpoints: { show: true }\n\t\t}, {\n\t\t\tdata: d6,\n\t\t\tlines: { show: true, steps: true }\n\t\t}]);\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Series Types</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>Flot supports lines, points, filled areas, bars and any combinations of these, in the same plot and even on the same data series.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/stacking/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Stacking</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.stack.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d1 = [];\n\t\tfor (var i = 0; i <= 10; i += 1) {\n\t\t\td1.push([i, parseInt(Math.random() * 30)]);\n\t\t}\n\n\t\tvar d2 = [];\n\t\tfor (var i = 0; i <= 10; i += 1) {\n\t\t\td2.push([i, parseInt(Math.random() * 30)]);\n\t\t}\n\n\t\tvar d3 = [];\n\t\tfor (var i = 0; i <= 10; i += 1) {\n\t\t\td3.push([i, parseInt(Math.random() * 30)]);\n\t\t}\n\n\t\tvar stack = 0,\n\t\t\tbars = true,\n\t\t\tlines = false,\n\t\t\tsteps = false;\n\n\t\tfunction plotWithOptions() {\n\t\t\t$.plot(\"#placeholder\", [ d1, d2, d3 ], {\n\t\t\t\tseries: {\n\t\t\t\t\tstack: stack,\n\t\t\t\t\tlines: {\n\t\t\t\t\t\tshow: lines,\n\t\t\t\t\t\tfill: true,\n\t\t\t\t\t\tsteps: steps\n\t\t\t\t\t},\n\t\t\t\t\tbars: {\n\t\t\t\t\t\tshow: bars,\n\t\t\t\t\t\tbarWidth: 0.6\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tplotWithOptions();\n\n\t\t$(\".stackControls button\").click(function (e) {\n\t\t\te.preventDefault();\n\t\t\tstack = $(this).text() == \"With stacking\" ? true : null;\n\t\t\tplotWithOptions();\n\t\t});\n\n\t\t$(\".graphControls button\").click(function (e) {\n\t\t\te.preventDefault();\n\t\t\tbars = $(this).text().indexOf(\"Bars\") != -1;\n\t\t\tlines = $(this).text().indexOf(\"Lines\") != -1;\n\t\t\tsteps = $(this).text().indexOf(\"steps\") != -1;\n\t\t\tplotWithOptions();\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Stacking</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>With the stack plugin, you can have Flot stack the series. This is useful if you wish to display both a total and the constituents it is made of. The only requirement is that you provide the input sorted on x.</p>\n\n\t\t<p class=\"stackControls\">\n\t\t\t<button>With stacking</button>\n\t\t\t<button>Without stacking</button>\n\t\t</p>\n\n\t\t<p class=\"graphControls\">\n\t\t\t<button>Bars</button>\n\t\t\t<button>Lines</button>\n\t\t\t<button>Lines with steps</button>\n\t\t</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/symbols/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Symbols</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.symbol.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tfunction generate(offset, amplitude) {\n\n\t\t\tvar res = [];\n\t\t\tvar start = 0, end = 10;\n\n\t\t\tfor (var i = 0; i <= 50; ++i) {\n\t\t\t\tvar x = start + i / 50 * (end - start);\n\t\t\t\tres.push([x, amplitude * Math.sin(x + offset)]);\n\t\t\t}\n\n\t\t\treturn res;\n\t\t}\n\n\t\tvar data = [\n\t\t\t{ data: generate(2, 1.8), points: { symbol: \"circle\" } },\n\t\t\t{ data: generate(3, 1.5), points: { symbol: \"square\" } },\n\t\t\t{ data: generate(4, 0.9), points: { symbol: \"diamond\" } },\n\t\t\t{ data: generate(6, 1.4), points: { symbol: \"triangle\" } },\n\t\t\t{ data: generate(7, 1.1), points: { symbol: \"cross\" } }\n\t\t];\n\n\t\t$.plot(\"#placeholder\", data, {\n\t\t\tseries: {\n\t\t\t\tpoints: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tradius: 3\n\t\t\t\t}\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\thoverable: true\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Symbols</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>Points can be marked in several ways, with circles being the built-in default. For other point types, you can define a callback function to draw the symbol. Some common symbols are available in the symbol plugin.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/threshold/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Thresholds</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.threshold.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d1 = [];\n\t\tfor (var i = 0; i <= 60; i += 1) {\n\t\t\td1.push([i, parseInt(Math.random() * 30 - 10)]);\n\t\t}\n\n\t\tfunction plotWithOptions(t) {\n\t\t\t$.plot(\"#placeholder\", [{\n\t\t\t\tdata: d1,\n\t\t\t\tcolor: \"rgb(30, 180, 20)\",\n\t\t\t\tthreshold: {\n\t\t\t\t\tbelow: t,\n\t\t\t\t\tcolor: \"rgb(200, 20, 30)\"\n\t\t\t\t},\n\t\t\t\tlines: {\n\t\t\t\t\tsteps: true\n\t\t\t\t}\n\t\t\t}]);\n\t\t}\n\n\t\tplotWithOptions(0);\n\n\t\t$(\".controls button\").click(function (e) {\n\t\t\te.preventDefault();\n\t\t\tvar t = parseFloat($(this).text().replace(\"Threshold at \", \"\"));\n\t\t\tplotWithOptions(t);\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Thresholds</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>With the threshold plugin, you can apply a specific color to the part of a data series below a threshold. This is can be useful for highlighting negative values, e.g. when displaying net results or what's in stock.</p>\n\n\t\t<p class=\"controls\">\n\t\t\t<button>Threshold at 5</button>\n\t\t\t<button>Threshold at 0</button>\n\t\t\t<button>Threshold at -2.5</button>\n\t\t</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/tracking/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Tracking</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.crosshair.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar sin = [], cos = [];\n\t\tfor (var i = 0; i < 14; i += 0.1) {\n\t\t\tsin.push([i, Math.sin(i)]);\n\t\t\tcos.push([i, Math.cos(i)]);\n\t\t}\n\n\t\tplot = $.plot(\"#placeholder\", [\n\t\t\t{ data: sin, label: \"sin(x) = -0.00\"},\n\t\t\t{ data: cos, label: \"cos(x) = -0.00\" }\n\t\t], {\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tcrosshair: {\n\t\t\t\tmode: \"x\"\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\thoverable: true,\n\t\t\t\tautoHighlight: false\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tmin: -1.2,\n\t\t\t\tmax: 1.2\n\t\t\t}\n\t\t});\n\n\t\tvar legends = $(\"#placeholder .legendLabel\");\n\n\t\tlegends.each(function () {\n\t\t\t// fix the widths so they don't jump around\n\t\t\t$(this).css('width', $(this).width());\n\t\t});\n\n\t\tvar updateLegendTimeout = null;\n\t\tvar latestPosition = null;\n\n\t\tfunction updateLegend() {\n\n\t\t\tupdateLegendTimeout = null;\n\n\t\t\tvar pos = latestPosition;\n\n\t\t\tvar axes = plot.getAxes();\n\t\t\tif (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||\n\t\t\t\tpos.y < axes.yaxis.min || pos.y > axes.yaxis.max) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar i, j, dataset = plot.getData();\n\t\t\tfor (i = 0; i < dataset.length; ++i) {\n\n\t\t\t\tvar series = dataset[i];\n\n\t\t\t\t// Find the nearest points, x-wise\n\n\t\t\t\tfor (j = 0; j < series.data.length; ++j) {\n\t\t\t\t\tif (series.data[j][0] > pos.x) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Now Interpolate\n\n\t\t\t\tvar y,\n\t\t\t\t\tp1 = series.data[j - 1],\n\t\t\t\t\tp2 = series.data[j];\n\n\t\t\t\tif (p1 == null) {\n\t\t\t\t\ty = p2[1];\n\t\t\t\t} else if (p2 == null) {\n\t\t\t\t\ty = p1[1];\n\t\t\t\t} else {\n\t\t\t\t\ty = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);\n\t\t\t\t}\n\n\t\t\t\tlegends.eq(i).text(series.label.replace(/=.*/, \"= \" + y.toFixed(2)));\n\t\t\t}\n\t\t}\n\n\t\t$(\"#placeholder\").bind(\"plothover\",  function (event, pos, item) {\n\t\t\tlatestPosition = pos;\n\t\t\tif (!updateLegendTimeout) {\n\t\t\t\tupdateLegendTimeout = setTimeout(updateLegend, 50);\n\t\t\t}\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Tracking</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>You can add crosshairs that'll track the mouse position, either on both axes or as here on only one.</p>\n\n\t\t<p>If you combine it with listening on hover events, you can use it to track the intersection on the curves by interpolating the data points (look at the legend).</p>\n\n\t\t<p id=\"hoverdata\"></p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/visitors/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Visitors</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.time.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.selection.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\tvar d = [[1196463600000, 0], [1196550000000, 0], [1196636400000, 0], [1196722800000, 77], [1196809200000, 3636], [1196895600000, 3575], [1196982000000, 2736], [1197068400000, 1086], [1197154800000, 676], [1197241200000, 1205], [1197327600000, 906], [1197414000000, 710], [1197500400000, 639], [1197586800000, 540], [1197673200000, 435], [1197759600000, 301], [1197846000000, 575], [1197932400000, 481], [1198018800000, 591], [1198105200000, 608], [1198191600000, 459], [1198278000000, 234], [1198364400000, 1352], [1198450800000, 686], [1198537200000, 279], [1198623600000, 449], [1198710000000, 468], [1198796400000, 392], [1198882800000, 282], [1198969200000, 208], [1199055600000, 229], [1199142000000, 177], [1199228400000, 374], [1199314800000, 436], [1199401200000, 404], [1199487600000, 253], [1199574000000, 218], [1199660400000, 476], [1199746800000, 462], [1199833200000, 448], [1199919600000, 442], [1200006000000, 403], [1200092400000, 204], [1200178800000, 194], [1200265200000, 327], [1200351600000, 374], [1200438000000, 507], [1200524400000, 546], [1200610800000, 482], [1200697200000, 283], [1200783600000, 221], [1200870000000, 483], [1200956400000, 523], [1201042800000, 528], [1201129200000, 483], [1201215600000, 452], [1201302000000, 270], [1201388400000, 222], [1201474800000, 439], [1201561200000, 559], [1201647600000, 521], [1201734000000, 477], [1201820400000, 442], [1201906800000, 252], [1201993200000, 236], [1202079600000, 525], [1202166000000, 477], [1202252400000, 386], [1202338800000, 409], [1202425200000, 408], [1202511600000, 237], [1202598000000, 193], [1202684400000, 357], [1202770800000, 414], [1202857200000, 393], [1202943600000, 353], [1203030000000, 364], [1203116400000, 215], [1203202800000, 214], [1203289200000, 356], [1203375600000, 399], [1203462000000, 334], [1203548400000, 348], [1203634800000, 243], [1203721200000, 126], [1203807600000, 157], [1203894000000, 288]];\n\n\t\t// first correct the timestamps - they are recorded as the daily\n\t\t// midnights in UTC+0100, but Flot always displays dates in UTC\n\t\t// so we have to add one hour to hit the midnights in the plot\n\n\t\tfor (var i = 0; i < d.length; ++i) {\n\t\t\td[i][0] += 60 * 60 * 1000;\n\t\t}\n\n\t\t// helper for returning the weekends in a period\n\n\t\tfunction weekendAreas(axes) {\n\n\t\t\tvar markings = [],\n\t\t\t\td = new Date(axes.xaxis.min);\n\n\t\t\t// go to the first Saturday\n\n\t\t\td.setUTCDate(d.getUTCDate() - ((d.getUTCDay() + 1) % 7))\n\t\t\td.setUTCSeconds(0);\n\t\t\td.setUTCMinutes(0);\n\t\t\td.setUTCHours(0);\n\n\t\t\tvar i = d.getTime();\n\n\t\t\t// when we don't set yaxis, the rectangle automatically\n\t\t\t// extends to infinity upwards and downwards\n\n\t\t\tdo {\n\t\t\t\tmarkings.push({ xaxis: { from: i, to: i + 2 * 24 * 60 * 60 * 1000 } });\n\t\t\t\ti += 7 * 24 * 60 * 60 * 1000;\n\t\t\t} while (i < axes.xaxis.max);\n\n\t\t\treturn markings;\n\t\t}\n\n\t\tvar options = {\n\t\t\txaxis: {\n\t\t\t\tmode: \"time\",\n\t\t\t\ttickLength: 5\n\t\t\t},\n\t\t\tselection: {\n\t\t\t\tmode: \"x\"\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\tmarkings: weekendAreas\n\t\t\t}\n\t\t};\n\n\t\tvar plot = $.plot(\"#placeholder\", [d], options);\n\n\t\tvar overview = $.plot(\"#overview\", [d], {\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tlineWidth: 1\n\t\t\t\t},\n\t\t\t\tshadowSize: 0\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tticks: [],\n\t\t\t\tmode: \"time\"\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tticks: [],\n\t\t\t\tmin: 0,\n\t\t\t\tautoscaleMargin: 0.1\n\t\t\t},\n\t\t\tselection: {\n\t\t\t\tmode: \"x\"\n\t\t\t}\n\t\t});\n\n\t\t// now connect the two\n\n\t\t$(\"#placeholder\").bind(\"plotselected\", function (event, ranges) {\n\n\t\t\t// do the zooming\n\t\t\t$.each(plot.getXAxes(), function(_, axis) {\n\t\t\t\tvar opts = axis.options;\n\t\t\t\topts.min = ranges.xaxis.from;\n\t\t\t\topts.max = ranges.xaxis.to;\n\t\t\t});\n\t\t\tplot.setupGrid();\n\t\t\tplot.draw();\n\t\t\tplot.clearSelection();\n\n\t\t\t// don't fire event on the overview to prevent eternal loop\n\n\t\t\toverview.setSelection(ranges, true);\n\t\t});\n\n\t\t$(\"#overview\").bind(\"plotselected\", function (event, ranges) {\n\t\t\tplot.setSelection(ranges);\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Visitors</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<div class=\"demo-container\" style=\"height:150px;\">\n\t\t\t<div id=\"overview\" class=\"demo-placeholder\"></div>\n\t\t</div>\n\n\t\t<p>This plot shows visitors per day to the Flot homepage, with weekends colored.</p>\n\n\t\t<p>The smaller plot is linked to the main plot, so it acts as an overview. Try dragging a selection on either plot, and watch the behavior of the other.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/examples/zooming/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>Flot Examples: Selection and zooming</title>\n\t<link href=\"../examples.css\" rel=\"stylesheet\" type=\"text/css\">\n\t<!--[if lte IE 8]><script language=\"javascript\" type=\"text/javascript\" src=\"../../excanvas.min.js\"></script><![endif]-->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"../../jquery.flot.selection.js\"></script>\n\t<script type=\"text/javascript\">\n\n\t$(function() {\n\n\t\t// setup plot\n\n\t\tfunction getData(x1, x2) {\n\n\t\t\tvar d = [];\n\t\t\tfor (var i = 0; i <= 100; ++i) {\n\t\t\t\tvar x = x1 + i * (x2 - x1) / 100;\n\t\t\t\td.push([x, Math.sin(x * Math.sin(x))]);\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t{ label: \"sin(x sin(x))\", data: d }\n\t\t\t];\n\t\t}\n\n\t\tvar options = {\n\t\t\tlegend: {\n\t\t\t\tshow: false\n\t\t\t},\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: true\n\t\t\t\t},\n\t\t\t\tpoints: {\n\t\t\t\t\tshow: true\n\t\t\t\t}\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tticks: 10\n\t\t\t},\n\t\t\tselection: {\n\t\t\t\tmode: \"xy\"\n\t\t\t}\n\t\t};\n\n\t\tvar startData = getData(0, 3 * Math.PI);\n\n\t\tvar plot = $.plot(\"#placeholder\", startData, options);\n\n\t\t// Create the overview plot\n\n\t\tvar overview = $.plot(\"#overview\", startData, {\n\t\t\tlegend: {\n\t\t\t\tshow: false\n\t\t\t},\n\t\t\tseries: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: true,\n\t\t\t\t\tlineWidth: 1\n\t\t\t\t},\n\t\t\t\tshadowSize: 0\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\tticks: 4\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tticks: 3,\n\t\t\t\tmin: -2,\n\t\t\t\tmax: 2\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\tcolor: \"#999\"\n\t\t\t},\n\t\t\tselection: {\n\t\t\t\tmode: \"xy\"\n\t\t\t}\n\t\t});\n\n\t\t// now connect the two\n\n\t\t$(\"#placeholder\").bind(\"plotselected\", function (event, ranges) {\n\n\t\t\t// clamp the zooming to prevent eternal zoom\n\n\t\t\tif (ranges.xaxis.to - ranges.xaxis.from < 0.00001) {\n\t\t\t\tranges.xaxis.to = ranges.xaxis.from + 0.00001;\n\t\t\t}\n\n\t\t\tif (ranges.yaxis.to - ranges.yaxis.from < 0.00001) {\n\t\t\t\tranges.yaxis.to = ranges.yaxis.from + 0.00001;\n\t\t\t}\n\n\t\t\t// do the zooming\n\n\t\t\tplot = $.plot(\"#placeholder\", getData(ranges.xaxis.from, ranges.xaxis.to),\n\t\t\t\t$.extend(true, {}, options, {\n\t\t\t\t\txaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },\n\t\t\t\t\tyaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// don't fire event on the overview to prevent eternal loop\n\n\t\t\toverview.setSelection(ranges, true);\n\t\t});\n\n\t\t$(\"#overview\").bind(\"plotselected\", function (event, ranges) {\n\t\t\tplot.setSelection(ranges);\n\t\t});\n\n\t\t// Add the Flot version string to the footer\n\n\t\t$(\"#footer\").prepend(\"Flot \" + $.plot.version + \" &ndash; \");\n\t});\n\n\t</script>\n</head>\n<body>\n\n\t<div id=\"header\">\n\t\t<h2>Selection and zooming</h2>\n\t</div>\n\n\t<div id=\"content\">\n\n\t\t<div class=\"demo-container\">\n\t\t\t<div id=\"placeholder\" class=\"demo-placeholder\" style=\"float:left; width:650px;\"></div>\n\t\t\t<div id=\"overview\" class=\"demo-placeholder\" style=\"float:right;width:160px; height:125px;\"></div>\n\t\t</div>\n\n\t\t<p>Selection support makes it easy to construct flexible zooming schemes. With a few lines of code, the small overview plot to the right has been connected to the large plot. Try selecting a rectangle on either of them.</p>\n\n\t</div>\n\n\t<div id=\"footer\">\n\t\tCopyright &copy; 2007 - 2014 IOLA and Ole Laursen\n\t</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/excanvas.js",
    "content": "// Copyright 2006 Google Inc.\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// Known Issues:\n//\n// * Patterns only support repeat.\n// * Radial gradient are not implemented. The VML version of these look very\n//   different from the canvas one.\n// * Clipping paths are not implemented.\n// * Coordsize. The width and height attribute have higher priority than the\n//   width and height style values which isn't correct.\n// * Painting mode isn't implemented.\n// * Canvas width/height should is using content-box by default. IE in\n//   Quirks mode will draw the canvas using border-box. Either change your\n//   doctype to HTML5\n//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)\n//   or use Box Sizing Behavior from WebFX\n//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)\n// * Non uniform scaling does not correctly scale strokes.\n// * Filling very large shapes (above 5000 points) is buggy.\n// * Optimize. There is always room for speed improvements.\n\n// Only add this code if we do not already have a canvas implementation\nif (!document.createElement('canvas').getContext) {\n\n(function() {\n\n  // alias some functions to make (compiled) code shorter\n  var m = Math;\n  var mr = m.round;\n  var ms = m.sin;\n  var mc = m.cos;\n  var abs = m.abs;\n  var sqrt = m.sqrt;\n\n  // this is used for sub pixel precision\n  var Z = 10;\n  var Z2 = Z / 2;\n\n  var IE_VERSION = +navigator.userAgent.match(/MSIE ([\\d.]+)?/)[1];\n\n  /**\n   * This funtion is assigned to the <canvas> elements as element.getContext().\n   * @this {HTMLElement}\n   * @return {CanvasRenderingContext2D_}\n   */\n  function getContext() {\n    return this.context_ ||\n        (this.context_ = new CanvasRenderingContext2D_(this));\n  }\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Binds a function to an object. The returned function will always use the\n   * passed in {@code obj} as {@code this}.\n   *\n   * Example:\n   *\n   *   g = bind(f, obj, a, b)\n   *   g(c, d) // will do f.call(obj, a, b, c, d)\n   *\n   * @param {Function} f The function to bind the object to\n   * @param {Object} obj The object that should act as this when the function\n   *     is called\n   * @param {*} var_args Rest arguments that will be used as the initial\n   *     arguments when the function is called\n   * @return {Function} A new function that has bound this\n   */\n  function bind(f, obj, var_args) {\n    var a = slice.call(arguments, 2);\n    return function() {\n      return f.apply(obj, a.concat(slice.call(arguments)));\n    };\n  }\n\n  function encodeHtmlAttribute(s) {\n    return String(s).replace(/&/g, '&amp;').replace(/\"/g, '&quot;');\n  }\n\n  function addNamespace(doc, prefix, urn) {\n    if (!doc.namespaces[prefix]) {\n      doc.namespaces.add(prefix, urn, '#default#VML');\n    }\n  }\n\n  function addNamespacesAndStylesheet(doc) {\n    addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml');\n    addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office');\n\n    // Setup default CSS.  Only add one style sheet per document\n    if (!doc.styleSheets['ex_canvas_']) {\n      var ss = doc.createStyleSheet();\n      ss.owningElement.id = 'ex_canvas_';\n      ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +\n          // default size is 300x150 in Gecko and Opera\n          'text-align:left;width:300px;height:150px}';\n    }\n  }\n\n  // Add namespaces and stylesheet at startup.\n  addNamespacesAndStylesheet(document);\n\n  var G_vmlCanvasManager_ = {\n    init: function(opt_doc) {\n      var doc = opt_doc || document;\n      // Create a dummy element so that IE will allow canvas elements to be\n      // recognized.\n      doc.createElement('canvas');\n      doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));\n    },\n\n    init_: function(doc) {\n      // find all canvas elements\n      var els = doc.getElementsByTagName('canvas');\n      for (var i = 0; i < els.length; i++) {\n        this.initElement(els[i]);\n      }\n    },\n\n    /**\n     * Public initializes a canvas element so that it can be used as canvas\n     * element from now on. This is called automatically before the page is\n     * loaded but if you are creating elements using createElement you need to\n     * make sure this is called on the element.\n     * @param {HTMLElement} el The canvas element to initialize.\n     * @return {HTMLElement} the element that was created.\n     */\n    initElement: function(el) {\n      if (!el.getContext) {\n        el.getContext = getContext;\n\n        // Add namespaces and stylesheet to document of the element.\n        addNamespacesAndStylesheet(el.ownerDocument);\n\n        // Remove fallback content. There is no way to hide text nodes so we\n        // just remove all childNodes. We could hide all elements and remove\n        // text nodes but who really cares about the fallback content.\n        el.innerHTML = '';\n\n        // do not use inline function because that will leak memory\n        el.attachEvent('onpropertychange', onPropertyChange);\n        el.attachEvent('onresize', onResize);\n\n        var attrs = el.attributes;\n        if (attrs.width && attrs.width.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setWidth_(attrs.width.nodeValue);\n          el.style.width = attrs.width.nodeValue + 'px';\n        } else {\n          el.width = el.clientWidth;\n        }\n        if (attrs.height && attrs.height.specified) {\n          // TODO: use runtimeStyle and coordsize\n          // el.getContext().setHeight_(attrs.height.nodeValue);\n          el.style.height = attrs.height.nodeValue + 'px';\n        } else {\n          el.height = el.clientHeight;\n        }\n        //el.getContext().setCoordsize_()\n      }\n      return el;\n    }\n  };\n\n  function onPropertyChange(e) {\n    var el = e.srcElement;\n\n    switch (e.propertyName) {\n      case 'width':\n        el.getContext().clearRect();\n        el.style.width = el.attributes.width.nodeValue + 'px';\n        // In IE8 this does not trigger onresize.\n        el.firstChild.style.width =  el.clientWidth + 'px';\n        break;\n      case 'height':\n        el.getContext().clearRect();\n        el.style.height = el.attributes.height.nodeValue + 'px';\n        el.firstChild.style.height = el.clientHeight + 'px';\n        break;\n    }\n  }\n\n  function onResize(e) {\n    var el = e.srcElement;\n    if (el.firstChild) {\n      el.firstChild.style.width =  el.clientWidth + 'px';\n      el.firstChild.style.height = el.clientHeight + 'px';\n    }\n  }\n\n  G_vmlCanvasManager_.init();\n\n  // precompute \"00\" to \"FF\"\n  var decToHex = [];\n  for (var i = 0; i < 16; i++) {\n    for (var j = 0; j < 16; j++) {\n      decToHex[i * 16 + j] = i.toString(16) + j.toString(16);\n    }\n  }\n\n  function createMatrixIdentity() {\n    return [\n      [1, 0, 0],\n      [0, 1, 0],\n      [0, 0, 1]\n    ];\n  }\n\n  function matrixMultiply(m1, m2) {\n    var result = createMatrixIdentity();\n\n    for (var x = 0; x < 3; x++) {\n      for (var y = 0; y < 3; y++) {\n        var sum = 0;\n\n        for (var z = 0; z < 3; z++) {\n          sum += m1[x][z] * m2[z][y];\n        }\n\n        result[x][y] = sum;\n      }\n    }\n    return result;\n  }\n\n  function copyState(o1, o2) {\n    o2.fillStyle     = o1.fillStyle;\n    o2.lineCap       = o1.lineCap;\n    o2.lineJoin      = o1.lineJoin;\n    o2.lineWidth     = o1.lineWidth;\n    o2.miterLimit    = o1.miterLimit;\n    o2.shadowBlur    = o1.shadowBlur;\n    o2.shadowColor   = o1.shadowColor;\n    o2.shadowOffsetX = o1.shadowOffsetX;\n    o2.shadowOffsetY = o1.shadowOffsetY;\n    o2.strokeStyle   = o1.strokeStyle;\n    o2.globalAlpha   = o1.globalAlpha;\n    o2.font          = o1.font;\n    o2.textAlign     = o1.textAlign;\n    o2.textBaseline  = o1.textBaseline;\n    o2.arcScaleX_    = o1.arcScaleX_;\n    o2.arcScaleY_    = o1.arcScaleY_;\n    o2.lineScale_    = o1.lineScale_;\n  }\n\n  var colorData = {\n    aliceblue: '#F0F8FF',\n    antiquewhite: '#FAEBD7',\n    aquamarine: '#7FFFD4',\n    azure: '#F0FFFF',\n    beige: '#F5F5DC',\n    bisque: '#FFE4C4',\n    black: '#000000',\n    blanchedalmond: '#FFEBCD',\n    blueviolet: '#8A2BE2',\n    brown: '#A52A2A',\n    burlywood: '#DEB887',\n    cadetblue: '#5F9EA0',\n    chartreuse: '#7FFF00',\n    chocolate: '#D2691E',\n    coral: '#FF7F50',\n    cornflowerblue: '#6495ED',\n    cornsilk: '#FFF8DC',\n    crimson: '#DC143C',\n    cyan: '#00FFFF',\n    darkblue: '#00008B',\n    darkcyan: '#008B8B',\n    darkgoldenrod: '#B8860B',\n    darkgray: '#A9A9A9',\n    darkgreen: '#006400',\n    darkgrey: '#A9A9A9',\n    darkkhaki: '#BDB76B',\n    darkmagenta: '#8B008B',\n    darkolivegreen: '#556B2F',\n    darkorange: '#FF8C00',\n    darkorchid: '#9932CC',\n    darkred: '#8B0000',\n    darksalmon: '#E9967A',\n    darkseagreen: '#8FBC8F',\n    darkslateblue: '#483D8B',\n    darkslategray: '#2F4F4F',\n    darkslategrey: '#2F4F4F',\n    darkturquoise: '#00CED1',\n    darkviolet: '#9400D3',\n    deeppink: '#FF1493',\n    deepskyblue: '#00BFFF',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1E90FF',\n    firebrick: '#B22222',\n    floralwhite: '#FFFAF0',\n    forestgreen: '#228B22',\n    gainsboro: '#DCDCDC',\n    ghostwhite: '#F8F8FF',\n    gold: '#FFD700',\n    goldenrod: '#DAA520',\n    grey: '#808080',\n    greenyellow: '#ADFF2F',\n    honeydew: '#F0FFF0',\n    hotpink: '#FF69B4',\n    indianred: '#CD5C5C',\n    indigo: '#4B0082',\n    ivory: '#FFFFF0',\n    khaki: '#F0E68C',\n    lavender: '#E6E6FA',\n    lavenderblush: '#FFF0F5',\n    lawngreen: '#7CFC00',\n    lemonchiffon: '#FFFACD',\n    lightblue: '#ADD8E6',\n    lightcoral: '#F08080',\n    lightcyan: '#E0FFFF',\n    lightgoldenrodyellow: '#FAFAD2',\n    lightgreen: '#90EE90',\n    lightgrey: '#D3D3D3',\n    lightpink: '#FFB6C1',\n    lightsalmon: '#FFA07A',\n    lightseagreen: '#20B2AA',\n    lightskyblue: '#87CEFA',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#B0C4DE',\n    lightyellow: '#FFFFE0',\n    limegreen: '#32CD32',\n    linen: '#FAF0E6',\n    magenta: '#FF00FF',\n    mediumaquamarine: '#66CDAA',\n    mediumblue: '#0000CD',\n    mediumorchid: '#BA55D3',\n    mediumpurple: '#9370DB',\n    mediumseagreen: '#3CB371',\n    mediumslateblue: '#7B68EE',\n    mediumspringgreen: '#00FA9A',\n    mediumturquoise: '#48D1CC',\n    mediumvioletred: '#C71585',\n    midnightblue: '#191970',\n    mintcream: '#F5FFFA',\n    mistyrose: '#FFE4E1',\n    moccasin: '#FFE4B5',\n    navajowhite: '#FFDEAD',\n    oldlace: '#FDF5E6',\n    olivedrab: '#6B8E23',\n    orange: '#FFA500',\n    orangered: '#FF4500',\n    orchid: '#DA70D6',\n    palegoldenrod: '#EEE8AA',\n    palegreen: '#98FB98',\n    paleturquoise: '#AFEEEE',\n    palevioletred: '#DB7093',\n    papayawhip: '#FFEFD5',\n    peachpuff: '#FFDAB9',\n    peru: '#CD853F',\n    pink: '#FFC0CB',\n    plum: '#DDA0DD',\n    powderblue: '#B0E0E6',\n    rosybrown: '#BC8F8F',\n    royalblue: '#4169E1',\n    saddlebrown: '#8B4513',\n    salmon: '#FA8072',\n    sandybrown: '#F4A460',\n    seagreen: '#2E8B57',\n    seashell: '#FFF5EE',\n    sienna: '#A0522D',\n    skyblue: '#87CEEB',\n    slateblue: '#6A5ACD',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#FFFAFA',\n    springgreen: '#00FF7F',\n    steelblue: '#4682B4',\n    tan: '#D2B48C',\n    thistle: '#D8BFD8',\n    tomato: '#FF6347',\n    turquoise: '#40E0D0',\n    violet: '#EE82EE',\n    wheat: '#F5DEB3',\n    whitesmoke: '#F5F5F5',\n    yellowgreen: '#9ACD32'\n  };\n\n\n  function getRgbHslContent(styleString) {\n    var start = styleString.indexOf('(', 3);\n    var end = styleString.indexOf(')', start + 1);\n    var parts = styleString.substring(start + 1, end).split(',');\n    // add alpha if needed\n    if (parts.length != 4 || styleString.charAt(3) != 'a') {\n      parts[3] = 1;\n    }\n    return parts;\n  }\n\n  function percent(s) {\n    return parseFloat(s) / 100;\n  }\n\n  function clamp(v, min, max) {\n    return Math.min(max, Math.max(min, v));\n  }\n\n  function hslToRgb(parts){\n    var r, g, b, h, s, l;\n    h = parseFloat(parts[0]) / 360 % 360;\n    if (h < 0)\n      h++;\n    s = clamp(percent(parts[1]), 0, 1);\n    l = clamp(percent(parts[2]), 0, 1);\n    if (s == 0) {\n      r = g = b = l; // achromatic\n    } else {\n      var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      var p = 2 * l - q;\n      r = hueToRgb(p, q, h + 1 / 3);\n      g = hueToRgb(p, q, h);\n      b = hueToRgb(p, q, h - 1 / 3);\n    }\n\n    return '#' + decToHex[Math.floor(r * 255)] +\n        decToHex[Math.floor(g * 255)] +\n        decToHex[Math.floor(b * 255)];\n  }\n\n  function hueToRgb(m1, m2, h) {\n    if (h < 0)\n      h++;\n    if (h > 1)\n      h--;\n\n    if (6 * h < 1)\n      return m1 + (m2 - m1) * 6 * h;\n    else if (2 * h < 1)\n      return m2;\n    else if (3 * h < 2)\n      return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    else\n      return m1;\n  }\n\n  var processStyleCache = {};\n\n  function processStyle(styleString) {\n    if (styleString in processStyleCache) {\n      return processStyleCache[styleString];\n    }\n\n    var str, alpha = 1;\n\n    styleString = String(styleString);\n    if (styleString.charAt(0) == '#') {\n      str = styleString;\n    } else if (/^rgb/.test(styleString)) {\n      var parts = getRgbHslContent(styleString);\n      var str = '#', n;\n      for (var i = 0; i < 3; i++) {\n        if (parts[i].indexOf('%') != -1) {\n          n = Math.floor(percent(parts[i]) * 255);\n        } else {\n          n = +parts[i];\n        }\n        str += decToHex[clamp(n, 0, 255)];\n      }\n      alpha = +parts[3];\n    } else if (/^hsl/.test(styleString)) {\n      var parts = getRgbHslContent(styleString);\n      str = hslToRgb(parts);\n      alpha = parts[3];\n    } else {\n      str = colorData[styleString] || styleString;\n    }\n    return processStyleCache[styleString] = {color: str, alpha: alpha};\n  }\n\n  var DEFAULT_STYLE = {\n    style: 'normal',\n    variant: 'normal',\n    weight: 'normal',\n    size: 10,\n    family: 'sans-serif'\n  };\n\n  // Internal text style cache\n  var fontStyleCache = {};\n\n  function processFontStyle(styleString) {\n    if (fontStyleCache[styleString]) {\n      return fontStyleCache[styleString];\n    }\n\n    var el = document.createElement('div');\n    var style = el.style;\n    try {\n      style.font = styleString;\n    } catch (ex) {\n      // Ignore failures to set to invalid font.\n    }\n\n    return fontStyleCache[styleString] = {\n      style: style.fontStyle || DEFAULT_STYLE.style,\n      variant: style.fontVariant || DEFAULT_STYLE.variant,\n      weight: style.fontWeight || DEFAULT_STYLE.weight,\n      size: style.fontSize || DEFAULT_STYLE.size,\n      family: style.fontFamily || DEFAULT_STYLE.family\n    };\n  }\n\n  function getComputedStyle(style, element) {\n    var computedStyle = {};\n\n    for (var p in style) {\n      computedStyle[p] = style[p];\n    }\n\n    // Compute the size\n    var canvasFontSize = parseFloat(element.currentStyle.fontSize),\n        fontSize = parseFloat(style.size);\n\n    if (typeof style.size == 'number') {\n      computedStyle.size = style.size;\n    } else if (style.size.indexOf('px') != -1) {\n      computedStyle.size = fontSize;\n    } else if (style.size.indexOf('em') != -1) {\n      computedStyle.size = canvasFontSize * fontSize;\n    } else if(style.size.indexOf('%') != -1) {\n      computedStyle.size = (canvasFontSize / 100) * fontSize;\n    } else if (style.size.indexOf('pt') != -1) {\n      computedStyle.size = fontSize / .75;\n    } else {\n      computedStyle.size = canvasFontSize;\n    }\n\n    // Different scaling between normal text and VML text. This was found using\n    // trial and error to get the same size as non VML text.\n    computedStyle.size *= 0.981;\n\n    return computedStyle;\n  }\n\n  function buildStyle(style) {\n    return style.style + ' ' + style.variant + ' ' + style.weight + ' ' +\n        style.size + 'px ' + style.family;\n  }\n\n  var lineCapMap = {\n    'butt': 'flat',\n    'round': 'round'\n  };\n\n  function processLineCap(lineCap) {\n    return lineCapMap[lineCap] || 'square';\n  }\n\n  /**\n   * This class implements CanvasRenderingContext2D interface as described by\n   * the WHATWG.\n   * @param {HTMLElement} canvasElement The element that the 2D context should\n   * be associated with\n   */\n  function CanvasRenderingContext2D_(canvasElement) {\n    this.m_ = createMatrixIdentity();\n\n    this.mStack_ = [];\n    this.aStack_ = [];\n    this.currentPath_ = [];\n\n    // Canvas context properties\n    this.strokeStyle = '#000';\n    this.fillStyle = '#000';\n\n    this.lineWidth = 1;\n    this.lineJoin = 'miter';\n    this.lineCap = 'butt';\n    this.miterLimit = Z * 1;\n    this.globalAlpha = 1;\n    this.font = '10px sans-serif';\n    this.textAlign = 'left';\n    this.textBaseline = 'alphabetic';\n    this.canvas = canvasElement;\n\n    var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' +\n        canvasElement.clientHeight + 'px;overflow:hidden;position:absolute';\n    var el = canvasElement.ownerDocument.createElement('div');\n    el.style.cssText = cssText;\n    canvasElement.appendChild(el);\n\n    var overlayEl = el.cloneNode(false);\n    // Use a non transparent background.\n    overlayEl.style.backgroundColor = 'red';\n    overlayEl.style.filter = 'alpha(opacity=0)';\n    canvasElement.appendChild(overlayEl);\n\n    this.element_ = el;\n    this.arcScaleX_ = 1;\n    this.arcScaleY_ = 1;\n    this.lineScale_ = 1;\n  }\n\n  var contextPrototype = CanvasRenderingContext2D_.prototype;\n  contextPrototype.clearRect = function() {\n    if (this.textMeasureEl_) {\n      this.textMeasureEl_.removeNode(true);\n      this.textMeasureEl_ = null;\n    }\n    this.element_.innerHTML = '';\n  };\n\n  contextPrototype.beginPath = function() {\n    // TODO: Branch current matrix so that save/restore has no effect\n    //       as per safari docs.\n    this.currentPath_ = [];\n  };\n\n  contextPrototype.moveTo = function(aX, aY) {\n    var p = getCoords(this, aX, aY);\n    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.lineTo = function(aX, aY) {\n    var p = getCoords(this, aX, aY);\n    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});\n\n    this.currentX_ = p.x;\n    this.currentY_ = p.y;\n  };\n\n  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,\n                                            aCP2x, aCP2y,\n                                            aX, aY) {\n    var p = getCoords(this, aX, aY);\n    var cp1 = getCoords(this, aCP1x, aCP1y);\n    var cp2 = getCoords(this, aCP2x, aCP2y);\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  // Helper function that takes the already fixed cordinates.\n  function bezierCurveTo(self, cp1, cp2, p) {\n    self.currentPath_.push({\n      type: 'bezierCurveTo',\n      cp1x: cp1.x,\n      cp1y: cp1.y,\n      cp2x: cp2.x,\n      cp2y: cp2.y,\n      x: p.x,\n      y: p.y\n    });\n    self.currentX_ = p.x;\n    self.currentY_ = p.y;\n  }\n\n  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {\n    // the following is lifted almost directly from\n    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes\n\n    var cp = getCoords(this, aCPx, aCPy);\n    var p = getCoords(this, aX, aY);\n\n    var cp1 = {\n      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),\n      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)\n    };\n    var cp2 = {\n      x: cp1.x + (p.x - this.currentX_) / 3.0,\n      y: cp1.y + (p.y - this.currentY_) / 3.0\n    };\n\n    bezierCurveTo(this, cp1, cp2, p);\n  };\n\n  contextPrototype.arc = function(aX, aY, aRadius,\n                                  aStartAngle, aEndAngle, aClockwise) {\n    aRadius *= Z;\n    var arcType = aClockwise ? 'at' : 'wa';\n\n    var xStart = aX + mc(aStartAngle) * aRadius - Z2;\n    var yStart = aY + ms(aStartAngle) * aRadius - Z2;\n\n    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;\n    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;\n\n    // IE won't render arches drawn counter clockwise if xStart == xEnd.\n    if (xStart == xEnd && !aClockwise) {\n      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something\n                       // that can be represented in binary\n    }\n\n    var p = getCoords(this, aX, aY);\n    var pStart = getCoords(this, xStart, yStart);\n    var pEnd = getCoords(this, xEnd, yEnd);\n\n    this.currentPath_.push({type: arcType,\n                           x: p.x,\n                           y: p.y,\n                           radius: aRadius,\n                           xStart: pStart.x,\n                           yStart: pStart.y,\n                           xEnd: pEnd.x,\n                           yEnd: pEnd.y});\n\n  };\n\n  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n  };\n\n  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.stroke();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {\n    var oldPath = this.currentPath_;\n    this.beginPath();\n\n    this.moveTo(aX, aY);\n    this.lineTo(aX + aWidth, aY);\n    this.lineTo(aX + aWidth, aY + aHeight);\n    this.lineTo(aX, aY + aHeight);\n    this.closePath();\n    this.fill();\n\n    this.currentPath_ = oldPath;\n  };\n\n  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {\n    var gradient = new CanvasGradient_('gradient');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    return gradient;\n  };\n\n  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,\n                                                   aX1, aY1, aR1) {\n    var gradient = new CanvasGradient_('gradientradial');\n    gradient.x0_ = aX0;\n    gradient.y0_ = aY0;\n    gradient.r0_ = aR0;\n    gradient.x1_ = aX1;\n    gradient.y1_ = aY1;\n    gradient.r1_ = aR1;\n    return gradient;\n  };\n\n  contextPrototype.drawImage = function(image, var_args) {\n    var dx, dy, dw, dh, sx, sy, sw, sh;\n\n    // to find the original width we overide the width and height\n    var oldRuntimeWidth = image.runtimeStyle.width;\n    var oldRuntimeHeight = image.runtimeStyle.height;\n    image.runtimeStyle.width = 'auto';\n    image.runtimeStyle.height = 'auto';\n\n    // get the original size\n    var w = image.width;\n    var h = image.height;\n\n    // and remove overides\n    image.runtimeStyle.width = oldRuntimeWidth;\n    image.runtimeStyle.height = oldRuntimeHeight;\n\n    if (arguments.length == 3) {\n      dx = arguments[1];\n      dy = arguments[2];\n      sx = sy = 0;\n      sw = dw = w;\n      sh = dh = h;\n    } else if (arguments.length == 5) {\n      dx = arguments[1];\n      dy = arguments[2];\n      dw = arguments[3];\n      dh = arguments[4];\n      sx = sy = 0;\n      sw = w;\n      sh = h;\n    } else if (arguments.length == 9) {\n      sx = arguments[1];\n      sy = arguments[2];\n      sw = arguments[3];\n      sh = arguments[4];\n      dx = arguments[5];\n      dy = arguments[6];\n      dw = arguments[7];\n      dh = arguments[8];\n    } else {\n      throw Error('Invalid number of arguments');\n    }\n\n    var d = getCoords(this, dx, dy);\n\n    var w2 = sw / 2;\n    var h2 = sh / 2;\n\n    var vmlStr = [];\n\n    var W = 10;\n    var H = 10;\n\n    // For some reason that I've now forgotten, using divs didn't work\n    vmlStr.push(' <g_vml_:group',\n                ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                ' coordorigin=\"0,0\"' ,\n                ' style=\"width:', W, 'px;height:', H, 'px;position:absolute;');\n\n    // If filters are necessary (rotation exists), create them\n    // filters are bog-slow, so only create them if abbsolutely necessary\n    // The following check doesn't account for skews (which don't exist\n    // in the canvas spec (yet) anyway.\n\n    if (this.m_[0][0] != 1 || this.m_[0][1] ||\n        this.m_[1][1] != 1 || this.m_[1][0]) {\n      var filter = [];\n\n      // Note the 12/21 reversal\n      filter.push('M11=', this.m_[0][0], ',',\n                  'M12=', this.m_[1][0], ',',\n                  'M21=', this.m_[0][1], ',',\n                  'M22=', this.m_[1][1], ',',\n                  'Dx=', mr(d.x / Z), ',',\n                  'Dy=', mr(d.y / Z), '');\n\n      // Bounding box calculation (need to minimize displayed area so that\n      // filters don't waste time on unused pixels.\n      var max = d;\n      var c2 = getCoords(this, dx + dw, dy);\n      var c3 = getCoords(this, dx, dy + dh);\n      var c4 = getCoords(this, dx + dw, dy + dh);\n\n      max.x = m.max(max.x, c2.x, c3.x, c4.x);\n      max.y = m.max(max.y, c2.y, c3.y, c4.y);\n\n      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),\n                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',\n                  filter.join(''), \", sizingmethod='clip');\");\n\n    } else {\n      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');\n    }\n\n    vmlStr.push(' \">' ,\n                '<g_vml_:image src=\"', image.src, '\"',\n                ' style=\"width:', Z * dw, 'px;',\n                ' height:', Z * dh, 'px\"',\n                ' cropleft=\"', sx / w, '\"',\n                ' croptop=\"', sy / h, '\"',\n                ' cropright=\"', (w - sx - sw) / w, '\"',\n                ' cropbottom=\"', (h - sy - sh) / h, '\"',\n                ' />',\n                '</g_vml_:group>');\n\n    this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join(''));\n  };\n\n  contextPrototype.stroke = function(aFill) {\n    var W = 10;\n    var H = 10;\n    // Divide the shape into chunks if it's too long because IE has a limit\n    // somewhere for how long a VML shape can be. This simple division does\n    // not work with fills, only strokes, unfortunately.\n    var chunkSize = 5000;\n\n    var min = {x: null, y: null};\n    var max = {x: null, y: null};\n\n    for (var j = 0; j < this.currentPath_.length; j += chunkSize) {\n      var lineStr = [];\n      var lineOpen = false;\n\n      lineStr.push('<g_vml_:shape',\n                   ' filled=\"', !!aFill, '\"',\n                   ' style=\"position:absolute;width:', W, 'px;height:', H, 'px;\"',\n                   ' coordorigin=\"0,0\"',\n                   ' coordsize=\"', Z * W, ',', Z * H, '\"',\n                   ' stroked=\"', !aFill, '\"',\n                   ' path=\"');\n\n      var newSeq = false;\n\n      for (var i = j; i < Math.min(j + chunkSize, this.currentPath_.length); i++) {\n        if (i % chunkSize == 0 && i > 0) { // move into position for next chunk\n          lineStr.push(' m ', mr(this.currentPath_[i-1].x), ',', mr(this.currentPath_[i-1].y));\n        }\n\n        var p = this.currentPath_[i];\n        var c;\n\n        switch (p.type) {\n          case 'moveTo':\n            c = p;\n            lineStr.push(' m ', mr(p.x), ',', mr(p.y));\n            break;\n          case 'lineTo':\n            lineStr.push(' l ', mr(p.x), ',', mr(p.y));\n            break;\n          case 'close':\n            lineStr.push(' x ');\n            p = null;\n            break;\n          case 'bezierCurveTo':\n            lineStr.push(' c ',\n                         mr(p.cp1x), ',', mr(p.cp1y), ',',\n                         mr(p.cp2x), ',', mr(p.cp2y), ',',\n                         mr(p.x), ',', mr(p.y));\n            break;\n          case 'at':\n          case 'wa':\n            lineStr.push(' ', p.type, ' ',\n                         mr(p.x - this.arcScaleX_ * p.radius), ',',\n                         mr(p.y - this.arcScaleY_ * p.radius), ' ',\n                         mr(p.x + this.arcScaleX_ * p.radius), ',',\n                         mr(p.y + this.arcScaleY_ * p.radius), ' ',\n                         mr(p.xStart), ',', mr(p.yStart), ' ',\n                         mr(p.xEnd), ',', mr(p.yEnd));\n            break;\n        }\n  \n  \n        // TODO: Following is broken for curves due to\n        //       move to proper paths.\n  \n        // Figure out dimensions so we can do gradient fills\n        // properly\n        if (p) {\n          if (min.x == null || p.x < min.x) {\n            min.x = p.x;\n          }\n          if (max.x == null || p.x > max.x) {\n            max.x = p.x;\n          }\n          if (min.y == null || p.y < min.y) {\n            min.y = p.y;\n          }\n          if (max.y == null || p.y > max.y) {\n            max.y = p.y;\n          }\n        }\n      }\n      lineStr.push(' \">');\n  \n      if (!aFill) {\n        appendStroke(this, lineStr);\n      } else {\n        appendFill(this, lineStr, min, max);\n      }\n  \n      lineStr.push('</g_vml_:shape>');\n  \n      this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n    }\n  };\n\n  function appendStroke(ctx, lineStr) {\n    var a = processStyle(ctx.strokeStyle);\n    var color = a.color;\n    var opacity = a.alpha * ctx.globalAlpha;\n    var lineWidth = ctx.lineScale_ * ctx.lineWidth;\n\n    // VML cannot correctly render a line if the width is less than 1px.\n    // In that case, we dilute the color to make the line look thinner.\n    if (lineWidth < 1) {\n      opacity *= lineWidth;\n    }\n\n    lineStr.push(\n      '<g_vml_:stroke',\n      ' opacity=\"', opacity, '\"',\n      ' joinstyle=\"', ctx.lineJoin, '\"',\n      ' miterlimit=\"', ctx.miterLimit, '\"',\n      ' endcap=\"', processLineCap(ctx.lineCap), '\"',\n      ' weight=\"', lineWidth, 'px\"',\n      ' color=\"', color, '\" />'\n    );\n  }\n\n  function appendFill(ctx, lineStr, min, max) {\n    var fillStyle = ctx.fillStyle;\n    var arcScaleX = ctx.arcScaleX_;\n    var arcScaleY = ctx.arcScaleY_;\n    var width = max.x - min.x;\n    var height = max.y - min.y;\n    if (fillStyle instanceof CanvasGradient_) {\n      // TODO: Gradients transformed with the transformation matrix.\n      var angle = 0;\n      var focus = {x: 0, y: 0};\n\n      // additional offset\n      var shift = 0;\n      // scale factor for offset\n      var expansion = 1;\n\n      if (fillStyle.type_ == 'gradient') {\n        var x0 = fillStyle.x0_ / arcScaleX;\n        var y0 = fillStyle.y0_ / arcScaleY;\n        var x1 = fillStyle.x1_ / arcScaleX;\n        var y1 = fillStyle.y1_ / arcScaleY;\n        var p0 = getCoords(ctx, x0, y0);\n        var p1 = getCoords(ctx, x1, y1);\n        var dx = p1.x - p0.x;\n        var dy = p1.y - p0.y;\n        angle = Math.atan2(dx, dy) * 180 / Math.PI;\n\n        // The angle should be a non-negative number.\n        if (angle < 0) {\n          angle += 360;\n        }\n\n        // Very small angles produce an unexpected result because they are\n        // converted to a scientific notation string.\n        if (angle < 1e-6) {\n          angle = 0;\n        }\n      } else {\n        var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_);\n        focus = {\n          x: (p0.x - min.x) / width,\n          y: (p0.y - min.y) / height\n        };\n\n        width  /= arcScaleX * Z;\n        height /= arcScaleY * Z;\n        var dimension = m.max(width, height);\n        shift = 2 * fillStyle.r0_ / dimension;\n        expansion = 2 * fillStyle.r1_ / dimension - shift;\n      }\n\n      // We need to sort the color stops in ascending order by offset,\n      // otherwise IE won't interpret it correctly.\n      var stops = fillStyle.colors_;\n      stops.sort(function(cs1, cs2) {\n        return cs1.offset - cs2.offset;\n      });\n\n      var length = stops.length;\n      var color1 = stops[0].color;\n      var color2 = stops[length - 1].color;\n      var opacity1 = stops[0].alpha * ctx.globalAlpha;\n      var opacity2 = stops[length - 1].alpha * ctx.globalAlpha;\n\n      var colors = [];\n      for (var i = 0; i < length; i++) {\n        var stop = stops[i];\n        colors.push(stop.offset * expansion + shift + ' ' + stop.color);\n      }\n\n      // When colors attribute is used, the meanings of opacity and o:opacity2\n      // are reversed.\n      lineStr.push('<g_vml_:fill type=\"', fillStyle.type_, '\"',\n                   ' method=\"none\" focus=\"100%\"',\n                   ' color=\"', color1, '\"',\n                   ' color2=\"', color2, '\"',\n                   ' colors=\"', colors.join(','), '\"',\n                   ' opacity=\"', opacity2, '\"',\n                   ' g_o_:opacity2=\"', opacity1, '\"',\n                   ' angle=\"', angle, '\"',\n                   ' focusposition=\"', focus.x, ',', focus.y, '\" />');\n    } else if (fillStyle instanceof CanvasPattern_) {\n      if (width && height) {\n        var deltaLeft = -min.x;\n        var deltaTop = -min.y;\n        lineStr.push('<g_vml_:fill',\n                     ' position=\"',\n                     deltaLeft / width * arcScaleX * arcScaleX, ',',\n                     deltaTop / height * arcScaleY * arcScaleY, '\"',\n                     ' type=\"tile\"',\n                     // TODO: Figure out the correct size to fit the scale.\n                     //' size=\"', w, 'px ', h, 'px\"',\n                     ' src=\"', fillStyle.src_, '\" />');\n       }\n    } else {\n      var a = processStyle(ctx.fillStyle);\n      var color = a.color;\n      var opacity = a.alpha * ctx.globalAlpha;\n      lineStr.push('<g_vml_:fill color=\"', color, '\" opacity=\"', opacity,\n                   '\" />');\n    }\n  }\n\n  contextPrototype.fill = function() {\n    this.stroke(true);\n  };\n\n  contextPrototype.closePath = function() {\n    this.currentPath_.push({type: 'close'});\n  };\n\n  function getCoords(ctx, aX, aY) {\n    var m = ctx.m_;\n    return {\n      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,\n      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2\n    };\n  };\n\n  contextPrototype.save = function() {\n    var o = {};\n    copyState(this, o);\n    this.aStack_.push(o);\n    this.mStack_.push(this.m_);\n    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);\n  };\n\n  contextPrototype.restore = function() {\n    if (this.aStack_.length) {\n      copyState(this.aStack_.pop(), this);\n      this.m_ = this.mStack_.pop();\n    }\n  };\n\n  function matrixIsFinite(m) {\n    return isFinite(m[0][0]) && isFinite(m[0][1]) &&\n        isFinite(m[1][0]) && isFinite(m[1][1]) &&\n        isFinite(m[2][0]) && isFinite(m[2][1]);\n  }\n\n  function setM(ctx, m, updateLineScale) {\n    if (!matrixIsFinite(m)) {\n      return;\n    }\n    ctx.m_ = m;\n\n    if (updateLineScale) {\n      // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];\n      ctx.lineScale_ = sqrt(abs(det));\n    }\n  }\n\n  contextPrototype.translate = function(aX, aY) {\n    var m1 = [\n      [1,  0,  0],\n      [0,  1,  0],\n      [aX, aY, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.rotate = function(aRot) {\n    var c = mc(aRot);\n    var s = ms(aRot);\n\n    var m1 = [\n      [c,  s, 0],\n      [-s, c, 0],\n      [0,  0, 1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), false);\n  };\n\n  contextPrototype.scale = function(aX, aY) {\n    this.arcScaleX_ *= aX;\n    this.arcScaleY_ *= aY;\n    var m1 = [\n      [aX, 0,  0],\n      [0,  aY, 0],\n      [0,  0,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {\n    var m1 = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, matrixMultiply(m1, this.m_), true);\n  };\n\n  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {\n    var m = [\n      [m11, m12, 0],\n      [m21, m22, 0],\n      [dx,  dy,  1]\n    ];\n\n    setM(this, m, true);\n  };\n\n  /**\n   * The text drawing function.\n   * The maxWidth argument isn't taken in account, since no browser supports\n   * it yet.\n   */\n  contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) {\n    var m = this.m_,\n        delta = 1000,\n        left = 0,\n        right = delta,\n        offset = {x: 0, y: 0},\n        lineStr = [];\n\n    var fontStyle = getComputedStyle(processFontStyle(this.font),\n                                     this.element_);\n\n    var fontStyleString = buildStyle(fontStyle);\n\n    var elementStyle = this.element_.currentStyle;\n    var textAlign = this.textAlign.toLowerCase();\n    switch (textAlign) {\n      case 'left':\n      case 'center':\n      case 'right':\n        break;\n      case 'end':\n        textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left';\n        break;\n      case 'start':\n        textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left';\n        break;\n      default:\n        textAlign = 'left';\n    }\n\n    // 1.75 is an arbitrary number, as there is no info about the text baseline\n    switch (this.textBaseline) {\n      case 'hanging':\n      case 'top':\n        offset.y = fontStyle.size / 1.75;\n        break;\n      case 'middle':\n        break;\n      default:\n      case null:\n      case 'alphabetic':\n      case 'ideographic':\n      case 'bottom':\n        offset.y = -fontStyle.size / 2.25;\n        break;\n    }\n\n    switch(textAlign) {\n      case 'right':\n        left = delta;\n        right = 0.05;\n        break;\n      case 'center':\n        left = right = delta / 2;\n        break;\n    }\n\n    var d = getCoords(this, x + offset.x, y + offset.y);\n\n    lineStr.push('<g_vml_:line from=\"', -left ,' 0\" to=\"', right ,' 0.05\" ',\n                 ' coordsize=\"100 100\" coordorigin=\"0 0\"',\n                 ' filled=\"', !stroke, '\" stroked=\"', !!stroke,\n                 '\" style=\"position:absolute;width:1px;height:1px;\">');\n\n    if (stroke) {\n      appendStroke(this, lineStr);\n    } else {\n      // TODO: Fix the min and max params.\n      appendFill(this, lineStr, {x: -left, y: 0},\n                 {x: right, y: fontStyle.size});\n    }\n\n    var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' +\n                m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0';\n\n    var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z);\n\n    lineStr.push('<g_vml_:skew on=\"t\" matrix=\"', skewM ,'\" ',\n                 ' offset=\"', skewOffset, '\" origin=\"', left ,' 0\" />',\n                 '<g_vml_:path textpathok=\"true\" />',\n                 '<g_vml_:textpath on=\"true\" string=\"',\n                 encodeHtmlAttribute(text),\n                 '\" style=\"v-text-align:', textAlign,\n                 ';font:', encodeHtmlAttribute(fontStyleString),\n                 '\" /></g_vml_:line>');\n\n    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));\n  };\n\n  contextPrototype.fillText = function(text, x, y, maxWidth) {\n    this.drawText_(text, x, y, maxWidth, false);\n  };\n\n  contextPrototype.strokeText = function(text, x, y, maxWidth) {\n    this.drawText_(text, x, y, maxWidth, true);\n  };\n\n  contextPrototype.measureText = function(text) {\n    if (!this.textMeasureEl_) {\n      var s = '<span style=\"position:absolute;' +\n          'top:-20000px;left:0;padding:0;margin:0;border:none;' +\n          'white-space:pre;\"></span>';\n      this.element_.insertAdjacentHTML('beforeEnd', s);\n      this.textMeasureEl_ = this.element_.lastChild;\n    }\n    var doc = this.element_.ownerDocument;\n    this.textMeasureEl_.innerHTML = '';\n    this.textMeasureEl_.style.font = this.font;\n    // Don't use innerHTML or innerText because they allow markup/whitespace.\n    this.textMeasureEl_.appendChild(doc.createTextNode(text));\n    return {width: this.textMeasureEl_.offsetWidth};\n  };\n\n  /******** STUBS ********/\n  contextPrototype.clip = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.arcTo = function() {\n    // TODO: Implement\n  };\n\n  contextPrototype.createPattern = function(image, repetition) {\n    return new CanvasPattern_(image, repetition);\n  };\n\n  // Gradient / Pattern Stubs\n  function CanvasGradient_(aType) {\n    this.type_ = aType;\n    this.x0_ = 0;\n    this.y0_ = 0;\n    this.r0_ = 0;\n    this.x1_ = 0;\n    this.y1_ = 0;\n    this.r1_ = 0;\n    this.colors_ = [];\n  }\n\n  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {\n    aColor = processStyle(aColor);\n    this.colors_.push({offset: aOffset,\n                       color: aColor.color,\n                       alpha: aColor.alpha});\n  };\n\n  function CanvasPattern_(image, repetition) {\n    assertImageIsValid(image);\n    switch (repetition) {\n      case 'repeat':\n      case null:\n      case '':\n        this.repetition_ = 'repeat';\n        break\n      case 'repeat-x':\n      case 'repeat-y':\n      case 'no-repeat':\n        this.repetition_ = repetition;\n        break;\n      default:\n        throwException('SYNTAX_ERR');\n    }\n\n    this.src_ = image.src;\n    this.width_ = image.width;\n    this.height_ = image.height;\n  }\n\n  function throwException(s) {\n    throw new DOMException_(s);\n  }\n\n  function assertImageIsValid(img) {\n    if (!img || img.nodeType != 1 || img.tagName != 'IMG') {\n      throwException('TYPE_MISMATCH_ERR');\n    }\n    if (img.readyState != 'complete') {\n      throwException('INVALID_STATE_ERR');\n    }\n  }\n\n  function DOMException_(s) {\n    this.code = this[s];\n    this.message = s +': DOM Exception ' + this.code;\n  }\n  var p = DOMException_.prototype = new Error;\n  p.INDEX_SIZE_ERR = 1;\n  p.DOMSTRING_SIZE_ERR = 2;\n  p.HIERARCHY_REQUEST_ERR = 3;\n  p.WRONG_DOCUMENT_ERR = 4;\n  p.INVALID_CHARACTER_ERR = 5;\n  p.NO_DATA_ALLOWED_ERR = 6;\n  p.NO_MODIFICATION_ALLOWED_ERR = 7;\n  p.NOT_FOUND_ERR = 8;\n  p.NOT_SUPPORTED_ERR = 9;\n  p.INUSE_ATTRIBUTE_ERR = 10;\n  p.INVALID_STATE_ERR = 11;\n  p.SYNTAX_ERR = 12;\n  p.INVALID_MODIFICATION_ERR = 13;\n  p.NAMESPACE_ERR = 14;\n  p.INVALID_ACCESS_ERR = 15;\n  p.VALIDATION_ERR = 16;\n  p.TYPE_MISMATCH_ERR = 17;\n\n  // set up externs\n  G_vmlCanvasManager = G_vmlCanvasManager_;\n  CanvasRenderingContext2D = CanvasRenderingContext2D_;\n  CanvasGradient = CanvasGradient_;\n  CanvasPattern = CanvasPattern_;\n  DOMException = DOMException_;\n})();\n\n} // if\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/excanvas.min.js",
    "content": "if(!document.createElement(\"canvas\").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,\"#default#VML\")}}function R(j){Y(j,\"g_vml_\",\"urn:schemas-microsoft-com:vml\");Y(j,\"g_o_\",\"urn:schemas-microsoft-com:office:office\");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id=\"ex_canvas_\";i.cssText=\"canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}\"}}R(document);var e={init:function(i){var j=i||document;j.createElement(\"canvas\");j.attachEvent(\"onreadystatechange\",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName(\"canvas\");for(var j=0;j<m.length;j++){this.initElement(m[j])}},initElement:function(j){if(!j.getContext){j.getContext=y;R(j.ownerDocument);j.innerHTML=\"\";j.attachEvent(\"onpropertychange\",x);j.attachEvent(\"onresize\",W);var i=j.attributes;if(i.width&&i.width.specified){j.style.width=i.width.nodeValue+\"px\"}else{j.width=j.clientWidth}if(i.height&&i.height.specified){j.style.height=i.height.nodeValue+\"px\"}else{j.height=j.clientHeight}}return j}};function x(j){var i=j.srcElement;switch(j.propertyName){case\"width\":i.getContext().clearRect();i.style.width=i.attributes.width.nodeValue+\"px\";i.firstChild.style.width=i.clientWidth+\"px\";break;case\"height\":i.getContext().clearRect();i.style.height=i.attributes.height.nodeValue+\"px\";i.firstChild.style.height=i.clientHeight+\"px\";break}}function W(j){var i=j.srcElement;if(i.firstChild){i.firstChild.style.width=i.clientWidth+\"px\";i.firstChild.style.height=i.clientHeight+\"px\"}}e.init();var k=[];for(var ae=0;ae<16;ae++){for(var ad=0;ad<16;ad++){k[ae*16+ad]=ae.toString(16)+ad.toString(16)}}function B(){return[[1,0,0],[0,1,0],[0,0,1]]}function J(p,m){var j=B();for(var i=0;i<3;i++){for(var ah=0;ah<3;ah++){var Z=0;for(var ag=0;ag<3;ag++){Z+=p[i][ag]*m[ag][ah]}j[i][ah]=Z}}return j}function v(j,i){i.fillStyle=j.fillStyle;i.lineCap=j.lineCap;i.lineJoin=j.lineJoin;i.lineWidth=j.lineWidth;i.miterLimit=j.miterLimit;i.shadowBlur=j.shadowBlur;i.shadowColor=j.shadowColor;i.shadowOffsetX=j.shadowOffsetX;i.shadowOffsetY=j.shadowOffsetY;i.strokeStyle=j.strokeStyle;i.globalAlpha=j.globalAlpha;i.font=j.font;i.textAlign=j.textAlign;i.textBaseline=j.textBaseline;i.arcScaleX_=j.arcScaleX_;i.arcScaleY_=j.arcScaleY_;i.lineScale_=j.lineScale_}var b={aliceblue:\"#F0F8FF\",antiquewhite:\"#FAEBD7\",aquamarine:\"#7FFFD4\",azure:\"#F0FFFF\",beige:\"#F5F5DC\",bisque:\"#FFE4C4\",black:\"#000000\",blanchedalmond:\"#FFEBCD\",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\",darkgrey:\"#A9A9A9\",darkkhaki:\"#BDB76B\",darkmagenta:\"#8B008B\",darkolivegreen:\"#556B2F\",darkorange:\"#FF8C00\",darkorchid:\"#9932CC\",darkred:\"#8B0000\",darksalmon:\"#E9967A\",darkseagreen:\"#8FBC8F\",darkslateblue:\"#483D8B\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",darkturquoise:\"#00CED1\",darkviolet:\"#9400D3\",deeppink:\"#FF1493\",deepskyblue:\"#00BFFF\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1E90FF\",firebrick:\"#B22222\",floralwhite:\"#FFFAF0\",forestgreen:\"#228B22\",gainsboro:\"#DCDCDC\",ghostwhite:\"#F8F8FF\",gold:\"#FFD700\",goldenrod:\"#DAA520\",grey:\"#808080\",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\",lightgreen:\"#90EE90\",lightgrey:\"#D3D3D3\",lightpink:\"#FFB6C1\",lightsalmon:\"#FFA07A\",lightseagreen:\"#20B2AA\",lightskyblue:\"#87CEFA\",lightslategray:\"#778899\",lightslategrey:\"#778899\",lightsteelblue:\"#B0C4DE\",lightyellow:\"#FFFFE0\",limegreen:\"#32CD32\",linen:\"#FAF0E6\",magenta:\"#FF00FF\",mediumaquamarine:\"#66CDAA\",mediumblue:\"#0000CD\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",mediumseagreen:\"#3CB371\",mediumslateblue:\"#7B68EE\",mediumspringgreen:\"#00FA9A\",mediumturquoise:\"#48D1CC\",mediumvioletred:\"#C71585\",midnightblue:\"#191970\",mintcream:\"#F5FFFA\",mistyrose:\"#FFE4E1\",moccasin:\"#FFE4B5\",navajowhite:\"#FFDEAD\",oldlace:\"#FDF5E6\",olivedrab:\"#6B8E23\",orange:\"#FFA500\",orangered:\"#FF4500\",orchid:\"#DA70D6\",palegoldenrod:\"#EEE8AA\",palegreen:\"#98FB98\",paleturquoise:\"#AFEEEE\",palevioletred:\"#DB7093\",papayawhip:\"#FFEFD5\",peachpuff:\"#FFDAB9\",peru:\"#CD853F\",pink:\"#FFC0CB\",plum:\"#DDA0DD\",powderblue:\"#B0E0E6\",rosybrown:\"#BC8F8F\",royalblue:\"#4169E1\",saddlebrown:\"#8B4513\",salmon:\"#FA8072\",sandybrown:\"#F4A460\",seagreen:\"#2E8B57\",seashell:\"#FFF5EE\",sienna:\"#A0522D\",skyblue:\"#87CEEB\",slateblue:\"#6A5ACD\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#FFFAFA\",springgreen:\"#00FF7F\",steelblue:\"#4682B4\",tan:\"#D2B48C\",thistle:\"#D8BFD8\",tomato:\"#FF6347\",turquoise:\"#40E0D0\",violet:\"#EE82EE\",wheat:\"#F5DEB3\",whitesmoke:\"#F5F5F5\",yellowgreen:\"#9ACD32\"};function M(j){var p=j.indexOf(\"(\",3);var i=j.indexOf(\")\",p+1);var m=j.substring(p+1,i).split(\",\");if(m.length!=4||j.charAt(3)!=\"a\"){m[3]=1}return m}function c(i){return parseFloat(i)/100}function r(j,m,i){return Math.min(i,Math.max(m,j))}function I(ag){var i,ai,aj,ah,ak,Z;ah=parseFloat(ag[0])/360%360;if(ah<0){ah++}ak=r(c(ag[1]),0,1);Z=r(c(ag[2]),0,1);if(ak==0){i=ai=aj=Z}else{var j=Z<0.5?Z*(1+ak):Z+ak-Z*ak;var m=2*Z-j;i=a(m,j,ah+1/3);ai=a(m,j,ah);aj=a(m,j,ah-1/3)}return\"#\"+k[Math.floor(i*255)]+k[Math.floor(ai*255)]+k[Math.floor(aj*255)]}function a(j,i,m){if(m<0){m++}if(m>1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)==\"#\"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag=\"#\",ah;for(var m=0;m<3;m++){if(p[m].indexOf(\"%\")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:\"normal\",variant:\"normal\",weight:\"normal\",size:10,family:\"sans-serif\"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement(\"div\");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size==\"number\"){i.size=m.size}else{if(m.size.indexOf(\"px\")!=-1){i.size=Z}else{if(m.size.indexOf(\"em\")!=-1){i.size=ag*Z}else{if(m.size.indexOf(\"%\")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf(\"pt\")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+\" \"+i.variant+\" \"+i.weight+\" \"+i.size+\"px \"+i.family}var s={butt:\"flat\",round:\"round\"};function S(i){return s[i]||\"square\"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle=\"#000\";this.fillStyle=\"#000\";this.lineWidth=1;this.lineJoin=\"miter\";this.lineCap=\"butt\";this.miterLimit=d*1;this.globalAlpha=1;this.font=\"10px sans-serif\";this.textAlign=\"left\";this.textBaseline=\"alphabetic\";this.canvas=i;var m=\"width:\"+i.clientWidth+\"px;height:\"+i.clientHeight+\"px;overflow:hidden;position:absolute\";var j=i.ownerDocument.createElement(\"div\");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor=\"red\";p.style.filter=\"alpha(opacity=0)\";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=\"\"};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:\"moveTo\",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:\"lineTo\",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:\"bezierCurveTo\",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?\"at\":\"wa\";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U(\"gradient\");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U(\"gradientradial\");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width=\"auto\";aq.runtimeStyle.height=\"auto\";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error(\"Invalid number of arguments\")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(\" <g_vml_:group\",' coordsize=\"',d*i,\",\",d*ag,'\"',' coordorigin=\"0,0\"',' style=\"width:',i,\"px;height:\",ag,\"px;position:absolute;\");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var Z=[];Z.push(\"M11=\",this.m_[0][0],\",\",\"M12=\",this.m_[1][0],\",\",\"M21=\",this.m_[0][1],\",\",\"M22=\",this.m_[1][1],\",\",\"Dx=\",n(az.x/d),\",\",\"Dy=\",n(az.y/d),\"\");var av=az;var au=V(this,aj+al,ah);var ar=V(this,aj,ah+ay);var an=V(this,aj+al,ah+ay);av.x=ab.max(av.x,au.x,ar.x,an.x);av.y=ab.max(av.y,au.y,ar.y,an.y);ax.push(\"padding:0 \",n(av.x/d),\"px \",n(av.y/d),\"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(\",Z.join(\"\"),\", sizingmethod='clip');\")}else{ax.push(\"top:\",n(az.y/d),\"px;left:\",n(az.x/d),\"px;\")}ax.push(' \">','<g_vml_:image src=\"',aq.src,'\"',' style=\"width:',d*al,\"px;\",\" height:\",d*ay,'px\"',' cropleft=\"',ao/ai,'\"',' croptop=\"',am/aw,'\"',' cropright=\"',(ai-ao-at)/ai,'\"',' cropbottom=\"',(aw-am-aA)/aw,'\"',\" />\",\"</g_vml_:group>\");this.element_.insertAdjacentHTML(\"BeforeEnd\",ax.join(\"\"))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;aj<this.currentPath_.length;aj+=ag){var am=[];var ah=false;am.push(\"<g_vml_:shape\",' filled=\"',!!ao,'\"',' style=\"position:absolute;width:',Z,\"px;height:\",ap,'px;\"',' coordorigin=\"0,0\"',' coordsize=\"',d*Z,\",\",d*ap,'\"',' stroked=\"',!ao,'\"',' path=\"');var aq=false;for(var ak=aj;ak<Math.min(aj+ag,this.currentPath_.length);ak++){if(ak%ag==0&&ak>0){am.push(\" m \",n(this.currentPath_[ak-1].x),\",\",n(this.currentPath_[ak-1].y))}var m=this.currentPath_[ak];var al;switch(m.type){case\"moveTo\":al=m;am.push(\" m \",n(m.x),\",\",n(m.y));break;case\"lineTo\":am.push(\" l \",n(m.x),\",\",n(m.y));break;case\"close\":am.push(\" x \");m=null;break;case\"bezierCurveTo\":am.push(\" c \",n(m.cp1x),\",\",n(m.cp1y),\",\",n(m.cp2x),\",\",n(m.cp2y),\",\",n(m.x),\",\",n(m.y));break;case\"at\":case\"wa\":am.push(\" \",m.type,\" \",n(m.x-this.arcScaleX_*m.radius),\",\",n(m.y-this.arcScaleY_*m.radius),\" \",n(m.x+this.arcScaleX_*m.radius),\",\",n(m.y+this.arcScaleY_*m.radius),\" \",n(m.xStart),\",\",n(m.yStart),\" \",n(m.xEnd),\",\",n(m.yEnd));break}if(m){if(ai.x==null||m.x<ai.x){ai.x=m.x}if(an.x==null||m.x>an.x){an.x=m.x}if(ai.y==null||m.y<ai.y){ai.y=m.y}if(an.y==null||m.y>an.y){an.y=m.y}}}am.push(' \">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push(\"</g_vml_:shape>\");this.element_.insertAdjacentHTML(\"beforeEnd\",am.join(\"\"))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push(\"<g_vml_:stroke\",' opacity=\"',Z,'\"',' joinstyle=\"',m.lineJoin,'\"',' miterlimit=\"',m.miterLimit,'\"',' endcap=\"',S(m.lineCap),'\"',' weight=\"',i,'px\"',' color=\"',p,'\" />')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_==\"gradient\"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH<ap;aH++){var ao=av[aH];aE.push(ao.offset*am+ax+\" \"+ao.color)}ai.push('<g_vml_:fill type=\"',aj.type_,'\"',' method=\"none\" focus=\"100%\"',' color=\"',au,'\"',' color2=\"',at,'\"',' colors=\"',aE.join(\",\"),'\"',' opacity=\"',ay,'\"',' g_o_:opacity2=\"',az,'\"',' angle=\"',an,'\"',' focusposition=\"',aF.x,\",\",aF.y,'\" />')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push(\"<g_vml_:fill\",' position=\"',ah/j*aB*aB,\",\",aC/p*aA*aA,'\"',' type=\"tile\"',' src=\"',aj.src_,'\" />')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('<g_vml_:fill color=\"',aw,'\" opacity=\"',aG,'\" />')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:\"close\"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case\"left\":case\"center\":case\"right\":break;case\"end\":Z=au.direction==\"ltr\"?\"right\":\"left\";break;case\"start\":Z=au.direction==\"rtl\"?\"right\":\"left\";break;default:Z=\"left\"}switch(this.textBaseline){case\"hanging\":case\"top\":ah.y=i.size/1.75;break;case\"middle\":break;default:case null:case\"alphabetic\":case\"ideographic\":case\"bottom\":ah.y=-i.size/2.25;break}switch(Z){case\"right\":j=at;ar=0.05;break;case\"center\":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('<g_vml_:line from=\"',-j,' 0\" to=\"',ar,' 0.05\" ',' coordsize=\"100 100\" coordorigin=\"0 0\"',' filled=\"',!ai,'\" stroked=\"',!!ai,'\" style=\"position:absolute;width:1px;height:1px;\">');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+\",\"+ao[1][0].toFixed(3)+\",\"+ao[0][1].toFixed(3)+\",\"+ao[1][1].toFixed(3)+\",0,0\";var al=n(aq.x/d)+\",\"+n(aq.y/d);ag.push('<g_vml_:skew on=\"t\" matrix=\"',an,'\" ',' offset=\"',al,'\" origin=\"',j,' 0\" />','<g_vml_:path textpathok=\"true\" />','<g_vml_:textpath on=\"true\" string=\"',af(am),'\" style=\"v-text-align:',Z,\";font:\",af(p),'\" /></g_vml_:line>');this.element_.insertAdjacentHTML(\"beforeEnd\",ag.join(\"\"))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='<span style=\"position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;\"></span>';this.element_.insertAdjacentHTML(\"beforeEnd\",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML=\"\";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case\"repeat\":case null:case\"\":this.repetition_=\"repeat\";break;case\"repeat-x\":case\"repeat-y\":case\"no-repeat\":this.repetition_=i;break;default:O(\"SYNTAX_ERR\")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!=\"IMG\"){O(\"TYPE_MISMATCH_ERR\")}if(i.readyState!=\"complete\"){O(\"INVALID_STATE_ERR\")}}function P(i){this.code=this[i];this.message=i+\": DOM Exception \"+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()};"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/flot.jquery.json",
    "content": "{\n\t\"name\": \"flot\",\n\t\"version\": \"0.8.3\",\n\t\"title\": \"Flot\",\n\t\"author\": {\n\t\t\"name\": \"Ole Laursen\",\n\t\t\"url\": \"https://github.com/OleLaursen\"\n\t},\n\t\"licenses\": [{\n\t\t\"type\": \"MIT\",\n\t\t\"url\": \"http://github.com/flot/flot/blob/master/LICENSE.txt\"\n\t}],\n\t\"dependencies\": {\n\t\t\"jquery\": \">=1.2.6\"\n\t},\n\t\"description\": \"Flot is a pure JavaScript plotting library for jQuery, with a focus on simple usage, attractive looks and interactive features.\",\n\t\"keywords\": [\"plot\", \"chart\", \"graph\", \"visualization\", \"canvas\", \"graphics\"],\n\t\"homepage\": \"http://www.flotcharts.org\",\n\t\"docs\": \"http://github.com/flot/flot/blob/master/API.md\",\n\t\"demo\": \"http://www.flotcharts.org/flot/examples/\",\n\t\"bugs\": \"http://github.com/flot/flot/issues\",\n\t\"maintainers\": [{\n\t\t\"name\": \"David Schnur\",\n\t\t\"email\": \"dnschnur@gmail.com\",\n\t\t\"url\": \"http://github.com/dnschnur\"\n\t}]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.colorhelpers.js",
    "content": "/* Plugin for jQuery for working with colors.\n * \n * Version 1.1.\n * \n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */ \n\n(function($) {\n    $.color = {};\n\n    // construct color object with some convenient chainable helpers\n    $.color.make = function (r, g, b, a) {\n        var o = {};\n        o.r = r || 0;\n        o.g = g || 0;\n        o.b = b || 0;\n        o.a = a != null ? a : 1;\n\n        o.add = function (c, d) {\n            for (var i = 0; i < c.length; ++i)\n                o[c.charAt(i)] += d;\n            return o.normalize();\n        };\n        \n        o.scale = function (c, f) {\n            for (var i = 0; i < c.length; ++i)\n                o[c.charAt(i)] *= f;\n            return o.normalize();\n        };\n        \n        o.toString = function () {\n            if (o.a >= 1.0) {\n                return \"rgb(\"+[o.r, o.g, o.b].join(\",\")+\")\";\n            } else {\n                return \"rgba(\"+[o.r, o.g, o.b, o.a].join(\",\")+\")\";\n            }\n        };\n\n        o.normalize = function () {\n            function clamp(min, value, max) {\n                return value < min ? min: (value > max ? max: value);\n            }\n            \n            o.r = clamp(0, parseInt(o.r), 255);\n            o.g = clamp(0, parseInt(o.g), 255);\n            o.b = clamp(0, parseInt(o.b), 255);\n            o.a = clamp(0, o.a, 1);\n            return o;\n        };\n\n        o.clone = function () {\n            return $.color.make(o.r, o.b, o.g, o.a);\n        };\n\n        return o.normalize();\n    }\n\n    // extract CSS color property from element, going up in the DOM\n    // if it's \"transparent\"\n    $.color.extract = function (elem, css) {\n        var c;\n\n        do {\n            c = elem.css(css).toLowerCase();\n            // keep going until we find an element that has color, or\n            // we hit the body or root (have no parent)\n            if (c != '' && c != 'transparent')\n                break;\n            elem = elem.parent();\n        } while (elem.length && !$.nodeName(elem.get(0), \"body\"));\n\n        // catch Safari's way of signalling transparent\n        if (c == \"rgba(0, 0, 0, 0)\")\n            c = \"transparent\";\n        \n        return $.color.parse(c);\n    }\n    \n    // parse CSS color string (like \"rgb(10, 32, 43)\" or \"#fff\"),\n    // returns color object, if parsing failed, you get black (0, 0,\n    // 0) out\n    $.color.parse = function (str) {\n        var res, m = $.color.make;\n\n        // Look for rgb(num,num,num)\n        if (res = /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(str))\n            return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10));\n        \n        // Look for rgba(num,num,num,num)\n        if (res = /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))\n            return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4]));\n            \n        // Look for rgb(num%,num%,num%)\n        if (res = /rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(str))\n            return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55);\n\n        // Look for rgba(num%,num%,num%,num)\n        if (res = /rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))\n            return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4]));\n        \n        // Look for #a0b1c2\n        if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))\n            return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16));\n\n        // Look for #fff\n        if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))\n            return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16));\n\n        // Otherwise, we're most likely dealing with a named color\n        var name = $.trim(str).toLowerCase();\n        if (name == \"transparent\")\n            return m(255, 255, 255, 0);\n        else {\n            // default to black\n            res = lookupColors[name] || [0, 0, 0];\n            return m(res[0], res[1], res[2]);\n        }\n    }\n    \n    var lookupColors = {\n        aqua:[0,255,255],\n        azure:[240,255,255],\n        beige:[245,245,220],\n        black:[0,0,0],\n        blue:[0,0,255],\n        brown:[165,42,42],\n        cyan:[0,255,255],\n        darkblue:[0,0,139],\n        darkcyan:[0,139,139],\n        darkgrey:[169,169,169],\n        darkgreen:[0,100,0],\n        darkkhaki:[189,183,107],\n        darkmagenta:[139,0,139],\n        darkolivegreen:[85,107,47],\n        darkorange:[255,140,0],\n        darkorchid:[153,50,204],\n        darkred:[139,0,0],\n        darksalmon:[233,150,122],\n        darkviolet:[148,0,211],\n        fuchsia:[255,0,255],\n        gold:[255,215,0],\n        green:[0,128,0],\n        indigo:[75,0,130],\n        khaki:[240,230,140],\n        lightblue:[173,216,230],\n        lightcyan:[224,255,255],\n        lightgreen:[144,238,144],\n        lightgrey:[211,211,211],\n        lightpink:[255,182,193],\n        lightyellow:[255,255,224],\n        lime:[0,255,0],\n        magenta:[255,0,255],\n        maroon:[128,0,0],\n        navy:[0,0,128],\n        olive:[128,128,0],\n        orange:[255,165,0],\n        pink:[255,192,203],\n        purple:[128,0,128],\n        violet:[128,0,128],\n        red:[255,0,0],\n        silver:[192,192,192],\n        white:[255,255,255],\n        yellow:[255,255,0]\n    };\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.canvas.js",
    "content": "/* Flot plugin for drawing all elements of a plot on the canvas.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nFlot normally produces certain elements, like axis labels and the legend, using\nHTML elements. This permits greater interactivity and customization, and often\nlooks better, due to cross-browser canvas text inconsistencies and limitations.\n\nIt can also be desirable to render the plot entirely in canvas, particularly\nif the goal is to save it as an image, or if Flot is being used in a context\nwhere the HTML DOM does not exist, as is the case within Node.js. This plugin\nswitches out Flot's standard drawing operations for canvas-only replacements.\n\nCurrently the plugin supports only axis labels, but it will eventually allow\nevery element of the plot to be rendered directly to canvas.\n\nThe plugin supports these options:\n\n{\n    canvas: boolean\n}\n\nThe \"canvas\" option controls whether full canvas drawing is enabled, making it\npossible to toggle on and off. This is useful when a plot uses HTML text in the\nbrowser, but needs to redraw with canvas text when exporting as an image.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\tcanvas: true\n\t};\n\n\tvar render, getTextInfo, addText;\n\n\t// Cache the prototype hasOwnProperty for faster access\n\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\tfunction init(plot, classes) {\n\n\t\tvar Canvas = classes.Canvas;\n\n\t\t// We only want to replace the functions once; the second time around\n\t\t// we would just get our new function back.  This whole replacing of\n\t\t// prototype functions is a disaster, and needs to be changed ASAP.\n\n\t\tif (render == null) {\n\t\t\tgetTextInfo = Canvas.prototype.getTextInfo,\n\t\t\taddText = Canvas.prototype.addText,\n\t\t\trender = Canvas.prototype.render;\n\t\t}\n\n\t\t// Finishes rendering the canvas, including overlaid text\n\n\t\tCanvas.prototype.render = function() {\n\n\t\t\tif (!plot.getOptions().canvas) {\n\t\t\t\treturn render.call(this);\n\t\t\t}\n\n\t\t\tvar context = this.context,\n\t\t\t\tcache = this._textCache;\n\n\t\t\t// For each text layer, render elements marked as active\n\n\t\t\tcontext.save();\n\t\t\tcontext.textBaseline = \"middle\";\n\n\t\t\tfor (var layerKey in cache) {\n\t\t\t\tif (hasOwnProperty.call(cache, layerKey)) {\n\t\t\t\t\tvar layerCache = cache[layerKey];\n\t\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\t\tvar styleCache = layerCache[styleKey],\n\t\t\t\t\t\t\t\tupdateStyles = true;\n\t\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\n\t\t\t\t\t\t\t\t\tvar info = styleCache[key],\n\t\t\t\t\t\t\t\t\t\tpositions = info.positions,\n\t\t\t\t\t\t\t\t\t\tlines = info.lines;\n\n\t\t\t\t\t\t\t\t\t// Since every element at this level of the cache have the\n\t\t\t\t\t\t\t\t\t// same font and fill styles, we can just change them once\n\t\t\t\t\t\t\t\t\t// using the values from the first element.\n\n\t\t\t\t\t\t\t\t\tif (updateStyles) {\n\t\t\t\t\t\t\t\t\t\tcontext.fillStyle = info.font.color;\n\t\t\t\t\t\t\t\t\t\tcontext.font = info.font.definition;\n\t\t\t\t\t\t\t\t\t\tupdateStyles = false;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\t\tif (position.active) {\n\t\t\t\t\t\t\t\t\t\t\tfor (var j = 0, line; line = position.lines[j]; j++) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontext.fillText(lines[j].text, line[0], line[1]);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tpositions.splice(i--, 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (positions.length == 0) {\n\t\t\t\t\t\t\t\t\t\tdelete styleCache[key];\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\n\t\t\tcontext.restore();\n\t\t};\n\n\t\t// Creates (if necessary) and returns a text info object.\n\t\t//\n\t\t// When the canvas option is set, the object looks like this:\n\t\t//\n\t\t// {\n\t\t//     width: Width of the text's bounding box.\n\t\t//     height: Height of the text's bounding box.\n\t\t//     positions: Array of positions at which this text is drawn.\n\t\t//     lines: [{\n\t\t//         height: Height of this line.\n\t\t//         widths: Width of this line.\n\t\t//         text: Text on this line.\n\t\t//     }],\n\t\t//     font: {\n\t\t//         definition: Canvas font property string.\n\t\t//         color: Color of the text.\n\t\t//     },\n\t\t// }\n\t\t//\n\t\t// The positions array contains objects that look like this:\n\t\t//\n\t\t// {\n\t\t//     active: Flag indicating whether the text should be visible.\n\t\t//     lines: Array of [x, y] coordinates at which to draw the line.\n\t\t//     x: X coordinate at which to draw the text.\n\t\t//     y: Y coordinate at which to draw the text.\n\t\t// }\n\n\t\tCanvas.prototype.getTextInfo = function(layer, text, font, angle, width) {\n\n\t\t\tif (!plot.getOptions().canvas) {\n\t\t\t\treturn getTextInfo.call(this, layer, text, font, angle, width);\n\t\t\t}\n\n\t\t\tvar textStyle, layerCache, styleCache, info;\n\n\t\t\t// Cast the value to a string, in case we were given a number\n\n\t\t\ttext = \"\" + text;\n\n\t\t\t// If the font is a font-spec object, generate a CSS definition\n\n\t\t\tif (typeof font === \"object\") {\n\t\t\t\ttextStyle = font.style + \" \" + font.variant + \" \" + font.weight + \" \" + font.size + \"px \" + font.family;\n\t\t\t} else {\n\t\t\t\ttextStyle = font;\n\t\t\t}\n\n\t\t\t// Retrieve (or create) the cache for the text's layer and styles\n\n\t\t\tlayerCache = this._textCache[layer];\n\n\t\t\tif (layerCache == null) {\n\t\t\t\tlayerCache = this._textCache[layer] = {};\n\t\t\t}\n\n\t\t\tstyleCache = layerCache[textStyle];\n\n\t\t\tif (styleCache == null) {\n\t\t\t\tstyleCache = layerCache[textStyle] = {};\n\t\t\t}\n\n\t\t\tinfo = styleCache[text];\n\n\t\t\tif (info == null) {\n\n\t\t\t\tvar context = this.context;\n\n\t\t\t\t// If the font was provided as CSS, create a div with those\n\t\t\t\t// classes and examine it to generate a canvas font spec.\n\n\t\t\t\tif (typeof font !== \"object\") {\n\n\t\t\t\t\tvar element = $(\"<div>&nbsp;</div>\")\n\t\t\t\t\t\t.css(\"position\", \"absolute\")\n\t\t\t\t\t\t.addClass(typeof font === \"string\" ? font : null)\n\t\t\t\t\t\t.appendTo(this.getTextLayer(layer));\n\n\t\t\t\t\tfont = {\n\t\t\t\t\t\tlineHeight: element.height(),\n\t\t\t\t\t\tstyle: element.css(\"font-style\"),\n\t\t\t\t\t\tvariant: element.css(\"font-variant\"),\n\t\t\t\t\t\tweight: element.css(\"font-weight\"),\n\t\t\t\t\t\tfamily: element.css(\"font-family\"),\n\t\t\t\t\t\tcolor: element.css(\"color\")\n\t\t\t\t\t};\n\n\t\t\t\t\t// Setting line-height to 1, without units, sets it equal\n\t\t\t\t\t// to the font-size, even if the font-size is abstract,\n\t\t\t\t\t// like 'smaller'.  This enables us to read the real size\n\t\t\t\t\t// via the element's height, working around browsers that\n\t\t\t\t\t// return the literal 'smaller' value.\n\n\t\t\t\t\tfont.size = element.css(\"line-height\", 1).height();\n\n\t\t\t\t\telement.remove();\n\t\t\t\t}\n\n\t\t\t\ttextStyle = font.style + \" \" + font.variant + \" \" + font.weight + \" \" + font.size + \"px \" + font.family;\n\n\t\t\t\t// Create a new info object, initializing the dimensions to\n\t\t\t\t// zero so we can count them up line-by-line.\n\n\t\t\t\tinfo = styleCache[text] = {\n\t\t\t\t\twidth: 0,\n\t\t\t\t\theight: 0,\n\t\t\t\t\tpositions: [],\n\t\t\t\t\tlines: [],\n\t\t\t\t\tfont: {\n\t\t\t\t\t\tdefinition: textStyle,\n\t\t\t\t\t\tcolor: font.color\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.font = textStyle;\n\n\t\t\t\t// Canvas can't handle multi-line strings; break on various\n\t\t\t\t// newlines, including HTML brs, to build a list of lines.\n\t\t\t\t// Note that we could split directly on regexps, but IE < 9 is\n\t\t\t\t// broken; revisit when we drop IE 7/8 support.\n\n\t\t\t\tvar lines = (text + \"\").replace(/<br ?\\/?>|\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n\n\t\t\t\tfor (var i = 0; i < lines.length; ++i) {\n\n\t\t\t\t\tvar lineText = lines[i],\n\t\t\t\t\t\tmeasured = context.measureText(lineText);\n\n\t\t\t\t\tinfo.width = Math.max(measured.width, info.width);\n\t\t\t\t\tinfo.height += font.lineHeight;\n\n\t\t\t\t\tinfo.lines.push({\n\t\t\t\t\t\ttext: lineText,\n\t\t\t\t\t\twidth: measured.width,\n\t\t\t\t\t\theight: font.lineHeight\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\treturn info;\n\t\t};\n\n\t\t// Adds a text string to the canvas text overlay.\n\n\t\tCanvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) {\n\n\t\t\tif (!plot.getOptions().canvas) {\n\t\t\t\treturn addText.call(this, layer, x, y, text, font, angle, width, halign, valign);\n\t\t\t}\n\n\t\t\tvar info = this.getTextInfo(layer, text, font, angle, width),\n\t\t\t\tpositions = info.positions,\n\t\t\t\tlines = info.lines;\n\n\t\t\t// Text is drawn with baseline 'middle', which we need to account\n\t\t\t// for by adding half a line's height to the y position.\n\n\t\t\ty += info.height / lines.length / 2;\n\n\t\t\t// Tweak the initial y-position to match vertical alignment\n\n\t\t\tif (valign == \"middle\") {\n\t\t\t\ty = Math.round(y - info.height / 2);\n\t\t\t} else if (valign == \"bottom\") {\n\t\t\t\ty = Math.round(y - info.height);\n\t\t\t} else {\n\t\t\t\ty = Math.round(y);\n\t\t\t}\n\n\t\t\t// FIXME: LEGACY BROWSER FIX\n\t\t\t// AFFECTS: Opera < 12.00\n\n\t\t\t// Offset the y coordinate, since Opera is off pretty\n\t\t\t// consistently compared to the other browsers.\n\n\t\t\tif (!!(window.opera && window.opera.version().split(\".\")[0] < 12)) {\n\t\t\t\ty -= 2;\n\t\t\t}\n\n\t\t\t// Determine whether this text already exists at this position.\n\t\t\t// If so, mark it for inclusion in the next render pass.\n\n\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\t\tposition.active = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the text doesn't exist at this position, create a new entry\n\n\t\t\tposition = {\n\t\t\t\tactive: true,\n\t\t\t\tlines: [],\n\t\t\t\tx: x,\n\t\t\t\ty: y\n\t\t\t};\n\n\t\t\tpositions.push(position);\n\n\t\t\t// Fill in the x & y positions of each line, adjusting them\n\t\t\t// individually for horizontal alignment.\n\n\t\t\tfor (var i = 0, line; line = lines[i]; i++) {\n\t\t\t\tif (halign == \"center\") {\n\t\t\t\t\tposition.lines.push([Math.round(x - line.width / 2), y]);\n\t\t\t\t} else if (halign == \"right\") {\n\t\t\t\t\tposition.lines.push([Math.round(x - line.width), y]);\n\t\t\t\t} else {\n\t\t\t\t\tposition.lines.push([Math.round(x), y]);\n\t\t\t\t}\n\t\t\t\ty += line.height;\n\t\t\t}\n\t\t};\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"canvas\",\n\t\tversion: \"1.0\"\n\t});\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.categories.js",
    "content": "/* Flot plugin for plotting textual data or categories.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nConsider a dataset like [[\"February\", 34], [\"March\", 20], ...]. This plugin\nallows you to plot such a dataset directly.\n\nTo enable it, you must specify mode: \"categories\" on the axis with the textual\nlabels, e.g.\n\n\t$.plot(\"#placeholder\", data, { xaxis: { mode: \"categories\" } });\n\nBy default, the labels are ordered as they are met in the data series. If you\nneed a different ordering, you can specify \"categories\" on the axis options\nand list the categories there:\n\n\txaxis: {\n\t\tmode: \"categories\",\n\t\tcategories: [\"February\", \"March\", \"April\"]\n\t}\n\nIf you need to customize the distances between the categories, you can specify\n\"categories\" as an object mapping labels to values\n\n\txaxis: {\n\t\tmode: \"categories\",\n\t\tcategories: { \"February\": 1, \"March\": 3, \"April\": 4 }\n\t}\n\nIf you don't specify all categories, the remaining categories will be numbered\nfrom the max value plus 1 (with a spacing of 1 between each).\n\nInternally, the plugin works by transforming the input data through an auto-\ngenerated mapping where the first category becomes 0, the second 1, etc.\nHence, a point like [\"February\", 34] becomes [0, 34] internally in Flot (this\nis visible in hover and click events that return numbers rather than the\ncategory labels). The plugin also overrides the tick generator to spit out the\ncategories as ticks instead of the values.\n\nIf you need to map a value back to its label, the mapping is always accessible\nas \"categories\" on the axis object, e.g. plot.getAxes().xaxis.categories.\n\n*/\n\n(function ($) {\n    var options = {\n        xaxis: {\n            categories: null\n        },\n        yaxis: {\n            categories: null\n        }\n    };\n    \n    function processRawData(plot, series, data, datapoints) {\n        // if categories are enabled, we need to disable\n        // auto-transformation to numbers so the strings are intact\n        // for later processing\n\n        var xCategories = series.xaxis.options.mode == \"categories\",\n            yCategories = series.yaxis.options.mode == \"categories\";\n        \n        if (!(xCategories || yCategories))\n            return;\n\n        var format = datapoints.format;\n\n        if (!format) {\n            // FIXME: auto-detection should really not be defined here\n            var s = series;\n            format = [];\n            format.push({ x: true, number: true, required: true });\n            format.push({ y: true, number: true, required: true });\n\n            if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));\n                format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale });\n                if (s.bars.horizontal) {\n                    delete format[format.length - 1].y;\n                    format[format.length - 1].x = true;\n                }\n            }\n            \n            datapoints.format = format;\n        }\n\n        for (var m = 0; m < format.length; ++m) {\n            if (format[m].x && xCategories)\n                format[m].number = false;\n            \n            if (format[m].y && yCategories)\n                format[m].number = false;\n        }\n    }\n\n    function getNextIndex(categories) {\n        var index = -1;\n        \n        for (var v in categories)\n            if (categories[v] > index)\n                index = categories[v];\n\n        return index + 1;\n    }\n\n    function categoriesTickGenerator(axis) {\n        var res = [];\n        for (var label in axis.categories) {\n            var v = axis.categories[label];\n            if (v >= axis.min && v <= axis.max)\n                res.push([v, label]);\n        }\n\n        res.sort(function (a, b) { return a[0] - b[0]; });\n\n        return res;\n    }\n    \n    function setupCategoriesForAxis(series, axis, datapoints) {\n        if (series[axis].options.mode != \"categories\")\n            return;\n        \n        if (!series[axis].categories) {\n            // parse options\n            var c = {}, o = series[axis].options.categories || {};\n            if ($.isArray(o)) {\n                for (var i = 0; i < o.length; ++i)\n                    c[o[i]] = i;\n            }\n            else {\n                for (var v in o)\n                    c[v] = o[v];\n            }\n            \n            series[axis].categories = c;\n        }\n\n        // fix ticks\n        if (!series[axis].options.ticks)\n            series[axis].options.ticks = categoriesTickGenerator;\n\n        transformPointsOnAxis(datapoints, axis, series[axis].categories);\n    }\n    \n    function transformPointsOnAxis(datapoints, axis, categories) {\n        // go through the points, transforming them\n        var points = datapoints.points,\n            ps = datapoints.pointsize,\n            format = datapoints.format,\n            formatColumn = axis.charAt(0),\n            index = getNextIndex(categories);\n\n        for (var i = 0; i < points.length; i += ps) {\n            if (points[i] == null)\n                continue;\n            \n            for (var m = 0; m < ps; ++m) {\n                var val = points[i + m];\n\n                if (val == null || !format[m][formatColumn])\n                    continue;\n\n                if (!(val in categories)) {\n                    categories[val] = index;\n                    ++index;\n                }\n                \n                points[i + m] = categories[val];\n            }\n        }\n    }\n\n    function processDatapoints(plot, series, datapoints) {\n        setupCategoriesForAxis(series, \"xaxis\", datapoints);\n        setupCategoriesForAxis(series, \"yaxis\", datapoints);\n    }\n\n    function init(plot) {\n        plot.hooks.processRawData.push(processRawData);\n        plot.hooks.processDatapoints.push(processDatapoints);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'categories',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.crosshair.js",
    "content": "/* Flot plugin for showing crosshairs when the mouse hovers over the plot.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin supports these options:\n\n\tcrosshair: {\n\t\tmode: null or \"x\" or \"y\" or \"xy\"\n\t\tcolor: color\n\t\tlineWidth: number\n\t}\n\nSet the mode to one of \"x\", \"y\" or \"xy\". The \"x\" mode enables a vertical\ncrosshair that lets you trace the values on the x axis, \"y\" enables a\nhorizontal crosshair and \"xy\" enables them both. \"color\" is the color of the\ncrosshair (default is \"rgba(170, 0, 0, 0.80)\"), \"lineWidth\" is the width of\nthe drawn lines (default is 1).\n\nThe plugin also adds four public methods:\n\n  - setCrosshair( pos )\n\n    Set the position of the crosshair. Note that this is cleared if the user\n    moves the mouse. \"pos\" is in coordinates of the plot and should be on the\n    form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple\n    axes), which is coincidentally the same format as what you get from a\n    \"plothover\" event. If \"pos\" is null, the crosshair is cleared.\n\n  - clearCrosshair()\n\n    Clear the crosshair.\n\n  - lockCrosshair(pos)\n\n    Cause the crosshair to lock to the current location, no longer updating if\n    the user moves the mouse. Optionally supply a position (passed on to\n    setCrosshair()) to move it to.\n\n    Example usage:\n\n\tvar myFlot = $.plot( $(\"#graph\"), ..., { crosshair: { mode: \"x\" } } };\n\t$(\"#graph\").bind( \"plothover\", function ( evt, position, item ) {\n\t\tif ( item ) {\n\t\t\t// Lock the crosshair to the data point being hovered\n\t\t\tmyFlot.lockCrosshair({\n\t\t\t\tx: item.datapoint[ 0 ],\n\t\t\t\ty: item.datapoint[ 1 ]\n\t\t\t});\n\t\t} else {\n\t\t\t// Return normal crosshair operation\n\t\t\tmyFlot.unlockCrosshair();\n\t\t}\n\t});\n\n  - unlockCrosshair()\n\n    Free the crosshair to move again after locking it.\n*/\n\n(function ($) {\n    var options = {\n        crosshair: {\n            mode: null, // one of null, \"x\", \"y\" or \"xy\",\n            color: \"rgba(170, 0, 0, 0.80)\",\n            lineWidth: 1\n        }\n    };\n    \n    function init(plot) {\n        // position of crosshair in pixels\n        var crosshair = { x: -1, y: -1, locked: false };\n\n        plot.setCrosshair = function setCrosshair(pos) {\n            if (!pos)\n                crosshair.x = -1;\n            else {\n                var o = plot.p2c(pos);\n                crosshair.x = Math.max(0, Math.min(o.left, plot.width()));\n                crosshair.y = Math.max(0, Math.min(o.top, plot.height()));\n            }\n            \n            plot.triggerRedrawOverlay();\n        };\n        \n        plot.clearCrosshair = plot.setCrosshair; // passes null for pos\n        \n        plot.lockCrosshair = function lockCrosshair(pos) {\n            if (pos)\n                plot.setCrosshair(pos);\n            crosshair.locked = true;\n        };\n\n        plot.unlockCrosshair = function unlockCrosshair() {\n            crosshair.locked = false;\n        };\n\n        function onMouseOut(e) {\n            if (crosshair.locked)\n                return;\n\n            if (crosshair.x != -1) {\n                crosshair.x = -1;\n                plot.triggerRedrawOverlay();\n            }\n        }\n\n        function onMouseMove(e) {\n            if (crosshair.locked)\n                return;\n                \n            if (plot.getSelection && plot.getSelection()) {\n                crosshair.x = -1; // hide the crosshair while selecting\n                return;\n            }\n                \n            var offset = plot.offset();\n            crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));\n            crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));\n            plot.triggerRedrawOverlay();\n        }\n        \n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n            if (!plot.getOptions().crosshair.mode)\n                return;\n\n            eventHolder.mouseout(onMouseOut);\n            eventHolder.mousemove(onMouseMove);\n        });\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            var c = plot.getOptions().crosshair;\n            if (!c.mode)\n                return;\n\n            var plotOffset = plot.getPlotOffset();\n            \n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            if (crosshair.x != -1) {\n                var adj = plot.getOptions().crosshair.lineWidth % 2 ? 0.5 : 0;\n\n                ctx.strokeStyle = c.color;\n                ctx.lineWidth = c.lineWidth;\n                ctx.lineJoin = \"round\";\n\n                ctx.beginPath();\n                if (c.mode.indexOf(\"x\") != -1) {\n                    var drawX = Math.floor(crosshair.x) + adj;\n                    ctx.moveTo(drawX, 0);\n                    ctx.lineTo(drawX, plot.height());\n                }\n                if (c.mode.indexOf(\"y\") != -1) {\n                    var drawY = Math.floor(crosshair.y) + adj;\n                    ctx.moveTo(0, drawY);\n                    ctx.lineTo(plot.width(), drawY);\n                }\n                ctx.stroke();\n            }\n            ctx.restore();\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mouseout\", onMouseOut);\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n        });\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'crosshair',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.errorbars.js",
    "content": "/* Flot plugin for plotting error bars.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nError bars are used to show standard deviation and other statistical\nproperties in a plot.\n\n* Created by Rui Pereira  -  rui (dot) pereira (at) gmail (dot) com\n\nThis plugin allows you to plot error-bars over points. Set \"errorbars\" inside\nthe points series to the axis name over which there will be error values in\nyour data array (*even* if you do not intend to plot them later, by setting\n\"show: null\" on xerr/yerr).\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tpoints: {\n\t\t\terrorbars: \"x\" or \"y\" or \"xy\",\n\t\t\txerr: {\n\t\t\t\tshow: null/false or true,\n\t\t\t\tasymmetric: null/false or true,\n\t\t\t\tupperCap: null or \"-\" or function,\n\t\t\t\tlowerCap: null or \"-\" or function,\n\t\t\t\tcolor: null or color,\n\t\t\t\tradius: null or number\n\t\t\t},\n\t\t\tyerr: { same options as xerr }\n\t\t}\n\t}\n\nEach data point array is expected to be of the type:\n\n\t\"x\"  [ x, y, xerr ]\n\t\"y\"  [ x, y, yerr ]\n\t\"xy\" [ x, y, xerr, yerr ]\n\nWhere xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and\nequivalently for yerr. Eg., a datapoint for the \"xy\" case with symmetric\nerror-bars on X and asymmetric on Y would be:\n\n\t[ x, y, xerr, yerr_lower, yerr_upper ]\n\nBy default no end caps are drawn. Setting upperCap and/or lowerCap to \"-\" will\ndraw a small cap perpendicular to the error bar. They can also be set to a\nuser-defined drawing function, with (ctx, x, y, radius) as parameters, as eg.\n\n\tfunction drawSemiCircle( ctx, x, y, radius ) {\n\t\tctx.beginPath();\n\t\tctx.arc( x, y, radius, 0, Math.PI, false );\n\t\tctx.moveTo( x - radius, y );\n\t\tctx.lineTo( x + radius, y );\n\t\tctx.stroke();\n\t}\n\nColor and radius both default to the same ones of the points series if not\nset. The independent radius parameter on xerr/yerr is useful for the case when\nwe may want to add error-bars to a line, without showing the interconnecting\npoints (with radius: 0), and still showing end caps on the error-bars.\nshadowSize and lineWidth are derived as well from the points series.\n\n*/\n\n(function ($) {\n    var options = {\n        series: {\n            points: {\n                errorbars: null, //should be 'x', 'y' or 'xy'\n                xerr: { err: 'x', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null},\n                yerr: { err: 'y', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null}\n            }\n        }\n    };\n\n    function processRawData(plot, series, data, datapoints){\n        if (!series.points.errorbars)\n            return;\n\n        // x,y values\n        var format = [\n            { x: true, number: true, required: true },\n            { y: true, number: true, required: true }\n        ];\n\n        var errors = series.points.errorbars;\n        // error bars - first X then Y\n        if (errors == 'x' || errors == 'xy') {\n            // lower / upper error\n            if (series.points.xerr.asymmetric) {\n                format.push({ x: true, number: true, required: true });\n                format.push({ x: true, number: true, required: true });\n            } else\n                format.push({ x: true, number: true, required: true });\n        }\n        if (errors == 'y' || errors == 'xy') {\n            // lower / upper error\n            if (series.points.yerr.asymmetric) {\n                format.push({ y: true, number: true, required: true });\n                format.push({ y: true, number: true, required: true });\n            } else\n                format.push({ y: true, number: true, required: true });\n        }\n        datapoints.format = format;\n    }\n\n    function parseErrors(series, i){\n\n        var points = series.datapoints.points;\n\n        // read errors from points array\n        var exl = null,\n                exu = null,\n                eyl = null,\n                eyu = null;\n        var xerr = series.points.xerr,\n                yerr = series.points.yerr;\n\n        var eb = series.points.errorbars;\n        // error bars - first X\n        if (eb == 'x' || eb == 'xy') {\n            if (xerr.asymmetric) {\n                exl = points[i + 2];\n                exu = points[i + 3];\n                if (eb == 'xy')\n                    if (yerr.asymmetric){\n                        eyl = points[i + 4];\n                        eyu = points[i + 5];\n                    } else eyl = points[i + 4];\n            } else {\n                exl = points[i + 2];\n                if (eb == 'xy')\n                    if (yerr.asymmetric) {\n                        eyl = points[i + 3];\n                        eyu = points[i + 4];\n                    } else eyl = points[i + 3];\n            }\n        // only Y\n        } else if (eb == 'y')\n            if (yerr.asymmetric) {\n                eyl = points[i + 2];\n                eyu = points[i + 3];\n            } else eyl = points[i + 2];\n\n        // symmetric errors?\n        if (exu == null) exu = exl;\n        if (eyu == null) eyu = eyl;\n\n        var errRanges = [exl, exu, eyl, eyu];\n        // nullify if not showing\n        if (!xerr.show){\n            errRanges[0] = null;\n            errRanges[1] = null;\n        }\n        if (!yerr.show){\n            errRanges[2] = null;\n            errRanges[3] = null;\n        }\n        return errRanges;\n    }\n\n    function drawSeriesErrors(plot, ctx, s){\n\n        var points = s.datapoints.points,\n                ps = s.datapoints.pointsize,\n                ax = [s.xaxis, s.yaxis],\n                radius = s.points.radius,\n                err = [s.points.xerr, s.points.yerr];\n\n        //sanity check, in case some inverted axis hack is applied to flot\n        var invertX = false;\n        if (ax[0].p2c(ax[0].max) < ax[0].p2c(ax[0].min)) {\n            invertX = true;\n            var tmp = err[0].lowerCap;\n            err[0].lowerCap = err[0].upperCap;\n            err[0].upperCap = tmp;\n        }\n\n        var invertY = false;\n        if (ax[1].p2c(ax[1].min) < ax[1].p2c(ax[1].max)) {\n            invertY = true;\n            var tmp = err[1].lowerCap;\n            err[1].lowerCap = err[1].upperCap;\n            err[1].upperCap = tmp;\n        }\n\n        for (var i = 0; i < s.datapoints.points.length; i += ps) {\n\n            //parse\n            var errRanges = parseErrors(s, i);\n\n            //cycle xerr & yerr\n            for (var e = 0; e < err.length; e++){\n\n                var minmax = [ax[e].min, ax[e].max];\n\n                //draw this error?\n                if (errRanges[e * err.length]){\n\n                    //data coordinates\n                    var x = points[i],\n                        y = points[i + 1];\n\n                    //errorbar ranges\n                    var upper = [x, y][e] + errRanges[e * err.length + 1],\n                        lower = [x, y][e] - errRanges[e * err.length];\n\n                    //points outside of the canvas\n                    if (err[e].err == 'x')\n                        if (y > ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max)\n                            continue;\n                    if (err[e].err == 'y')\n                        if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max)\n                            continue;\n\n                    // prevent errorbars getting out of the canvas\n                    var drawUpper = true,\n                        drawLower = true;\n\n                    if (upper > minmax[1]) {\n                        drawUpper = false;\n                        upper = minmax[1];\n                    }\n                    if (lower < minmax[0]) {\n                        drawLower = false;\n                        lower = minmax[0];\n                    }\n\n                    //sanity check, in case some inverted axis hack is applied to flot\n                    if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) {\n                        //swap coordinates\n                        var tmp = lower;\n                        lower = upper;\n                        upper = tmp;\n                        tmp = drawLower;\n                        drawLower = drawUpper;\n                        drawUpper = tmp;\n                        tmp = minmax[0];\n                        minmax[0] = minmax[1];\n                        minmax[1] = tmp;\n                    }\n\n                    // convert to pixels\n                    x = ax[0].p2c(x),\n                        y = ax[1].p2c(y),\n                        upper = ax[e].p2c(upper);\n                    lower = ax[e].p2c(lower);\n                    minmax[0] = ax[e].p2c(minmax[0]);\n                    minmax[1] = ax[e].p2c(minmax[1]);\n\n                    //same style as points by default\n                    var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth,\n                        sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize;\n\n                    //shadow as for points\n                    if (lw > 0 && sw > 0) {\n                        var w = sw / 2;\n                        ctx.lineWidth = w;\n                        ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                        drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax);\n\n                        ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                        drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax);\n                    }\n\n                    ctx.strokeStyle = err[e].color? err[e].color: s.color;\n                    ctx.lineWidth = lw;\n                    //draw it\n                    drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax);\n                }\n            }\n        }\n    }\n\n    function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){\n\n        //shadow offset\n        y += offset;\n        upper += offset;\n        lower += offset;\n\n        // error bar - avoid plotting over circles\n        if (err.err == 'x'){\n            if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]);\n            else drawUpper = false;\n            if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] );\n            else drawLower = false;\n        }\n        else {\n            if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] );\n            else drawUpper = false;\n            if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] );\n            else drawLower = false;\n        }\n\n        //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps\n        //this is a way to get errorbars on lines without visible connecting dots\n        radius = err.radius != null? err.radius: radius;\n\n        // upper cap\n        if (drawUpper) {\n            if (err.upperCap == '-'){\n                if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] );\n                else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] );\n            } else if ($.isFunction(err.upperCap)){\n                if (err.err=='x') err.upperCap(ctx, upper, y, radius);\n                else err.upperCap(ctx, x, upper, radius);\n            }\n        }\n        // lower cap\n        if (drawLower) {\n            if (err.lowerCap == '-'){\n                if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] );\n                else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] );\n            } else if ($.isFunction(err.lowerCap)){\n                if (err.err=='x') err.lowerCap(ctx, lower, y, radius);\n                else err.lowerCap(ctx, x, lower, radius);\n            }\n        }\n    }\n\n    function drawPath(ctx, pts){\n        ctx.beginPath();\n        ctx.moveTo(pts[0][0], pts[0][1]);\n        for (var p=1; p < pts.length; p++)\n            ctx.lineTo(pts[p][0], pts[p][1]);\n        ctx.stroke();\n    }\n\n    function draw(plot, ctx){\n        var plotOffset = plot.getPlotOffset();\n\n        ctx.save();\n        ctx.translate(plotOffset.left, plotOffset.top);\n        $.each(plot.getData(), function (i, s) {\n            if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show))\n                drawSeriesErrors(plot, ctx, s);\n        });\n        ctx.restore();\n    }\n\n    function init(plot) {\n        plot.hooks.processRawData.push(processRawData);\n        plot.hooks.draw.push(draw);\n    }\n\n    $.plot.plugins.push({\n                init: init,\n                options: options,\n                name: 'errorbars',\n                version: '1.0'\n            });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.fillbetween.js",
    "content": "/* Flot plugin for computing bottoms for filled line and bar charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe case: you've got two series that you want to fill the area between. In Flot\nterms, you need to use one as the fill bottom of the other. You can specify the\nbottom of each data point as the third coordinate manually, or you can use this\nplugin to compute it for you.\n\nIn order to name the other series, you need to give it an id, like this:\n\n\tvar dataset = [\n\t\t{ data: [ ... ], id: \"foo\" } ,         // use default bottom\n\t\t{ data: [ ... ], fillBetween: \"foo\" }, // use first dataset as bottom\n\t];\n\n\t$.plot($(\"#placeholder\"), dataset, { lines: { show: true, fill: true }});\n\nAs a convenience, if the id given is a number that doesn't appear as an id in\nthe series, it is interpreted as the index in the array instead (so fillBetween:\n0 can also mean the first series).\n\nInternally, the plugin modifies the datapoints in each series. For line series,\nextra data points might be inserted through interpolation. Note that at points\nwhere the bottom line is not defined (due to a null point or start/end of line),\nthe current line will show a gap too. The algorithm comes from the\njquery.flot.stack.js plugin, possibly some code could be shared.\n\n*/\n\n(function ( $ ) {\n\n\tvar options = {\n\t\tseries: {\n\t\t\tfillBetween: null\t// or number\n\t\t}\n\t};\n\n\tfunction init( plot ) {\n\n\t\tfunction findBottomSeries( s, allseries ) {\n\n\t\t\tvar i;\n\n\t\t\tfor ( i = 0; i < allseries.length; ++i ) {\n\t\t\t\tif ( allseries[ i ].id === s.fillBetween ) {\n\t\t\t\t\treturn allseries[ i ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( typeof s.fillBetween === \"number\" ) {\n\t\t\t\tif ( s.fillBetween < 0 || s.fillBetween >= allseries.length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn allseries[ s.fillBetween ];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction computeFillBottoms( plot, s, datapoints ) {\n\n\t\t\tif ( s.fillBetween == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar other = findBottomSeries( s, plot.getData() );\n\n\t\t\tif ( !other ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar ps = datapoints.pointsize,\n\t\t\t\tpoints = datapoints.points,\n\t\t\t\totherps = other.datapoints.pointsize,\n\t\t\t\totherpoints = other.datapoints.points,\n\t\t\t\tnewpoints = [],\n\t\t\t\tpx, py, intery, qx, qy, bottom,\n\t\t\t\twithlines = s.lines.show,\n\t\t\t\twithbottom = ps > 2 && datapoints.format[2].y,\n\t\t\t\twithsteps = withlines && s.lines.steps,\n\t\t\t\tfromgap = true,\n\t\t\t\ti = 0,\n\t\t\t\tj = 0,\n\t\t\t\tl, m;\n\n\t\t\twhile ( true ) {\n\n\t\t\t\tif ( i >= points.length ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tl = newpoints.length;\n\n\t\t\t\tif ( points[ i ] == null ) {\n\n\t\t\t\t\t// copy gaps\n\n\t\t\t\t\tfor ( m = 0; m < ps; ++m ) {\n\t\t\t\t\t\tnewpoints.push( points[ i + m ] );\n\t\t\t\t\t}\n\n\t\t\t\t\ti += ps;\n\n\t\t\t\t} else if ( j >= otherpoints.length ) {\n\n\t\t\t\t\t// for lines, we can't use the rest of the points\n\n\t\t\t\t\tif ( !withlines ) {\n\t\t\t\t\t\tfor ( m = 0; m < ps; ++m ) {\n\t\t\t\t\t\t\tnewpoints.push( points[ i + m ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ti += ps;\n\n\t\t\t\t} else if ( otherpoints[ j ] == null ) {\n\n\t\t\t\t\t// oops, got a gap\n\n\t\t\t\t\tfor ( m = 0; m < ps; ++m ) {\n\t\t\t\t\t\tnewpoints.push( null );\n\t\t\t\t\t}\n\n\t\t\t\t\tfromgap = true;\n\t\t\t\t\tj += otherps;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// cases where we actually got two points\n\n\t\t\t\t\tpx = points[ i ];\n\t\t\t\t\tpy = points[ i + 1 ];\n\t\t\t\t\tqx = otherpoints[ j ];\n\t\t\t\t\tqy = otherpoints[ j + 1 ];\n\t\t\t\t\tbottom = 0;\n\n\t\t\t\t\tif ( px === qx ) {\n\n\t\t\t\t\t\tfor ( m = 0; m < ps; ++m ) {\n\t\t\t\t\t\t\tnewpoints.push( points[ i + m ] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//newpoints[ l + 1 ] += qy;\n\t\t\t\t\t\tbottom = qy;\n\n\t\t\t\t\t\ti += ps;\n\t\t\t\t\t\tj += otherps;\n\n\t\t\t\t\t} else if ( px > qx ) {\n\n\t\t\t\t\t\t// we got past point below, might need to\n\t\t\t\t\t\t// insert interpolated extra point\n\n\t\t\t\t\t\tif ( withlines && i > 0 && points[ i - ps ] != null ) {\n\t\t\t\t\t\t\tintery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px );\n\t\t\t\t\t\t\tnewpoints.push( qx );\n\t\t\t\t\t\t\tnewpoints.push( intery );\n\t\t\t\t\t\t\tfor ( m = 2; m < ps; ++m ) {\n\t\t\t\t\t\t\t\tnewpoints.push( points[ i + m ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbottom = qy;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tj += otherps;\n\n\t\t\t\t\t} else { // px < qx\n\n\t\t\t\t\t\t// if we come from a gap, we just skip this point\n\n\t\t\t\t\t\tif ( fromgap && withlines ) {\n\t\t\t\t\t\t\ti += ps;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( m = 0; m < ps; ++m ) {\n\t\t\t\t\t\t\tnewpoints.push( points[ i + m ] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// we might be able to interpolate a point below,\n\t\t\t\t\t\t// this can give us a better y\n\n\t\t\t\t\t\tif ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) {\n\t\t\t\t\t\t\tbottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//newpoints[l + 1] += bottom;\n\n\t\t\t\t\t\ti += ps;\n\t\t\t\t\t}\n\n\t\t\t\t\tfromgap = false;\n\n\t\t\t\t\tif ( l !== newpoints.length && withbottom ) {\n\t\t\t\t\t\tnewpoints[ l + 2 ] = bottom;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// maintain the line steps invariant\n\n\t\t\t\tif ( withsteps && l !== newpoints.length && l > 0 &&\n\t\t\t\t\tnewpoints[ l ] !== null &&\n\t\t\t\t\tnewpoints[ l ] !== newpoints[ l - ps ] &&\n\t\t\t\t\tnewpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) {\n\t\t\t\t\tfor (m = 0; m < ps; ++m) {\n\t\t\t\t\t\tnewpoints[ l + ps + m ] = newpoints[ l + m ];\n\t\t\t\t\t}\n\t\t\t\t\tnewpoints[ l + 1 ] = newpoints[ l - ps + 1 ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdatapoints.points = newpoints;\n\t\t}\n\n\t\tplot.hooks.processDatapoints.push( computeFillBottoms );\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"fillbetween\",\n\t\tversion: \"1.0\"\n\t});\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.image.js",
    "content": "/* Flot plugin for plotting images.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and\n(x2, y2) are where you intend the two opposite corners of the image to end up\nin the plot. Image must be a fully loaded Javascript image (you can make one\nwith new Image()). If the image is not complete, it's skipped when plotting.\n\nThere are two helpers included for retrieving images. The easiest work the way\nthat you put in URLs instead of images in the data, like this:\n\n\t[ \"myimage.png\", 0, 0, 10, 10 ]\n\nThen call $.plot.image.loadData( data, options, callback ) where data and\noptions are the same as you pass in to $.plot. This loads the images, replaces\nthe URLs in the data with the corresponding images and calls \"callback\" when\nall images are loaded (or failed loading). In the callback, you can then call\n$.plot with the data set. See the included example.\n\nA more low-level helper, $.plot.image.load(urls, callback) is also included.\nGiven a list of URLs, it calls callback with an object mapping from URL to\nImage object when all images are loaded or have failed loading.\n\nThe plugin supports these options:\n\n\tseries: {\n\t\timages: {\n\t\t\tshow: boolean\n\t\t\tanchor: \"corner\" or \"center\"\n\t\t\talpha: [ 0, 1 ]\n\t\t}\n\t}\n\nThey can be specified for a specific series:\n\n\t$.plot( $(\"#placeholder\"), [{\n\t\tdata: [ ... ],\n\t\timages: { ... }\n\t])\n\nNote that because the data format is different from usual data points, you\ncan't use images with anything else in a specific data series.\n\nSetting \"anchor\" to \"center\" causes the pixels in the image to be anchored at\nthe corner pixel centers inside of at the pixel corners, effectively letting\nhalf a pixel stick out to each side in the plot.\n\nA possible future direction could be support for tiling for large images (like\nGoogle Maps).\n\n*/\n\n(function ($) {\n    var options = {\n        series: {\n            images: {\n                show: false,\n                alpha: 1,\n                anchor: \"corner\" // or \"center\"\n            }\n        }\n    };\n\n    $.plot.image = {};\n\n    $.plot.image.loadDataImages = function (series, options, callback) {\n        var urls = [], points = [];\n\n        var defaultShow = options.series.images.show;\n        \n        $.each(series, function (i, s) {\n            if (!(defaultShow || s.images.show))\n                return;\n            \n            if (s.data)\n                s = s.data;\n\n            $.each(s, function (i, p) {\n                if (typeof p[0] == \"string\") {\n                    urls.push(p[0]);\n                    points.push(p);\n                }\n            });\n        });\n\n        $.plot.image.load(urls, function (loadedImages) {\n            $.each(points, function (i, p) {\n                var url = p[0];\n                if (loadedImages[url])\n                    p[0] = loadedImages[url];\n            });\n\n            callback();\n        });\n    }\n    \n    $.plot.image.load = function (urls, callback) {\n        var missing = urls.length, loaded = {};\n        if (missing == 0)\n            callback({});\n\n        $.each(urls, function (i, url) {\n            var handler = function () {\n                --missing;\n                \n                loaded[url] = this;\n                \n                if (missing == 0)\n                    callback(loaded);\n            };\n\n            $('<img />').load(handler).error(handler).attr('src', url);\n        });\n    };\n    \n    function drawSeries(plot, ctx, series) {\n        var plotOffset = plot.getPlotOffset();\n        \n        if (!series.images || !series.images.show)\n            return;\n        \n        var points = series.datapoints.points,\n            ps = series.datapoints.pointsize;\n        \n        for (var i = 0; i < points.length; i += ps) {\n            var img = points[i],\n                x1 = points[i + 1], y1 = points[i + 2],\n                x2 = points[i + 3], y2 = points[i + 4],\n                xaxis = series.xaxis, yaxis = series.yaxis,\n                tmp;\n\n            // actually we should check img.complete, but it\n            // appears to be a somewhat unreliable indicator in\n            // IE6 (false even after load event)\n            if (!img || img.width <= 0 || img.height <= 0)\n                continue;\n\n            if (x1 > x2) {\n                tmp = x2;\n                x2 = x1;\n                x1 = tmp;\n            }\n            if (y1 > y2) {\n                tmp = y2;\n                y2 = y1;\n                y1 = tmp;\n            }\n            \n            // if the anchor is at the center of the pixel, expand the \n            // image by 1/2 pixel in each direction\n            if (series.images.anchor == \"center\") {\n                tmp = 0.5 * (x2-x1) / (img.width - 1);\n                x1 -= tmp;\n                x2 += tmp;\n                tmp = 0.5 * (y2-y1) / (img.height - 1);\n                y1 -= tmp;\n                y2 += tmp;\n            }\n            \n            // clip\n            if (x1 == x2 || y1 == y2 ||\n                x1 >= xaxis.max || x2 <= xaxis.min ||\n                y1 >= yaxis.max || y2 <= yaxis.min)\n                continue;\n\n            var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height;\n            if (x1 < xaxis.min) {\n                sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1);\n                x1 = xaxis.min;\n            }\n\n            if (x2 > xaxis.max) {\n                sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1);\n                x2 = xaxis.max;\n            }\n\n            if (y1 < yaxis.min) {\n                sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1);\n                y1 = yaxis.min;\n            }\n\n            if (y2 > yaxis.max) {\n                sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1);\n                y2 = yaxis.max;\n            }\n            \n            x1 = xaxis.p2c(x1);\n            x2 = xaxis.p2c(x2);\n            y1 = yaxis.p2c(y1);\n            y2 = yaxis.p2c(y2);\n            \n            // the transformation may have swapped us\n            if (x1 > x2) {\n                tmp = x2;\n                x2 = x1;\n                x1 = tmp;\n            }\n            if (y1 > y2) {\n                tmp = y2;\n                y2 = y1;\n                y1 = tmp;\n            }\n\n            tmp = ctx.globalAlpha;\n            ctx.globalAlpha *= series.images.alpha;\n            ctx.drawImage(img,\n                          sx1, sy1, sx2 - sx1, sy2 - sy1,\n                          x1 + plotOffset.left, y1 + plotOffset.top,\n                          x2 - x1, y2 - y1);\n            ctx.globalAlpha = tmp;\n        }\n    }\n\n    function processRawData(plot, series, data, datapoints) {\n        if (!series.images.show)\n            return;\n\n        // format is Image, x1, y1, x2, y2 (opposite corners)\n        datapoints.format = [\n            { required: true },\n            { x: true, number: true, required: true },\n            { y: true, number: true, required: true },\n            { x: true, number: true, required: true },\n            { y: true, number: true, required: true }\n        ];\n    }\n    \n    function init(plot) {\n        plot.hooks.processRawData.push(processRawData);\n        plot.hooks.drawSeries.push(drawSeries);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'image',\n        version: '1.1'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.js",
    "content": "/* Javascript plotting library for jQuery, version 0.8.3.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\n*/\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n *\n * Version 1.1.\n *\n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */\n(function($){$.color={};$.color.make=function(r,g,b,a)\n\t{var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d)\n\t\t{\n\t\t\tfor(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()\n\t\t};\n\t\to.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()\n\t};\n\to.toString=function(){if(o.a>=1){return\"rgb(\"+[o.r,o.g,o.b].join(\",\")+\")\"}else{return\"rgba(\"+[o.r,o.g,o.b,o.a].join(\",\")+\")\"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);\n\to.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};\n\treturn o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css);if(c!=\"\"&&c!=\"transparent\")break;\n\telem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),\"body\"));if(c==\"rgba(0, 0, 0, 0)\")c=\"transparent\";return $.color.parse(c)};\n\t$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);\n\tif(res=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name==\"transparent\")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};\n\tvar lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n\n\t// Cache the prototype hasOwnProperty for faster access\n\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n    // A shim to provide 'detach' to jQuery versions prior to 1.4.  Using a DOM\n    // operation produces the same effect as detach, i.e. removing the element\n    // without touching its jQuery data.\n\n    // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+.\n\n    if (!$.fn.detach) {\n        $.fn.detach = function() {\n            return this.each(function() {\n                if (this.parentNode) {\n                    this.parentNode.removeChild( this );\n                }\n            });\n        };\n    }\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The Canvas object is a wrapper around an HTML5 <canvas> tag.\n\t//\n\t// @constructor\n\t// @param {string} cls List of classes to apply to the canvas.\n\t// @param {element} container Element onto which to append the canvas.\n\t//\n\t// Requiring a container is a little iffy, but unfortunately canvas\n\t// operations don't work unless the canvas is attached to the DOM.\n\n\tfunction Canvas(cls, container) {\n\n\t\tvar element = container.children(\".\" + cls)[0];\n\n\t\tif (element == null) {\n\n\t\t\telement = document.createElement(\"canvas\");\n\t\t\telement.className = cls;\n\n\t\t\t$(element).css({ direction: \"ltr\", position: \"absolute\", left: 0, top: 0 })\n\t\t\t\t.appendTo(container);\n\n\t\t\t// If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas\n\n\t\t\tif (!element.getContext) {\n\t\t\t\tif (window.G_vmlCanvasManager) {\n\t\t\t\t\telement = window.G_vmlCanvasManager.initElement(element);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element = element;\n\n\t\tvar context = this.context = element.getContext(\"2d\");\n\n\t\t// Determine the screen's ratio of physical to device-independent\n\t\t// pixels.  This is the ratio between the canvas width that the browser\n\t\t// advertises and the number of pixels actually present in that space.\n\n\t\t// The iPhone 4, for example, has a device-independent width of 320px,\n\t\t// but its screen is actually 640px wide.  It therefore has a pixel\n\t\t// ratio of 2, while most normal devices have a ratio of 1.\n\n\t\tvar devicePixelRatio = window.devicePixelRatio || 1,\n\t\t\tbackingStoreRatio =\n\t\t\t\tcontext.webkitBackingStorePixelRatio ||\n\t\t\t\tcontext.mozBackingStorePixelRatio ||\n\t\t\t\tcontext.msBackingStorePixelRatio ||\n\t\t\t\tcontext.oBackingStorePixelRatio ||\n\t\t\t\tcontext.backingStorePixelRatio || 1;\n\n\t\tthis.pixelRatio = devicePixelRatio / backingStoreRatio;\n\n\t\t// Size the canvas to match the internal dimensions of its container\n\n\t\tthis.resize(container.width(), container.height());\n\n\t\t// Collection of HTML div layers for text overlaid onto the canvas\n\n\t\tthis.textContainer = null;\n\t\tthis.text = {};\n\n\t\t// Cache of text fragments and metrics, so we can avoid expensively\n\t\t// re-calculating them when the plot is re-rendered in a loop.\n\n\t\tthis._textCache = {};\n\t}\n\n\t// Resizes the canvas to the given dimensions.\n\t//\n\t// @param {number} width New width of the canvas, in pixels.\n\t// @param {number} width New height of the canvas, in pixels.\n\n\tCanvas.prototype.resize = function(width, height) {\n\n\t\tif (width <= 0 || height <= 0) {\n\t\t\tthrow new Error(\"Invalid dimensions for plot, width = \" + width + \", height = \" + height);\n\t\t}\n\n\t\tvar element = this.element,\n\t\t\tcontext = this.context,\n\t\t\tpixelRatio = this.pixelRatio;\n\n\t\t// Resize the canvas, increasing its density based on the display's\n\t\t// pixel ratio; basically giving it more pixels without increasing the\n\t\t// size of its element, to take advantage of the fact that retina\n\t\t// displays have that many more pixels in the same advertised space.\n\n\t\t// Resizing should reset the state (excanvas seems to be buggy though)\n\n\t\tif (this.width != width) {\n\t\t\telement.width = width * pixelRatio;\n\t\t\telement.style.width = width + \"px\";\n\t\t\tthis.width = width;\n\t\t}\n\n\t\tif (this.height != height) {\n\t\t\telement.height = height * pixelRatio;\n\t\t\telement.style.height = height + \"px\";\n\t\t\tthis.height = height;\n\t\t}\n\n\t\t// Save the context, so we can reset in case we get replotted.  The\n\t\t// restore ensure that we're really back at the initial state, and\n\t\t// should be safe even if we haven't saved the initial state yet.\n\n\t\tcontext.restore();\n\t\tcontext.save();\n\n\t\t// Scale the coordinate space to match the display density; so even though we\n\t\t// may have twice as many pixels, we still want lines and other drawing to\n\t\t// appear at the same size; the extra pixels will just make them crisper.\n\n\t\tcontext.scale(pixelRatio, pixelRatio);\n\t};\n\n\t// Clears the entire canvas area, not including any overlaid HTML text\n\n\tCanvas.prototype.clear = function() {\n\t\tthis.context.clearRect(0, 0, this.width, this.height);\n\t};\n\n\t// Finishes rendering the canvas, including managing the text overlay.\n\n\tCanvas.prototype.render = function() {\n\n\t\tvar cache = this._textCache;\n\n\t\t// For each text layer, add elements marked as active that haven't\n\t\t// already been rendered, and remove those that are no longer active.\n\n\t\tfor (var layerKey in cache) {\n\t\t\tif (hasOwnProperty.call(cache, layerKey)) {\n\n\t\t\t\tvar layer = this.getTextLayer(layerKey),\n\t\t\t\t\tlayerCache = cache[layerKey];\n\n\t\t\t\tlayer.hide();\n\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tif (position.active) {\n\t\t\t\t\t\t\t\t\t\tif (!position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tlayer.append(position.element);\n\t\t\t\t\t\t\t\t\t\t\tposition.rendered = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpositions.splice(i--, 1);\n\t\t\t\t\t\t\t\t\t\tif (position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tposition.element.detach();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (positions.length == 0) {\n\t\t\t\t\t\t\t\t\tdelete styleCache[key];\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\n\t\t\t\tlayer.show();\n\t\t\t}\n\t\t}\n\t};\n\n\t// Creates (if necessary) and returns the text overlay container.\n\t//\n\t// @param {string} classes String of space-separated CSS classes used to\n\t//     uniquely identify the text layer.\n\t// @return {object} The jQuery-wrapped text-layer div.\n\n\tCanvas.prototype.getTextLayer = function(classes) {\n\n\t\tvar layer = this.text[classes];\n\n\t\t// Create the text layer if it doesn't exist\n\n\t\tif (layer == null) {\n\n\t\t\t// Create the text layer container, if it doesn't exist\n\n\t\t\tif (this.textContainer == null) {\n\t\t\t\tthis.textContainer = $(\"<div class='flot-text'></div>\")\n\t\t\t\t\t.css({\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t'font-size': \"smaller\",\n\t\t\t\t\t\tcolor: \"#545454\"\n\t\t\t\t\t})\n\t\t\t\t\t.insertAfter(this.element);\n\t\t\t}\n\n\t\t\tlayer = this.text[classes] = $(\"<div></div>\")\n\t\t\t\t.addClass(classes)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tbottom: 0,\n\t\t\t\t\tright: 0\n\t\t\t\t})\n\t\t\t\t.appendTo(this.textContainer);\n\t\t}\n\n\t\treturn layer;\n\t};\n\n\t// Creates (if necessary) and returns a text info object.\n\t//\n\t// The object looks like this:\n\t//\n\t// {\n\t//     width: Width of the text's wrapper div.\n\t//     height: Height of the text's wrapper div.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     positions: Array of positions at which this text is drawn.\n\t// }\n\t//\n\t// The positions array contains objects that look like this:\n\t//\n\t// {\n\t//     active: Flag indicating whether the text should be visible.\n\t//     rendered: Flag indicating whether the text is currently visible.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     x: X coordinate at which to draw the text.\n\t//     y: Y coordinate at which to draw the text.\n\t// }\n\t//\n\t// Each position after the first receives a clone of the original element.\n\t//\n\t// The idea is that that the width, height, and general 'identity' of the\n\t// text is constant no matter where it is placed; the placements are a\n\t// secondary property.\n\t//\n\t// Canvas maintains a cache of recently-used text info objects; getTextInfo\n\t// either returns the cached element or creates a new entry.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {string} text Text string to retrieve info for.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @return {object} a text info object.\n\n\tCanvas.prototype.getTextInfo = function(layer, text, font, angle, width) {\n\n\t\tvar textStyle, layerCache, styleCache, info;\n\n\t\t// Cast the value to a string, in case we were given a number or such\n\n\t\ttext = \"\" + text;\n\n\t\t// If the font is a font-spec object, generate a CSS font definition\n\n\t\tif (typeof font === \"object\") {\n\t\t\ttextStyle = font.style + \" \" + font.variant + \" \" + font.weight + \" \" + font.size + \"px/\" + font.lineHeight + \"px \" + font.family;\n\t\t} else {\n\t\t\ttextStyle = font;\n\t\t}\n\n\t\t// Retrieve (or create) the cache for the text's layer and styles\n\n\t\tlayerCache = this._textCache[layer];\n\n\t\tif (layerCache == null) {\n\t\t\tlayerCache = this._textCache[layer] = {};\n\t\t}\n\n\t\tstyleCache = layerCache[textStyle];\n\n\t\tif (styleCache == null) {\n\t\t\tstyleCache = layerCache[textStyle] = {};\n\t\t}\n\n\t\tinfo = styleCache[text];\n\n\t\t// If we can't find a matching element in our cache, create a new one\n\n\t\tif (info == null) {\n\n\t\t\tvar element = $(\"<div></div>\").html(text)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t'max-width': width,\n\t\t\t\t\ttop: -9999\n\t\t\t\t})\n\t\t\t\t.appendTo(this.getTextLayer(layer));\n\n\t\t\tif (typeof font === \"object\") {\n\t\t\t\telement.css({\n\t\t\t\t\tfont: textStyle,\n\t\t\t\t\tcolor: font.color\n\t\t\t\t});\n\t\t\t} else if (typeof font === \"string\") {\n\t\t\t\telement.addClass(font);\n\t\t\t}\n\n\t\t\tinfo = styleCache[text] = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\telement: element,\n\t\t\t\tpositions: []\n\t\t\t};\n\n\t\t\telement.detach();\n\t\t}\n\n\t\treturn info;\n\t};\n\n\t// Adds a text string to the canvas text overlay.\n\t//\n\t// The text isn't drawn immediately; it is marked as rendering, which will\n\t// result in its addition to the canvas on the next render pass.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number} x X coordinate at which to draw the text.\n\t// @param {number} y Y coordinate at which to draw the text.\n\t// @param {string} text Text string to draw.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @param {string=} halign Horizontal alignment of the text; either \"left\",\n\t//     \"center\" or \"right\".\n\t// @param {string=} valign Vertical alignment of the text; either \"top\",\n\t//     \"middle\" or \"bottom\".\n\n\tCanvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) {\n\n\t\tvar info = this.getTextInfo(layer, text, font, angle, width),\n\t\t\tpositions = info.positions;\n\n\t\t// Tweak the div's position to match the text's alignment\n\n\t\tif (halign == \"center\") {\n\t\t\tx -= info.width / 2;\n\t\t} else if (halign == \"right\") {\n\t\t\tx -= info.width;\n\t\t}\n\n\t\tif (valign == \"middle\") {\n\t\t\ty -= info.height / 2;\n\t\t} else if (valign == \"bottom\") {\n\t\t\ty -= info.height;\n\t\t}\n\n\t\t// Determine whether this text already exists at this position.\n\t\t// If so, mark it for inclusion in the next render pass.\n\n\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\tposition.active = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the text doesn't exist at this position, create a new entry\n\n\t\t// For the very first position we'll re-use the original element,\n\t\t// while for subsequent ones we'll clone it.\n\n\t\tposition = {\n\t\t\tactive: true,\n\t\t\trendered: false,\n\t\t\telement: positions.length ? info.element.clone() : info.element,\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\n\t\tpositions.push(position);\n\n\t\t// Move the element to its final position within the container\n\n\t\tposition.element.css({\n\t\t\ttop: Math.round(y),\n\t\t\tleft: Math.round(x),\n\t\t\t'text-align': halign\t// In case the text wraps\n\t\t});\n\t};\n\n\t// Removes one or more text strings from the canvas text overlay.\n\t//\n\t// If no parameters are given, all text within the layer is removed.\n\t//\n\t// Note that the text is not immediately removed; it is simply marked as\n\t// inactive, which will result in its removal on the next render pass.\n\t// This avoids the performance penalty for 'clear and redraw' behavior,\n\t// where we potentially get rid of all text on a layer, but will likely\n\t// add back most or all of it later, as when redrawing axes, for example.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number=} x X coordinate of the text.\n\t// @param {number=} y Y coordinate of the text.\n\t// @param {string=} text Text string to remove.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which the text is rotated, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\n\tCanvas.prototype.removeText = function(layer, x, y, text, font, angle) {\n\t\tif (text == null) {\n\t\t\tvar layerCache = this._textCache[layer];\n\t\t\tif (layerCache != null) {\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tposition.active = false;\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} else {\n\t\t\tvar positions = this.getTextInfo(layer, text, font, angle).positions;\n\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\t\tposition.active = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The top-level container for the entire plot.\n\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n\n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#488c13\", \"#1b55c0\", \"#da4b0f\", \"#e9b104\", \"#ae3c0c\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85, // set to 0 to avoid background\n                    sorted: null    // default to no legend sorting\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: \"italic\", weight: \"bold\", family: \"sans-serif\", variant: \"small-caps\" }\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null // number or [number, \"unit\"]\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled\n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                        // Omit 'zero', so we can later default its value to\n                        // match that of the 'fill' option.\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // \"left\", \"right\", or \"center\"\n                        horizontal: false,\n                        zero: true\n                    },\n                    shadowSize: 3,\n                    highlightColor: null\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    margin: 0, // distance from the canvas edge to the grid\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                interaction: {\n                    redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow\n                },\n                hooks: {}\n            },\n        surface = null,     // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            processOffset: [],\n            drawBackground: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return surface.element; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left, 10),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top, 10)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.destroy = function () {\n            shutdown();\n            placeholder.removeData(\"plot\").empty();\n\n            series = [];\n            options = null;\n            surface = null;\n            overlay = null;\n            eventHolder = null;\n            ctx = null;\n            octx = null;\n            xaxes = [];\n            yaxes = [];\n            hooks = null;\n            highlights = [];\n            plot = null;\n        };\n        plot.resize = function () {\n        \tvar width = placeholder.width(),\n        \t\theight = placeholder.height();\n            surface.resize(width, height);\n            overlay.resize(width, height);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n\n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n\n            // References to key classes, allowing plugins to modify them\n\n            var classes = {\n                Canvas: Canvas\n            };\n\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot, classes);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n\n        function parseOptions(opts) {\n\n            $.extend(true, options, opts);\n\n            // $.extend merges arrays, rather than replacing them.  When less\n            // colors are provided than the size of the default palette, we\n            // end up with those colors plus the remaining defaults, which is\n            // not expected behavior; avoid it by replacing them here.\n\n            if (opts && opts.colors) {\n            \toptions.colors = opts.colors;\n            }\n\n            if (options.xaxis.color == null)\n                options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            if (options.yaxis.color == null)\n                options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color;\n            if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            // Fill in defaults for axis options, including any unspecified\n            // font-spec fields, if a font-spec was provided.\n\n            // If no x/y axis options were provided, create one of each anyway,\n            // since the rest of the code assumes that they exist.\n\n            var i, axisOptions, axisCount,\n                fontSize = placeholder.css(\"font-size\"),\n                fontSizeDefault = fontSize ? +fontSize.replace(\"px\", \"\") : 13,\n                fontDefaults = {\n                    style: placeholder.css(\"font-style\"),\n                    size: Math.round(0.8 * fontSizeDefault),\n                    variant: placeholder.css(\"font-variant\"),\n                    weight: placeholder.css(\"font-weight\"),\n                    family: placeholder.css(\"font-family\")\n                };\n\n            axisCount = options.xaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.xaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.xaxis, axisOptions);\n                options.xaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            axisCount = options.yaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.yaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.yaxis, axisOptions);\n                options.yaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.x2axis.min == null) {\n                    options.xaxes[1].min = null;\n                }\n                if (options.x2axis.max == null) {\n                    options.xaxes[1].max = null;\n                }\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.y2axis.min == null) {\n                    options.yaxes[1].min = null;\n                }\n                if (options.y2axis.max == null) {\n                    options.yaxes[1].max = null;\n                }\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n            if (options.highlightColor != null)\n                options.series.highlightColor = options.highlightColor;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n\n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n\n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n\n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes\n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n\n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n\n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            return res;\n        }\n\n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n\n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n\n            var neededColors = series.length, maxIndex = -1, i;\n\n            // Subtract the number of series that already have fixed colors or\n            // color indexes from the number that we still need to generate.\n\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    neededColors--;\n                    if (typeof sc == \"number\" && sc > maxIndex) {\n                        maxIndex = sc;\n                    }\n                }\n            }\n\n            // If any of the series have fixed color indexes, then we need to\n            // generate at least as many colors as the highest index.\n\n            if (neededColors <= maxIndex) {\n                neededColors = maxIndex + 1;\n            }\n\n            // Generate all the colors, using first the option colors and then\n            // variations on those colors once they're exhausted.\n\n            var c, colors = [], colorPool = options.colors,\n                colorPoolSize = colorPool.length, variation = 0;\n\n            for (i = 0; i < neededColors; i++) {\n\n                c = $.color.parse(colorPool[i % colorPoolSize] || \"#666\");\n\n                // Each time we exhaust the colors in the pool we adjust\n                // a scaling factor used to produce more variations on\n                // those colors. The factor alternates negative/positive\n                // to produce lighter/darker colors.\n\n                // Reset the variation after every few cycles, or else\n                // it will end up producing only white or black colors.\n\n                if (i % colorPoolSize == 0 && i) {\n                    if (variation >= 0) {\n                        if (variation < 0.5) {\n                            variation = -variation - 0.2;\n                        } else variation = 0;\n                    } else variation = -variation;\n                }\n\n                colors[i] = c.scale('rgb', 1 + variation);\n            }\n\n            // Finalize the series options, filling in their colors\n\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // If nothing was provided for lines.zero, default it to match\n                // lines.fill, since areas by default should extend to zero.\n\n                if (s.lines.zero == null) {\n                    s.lines.zero = !!s.lines.fill;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n\n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p,\n                data, format;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n\n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n\n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                data = s.data;\n                format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));\n                        format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n\n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n\n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                var insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n\n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n\n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n\n                            points[k + m] = val;\n                        }\n                    }\n\n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.autoscale !== false) {\n                                    if (f.x) {\n                                        updateAxis(s.xaxis, val, val);\n                                    }\n                                    if (f.y) {\n                                        updateAxis(s.yaxis, val, val);\n                                    }\n                                }\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points;\n                ps = s.datapoints.pointsize;\n                format = s.datapoints.format;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n\n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n\n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n\n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            delta = 0;\n                            break;\n                        case \"right\":\n                            delta = -s.bars.barWidth;\n                            break;\n                        default:\n                            delta = -s.bars.barWidth / 2;\n                    }\n\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n\n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function setupCanvases() {\n\n            // Make sure the placeholder is clear of everything except canvases\n            // from a previous plot in this container that we'll try to re-use.\n\n            placeholder.css(\"padding\", 0) // padding messes up the positioning\n                .children().filter(function(){\n                    return !$(this).hasClass(\"flot-overlay\") && !$(this).hasClass('flot-base');\n                }).remove();\n\n            if (placeholder.css(\"position\") == 'static')\n                placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n            surface = new Canvas(\"flot-base\", placeholder);\n            overlay = new Canvas(\"flot-overlay\", placeholder); // overlay canvas for interactive features\n\n            ctx = surface.context;\n            octx = overlay.context;\n\n            // define which element we're listening for events on\n            eventHolder = $(overlay.element).unbind();\n\n            // If we're re-using a plot object, shut down the old one\n\n            var existing = placeholder.data(\"plot\");\n\n            if (existing) {\n                existing.shutdown();\n                overlay.clear();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n\n                // Use bind, rather than .mouseleave, because we officially\n                // still support jQuery 1.2.6, which doesn't define a shortcut\n                // for mouseenter or mouseleave.  This was a bug/oversight that\n                // was fixed somewhere around 1.3.x.  We can return to using\n                // .mouseleave when we drop support for 1.2.6.\n\n                eventHolder.bind(\"mouseleave\", onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n\n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n\n            function identity(x) { return x; }\n\n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n\n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n\n            var opts = axis.options,\n                ticks = axis.ticks || [],\n                labelWidth = opts.labelWidth || 0,\n                labelHeight = opts.labelHeight || 0,\n                maxWidth = labelWidth || (axis.direction == \"x\" ? Math.floor(surface.width / (ticks.length || 1)) : null),\n                legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                font = opts.font || \"flot-tick-label tickLabel\";\n\n            for (var i = 0; i < ticks.length; ++i) {\n\n                var t = ticks[i];\n\n                if (!t.label)\n                    continue;\n\n                var info = surface.getTextInfo(layer, t.label, font, null, maxWidth);\n\n                labelWidth = Math.max(labelWidth, info.width);\n                labelHeight = Math.max(labelHeight, info.height);\n            }\n\n            axis.labelWidth = opts.labelWidth || labelWidth;\n            axis.labelHeight = opts.labelHeight || labelHeight;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset; this first phase only looks at one\n            // dimension per axis, the other dimension depends on the\n            // other axes so will have to wait\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                isXAxis = axis.direction === \"x\",\n                tickLength = axis.options.tickLength,\n                axisMargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                innermost = true,\n                outermost = true,\n                first = true,\n                found = false;\n\n            // Determine the axis's position in its direction and on its side\n\n            $.each(isXAxis ? xaxes : yaxes, function(i, a) {\n                if (a && (a.show || a.reserveSpace)) {\n                    if (a === axis) {\n                        found = true;\n                    } else if (a.options.position === pos) {\n                        if (found) {\n                            outermost = false;\n                        } else {\n                            innermost = false;\n                        }\n                    }\n                    if (!found) {\n                        first = false;\n                    }\n                }\n            });\n\n            // The outermost axis on each side has no margin\n\n            if (outermost) {\n                axisMargin = 0;\n            }\n\n            // The ticks for the first axis in each direction stretch across\n\n            if (tickLength == null) {\n                tickLength = first ? \"full\" : 5;\n            }\n\n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            if (isXAxis) {\n                lh += padding;\n\n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axisMargin;\n                    axis.box = { top: surface.height - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axisMargin, height: lh };\n                    plotOffset.top += lh + axisMargin;\n                }\n            }\n            else {\n                lw += padding;\n\n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axisMargin, width: lw };\n                    plotOffset.left += lw + axisMargin;\n                }\n                else {\n                    plotOffset.right += lw + axisMargin;\n                    axis.box = { left: surface.width - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // now that all axis boxes have been placed in one\n            // dimension, we can set the remaining dimension coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left - axis.labelWidth / 2;\n                axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top - axis.labelHeight / 2;\n                axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight;\n            }\n        }\n\n        function adjustLayoutForThingsStickingOut() {\n            // possibly adjust plot offset to ensure everything stays\n            // inside the canvas and isn't clipped off\n\n            var minMargin = options.grid.minBorderMargin,\n                axis, i;\n\n            // check stuff from the plot (FIXME: this should just read\n            // a value from the series, otherwise it's impossible to\n            // customize)\n            if (minMargin == null) {\n                minMargin = 0;\n                for (i = 0; i < series.length; ++i)\n                    minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2));\n            }\n\n            var margins = {\n                left: minMargin,\n                right: minMargin,\n                top: minMargin,\n                bottom: minMargin\n            };\n\n            // check axis labels, note we don't check the actual\n            // labels but instead use the overall width/height to not\n            // jump as much around with replots\n            $.each(allAxes(), function (_, axis) {\n                if (axis.reserveSpace && axis.ticks && axis.ticks.length) {\n                    if (axis.direction === \"x\") {\n                        margins.left = Math.max(margins.left, axis.labelWidth / 2);\n                        margins.right = Math.max(margins.right, axis.labelWidth / 2);\n                    } else {\n                        margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2);\n                        margins.top = Math.max(margins.top, axis.labelHeight / 2);\n                    }\n                }\n            });\n\n            plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left));\n            plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right));\n            plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top));\n            plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom));\n        }\n\n        function setupGrid() {\n            var i, axes = allAxes(), showGrid = options.grid.show;\n\n            // Initialize the plot's offset from the edge of the canvas\n\n            for (var a in plotOffset) {\n                var margin = options.grid.margin || 0;\n                plotOffset[a] = typeof margin == \"number\" ? margin : margin[a] || 0;\n            }\n\n            executeHooks(hooks.processOffset, [plotOffset]);\n\n            // If the grid is visible, add its border width to the offset\n\n            for (var a in plotOffset) {\n                if(typeof(options.grid.borderWidth) == \"object\") {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0;\n                }\n                else {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth : 0;\n                }\n            }\n\n            $.each(axes, function (_, axis) {\n                var axisOpts = axis.options;\n                axis.show = axisOpts.show == null ? axis.used : axisOpts.show;\n                axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace;\n                setRange(axis);\n            });\n\n            if (showGrid) {\n\n                var allocatedAxes = $.grep(axes, function (axis) {\n                    return axis.show || axis.reserveSpace;\n                });\n\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions calculated, we can compute the\n                // axis bounding boxes, start from the outside\n                // (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                adjustLayoutForThingsStickingOut();\n\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n            }\n\n            plotWidth = surface.width - plotOffset.left - plotOffset.right;\n            plotHeight = surface.height - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plot dimensions, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (showGrid) {\n                drawAxisLabels();\n            }\n\n            insertLegend();\n        }\n\n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n\n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? surface.width : surface.height);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                dec = -Math.floor(Math.log(delta) / Math.LN10),\n                maxDec = opts.tickDecimals;\n\n            if (maxDec != null && dec > maxDec) {\n                dec = maxDec;\n            }\n\n            var magn = Math.pow(10, -dec),\n                norm = delta / magn, // norm is between 1.0 and 10.0\n                size;\n\n            if (norm < 1.5) {\n                size = 1;\n            } else if (norm < 3) {\n                size = 2;\n                // special case for 2.5, requires an extra decimal\n                if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                    size = 2.5;\n                    ++dec;\n                }\n            } else if (norm < 7.5) {\n                size = 5;\n            } else {\n                size = 10;\n            }\n\n            size *= magn;\n\n            if (opts.minTickSize != null && size < opts.minTickSize) {\n                size = opts.minTickSize;\n            }\n\n            axis.delta = delta;\n            axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n            axis.tickSize = opts.tickSize || size;\n\n            // Time mode was moved to a plug-in in 0.8, and since so many people use it\n            // we'll add an especially friendly reminder to make sure they included it.\n\n            if (opts.mode == \"time\" && !axis.tickGenerator) {\n                throw new Error(\"Time mode requires the flot.time plugin.\");\n            }\n\n            // Flot supports base-10 axes; any other mode else is handled by a plug-in,\n            // like flot.time.js.\n\n            if (!axis.tickGenerator) {\n\n                axis.tickGenerator = function (axis) {\n\n                    var ticks = [],\n                        start = floorInBase(axis.min, axis.tickSize),\n                        i = 0,\n                        v = Number.NaN,\n                        prev;\n\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n\t\t\t\taxis.tickFormatter = function (value, axis) {\n\n\t\t\t\t\tvar factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1;\n\t\t\t\t\tvar formatted = \"\" + Math.round(value * factor) / factor;\n\n\t\t\t\t\t// If tickDecimals was specified, ensure that we have exactly that\n\t\t\t\t\t// much precision; otherwise default to the value's own precision.\n\n\t\t\t\t\tif (axis.tickDecimals != null) {\n\t\t\t\t\t\tvar decimal = formatted.indexOf(\".\");\n\t\t\t\t\t\tvar precision = decimal == -1 ? 0 : formatted.length - decimal - 1;\n\t\t\t\t\t\tif (precision < axis.tickDecimals) {\n\t\t\t\t\t\t\treturn (precision ? formatted : formatted + \".\") + (\"\" + factor).substr(1, axis.tickDecimals - precision);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n                    return formatted;\n                };\n            }\n\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = axis.tickGenerator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n\n                    axis.tickGenerator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n\n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (!axis.mode && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1),\n                            ts = axis.tickGenerator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n        }\n\n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks(axis);\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n\n        function draw() {\n\n            surface.clear();\n\n            executeHooks(hooks.drawBackground, [ctx]);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n\n            if (grid.show && !grid.aboveData) {\n                drawGrid();\n            }\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n\n            if (grid.show && grid.aboveData) {\n                drawGrid();\n            }\n\n            surface.render();\n\n            // A draw implies that either the axes or data have changed, so we\n            // should probably update the overlay highlights as well.\n\n            triggerRedrawOverlay();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (var i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n\n            return { from: from, to: to, axis: axis };\n        }\n\n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i, axes, bw, bc;\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n\n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    var xequal = xrange.from === xrange.to,\n                        yequal = yrange.from === yrange.to;\n\n                    if (xequal && yequal) {\n                        continue;\n                    }\n\n                    // then draw\n                    xrange.from = Math.floor(xrange.axis.p2c(xrange.from));\n                    xrange.to = Math.floor(xrange.axis.p2c(xrange.to));\n                    yrange.from = Math.floor(yrange.axis.p2c(yrange.from));\n                    yrange.to = Math.floor(yrange.axis.p2c(yrange.to));\n\n                    if (xequal || yequal) {\n                        var lineWidth = m.lineWidth || options.grid.markingsLineWidth,\n                            subPixel = lineWidth % 2 ? 0.5 : 0;\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = lineWidth;\n                        if (xequal) {\n                            ctx.moveTo(xrange.to + subPixel, yrange.from);\n                            ctx.lineTo(xrange.to + subPixel, yrange.to);\n                        } else {\n                            ctx.moveTo(xrange.from, yrange.to + subPixel);\n                            ctx.lineTo(xrange.to, yrange.to + subPixel);                            \n                        }\n                        ctx.stroke();\n                    } else {\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n\n            // draw the ticks\n            axes = allAxes();\n            bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue;\n\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n\n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.strokeStyle = axis.options.color;\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth + 1;\n                    else\n                        yoff = plotHeight + 1;\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\") {\n                            y = Math.floor(y) + 0.5;\n                        } else {\n                            x = Math.floor(x) + 0.5;\n                        }\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n\n                ctx.strokeStyle = axis.options.tickColor;\n\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n\n                    xoff = yoff = 0;\n\n                    if (isNaN(v) || v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\"\n                            && ((typeof bw == \"object\" && bw[axis.position] > 0) || bw > 0)\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n\n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n\n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n\n                ctx.stroke();\n            }\n\n\n            // draw border\n            if (bw) {\n                // If either borderWidth or borderColor is an object, then draw the border\n                // line by line instead of as one rectangle\n                bc = options.grid.borderColor;\n                if(typeof bw == \"object\" || typeof bc == \"object\") {\n                    if (typeof bw !== \"object\") {\n                        bw = {top: bw, right: bw, bottom: bw, left: bw};\n                    }\n                    if (typeof bc !== \"object\") {\n                        bc = {top: bc, right: bc, bottom: bc, left: bc};\n                    }\n\n                    if (bw.top > 0) {\n                        ctx.strokeStyle = bc.top;\n                        ctx.lineWidth = bw.top;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left, 0 - bw.top/2);\n                        ctx.lineTo(plotWidth, 0 - bw.top/2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.right > 0) {\n                        ctx.strokeStyle = bc.right;\n                        ctx.lineWidth = bw.right;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top);\n                        ctx.lineTo(plotWidth + bw.right / 2, plotHeight);\n                        ctx.stroke();\n                    }\n\n                    if (bw.bottom > 0) {\n                        ctx.strokeStyle = bc.bottom;\n                        ctx.lineWidth = bw.bottom;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2);\n                        ctx.lineTo(0, plotHeight + bw.bottom / 2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.left > 0) {\n                        ctx.strokeStyle = bc.left;\n                        ctx.lineWidth = bw.left;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom);\n                        ctx.lineTo(0- bw.left/2, 0);\n                        ctx.stroke();\n                    }\n                }\n                else {\n                    ctx.lineWidth = bw;\n                    ctx.strokeStyle = options.grid.borderColor;\n                    ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n                }\n            }\n\n            ctx.restore();\n        }\n\n        function drawAxisLabels() {\n\n            $.each(allAxes(), function (_, axis) {\n                var box = axis.box,\n                    legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                    layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                    font = axis.options.font || \"flot-tick-label tickLabel\",\n                    tick, x, y, halign, valign;\n\n                // Remove text before checking for axis.show and ticks.length;\n                // otherwise plugins, like flot-tickrotor, that draw their own\n                // tick labels will end up with both theirs and the defaults.\n\n                surface.removeText(layer);\n\n                if (!axis.show || axis.ticks.length == 0)\n                    return;\n\n                for (var i = 0; i < axis.ticks.length; ++i) {\n\n                    tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        halign = \"center\";\n                        x = plotOffset.left + axis.p2c(tick.v);\n                        if (axis.position == \"bottom\") {\n                            y = box.top + box.padding;\n                        } else {\n                            y = box.top + box.height - box.padding;\n                            valign = \"bottom\";\n                        }\n                    } else {\n                        valign = \"middle\";\n                        y = plotOffset.top + axis.p2c(tick.v);\n                        if (axis.position == \"left\") {\n                            x = box.left + box.width - box.padding;\n                            halign = \"right\";\n                        } else {\n                            x = box.left + box.padding;\n                        }\n                    }\n\n                    surface.addText(layer, x, y, tick.label, font, null, null, halign, valign);\n                }\n            });\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n\n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n\n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n\n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n\n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n\n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n\n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n\n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n\n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n\n            // If the user sets the line width to 0, we change it to a very \n            // small value. A line width of 0 seems to force the default of 1.\n            // Doing the conditional here allows the shadow setting to still be \n            // optional even with a lineWidth of 0.\n\n            if( lw == 0 )\n                lw = 0.0001;\n\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n\n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n\n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n\n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n\n            // fill the bar\n            if (fillStyleCallback) {\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fillRect(left, top, right - left, bottom - top)\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom);\n                if (drawLeft)\n                    c.lineTo(left, top);\n                else\n                    c.moveTo(left, top);\n                if (drawTop)\n                    c.lineTo(right, top);\n                else\n                    c.moveTo(right, top);\n                if (drawRight)\n                    c.lineTo(right, bottom);\n                else\n                    c.moveTo(right, bottom);\n                if (drawBottom)\n                    c.lineTo(left, bottom);\n                else\n                    c.moveTo(left, bottom);\n                c.stroke();\n            }\n        }\n\n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n\n            var barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n\n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n\n        function insertLegend() {\n\n            if (options.legend.container != null) {\n                $(options.legend.container).html(\"\");\n            } else {\n                placeholder.find(\".legend\").remove();\n            }\n\n            if (!options.legend.show) {\n                return;\n            }\n\n            var fragments = [], entries = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n\n            // Build a list of legend entries, with each having a label and a color\n\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                if (s.label) {\n                    label = lf ? lf(s.label, s) : s.label;\n                    if (label) {\n                        entries.push({\n                            label: label,\n                            color: s.color\n                        });\n                    }\n                }\n            }\n\n            // Sort the legend using either the default or a custom comparator\n\n            if (options.legend.sorted) {\n                if ($.isFunction(options.legend.sorted)) {\n                    entries.sort(options.legend.sorted);\n                } else if (options.legend.sorted == \"reverse\") {\n                \tentries.reverse();\n                } else {\n                    var ascending = options.legend.sorted != \"descending\";\n                    entries.sort(function(a, b) {\n                        return a.label == b.label ? 0 : (\n                            (a.label < b.label) != ascending ? 1 : -1   // Logical XOR\n                        );\n                    });\n                }\n            }\n\n            // Generate markup for the list of entries, in their final order\n\n            for (var i = 0; i < entries.length; ++i) {\n\n                var entry = entries[i];\n\n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + entry.label + '</td>'\n                );\n            }\n\n            if (rowStarted)\n                fragments.push('</tr>');\n\n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n\n        var highlights = [],\n            redrawTimeout = null;\n\n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j, ps;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n\n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                ps = s.datapoints.pointsize;\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n\n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n\n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n\n                if (s.bars.show && !item) { // no other point can be nearby\n\n                    var barLeft, barRight;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            barLeft = 0;\n                            break;\n                        case \"right\":\n                            barLeft = -s.bars.barWidth;\n                            break;\n                        default:\n                            barLeft = -s.bars.barWidth / 2;\n                    }\n\n                    barRight = barLeft + s.bars.barWidth;\n\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n\n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ?\n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) &&\n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n\n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n\n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n\n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n\n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            var t = options.interaction.redrawOverlayInterval;\n            if (t == -1) {      // skip event queue\n                drawOverlay();\n                return;\n            }\n\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, t);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            overlay.clear();\n            octx.translate(plotOffset.left, plotOffset.top);\n\n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n\n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n\n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n\n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n                return;\n            }\n\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n\n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n\n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis,\n                highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString();\n\n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n\n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = highlightColor;\n            var radius = 1.5 * pointRadius;\n            x = axisx.p2c(x);\n            y = axisy.p2c(y);\n\n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            var highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(),\n                fillStyle = highlightColor,\n                barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = highlightColor;\n\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n\n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness);\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n\n                return gradient;\n            }\n        }\n    }\n\n    // Add the plot function to the top level of the jQuery object\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.8.3\";\n\n    $.plot.plugins = [];\n\n    // Also add the plot function as a chainable property\n\n    $.fn.plot = function(data, options) {\n        return this.each(function() {\n            $.plot(this, data, options);\n        });\n    };\n\n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.navigate.js",
    "content": "/* Flot plugin for adding the ability to pan and zoom the plot.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe default behaviour is double click and scrollwheel up/down to zoom in, drag\nto pan. The plugin defines plot.zoom({ center }), plot.zoomOut() and\nplot.pan( offset ) so you easily can add custom controls. It also fires\n\"plotpan\" and \"plotzoom\" events, useful for synchronizing plots.\n\nThe plugin supports these options:\n\n\tzoom: {\n\t\tinteractive: false\n\t\ttrigger: \"dblclick\" // or \"click\" for single click\n\t\tamount: 1.5         // 2 = 200% (zoom in), 0.5 = 50% (zoom out)\n\t}\n\n\tpan: {\n\t\tinteractive: false\n\t\tcursor: \"move\"      // CSS mouse cursor value used when dragging, e.g. \"pointer\"\n\t\tframeRate: 20\n\t}\n\n\txaxis, yaxis, x2axis, y2axis: {\n\t\tzoomRange: null  // or [ number, number ] (min range, max range) or false\n\t\tpanRange: null   // or [ number, number ] (min, max) or false\n\t}\n\n\"interactive\" enables the built-in drag/click behaviour. If you enable\ninteractive for pan, then you'll have a basic plot that supports moving\naround; the same for zoom.\n\n\"amount\" specifies the default amount to zoom in (so 1.5 = 150%) relative to\nthe current viewport.\n\n\"cursor\" is a standard CSS mouse cursor string used for visual feedback to the\nuser when dragging.\n\n\"frameRate\" specifies the maximum number of times per second the plot will\nupdate itself while the user is panning around on it (set to null to disable\nintermediate pans, the plot will then not update until the mouse button is\nreleased).\n\n\"zoomRange\" is the interval in which zooming can happen, e.g. with zoomRange:\n[1, 100] the zoom will never scale the axis so that the difference between min\nand max is smaller than 1 or larger than 100. You can set either end to null\nto ignore, e.g. [1, null]. If you set zoomRange to false, zooming on that axis\nwill be disabled.\n\n\"panRange\" confines the panning to stay within a range, e.g. with panRange:\n[-10, 20] panning stops at -10 in one end and at 20 in the other. Either can\nbe null, e.g. [-10, null]. If you set panRange to false, panning on that axis\nwill be disabled.\n\nExample API usage:\n\n\tplot = $.plot(...);\n\n\t// zoom default amount in on the pixel ( 10, 20 )\n\tplot.zoom({ center: { left: 10, top: 20 } });\n\n\t// zoom out again\n\tplot.zoomOut({ center: { left: 10, top: 20 } });\n\n\t// zoom 200% in on the pixel (10, 20)\n\tplot.zoom({ amount: 2, center: { left: 10, top: 20 } });\n\n\t// pan 100 pixels to the left and 20 down\n\tplot.pan({ left: -100, top: 20 })\n\nHere, \"center\" specifies where the center of the zooming should happen. Note\nthat this is defined in pixel space, not the space of the data points (you can\nuse the p2c helpers on the axes in Flot to help you convert between these).\n\n\"amount\" is the amount to zoom the viewport relative to the current range, so\n1 is 100% (i.e. no change), 1.5 is 150% (zoom in), 0.7 is 70% (zoom out). You\ncan set the default in the options.\n\n*/\n\n// First two dependencies, jquery.event.drag.js and\n// jquery.mousewheel.js, we put them inline here to save people the\n// effort of downloading them.\n\n/*\njquery.event.drag.js ~ v1.5 ~ Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)\nLicensed under the MIT License ~ http://threedubmedia.googlecode.com/files/MIT-LICENSE.txt\n*/\n(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case\"mousedown\":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,\"mousemove mouseup\",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&\"mousemove\":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY)<l.distance)break;h.target=l.target,k=f(h,\"dragstart\",j),k!==!1&&(d.dragging=j,d.proxy=h.dragProxy=a(k||j)[0]);case\"mousemove\":if(d.dragging){if(k=f(h,\"drag\",j),c.drop&&(c.drop.allowed=k!==!1,c.drop.handler(h)),k!==!1)break;h.type=\"mouseup\"}case\"mouseup\":b.remove(document,\"mousemove mouseup\",e),d.dragging&&(c.drop&&c.drop.handler(h),f(h,\"dragend\",j)),i(j,!0),d.dragging=d.proxy=l.elem=!1}return!0}function f(b,c,d){b.type=c;var e=a.event.dispatch.call(d,b);return e===!1?!1:e||b.result}function g(a){return Math.pow(a,2)}function h(){return d.dragging===!1}function i(a,b){a&&(a.unselectable=b?\"off\":\"on\",a.onselectstart=function(){return b},a.style&&(a.style.MozUserSelect=b?\"\":\"none\"))}a.fn.drag=function(a,b,c){return b&&this.bind(\"dragstart\",a),c&&this.bind(\"dragend\",c),a?this.bind(\"drag\",b?b:a):this.trigger(\"drag\")};var b=a.event,c=b.special,d=c.drag={not:\":input\",distance:0,which:1,dragging:!1,setup:function(c){c=a.extend({distance:d.distance,which:d.which,not:d.not},c||{}),c.distance=g(c.distance),b.add(this,\"mousedown\",e,c),this.attachEvent&&this.attachEvent(\"ondragstart\",h)},teardown:function(){b.remove(this,\"mousedown\",e),this===d.dragging&&(d.dragging=d.proxy=!1),i(this,!0),this.detachEvent&&this.detachEvent(\"ondragstart\",h)}};c.dragstart=c.dragend={setup:function(){},teardown:function(){}}})(jQuery);\n\n/* jquery.mousewheel.min.js\n * Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)\n * Licensed under the MIT License (LICENSE.txt).\n * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.\n * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.\n * Thanks to: Seamus Leahy for adding deltaX and deltaY\n *\n * Version: 3.0.6\n *\n * Requires: 1.2.2+\n */\n(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type=\"mousewheel\";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;void 0!==b.axis&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);void 0!==b.wheelDeltaY&&(g=b.wheelDeltaY/120);void 0!==b.wheelDeltaX&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=[\"DOMMouseScroll\",\"mousewheel\"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,!1);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,!1);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})})(jQuery);\n\n\n\n\n(function ($) {\n    var options = {\n        xaxis: {\n            zoomRange: null, // or [number, number] (min range, max range)\n            panRange: null // or [number, number] (min, max)\n        },\n        zoom: {\n            interactive: false,\n            trigger: \"dblclick\", // or \"click\" for single click\n            amount: 1.5 // how much to zoom relative to current position, 2 = 200% (zoom in), 0.5 = 50% (zoom out)\n        },\n        pan: {\n            interactive: false,\n            cursor: \"move\",\n            frameRate: 20\n        }\n    };\n\n    function init(plot) {\n        function onZoomClick(e, zoomOut) {\n            var c = plot.offset();\n            c.left = e.pageX - c.left;\n            c.top = e.pageY - c.top;\n            if (zoomOut)\n                plot.zoomOut({ center: c });\n            else\n                plot.zoom({ center: c });\n        }\n\n        function onMouseWheel(e, delta) {\n            e.preventDefault();\n            onZoomClick(e, delta < 0);\n            return false;\n        }\n        \n        var prevCursor = 'default', prevPageX = 0, prevPageY = 0,\n            panTimeout = null;\n\n        function onDragStart(e) {\n            if (e.which != 1)  // only accept left-click\n                return false;\n            var c = plot.getPlaceholder().css('cursor');\n            if (c)\n                prevCursor = c;\n            plot.getPlaceholder().css('cursor', plot.getOptions().pan.cursor);\n            prevPageX = e.pageX;\n            prevPageY = e.pageY;\n        }\n        \n        function onDrag(e) {\n            var frameRate = plot.getOptions().pan.frameRate;\n            if (panTimeout || !frameRate)\n                return;\n\n            panTimeout = setTimeout(function () {\n                plot.pan({ left: prevPageX - e.pageX,\n                           top: prevPageY - e.pageY });\n                prevPageX = e.pageX;\n                prevPageY = e.pageY;\n                                                    \n                panTimeout = null;\n            }, 1 / frameRate * 1000);\n        }\n\n        function onDragEnd(e) {\n            if (panTimeout) {\n                clearTimeout(panTimeout);\n                panTimeout = null;\n            }\n                    \n            plot.getPlaceholder().css('cursor', prevCursor);\n            plot.pan({ left: prevPageX - e.pageX,\n                       top: prevPageY - e.pageY });\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            var o = plot.getOptions();\n            if (o.zoom.interactive) {\n                eventHolder[o.zoom.trigger](onZoomClick);\n                eventHolder.mousewheel(onMouseWheel);\n            }\n\n            if (o.pan.interactive) {\n                eventHolder.bind(\"dragstart\", { distance: 10 }, onDragStart);\n                eventHolder.bind(\"drag\", onDrag);\n                eventHolder.bind(\"dragend\", onDragEnd);\n            }\n        }\n\n        plot.zoomOut = function (args) {\n            if (!args)\n                args = {};\n            \n            if (!args.amount)\n                args.amount = plot.getOptions().zoom.amount;\n\n            args.amount = 1 / args.amount;\n            plot.zoom(args);\n        };\n        \n        plot.zoom = function (args) {\n            if (!args)\n                args = {};\n            \n            var c = args.center,\n                amount = args.amount || plot.getOptions().zoom.amount,\n                w = plot.width(), h = plot.height();\n\n            if (!c)\n                c = { left: w / 2, top: h / 2 };\n                \n            var xf = c.left / w,\n                yf = c.top / h,\n                minmax = {\n                    x: {\n                        min: c.left - xf * w / amount,\n                        max: c.left + (1 - xf) * w / amount\n                    },\n                    y: {\n                        min: c.top - yf * h / amount,\n                        max: c.top + (1 - yf) * h / amount\n                    }\n                };\n\n            $.each(plot.getAxes(), function(_, axis) {\n                var opts = axis.options,\n                    min = minmax[axis.direction].min,\n                    max = minmax[axis.direction].max,\n                    zr = opts.zoomRange,\n                    pr = opts.panRange;\n\n                if (zr === false) // no zooming on this axis\n                    return;\n                    \n                min = axis.c2p(min);\n                max = axis.c2p(max);\n                if (min > max) {\n                    // make sure min < max\n                    var tmp = min;\n                    min = max;\n                    max = tmp;\n                }\n\n                //Check that we are in panRange\n                if (pr) {\n                    if (pr[0] != null && min < pr[0]) {\n                        min = pr[0];\n                    }\n                    if (pr[1] != null && max > pr[1]) {\n                        max = pr[1];\n                    }\n                }\n\n                var range = max - min;\n                if (zr &&\n                    ((zr[0] != null && range < zr[0] && amount >1) ||\n                     (zr[1] != null && range > zr[1] && amount <1)))\n                    return;\n            \n                opts.min = min;\n                opts.max = max;\n            });\n            \n            plot.setupGrid();\n            plot.draw();\n            \n            if (!args.preventEvent)\n                plot.getPlaceholder().trigger(\"plotzoom\", [ plot, args ]);\n        };\n\n        plot.pan = function (args) {\n            var delta = {\n                x: +args.left,\n                y: +args.top\n            };\n\n            if (isNaN(delta.x))\n                delta.x = 0;\n            if (isNaN(delta.y))\n                delta.y = 0;\n\n            $.each(plot.getAxes(), function (_, axis) {\n                var opts = axis.options,\n                    min, max, d = delta[axis.direction];\n\n                min = axis.c2p(axis.p2c(axis.min) + d),\n                max = axis.c2p(axis.p2c(axis.max) + d);\n\n                var pr = opts.panRange;\n                if (pr === false) // no panning on this axis\n                    return;\n                \n                if (pr) {\n                    // check whether we hit the wall\n                    if (pr[0] != null && pr[0] > min) {\n                        d = pr[0] - min;\n                        min += d;\n                        max += d;\n                    }\n                    \n                    if (pr[1] != null && pr[1] < max) {\n                        d = pr[1] - max;\n                        min += d;\n                        max += d;\n                    }\n                }\n                \n                opts.min = min;\n                opts.max = max;\n            });\n            \n            plot.setupGrid();\n            plot.draw();\n            \n            if (!args.preventEvent)\n                plot.getPlaceholder().trigger(\"plotpan\", [ plot, args ]);\n        };\n\n        function shutdown(plot, eventHolder) {\n            eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick);\n            eventHolder.unbind(\"mousewheel\", onMouseWheel);\n            eventHolder.unbind(\"dragstart\", onDragStart);\n            eventHolder.unbind(\"drag\", onDrag);\n            eventHolder.unbind(\"dragend\", onDragEnd);\n            if (panTimeout)\n                clearTimeout(panTimeout);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'navigate',\n        version: '1.3'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.pie.js",
    "content": "/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes that each series has a single data value, and that each\nvalue is a positive integer or zero.  Negative numbers don't make sense for a\npie chart, and have unpredictable results.  The values do NOT need to be\npassed in as percentages; the plugin will calculate the total and per-slice\npercentages internally.\n\n* Created by Brian Medendorp\n\n* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tpie: {\n\t\t\tshow: true/false\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\t\toffset: {\n\t\t\t\ttop: integer value to move the pie up or down\n\t\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\t\twidth: integer pixel width of the stroke\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\tshow: true/false, or 'auto'\n\t\t\t\tformatter:  a user-defined function that modifies the text/style of the label text\n\t\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\t\tbackground: {\n\t\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\t\topacity: 0-1\n\t\t\t\t},\n\t\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t\t},\n\t\t\tcombine: {\n\t\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t\t}\n\t\t\thighlight: {\n\t\t\t\topacity: 0-1\n\t\t\t}\n\t\t}\n\t}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function($) {\n\n\t// Maximum redraw attempts when fitting labels within the plot\n\n\tvar REDRAW_ATTEMPTS = 10;\n\n\t// Factor by which to shrink the pie when fitting labels within the plot\n\n\tvar REDRAW_SHRINK = 0.95;\n\n\tfunction init(plot) {\n\n\t\tvar canvas = null,\n\t\t\ttarget = null,\n\t\t\toptions = null,\n\t\t\tmaxRadius = null,\n\t\t\tcenterLeft = null,\n\t\t\tcenterTop = null,\n\t\t\tprocessed = false,\n\t\t\tctx = null;\n\n\t\t// interactive variables\n\n\t\tvar highlights = [];\n\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\n\t\tplot.hooks.processOptions.push(function(plot, options) {\n\t\t\tif (options.series.pie.show) {\n\n\t\t\t\toptions.grid.show = false;\n\n\t\t\t\t// set labels.show\n\n\t\t\t\tif (options.series.pie.label.show == \"auto\") {\n\t\t\t\t\tif (options.legend.show) {\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set radius\n\n\t\t\t\tif (options.series.pie.radius == \"auto\") {\n\t\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ensure sane tilt\n\n\t\t\t\tif (options.series.pie.tilt > 1) {\n\t\t\t\t\toptions.series.pie.tilt = 1;\n\t\t\t\t} else if (options.series.pie.tilt < 0) {\n\t\t\t\t\toptions.series.pie.tilt = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.bindEvents.push(function(plot, eventHolder) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tif (options.grid.hoverable) {\n\t\t\t\t\teventHolder.unbind(\"mousemove\").mousemove(onMouseMove);\n\t\t\t\t}\n\t\t\t\tif (options.grid.clickable) {\n\t\t\t\t\teventHolder.unbind(\"click\").click(onClick);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tprocessDatapoints(plot, series, data, datapoints);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.drawOverlay.push(function(plot, octx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdrawOverlay(plot, octx);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.draw.push(function(plot, newCtx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdraw(plot, newCtx);\n\t\t\t}\n\t\t});\n\n\t\tfunction processDatapoints(plot, series, datapoints) {\n\t\t\tif (!processed)\t{\n\t\t\t\tprocessed = true;\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\n\t\tfunction combine(data) {\n\n\t\t\tvar total = 0,\n\t\t\t\tcombined = 0,\n\t\t\t\tnumCombined = 0,\n\t\t\t\tcolor = options.series.pie.combine.color,\n\t\t\t\tnewdata = [];\n\n\t\t\t// Fix up the raw data from Flot, ensuring the data is numeric\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\n\t\t\t\tvar value = data[i].data;\n\n\t\t\t\t// If the data is an array, we'll assume that it's a standard\n\t\t\t\t// Flot x-y pair, and are concerned only with the second value.\n\n\t\t\t\t// Note how we use the original array, rather than creating a\n\t\t\t\t// new one; this is more efficient and preserves any extra data\n\t\t\t\t// that the user may have stored in higher indexes.\n\n\t\t\t\tif ($.isArray(value) && value.length == 1) {\n    \t\t\t\tvalue = value[0];\n\t\t\t\t}\n\n\t\t\t\tif ($.isArray(value)) {\n\t\t\t\t\t// Equivalent to $.isNumeric() but compatible with jQuery < 1.7\n\t\t\t\t\tif (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {\n\t\t\t\t\t\tvalue[1] = +value[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue[1] = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isNaN(parseFloat(value)) && isFinite(value)) {\n\t\t\t\t\tvalue = [1, +value];\n\t\t\t\t} else {\n\t\t\t\t\tvalue = [1, 0];\n\t\t\t\t}\n\n\t\t\t\tdata[i].data = [value];\n\t\t\t}\n\n\t\t\t// Sum up all the slices, so we can calculate percentages for each\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\ttotal += data[i].data[0][1];\n\t\t\t}\n\n\t\t\t// Count the number of slices with percentages below the combine\n\t\t\t// threshold; if it turns out to be just one, we won't combine.\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (value / total <= options.series.pie.combine.threshold) {\n\t\t\t\t\tcombined += value;\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color) {\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (numCombined < 2 || value / total > options.series.pie.combine.threshold) {\n\t\t\t\t\tnewdata.push(\n\t\t\t\t\t\t$.extend(data[i], {     /* extend to allow keeping all other original data values\n\t\t\t\t\t\t                           and using them e.g. in labelFormatter. */\n\t\t\t\t\t\t\tdata: [[1, value]],\n\t\t\t\t\t\t\tcolor: data[i].color,\n\t\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\t\tangle: value * Math.PI * 2 / total,\n\t\t\t\t\t\t\tpercent: value / (total / 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (numCombined > 1) {\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1, combined]],\n\t\t\t\t\tcolor: color,\n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: combined * Math.PI * 2 / total,\n\t\t\t\t\tpercent: combined / (total / 100)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn newdata;\n\t\t}\n\n\t\tfunction draw(plot, newCtx) {\n\n\t\t\tif (!target) {\n\t\t\t\treturn; // if no series were passed\n\t\t\t}\n\n\t\t\tvar canvasWidth = plot.getPlaceholder().width(),\n\t\t\t\tcanvasHeight = plot.getPlaceholder().height(),\n\t\t\t\tlegendWidth = target.children().filter(\".legend\").children().width() || 0;\n\n\t\t\tctx = newCtx;\n\n\t\t\t// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!\n\n\t\t\t// When combining smaller slices into an 'other' slice, we need to\n\t\t\t// add a new series.  Since Flot gives plugins no way to modify the\n\t\t\t// list of series, the pie plugin uses a hack where the first call\n\t\t\t// to processDatapoints results in a call to setData with the new\n\t\t\t// list of series, then subsequent processDatapoints do nothing.\n\n\t\t\t// The plugin-global 'processed' flag is used to control this hack;\n\t\t\t// it starts out false, and is set to true after the first call to\n\t\t\t// processDatapoints.\n\n\t\t\t// Unfortunately this turns future setData calls into no-ops; they\n\t\t\t// call processDatapoints, the flag is true, and nothing happens.\n\n\t\t\t// To fix this we'll set the flag back to false here in draw, when\n\t\t\t// all series have been processed, so the next sequence of calls to\n\t\t\t// processDatapoints once again starts out with a slice-combine.\n\t\t\t// This is really a hack; in 0.9 we need to give plugins a proper\n\t\t\t// way to modify series before any processing begins.\n\n\t\t\tprocessed = false;\n\n\t\t\t// calculate maximum radius and center point\n\n\t\t\tmaxRadius =  Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;\n\t\t\tcenterTop = canvasHeight / 2 + options.series.pie.offset.top;\n\t\t\tcenterLeft = canvasWidth / 2;\n\n\t\t\tif (options.series.pie.offset.left == \"auto\") {\n\t\t\t\tif (options.legend.position.match(\"w\")) {\n\t\t\t\t\tcenterLeft += legendWidth / 2;\n\t\t\t\t} else {\n\t\t\t\t\tcenterLeft -= legendWidth / 2;\n\t\t\t\t}\n\t\t\t\tif (centerLeft < maxRadius) {\n\t\t\t\t\tcenterLeft = maxRadius;\n\t\t\t\t} else if (centerLeft > canvasWidth - maxRadius) {\n\t\t\t\t\tcenterLeft = canvasWidth - maxRadius;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t}\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\tattempts = 0;\n\n\t\t\t// Keep shrinking the pie's radius until drawPie returns true,\n\t\t\t// indicating that all the labels fit, or we try too many times.\n\n\t\t\tdo {\n\t\t\t\tif (attempts > 0) {\n\t\t\t\t\tmaxRadius *= REDRAW_SHRINK;\n\t\t\t\t}\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt <= 0.8) {\n\t\t\t\t\tdrawShadow();\n\t\t\t\t}\n\t\t\t} while (!drawPie() && attempts < REDRAW_ATTEMPTS)\n\n\t\t\tif (attempts >= REDRAW_ATTEMPTS) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend(\"<div class='error'>Could not draw pie with labels contained inside canvas</div>\");\n\t\t\t}\n\n\t\t\tif (plot.setSeries && plot.insertLegend) {\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\n\t\t\tfunction clear() {\n\t\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\t\t\t\ttarget.children().filter(\".pieLabel, .pieLabelBackground\").remove();\n\t\t\t}\n\n\t\t\tfunction drawShadow() {\n\n\t\t\t\tvar shadowLeft = options.series.pie.shadow.left;\n\t\t\t\tvar shadowTop = options.series.pie.shadow.top;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = options.series.pie.shadow.alpha;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\tif (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = \"#000\";\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\n\t\t\t\t//radius -= edge;\n\n\t\t\t\tfor (var i = 1; i <= edge; i++) {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\n\t\t\tfunction drawPie() {\n\n\t\t\t\tvar startAngle = Math.PI * options.series.pie.startAngle;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\n\t\t\t\t// draw slices\n\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\n\t\t\t\t// draw slice outlines\n\n\t\t\t\tif (options.series.pie.stroke.width > 0) {\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\n\t\t\t\t// draw donut hole\n\n\t\t\t\tdrawDonutHole(ctx);\n\n\t\t\t\tctx.restore();\n\n\t\t\t\t// Draw the labels, returning true if they fit within the plot\n\n\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\treturn drawLabels();\n\t\t\t\t} else return true;\n\n\t\t\t\tfunction drawSlice(angle, color, fill) {\n\n\t\t\t\t\tif (angle <= 0 || isNaN(angle)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = \"round\";\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t}\n\n\t\t\t\t\t//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction drawLabels() {\n\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\tvar radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;\n\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold * 100) {\n\t\t\t\t\t\t\tif (!drawLabel(slices[i], currentAngle, i)) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index) {\n\n\t\t\t\t\t\tif (slice.data[0][1] == 0) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// format label text\n\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\n\t\t\t\t\t\tif (lf) {\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (plf) {\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar halfAngle = ((startAngle + slice.angle) + startAngle) / 2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\n\t\t\t\t\t\tvar html = \"<span class='pieLabel' id='pieLabel\" + index + \"' style='position:absolute;top:\" + y + \"px;left:\" + x + \"px;'>\" + text + \"</span>\";\n\t\t\t\t\t\ttarget.append(html);\n\n\t\t\t\t\t\tvar label = target.children(\"#pieLabel\" + index);\n\t\t\t\t\t\tvar labelTop = (y - label.height() / 2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width() / 2);\n\n\t\t\t\t\t\tlabel.css(\"top\", labelTop);\n\t\t\t\t\t\tlabel.css(\"left\", labelLeft);\n\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\n\t\t\t\t\t\tif (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar pos = \"top:\" + labelTop + \"px;left:\" + labelLeft + \"px;\";\n\t\t\t\t\t\t\t$(\"<div class='pieLabelBackground' style='position:absolute;width:\" + label.width() + \"px;height:\" + label.height() + \"px;\" + pos + \"background-color:\" + c + \";'></div>\")\n\t\t\t\t\t\t\t\t.css(\"opacity\", options.series.pie.label.background.opacity)\n\t\t\t\t\t\t\t\t.insertBefore(label);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\n\t\t// Placed here because it needs to be accessed from multiple locations\n\n\t\tfunction drawDonutHole(layer) {\n\t\t\tif (options.series.pie.innerRadius > 0) {\n\n\t\t\t\t// subtract the center\n\n\t\t\t\tlayer.save();\n\t\t\t\tvar innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = \"destination-out\"; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// add inner stroke\n\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\n\t\t//-- Additional Interactive related functions --\n\n\t\tfunction isPointInPoly(poly, pt) {\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\n\t\tfunction findNearbySlice(mouseX, mouseY) {\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,\n\t\t\t\tx, y;\n\n\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\n\t\t\t\tvar s = slices[i];\n\n\t\t\t\tif (s.pie.show) {\n\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX - centerLeft;\n\t\t\t\t\ty = mouseY - centerTop;\n\n\t\t\t\t\tif (ctx.isPointInPath) {\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround.\n\n\t\t\t\t\t\tvar p1X = radius * Math.cos(s.startAngle),\n\t\t\t\t\t\t\tp1Y = radius * Math.sin(s.startAngle),\n\t\t\t\t\t\t\tp2X = radius * Math.cos(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp2Y = radius * Math.sin(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp3X = radius * Math.cos(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp3Y = radius * Math.sin(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp4X = radius * Math.cos(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp5X = radius * Math.cos(s.startAngle + s.angle),\n\t\t\t\t\t\t\tp5Y = radius * Math.sin(s.startAngle + s.angle),\n\t\t\t\t\t\t\tarrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],\n\t\t\t\t\t\t\tarrPoint = [x, y];\n\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\n\t\t\t\t\t\tif (isPointInPoly(arrPoly, arrPoint)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\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\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\ttriggerClickHoverEvent(\"plothover\", e);\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\ttriggerClickHoverEvent(\"plotclick\", e);\n\t\t}\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\n\t\tfunction triggerClickHoverEvent(eventname, e) {\n\n\t\t\tvar offset = plot.offset();\n\t\t\tvar canvasX = parseInt(e.pageX - offset.left);\n\t\t\tvar canvasY =  parseInt(e.pageY - offset.top);\n\t\t\tvar item = findNearbySlice(canvasX, canvasY);\n\n\t\t\tif (options.grid.autoHighlight) {\n\n\t\t\t\t// clear auto-highlights\n\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series)) {\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// highlight the slice\n\n\t\t\tif (item) {\n\t\t\t\thighlight(item.series, eventname);\n\t\t\t}\n\n\t\t\t// trigger any hover bind events\n\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [pos, item]);\n\t\t}\n\n\t\tfunction highlight(s, auto) {\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i == -1) {\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t} else if (!auto) {\n\t\t\t\thighlights[i].auto = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction unhighlight(s) {\n\t\t\tif (s == null) {\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i != -1) {\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) {\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) {\n\n\t\t\tvar options = plot.getOptions();\n\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t}\n\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) {\n\n\t\t\t\tif (series.angle <= 0 || isNaN(series.angle)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \" + options.series.pie.highlight.opacity + \")\"; // this is temporary until we have access to parseColor\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\toctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t}\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t}\n\t} // end init (plugin body)\n\n\t// define pie specific options and their default values\n\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: \"auto\",\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius: 0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\tshadow: {\n\t\t\t\t\tleft: 5,\t// shadow left offset\n\t\t\t\t\ttop: 15,\t// shadow top offset\n\t\t\t\t\talpha: 0.02\t// shadow alpha\n\t\t\t\t},\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: \"auto\"\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: \"auto\",\n\t\t\t\t\tformatter: function(label, slice) {\n\t\t\t\t\t\treturn \"<div style='font-size:x-small;text-align:center;padding:2px;color:\" + slice.color + \";'>\" + label + \"<br/>\" + Math.round(slice.percent) + \"%</div>\";\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: \"Other\"\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: \"#fff\",\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.1\"\n\t});\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.resize.js",
    "content": "/* Flot plugin for automatically redrawing plots as the placeholder resizes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nIt works by listening for changes on the placeholder div (through the jQuery\nresize event plugin) - if the size changes, it will redraw the plot.\n\nThere are no options. If you need to disable the plugin for some plots, you\ncan just fix the size of their placeholders.\n\n*/\n\n/* Inline dependency:\n * jQuery resize event - v1.1 - 3/14/2010\n * http://benalman.com/projects/jquery-resize-plugin/\n *\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,e,t){\"$:nomunge\";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s=\"setTimeout\",u=\"resize\",m=u+\"-special-event\",o=\"pendingDelay\",l=\"activeDelay\",f=\"throttleWindow\";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(\":visible\")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);\n\n(function ($) {\n    var options = { }; // no options\n\n    function init(plot) {\n        function onResize() {\n            var placeholder = plot.getPlaceholder();\n\n            // somebody might have hidden us and we can't plot\n            // when we don't have the dimensions\n            if (placeholder.width() == 0 || placeholder.height() == 0)\n                return;\n\n            plot.resize();\n            plot.setupGrid();\n            plot.draw();\n        }\n        \n        function bindEvents(plot, eventHolder) {\n            plot.getPlaceholder().resize(onResize);\n        }\n\n        function shutdown(plot, eventHolder) {\n            plot.getPlaceholder().unbind(\"resize\", onResize);\n        }\n        \n        plot.hooks.bindEvents.push(bindEvents);\n        plot.hooks.shutdown.push(shutdown);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'resize',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.selection.js",
    "content": "/* Flot plugin for selecting regions of a plot.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin supports these options:\n\nselection: {\n\tmode: null or \"x\" or \"y\" or \"xy\",\n\tcolor: color,\n\tshape: \"round\" or \"miter\" or \"bevel\",\n\tminSize: number of pixels\n}\n\nSelection support is enabled by setting the mode to one of \"x\", \"y\" or \"xy\".\nIn \"x\" mode, the user will only be able to specify the x range, similarly for\n\"y\" mode. For \"xy\", the selection becomes a rectangle where both ranges can be\nspecified. \"color\" is color of the selection (if you need to change the color\nlater on, you can get to it with plot.getOptions().selection.color). \"shape\"\nis the shape of the corners of the selection.\n\n\"minSize\" is the minimum size a selection can be in pixels. This value can\nbe customized to determine the smallest size a selection can be and still\nhave the selection rectangle be displayed. When customizing this value, the\nfact that it refers to pixels, not axis units must be taken into account.\nThus, for example, if there is a bar graph in time mode with BarWidth set to 1\nminute, setting \"minSize\" to 1 will not make the minimum selection size 1\nminute, but rather 1 pixel. Note also that setting \"minSize\" to 0 will prevent\n\"plotunselected\" events from being fired when the user clicks the mouse without\ndragging.\n\nWhen selection support is enabled, a \"plotselected\" event will be emitted on\nthe DOM element you passed into the plot function. The event handler gets a\nparameter with the ranges selected on the axes, like this:\n\n\tplaceholder.bind( \"plotselected\", function( event, ranges ) {\n\t\talert(\"You selected \" + ranges.xaxis.from + \" to \" + ranges.xaxis.to)\n\t\t// similar for yaxis - with multiple axes, the extra ones are in\n\t\t// x2axis, x3axis, ...\n\t});\n\nThe \"plotselected\" event is only fired when the user has finished making the\nselection. A \"plotselecting\" event is fired during the process with the same\nparameters as the \"plotselected\" event, in case you want to know what's\nhappening while it's happening,\n\nA \"plotunselected\" event with no arguments is emitted when the user clicks the\nmouse to remove the selection. As stated above, setting \"minSize\" to 0 will\ndestroy this behavior.\n\nThe plugin allso adds the following methods to the plot object:\n\n- setSelection( ranges, preventEvent )\n\n  Set the selection rectangle. The passed in ranges is on the same form as\n  returned in the \"plotselected\" event. If the selection mode is \"x\", you\n  should put in either an xaxis range, if the mode is \"y\" you need to put in\n  an yaxis range and both xaxis and yaxis if the selection mode is \"xy\", like\n  this:\n\n\tsetSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } });\n\n  setSelection will trigger the \"plotselected\" event when called. If you don't\n  want that to happen, e.g. if you're inside a \"plotselected\" handler, pass\n  true as the second parameter. If you are using multiple axes, you can\n  specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of\n  xaxis, the plugin picks the first one it sees.\n\n- clearSelection( preventEvent )\n\n  Clear the selection rectangle. Pass in true to avoid getting a\n  \"plotunselected\" event.\n\n- getSelection()\n\n  Returns the current selection in the same format as the \"plotselected\"\n  event. If there's currently no selection, the function returns null.\n\n*/\n\n(function ($) {\n    function init(plot) {\n        var selection = {\n                first: { x: -1, y: -1}, second: { x: -1, y: -1},\n                show: false,\n                active: false\n            };\n\n        // FIXME: The drag handling implemented here should be\n        // abstracted out, there's some similar code from a library in\n        // the navigation plugin, this should be massaged a bit to fit\n        // the Flot cases here better and reused. Doing this would\n        // make this plugin much slimmer.\n        var savedhandlers = {};\n\n        var mouseUpHandler = null;\n        \n        function onMouseMove(e) {\n            if (selection.active) {\n                updateSelection(e);\n                \n                plot.getPlaceholder().trigger(\"plotselecting\", [ getSelection() ]);\n            }\n        }\n\n        function onMouseDown(e) {\n            if (e.which != 1)  // only accept left-click\n                return;\n            \n            // cancel out any text selections\n            document.body.focus();\n\n            // prevent text selection and drag in old-school browsers\n            if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) {\n                savedhandlers.onselectstart = document.onselectstart;\n                document.onselectstart = function () { return false; };\n            }\n            if (document.ondrag !== undefined && savedhandlers.ondrag == null) {\n                savedhandlers.ondrag = document.ondrag;\n                document.ondrag = function () { return false; };\n            }\n\n            setSelectionPos(selection.first, e);\n\n            selection.active = true;\n\n            // this is a bit silly, but we have to use a closure to be\n            // able to whack the same handler again\n            mouseUpHandler = function (e) { onMouseUp(e); };\n            \n            $(document).one(\"mouseup\", mouseUpHandler);\n        }\n\n        function onMouseUp(e) {\n            mouseUpHandler = null;\n            \n            // revert drag stuff for old-school browsers\n            if (document.onselectstart !== undefined)\n                document.onselectstart = savedhandlers.onselectstart;\n            if (document.ondrag !== undefined)\n                document.ondrag = savedhandlers.ondrag;\n\n            // no more dragging\n            selection.active = false;\n            updateSelection(e);\n\n            if (selectionIsSane())\n                triggerSelectedEvent();\n            else {\n                // this counts as a clear\n                plot.getPlaceholder().trigger(\"plotunselected\", [ ]);\n                plot.getPlaceholder().trigger(\"plotselecting\", [ null ]);\n            }\n\n            return false;\n        }\n\n        function getSelection() {\n            if (!selectionIsSane())\n                return null;\n            \n            if (!selection.show) return null;\n\n            var r = {}, c1 = selection.first, c2 = selection.second;\n            $.each(plot.getAxes(), function (name, axis) {\n                if (axis.used) {\n                    var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); \n                    r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) };\n                }\n            });\n            return r;\n        }\n\n        function triggerSelectedEvent() {\n            var r = getSelection();\n\n            plot.getPlaceholder().trigger(\"plotselected\", [ r ]);\n\n            // backwards-compat stuff, to be removed in future\n            if (r.xaxis && r.yaxis)\n                plot.getPlaceholder().trigger(\"selected\", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]);\n        }\n\n        function clamp(min, value, max) {\n            return value < min ? min: (value > max ? max: value);\n        }\n\n        function setSelectionPos(pos, e) {\n            var o = plot.getOptions();\n            var offset = plot.getPlaceholder().offset();\n            var plotOffset = plot.getPlotOffset();\n            pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width());\n            pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height());\n\n            if (o.selection.mode == \"y\")\n                pos.x = pos == selection.first ? 0 : plot.width();\n\n            if (o.selection.mode == \"x\")\n                pos.y = pos == selection.first ? 0 : plot.height();\n        }\n\n        function updateSelection(pos) {\n            if (pos.pageX == null)\n                return;\n\n            setSelectionPos(selection.second, pos);\n            if (selectionIsSane()) {\n                selection.show = true;\n                plot.triggerRedrawOverlay();\n            }\n            else\n                clearSelection(true);\n        }\n\n        function clearSelection(preventEvent) {\n            if (selection.show) {\n                selection.show = false;\n                plot.triggerRedrawOverlay();\n                if (!preventEvent)\n                    plot.getPlaceholder().trigger(\"plotunselected\", [ ]);\n            }\n        }\n\n        // function taken from markings support in Flot\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = plot.getAxes();\n\n            for (var k in axes) {\n                axis = axes[k];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? plot.getXAxes()[0] : plot.getYAxes()[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n            \n            return { from: from, to: to, axis: axis };\n        }\n        \n        function setSelection(ranges, preventEvent) {\n            var axis, range, o = plot.getOptions();\n\n            if (o.selection.mode == \"y\") {\n                selection.first.x = 0;\n                selection.second.x = plot.width();\n            }\n            else {\n                range = extractRange(ranges, \"x\");\n\n                selection.first.x = range.axis.p2c(range.from);\n                selection.second.x = range.axis.p2c(range.to);\n            }\n\n            if (o.selection.mode == \"x\") {\n                selection.first.y = 0;\n                selection.second.y = plot.height();\n            }\n            else {\n                range = extractRange(ranges, \"y\");\n\n                selection.first.y = range.axis.p2c(range.from);\n                selection.second.y = range.axis.p2c(range.to);\n            }\n\n            selection.show = true;\n            plot.triggerRedrawOverlay();\n            if (!preventEvent && selectionIsSane())\n                triggerSelectedEvent();\n        }\n\n        function selectionIsSane() {\n            var minSize = plot.getOptions().selection.minSize;\n            return Math.abs(selection.second.x - selection.first.x) >= minSize &&\n                Math.abs(selection.second.y - selection.first.y) >= minSize;\n        }\n\n        plot.clearSelection = clearSelection;\n        plot.setSelection = setSelection;\n        plot.getSelection = getSelection;\n\n        plot.hooks.bindEvents.push(function(plot, eventHolder) {\n            var o = plot.getOptions();\n            if (o.selection.mode != null) {\n                eventHolder.mousemove(onMouseMove);\n                eventHolder.mousedown(onMouseDown);\n            }\n        });\n\n\n        plot.hooks.drawOverlay.push(function (plot, ctx) {\n            // draw selection\n            if (selection.show && selectionIsSane()) {\n                var plotOffset = plot.getPlotOffset();\n                var o = plot.getOptions();\n\n                ctx.save();\n                ctx.translate(plotOffset.left, plotOffset.top);\n\n                var c = $.color.parse(o.selection.color);\n\n                ctx.strokeStyle = c.scale('a', 0.8).toString();\n                ctx.lineWidth = 1;\n                ctx.lineJoin = o.selection.shape;\n                ctx.fillStyle = c.scale('a', 0.4).toString();\n\n                var x = Math.min(selection.first.x, selection.second.x) + 0.5,\n                    y = Math.min(selection.first.y, selection.second.y) + 0.5,\n                    w = Math.abs(selection.second.x - selection.first.x) - 1,\n                    h = Math.abs(selection.second.y - selection.first.y) - 1;\n\n                ctx.fillRect(x, y, w, h);\n                ctx.strokeRect(x, y, w, h);\n\n                ctx.restore();\n            }\n        });\n        \n        plot.hooks.shutdown.push(function (plot, eventHolder) {\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mousedown\", onMouseDown);\n            \n            if (mouseUpHandler)\n                $(document).unbind(\"mouseup\", mouseUpHandler);\n        });\n\n    }\n\n    $.plot.plugins.push({\n        init: init,\n        options: {\n            selection: {\n                mode: null, // one of null, \"x\", \"y\" or \"xy\"\n                color: \"#e8cfac\",\n                shape: \"round\", // one of \"round\", \"miter\", or \"bevel\"\n                minSize: 5 // minimum number of pixels\n            }\n        },\n        name: 'selection',\n        version: '1.1'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.stack.js",
    "content": "/* Flot plugin for stacking data sets rather than overlyaing them.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes the data is sorted on x (or y if stacking horizontally).\nFor line charts, it is assumed that if a line has an undefined gap (from a\nnull point), then the line above it should have the same gap - insert zeros\ninstead of \"null\" if you want another behaviour. This also holds for the start\nand end of the chart. Note that stacking a mix of positive and negative values\nin most instances doesn't make sense (so it looks weird).\n\nTwo or more series are stacked when their \"stack\" attribute is set to the same\nkey (which can be any number or string or just \"true\"). To specify the default\nstack, you can set the stack option like this:\n\n\tseries: {\n\t\tstack: null/false, true, or a key (number/string)\n\t}\n\nYou can also specify it for a single series, like this:\n\n\t$.plot( $(\"#placeholder\"), [{\n\t\tdata: [ ... ],\n\t\tstack: true\n\t}])\n\nThe stacking order is determined by the order of the data series in the array\n(later series end up on top of the previous).\n\nInternally, the plugin modifies the datapoints in each series, adding an\noffset to the y value. For line series, extra data points are inserted through\ninterpolation. If there's a second y value, it's also adjusted (e.g for bar\ncharts or filled areas).\n\n*/\n\n(function ($) {\n    var options = {\n        series: { stack: null } // or number/string\n    };\n    \n    function init(plot) {\n        function findMatchingSeries(s, allseries) {\n            var res = null;\n            for (var i = 0; i < allseries.length; ++i) {\n                if (s == allseries[i])\n                    break;\n                \n                if (allseries[i].stack == s.stack)\n                    res = allseries[i];\n            }\n            \n            return res;\n        }\n        \n        function stackData(plot, s, datapoints) {\n            if (s.stack == null || s.stack === false)\n                return;\n\n            var other = findMatchingSeries(s, plot.getData());\n            if (!other)\n                return;\n\n            var ps = datapoints.pointsize,\n                points = datapoints.points,\n                otherps = other.datapoints.pointsize,\n                otherpoints = other.datapoints.points,\n                newpoints = [],\n                px, py, intery, qx, qy, bottom,\n                withlines = s.lines.show,\n                horizontal = s.bars.horizontal,\n                withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y),\n                withsteps = withlines && s.lines.steps,\n                fromgap = true,\n                keyOffset = horizontal ? 1 : 0,\n                accumulateOffset = horizontal ? 0 : 1,\n                i = 0, j = 0, l, m;\n\n            while (true) {\n                if (i >= points.length)\n                    break;\n\n                l = newpoints.length;\n\n                if (points[i] == null) {\n                    // copy gaps\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(points[i + m]);\n                    i += ps;\n                }\n                else if (j >= otherpoints.length) {\n                    // for lines, we can't use the rest of the points\n                    if (!withlines) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                    }\n                    i += ps;\n                }\n                else if (otherpoints[j] == null) {\n                    // oops, got a gap\n                    for (m = 0; m < ps; ++m)\n                        newpoints.push(null);\n                    fromgap = true;\n                    j += otherps;\n                }\n                else {\n                    // cases where we actually got two points\n                    px = points[i + keyOffset];\n                    py = points[i + accumulateOffset];\n                    qx = otherpoints[j + keyOffset];\n                    qy = otherpoints[j + accumulateOffset];\n                    bottom = 0;\n\n                    if (px == qx) {\n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n\n                        newpoints[l + accumulateOffset] += qy;\n                        bottom = qy;\n                        \n                        i += ps;\n                        j += otherps;\n                    }\n                    else if (px > qx) {\n                        // we got past point below, might need to\n                        // insert interpolated extra point\n                        if (withlines && i > 0 && points[i - ps] != null) {\n                            intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);\n                            newpoints.push(qx);\n                            newpoints.push(intery + qy);\n                            for (m = 2; m < ps; ++m)\n                                newpoints.push(points[i + m]);\n                            bottom = qy; \n                        }\n\n                        j += otherps;\n                    }\n                    else { // px < qx\n                        if (fromgap && withlines) {\n                            // if we come from a gap, we just skip this point\n                            i += ps;\n                            continue;\n                        }\n                            \n                        for (m = 0; m < ps; ++m)\n                            newpoints.push(points[i + m]);\n                        \n                        // we might be able to interpolate a point below,\n                        // this can give us a better y\n                        if (withlines && j > 0 && otherpoints[j - otherps] != null)\n                            bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);\n\n                        newpoints[l + accumulateOffset] += bottom;\n                        \n                        i += ps;\n                    }\n\n                    fromgap = false;\n                    \n                    if (l != newpoints.length && withbottom)\n                        newpoints[l + 2] += bottom;\n                }\n\n                // maintain the line steps invariant\n                if (withsteps && l != newpoints.length && l > 0\n                    && newpoints[l] != null\n                    && newpoints[l] != newpoints[l - ps]\n                    && newpoints[l + 1] != newpoints[l - ps + 1]) {\n                    for (m = 0; m < ps; ++m)\n                        newpoints[l + ps + m] = newpoints[l + m];\n                    newpoints[l + 1] = newpoints[l - ps + 1];\n                }\n            }\n\n            datapoints.points = newpoints;\n        }\n        \n        plot.hooks.processDatapoints.push(stackData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'stack',\n        version: '1.2'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.symbol.js",
    "content": "/* Flot plugin that adds some extra symbols for plotting points.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe symbols are accessed as strings through the standard symbol options:\n\n\tseries: {\n\t\tpoints: {\n\t\t\tsymbol: \"square\" // or \"diamond\", \"triangle\", \"cross\"\n\t\t}\n\t}\n\n*/\n\n(function ($) {\n    function processRawData(plot, series, datapoints) {\n        // we normalize the area of each symbol so it is approximately the\n        // same as a circle of the given radius\n\n        var handlers = {\n            square: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.rect(x - size, y - size, size + size, size + size);\n            },\n            diamond: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 2s^2  =>  s = r * sqrt(pi/2)\n                var size = radius * Math.sqrt(Math.PI / 2);\n                ctx.moveTo(x - size, y);\n                ctx.lineTo(x, y - size);\n                ctx.lineTo(x + size, y);\n                ctx.lineTo(x, y + size);\n                ctx.lineTo(x - size, y);\n            },\n            triangle: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = 1/2 * s^2 * sin (pi / 3)  =>  s = r * sqrt(2 * pi / sin(pi / 3))\n                var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));\n                var height = size * Math.sin(Math.PI / 3);\n                ctx.moveTo(x - size/2, y + height/2);\n                ctx.lineTo(x + size/2, y + height/2);\n                if (!shadow) {\n                    ctx.lineTo(x, y - height/2);\n                    ctx.lineTo(x - size/2, y + height/2);\n                }\n            },\n            cross: function (ctx, x, y, radius, shadow) {\n                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2\n                var size = radius * Math.sqrt(Math.PI) / 2;\n                ctx.moveTo(x - size, y - size);\n                ctx.lineTo(x + size, y + size);\n                ctx.moveTo(x - size, y + size);\n                ctx.lineTo(x + size, y - size);\n            }\n        };\n\n        var s = series.points.symbol;\n        if (handlers[s])\n            series.points.symbol = handlers[s];\n    }\n    \n    function init(plot) {\n        plot.hooks.processDatapoints.push(processRawData);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        name: 'symbols',\n        version: '1.0'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.threshold.js",
    "content": "/* Flot plugin for thresholding data.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tthreshold: {\n\t\t\tbelow: number\n\t\t\tcolor: colorspec\n\t\t}\n\t}\n\nIt can also be applied to a single series, like this:\n\n\t$.plot( $(\"#placeholder\"), [{\n\t\tdata: [ ... ],\n\t\tthreshold: { ... }\n\t}])\n\nAn array can be passed for multiple thresholding, like this:\n\n\tthreshold: [{\n\t\tbelow: number1\n\t\tcolor: color1\n\t},{\n\t\tbelow: number2\n\t\tcolor: color2\n\t}]\n\nThese multiple threshold objects can be passed in any order since they are\nsorted by the processing function.\n\nThe data points below \"below\" are drawn with the specified color. This makes\nit easy to mark points below 0, e.g. for budget data.\n\nInternally, the plugin works by splitting the data into two series, above and\nbelow the threshold. The extra series below the threshold will have its label\ncleared and the special \"originSeries\" attribute set to the original series.\nYou may need to check for this in hover events.\n\n*/\n\n(function ($) {\n    var options = {\n        series: { threshold: null } // or { below: number, color: color spec}\n    };\n    \n    function init(plot) {\n        function thresholdData(plot, s, datapoints, below, color) {\n            var ps = datapoints.pointsize, i, x, y, p, prevp,\n                thresholded = $.extend({}, s); // note: shallow copy\n\n            thresholded.datapoints = { points: [], pointsize: ps, format: datapoints.format };\n            thresholded.label = null;\n            thresholded.color = color;\n            thresholded.threshold = null;\n            thresholded.originSeries = s;\n            thresholded.data = [];\n \n            var origpoints = datapoints.points,\n                addCrossingPoints = s.lines.show;\n\n            var threspoints = [];\n            var newpoints = [];\n            var m;\n\n            for (i = 0; i < origpoints.length; i += ps) {\n                x = origpoints[i];\n                y = origpoints[i + 1];\n\n                prevp = p;\n                if (y < below)\n                    p = threspoints;\n                else\n                    p = newpoints;\n\n                if (addCrossingPoints && prevp != p && x != null\n                    && i > 0 && origpoints[i - ps] != null) {\n                    var interx = x + (below - y) * (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]);\n                    prevp.push(interx);\n                    prevp.push(below);\n                    for (m = 2; m < ps; ++m)\n                        prevp.push(origpoints[i + m]);\n                    \n                    p.push(null); // start new segment\n                    p.push(null);\n                    for (m = 2; m < ps; ++m)\n                        p.push(origpoints[i + m]);\n                    p.push(interx);\n                    p.push(below);\n                    for (m = 2; m < ps; ++m)\n                        p.push(origpoints[i + m]);\n                }\n\n                p.push(x);\n                p.push(y);\n                for (m = 2; m < ps; ++m)\n                    p.push(origpoints[i + m]);\n            }\n\n            datapoints.points = newpoints;\n            thresholded.datapoints.points = threspoints;\n            \n            if (thresholded.datapoints.points.length > 0) {\n                var origIndex = $.inArray(s, plot.getData());\n                // Insert newly-generated series right after original one (to prevent it from becoming top-most)\n                plot.getData().splice(origIndex + 1, 0, thresholded);\n            }\n                \n            // FIXME: there are probably some edge cases left in bars\n        }\n        \n        function processThresholds(plot, s, datapoints) {\n            if (!s.threshold)\n                return;\n            \n            if (s.threshold instanceof Array) {\n                s.threshold.sort(function(a, b) {\n                    return a.below - b.below;\n                });\n                \n                $(s.threshold).each(function(i, th) {\n                    thresholdData(plot, s, datapoints, th.below, th.color);\n                });\n            }\n            else {\n                thresholdData(plot, s, datapoints, s.threshold.below, s.threshold.color);\n            }\n        }\n        \n        plot.hooks.processDatapoints.push(processThresholds);\n    }\n    \n    $.plot.plugins.push({\n        init: init,\n        options: options,\n        name: 'threshold',\n        version: '1.2'\n    });\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.flot.time.js",
    "content": "/* Pretty handling of time axes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axis.mode to \"time\" to enable. See the section \"Time series data\" in\nAPI.txt for details.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\txaxis: {\n\t\t\ttimezone: null,\t\t// \"browser\" for local to the client or timezone for timezone-js\n\t\t\ttimeformat: null,\t// format string to use\n\t\t\ttwelveHourClock: false,\t// 12 or 24 time in time mode\n\t\t\tmonthNames: null\t// list of names of months\n\t\t}\n\t};\n\n\t// round to nearby lower multiple of base\n\n\tfunction floorInBase(n, base) {\n\t\treturn base * Math.floor(n / base);\n\t}\n\n\t// Returns a string with the date d formatted according to fmt.\n\t// A subset of the Open Group's strftime format is supported.\n\n\tfunction formatDate(d, fmt, monthNames, dayNames) {\n\n\t\tif (typeof d.strftime == \"function\") {\n\t\t\treturn d.strftime(fmt);\n\t\t}\n\n\t\tvar leftPad = function(n, pad) {\n\t\t\tn = \"\" + n;\n\t\t\tpad = \"\" + (pad == null ? \"0\" : pad);\n\t\t\treturn n.length == 1 ? pad + n : n;\n\t\t};\n\n\t\tvar r = [];\n\t\tvar escape = false;\n\t\tvar hours = d.getHours();\n\t\tvar isAM = hours < 12;\n\n\t\tif (monthNames == null) {\n\t\t\tmonthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t\t}\n\n\t\tif (dayNames == null) {\n\t\t\tdayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t\t}\n\n\t\tvar hours12;\n\n\t\tif (hours > 12) {\n\t\t\thours12 = hours - 12;\n\t\t} else if (hours == 0) {\n\t\t\thours12 = 12;\n\t\t} else {\n\t\t\thours12 = hours;\n\t\t}\n\n\t\tfor (var i = 0; i < fmt.length; ++i) {\n\n\t\t\tvar c = fmt.charAt(i);\n\n\t\t\tif (escape) {\n\t\t\t\tswitch (c) {\n\t\t\t\t\tcase 'a': c = \"\" + dayNames[d.getDay()]; break;\n\t\t\t\t\tcase 'b': c = \"\" + monthNames[d.getMonth()]; break;\n\t\t\t\t\tcase 'd': c = leftPad(d.getDate()); break;\n\t\t\t\t\tcase 'e': c = leftPad(d.getDate(), \" \"); break;\n\t\t\t\t\tcase 'h':\t// For back-compat with 0.7; remove in 1.0\n\t\t\t\t\tcase 'H': c = leftPad(hours); break;\n\t\t\t\t\tcase 'I': c = leftPad(hours12); break;\n\t\t\t\t\tcase 'l': c = leftPad(hours12, \" \"); break;\n\t\t\t\t\tcase 'm': c = leftPad(d.getMonth() + 1); break;\n\t\t\t\t\tcase 'M': c = leftPad(d.getMinutes()); break;\n\t\t\t\t\t// quarters not in Open Group's strftime specification\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\tc = \"\" + (Math.floor(d.getMonth() / 3) + 1); break;\n\t\t\t\t\tcase 'S': c = leftPad(d.getSeconds()); break;\n\t\t\t\t\tcase 'y': c = leftPad(d.getFullYear() % 100); break;\n\t\t\t\t\tcase 'Y': c = \"\" + d.getFullYear(); break;\n\t\t\t\t\tcase 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n\t\t\t\t\tcase 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n\t\t\t\t\tcase 'w': c = \"\" + d.getDay(); break;\n\t\t\t\t}\n\t\t\t\tr.push(c);\n\t\t\t\tescape = false;\n\t\t\t} else {\n\t\t\t\tif (c == \"%\") {\n\t\t\t\t\tescape = true;\n\t\t\t\t} else {\n\t\t\t\t\tr.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn r.join(\"\");\n\t}\n\n\t// To have a consistent view of time-based data independent of which time\n\t// zone the client happens to be in we need a date-like object independent\n\t// of time zones.  This is done through a wrapper that only calls the UTC\n\t// versions of the accessor methods.\n\n\tfunction makeUtcWrapper(d) {\n\n\t\tfunction addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {\n\t\t\tsourceObj[sourceMethod] = function() {\n\t\t\t\treturn targetObj[targetMethod].apply(targetObj, arguments);\n\t\t\t};\n\t\t};\n\n\t\tvar utc = {\n\t\t\tdate: d\n\t\t};\n\n\t\t// support strftime, if found\n\n\t\tif (d.strftime != undefined) {\n\t\t\taddProxyMethod(utc, \"strftime\", d, \"strftime\");\n\t\t}\n\n\t\taddProxyMethod(utc, \"getTime\", d, \"getTime\");\n\t\taddProxyMethod(utc, \"setTime\", d, \"setTime\");\n\n\t\tvar props = [\"Date\", \"Day\", \"FullYear\", \"Hours\", \"Milliseconds\", \"Minutes\", \"Month\", \"Seconds\"];\n\n\t\tfor (var p = 0; p < props.length; p++) {\n\t\t\taddProxyMethod(utc, \"get\" + props[p], d, \"getUTC\" + props[p]);\n\t\t\taddProxyMethod(utc, \"set\" + props[p], d, \"setUTC\" + props[p]);\n\t\t}\n\n\t\treturn utc;\n\t};\n\n\t// select time zone strategy.  This returns a date-like object tied to the\n\t// desired timezone\n\n\tfunction dateGenerator(ts, opts) {\n\t\tif (opts.timezone == \"browser\") {\n\t\t\treturn new Date(ts);\n\t\t} else if (!opts.timezone || opts.timezone == \"utc\") {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t} else if (typeof timezoneJS != \"undefined\" && typeof timezoneJS.Date != \"undefined\") {\n\t\t\tvar d = new timezoneJS.Date();\n\t\t\t// timezone-js is fickle, so be sure to set the time zone before\n\t\t\t// setting the time.\n\t\t\td.setTimezone(opts.timezone);\n\t\t\td.setTime(ts);\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t}\n\t}\n\t\n\t// map of app. size of time units in milliseconds\n\n\tvar timeUnitSize = {\n\t\t\"second\": 1000,\n\t\t\"minute\": 60 * 1000,\n\t\t\"hour\": 60 * 60 * 1000,\n\t\t\"day\": 24 * 60 * 60 * 1000,\n\t\t\"month\": 30 * 24 * 60 * 60 * 1000,\n\t\t\"quarter\": 3 * 30 * 24 * 60 * 60 * 1000,\n\t\t\"year\": 365.2425 * 24 * 60 * 60 * 1000\n\t};\n\n\t// the allowed tick sizes, after 1 year we use\n\t// an integer algorithm\n\n\tvar baseSpec = [\n\t\t[1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n\t\t[30, \"second\"], \n\t\t[1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n\t\t[30, \"minute\"], \n\t\t[1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n\t\t[8, \"hour\"], [12, \"hour\"],\n\t\t[1, \"day\"], [2, \"day\"], [3, \"day\"],\n\t\t[0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n\t\t[2, \"month\"]\n\t];\n\n\t// we don't know which variant(s) we'll need yet, but generating both is\n\t// cheap\n\n\tvar specMonths = baseSpec.concat([[3, \"month\"], [6, \"month\"],\n\t\t[1, \"year\"]]);\n\tvar specQuarters = baseSpec.concat([[1, \"quarter\"], [2, \"quarter\"],\n\t\t[1, \"year\"]]);\n\n\tfunction init(plot) {\n\t\tplot.hooks.processOptions.push(function (plot, options) {\n\t\t\t$.each(plot.getAxes(), function(axisName, axis) {\n\n\t\t\t\tvar opts = axis.options;\n\n\t\t\t\tif (opts.mode == \"time\") {\n\t\t\t\t\taxis.tickGenerator = function(axis) {\n\n\t\t\t\t\t\tvar ticks = [];\n\t\t\t\t\t\tvar d = dateGenerator(axis.min, opts);\n\t\t\t\t\t\tvar minSize = 0;\n\n\t\t\t\t\t\t// make quarter use a possibility if quarters are\n\t\t\t\t\t\t// mentioned in either of these options\n\n\t\t\t\t\t\tvar spec = (opts.tickSize && opts.tickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ||\n\t\t\t\t\t\t\t(opts.minTickSize && opts.minTickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ? specQuarters : specMonths;\n\n\t\t\t\t\t\tif (opts.minTickSize != null) {\n\t\t\t\t\t\t\tif (typeof opts.tickSize == \"number\") {\n\t\t\t\t\t\t\t\tminSize = opts.tickSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < spec.length - 1; ++i) {\n\t\t\t\t\t\t\tif (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n\t\t\t\t\t\t\t\t\t\t\t  + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n\t\t\t\t\t\t\t\t&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = spec[i][0];\n\t\t\t\t\t\tvar unit = spec[i][1];\n\n\t\t\t\t\t\t// special-case the possibility of several years\n\n\t\t\t\t\t\tif (unit == \"year\") {\n\n\t\t\t\t\t\t\t// if given a minTickSize in years, just use it,\n\t\t\t\t\t\t\t// ensuring that it's an integer\n\n\t\t\t\t\t\t\tif (opts.minTickSize != null && opts.minTickSize[1] == \"year\") {\n\t\t\t\t\t\t\t\tsize = Math.floor(opts.minTickSize[0]);\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tvar magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));\n\t\t\t\t\t\t\t\tvar norm = (axis.delta / timeUnitSize.year) / magn;\n\n\t\t\t\t\t\t\t\tif (norm < 1.5) {\n\t\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t\t} else if (norm < 3) {\n\t\t\t\t\t\t\t\t\tsize = 2;\n\t\t\t\t\t\t\t\t} else if (norm < 7.5) {\n\t\t\t\t\t\t\t\t\tsize = 5;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsize = 10;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsize *= magn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// minimum size for years is 1\n\n\t\t\t\t\t\t\tif (size < 1) {\n\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taxis.tickSize = opts.tickSize || [size, unit];\n\t\t\t\t\t\tvar tickSize = axis.tickSize[0];\n\t\t\t\t\t\tunit = axis.tickSize[1];\n\n\t\t\t\t\t\tvar step = tickSize * timeUnitSize[unit];\n\n\t\t\t\t\t\tif (unit == \"second\") {\n\t\t\t\t\t\t\td.setSeconds(floorInBase(d.getSeconds(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"minute\") {\n\t\t\t\t\t\t\td.setMinutes(floorInBase(d.getMinutes(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"hour\") {\n\t\t\t\t\t\t\td.setHours(floorInBase(d.getHours(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"month\") {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"quarter\") {\n\t\t\t\t\t\t\td.setMonth(3 * floorInBase(d.getMonth() / 3,\n\t\t\t\t\t\t\t\ttickSize));\n\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\td.setFullYear(floorInBase(d.getFullYear(), tickSize));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset smaller components\n\n\t\t\t\t\t\td.setMilliseconds(0);\n\n\t\t\t\t\t\tif (step >= timeUnitSize.minute) {\n\t\t\t\t\t\t\td.setSeconds(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.hour) {\n\t\t\t\t\t\t\td.setMinutes(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day) {\n\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day * 4) {\n\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.month * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 3));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.quarter * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 6));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.year) {\n\t\t\t\t\t\t\td.setMonth(0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar carry = 0;\n\t\t\t\t\t\tvar v = Number.NaN;\n\t\t\t\t\t\tvar prev;\n\n\t\t\t\t\t\tdo {\n\n\t\t\t\t\t\t\tprev = v;\n\t\t\t\t\t\t\tv = d.getTime();\n\t\t\t\t\t\t\tticks.push(v);\n\n\t\t\t\t\t\t\tif (unit == \"month\" || unit == \"quarter\") {\n\t\t\t\t\t\t\t\tif (tickSize < 1) {\n\n\t\t\t\t\t\t\t\t\t// a bit complicated - we'll divide the\n\t\t\t\t\t\t\t\t\t// month/quarter up but we need to take\n\t\t\t\t\t\t\t\t\t// care of fractions so we don't end up in\n\t\t\t\t\t\t\t\t\t// the middle of a day\n\n\t\t\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t\t\t\tvar start = d.getTime();\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\t(unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t\tvar end = d.getTime();\n\t\t\t\t\t\t\t\t\td.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n\t\t\t\t\t\t\t\t\tcarry = d.getHours();\n\t\t\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\ttickSize * (unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\t\td.setFullYear(d.getFullYear() + tickSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\td.setTime(v + step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (v < axis.max && v != prev);\n\n\t\t\t\t\t\treturn ticks;\n\t\t\t\t\t};\n\n\t\t\t\t\taxis.tickFormatter = function (v, axis) {\n\n\t\t\t\t\t\tvar d = dateGenerator(v, axis.options);\n\n\t\t\t\t\t\t// first check global format\n\n\t\t\t\t\t\tif (opts.timeformat != null) {\n\t\t\t\t\t\t\treturn formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// possibly use quarters if quarters are mentioned in\n\t\t\t\t\t\t// any of these places\n\n\t\t\t\t\t\tvar useQuarters = (axis.options.tickSize &&\n\t\t\t\t\t\t\t\taxis.options.tickSize[1] == \"quarter\") ||\n\t\t\t\t\t\t\t(axis.options.minTickSize &&\n\t\t\t\t\t\t\t\taxis.options.minTickSize[1] == \"quarter\");\n\n\t\t\t\t\t\tvar t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n\t\t\t\t\t\tvar span = axis.max - axis.min;\n\t\t\t\t\t\tvar suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n\t\t\t\t\t\tvar hourCode = (opts.twelveHourClock) ? \"%I\" : \"%H\";\n\t\t\t\t\t\tvar fmt;\n\n\t\t\t\t\t\tif (t < timeUnitSize.minute) {\n\t\t\t\t\t\t\tfmt = hourCode + \":%M:%S\" + suffix;\n\t\t\t\t\t\t} else if (t < timeUnitSize.day) {\n\t\t\t\t\t\t\tif (span < 2 * timeUnitSize.day) {\n\t\t\t\t\t\t\t\tfmt = hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %d \" + hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (t < timeUnitSize.month) {\n\t\t\t\t\t\t\tfmt = \"%b %d\";\n\t\t\t\t\t\t} else if ((useQuarters && t < timeUnitSize.quarter) ||\n\t\t\t\t\t\t\t(!useQuarters && t < timeUnitSize.year)) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"%b\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (useQuarters && t < timeUnitSize.year) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"Q%q\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"Q%q %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfmt = \"%Y\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);\n\n\t\t\t\t\t\treturn rt;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'time',\n\t\tversion: '1.0'\n\t});\n\n\t// Time-axis support used to be in Flot core, which exposed the\n\t// formatDate function on the plot object.  Various plugins depend\n\t// on the function, so we need to re-expose it here.\n\n\t$.plot.formatDate = formatDate;\n\t$.plot.dateGenerator = dateGenerator;\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.8.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn ( letter + \"\" ).toUpperCase();\n\t},\n\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === \"complete\" ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.8.3\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + ( this.selector ? \" \" : \"\" ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t\"slice\", core_slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready, 1 );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.trigger ) {\n\t\t\tjQuery( document ).trigger(\"ready\").off(\"ready\");\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || \"object\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!core_hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!core_hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== \"string\") {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )\n\t\t\t.replace( rvalidtokens, \"]\" )\n\t\t\t.replace( rvalidbraces, \"\")) ) {\n\n\t\t\treturn ( new Function( \"return \" + data ) )();\n\n\t\t}\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , \"text/xml\" );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\t\txml.async = \"false\";\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && core_rnotwhite.test( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === 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// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call(\"\\uFEFF\\xA0\") ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( core_indexOf ) {\n\t\t\t\treturn core_indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === \"number\" ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === \"object\" ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\n\t}\n});\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready, 1 );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.split( core_rspace ), function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\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\treturn this;\n\t\t\t},\n\t\t\t// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + \"With\" ]( this === deferred ? newDefer : this, [ returned ] );\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\tnewDefer[ action ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = core_slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement(\"div\");\n\n\t// Setup\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// Support tests won't run in some limited or non-browser environments\n\tall = div.getElementsByTagName(\"*\");\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\tif ( !all || !a || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of tests\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px;float:left;opacity:.5\";\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute(\"href\") === \"/a\" ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === \"on\" ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== \"t\",\n\n\t\t// Tests for enctype support on a form (#6743)\n\t\tenctype: !!document.createElement(\"form\").enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement(\"nav\").cloneNode( true ).outerHTML !== \"<:nav></:nav>\",\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === \"CSS1Compat\" ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( \"onclick\", clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent(\"onclick\");\n\t\tdiv.detachEvent( \"onclick\", clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement(\"input\");\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n\n\tinput.setAttribute( \"checked\", \"checked\" );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = \"on\" + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, \"return;\" );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === \"function\" );\n\t\t\t}\n\t\t\tsupport[ i + \"Bubbles\" ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = \"padding:0;margin:0;border:0;display:block;overflow:hidden;\",\n\t\t\tbody = document.getElementsByTagName(\"body\")[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement(\"div\");\n\t\tcontainer.style.cssText = \"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\";\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement(\"div\");\n\t\tcontainer.appendChild( div );\n\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\ttds = div.getElementsByTagName(\"td\");\n\t\ttds[ 0 ].style.cssText = \"padding:0;margin:0;border:0;display:none\";\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = \"\";\n\t\ttds[ 1 ].style.display = \"none\";\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = \"\";\n\t\tdiv.style.cssText = \"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\";\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement(\"div\");\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdiv.style.cssText = divReset + \"width:1px;padding:1px;display:inline;zoom:1\";\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = \"block\";\n\t\t\tdiv.style.overflow = \"visible\";\n\t\t\tdiv.innerHTML = \"<div></div>\";\n\t\t\tdiv.firstChild.style.width = \"5px\";\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: \"jQuery\" + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t\"object\": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",\n\t\t\"applet\": true\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === \"string\",\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( \"data-\" ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tparts = key.split( \".\", 2 );\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\t\tpart = parts[1] + \"!\";\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( \"getData\" + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( \"setData\" + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( \"changeData\" + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\tdata === \"false\" ? false :\n\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery.removeData( elem, type + \"queue\", true );\n\t\t\t\tjQuery.removeData( elem, key, true );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t},\n\n\tprop: function( name, value ) {\n\t\treturn jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = \" \" + elem.className + \" \";\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( \" \" + classNames[ c ] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar removes, className, elem, c, cl, i, l;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call(this, j, this.className) );\n\t\t\t});\n\t\t}\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tremoves = ( value || \"\" ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (\" \" + elem.className + \" \").replace( rclass, \" \" );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(\" \" + removes[ c ] + \" \") >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( \" \" + removes[ c ] + \" \" , \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val,\n\t\t\t\tself = jQuery(this);\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, self.val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map(val, function ( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( jQuery.support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find(\"option\").each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && \"set\" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret === null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t} else if ( !jQuery.support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to it's default in case type is set after value\n\t\t\t\t\t// This is for element creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, \"button\" ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: \"tabIndex\",\n\t\treadonly: \"readOnly\",\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\",\n\t\tmaxlength: \"maxLength\",\n\t\tcellspacing: \"cellSpacing\",\n\t\tcellpadding: \"cellPadding\",\n\t\trowspan: \"rowSpan\",\n\t\tcolspan: \"colSpan\",\n\t\tusemap: \"useMap\",\n\t\tframeborder: \"frameBorder\",\n\t\tcontenteditable: \"contentEditable\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tvar attributeNode = elem.getAttributeNode(\"tabindex\");\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== \"boolean\" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== \"\" : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + \"\" );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = \"false\";\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ \"href\", \"src\", \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t});\n}\n\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t});\n});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, \"mouseenter$1 mouseleave$1\" );\n\t};\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( \" \" );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: tns[1],\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = jQuery.trim( hoverHack( types || \"\" ) ).split(\" \");\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector? special.delegateType : special.bindType ) || type;\n\t\t\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp(\"(^|\\\\.)\" + namespaces.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t ( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( eventType.length === 0 && origCount !== eventType.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery.removeData( elem, \"events\", true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t\"getData\": true,\n\t\t\"setData\": true,\n\t\t\"changeData\": true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \"!\" ) >= 0 ) {\n\t\t\t// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === \"object\" ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.namespace_re = event.namespace? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\t\tontype = type.indexOf( \":\" ) < 0 ? \"on\" + type : \"\";\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data != null ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === \"click\" && jQuery.nodeName( elem, \"a\" )) && jQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== \"focus\" && type !== \"blur\") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, \"events\" ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === \"click\") ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tselMatch = {};\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( selMatch[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, matches: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\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\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: \"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\n\t\tfocus: {\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{ type: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj,\n\t\t\t\tselector = handleObj.selector;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"_submit_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"_submit_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !jQuery.support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"_change_attached\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"_change_attached\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) { // && selector != null\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || \"**\", fn );\n\t\treturn this;\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n\n\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = \"undefined\",\n\n\texpando = ( \"sizcache\" + Math.random() ).replace( \".\", \"\" ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\t// Retrieve with (key + \" \") to avoid collision with native Object.prototype properties (see Issue #157)\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = \"([*^$|!~]?=)\",\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")\" + whitespace +\n\t\t\"*(?:\" + operators + whitespace + \"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\" + identifier + \")|)|)\" + whitespace + \"*\\\\]\",\n\n\t// Prefer arguments not in parens/brackets,\n\t//   then attribute selectors and non-pseudos (denoted by :),\n\t//   then anything else\n\t// These preferences are here to reduce the number of selectors\n\t//   needing tokenize in the PSEUDO preFilter\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\" + attributes + \")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = \":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])\" + whitespace + \"*\" ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"NAME\": new RegExp( \"^\\\\[name=['\\\"]?(\" + characterEncoding + \")['\\\"]?\\\\]\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"POS\": new RegExp( pos, \"i\" ),\n\t\t\"CHILD\": new RegExp( \"^:(only|nth|first|last)-child(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|\" + pos, \"i\" )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement(\"div\");\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = \"<a href='#'></a>\";\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") === \"#\";\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = \"<select></select>\";\n\t\tvar type = typeof div.lastChild.getAttribute(\"multiple\");\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== \"boolean\" && type !== \"string\";\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = \"<div class='hidden e'></div><div class='hidden'></div>\";\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName(\"e\").length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = \"e\";\n\t\treturn div.getElementsByClassName(\"e\").length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = \"<a name='\" + expando + \"'></a><div name='\" + expando + \"'></div>\";\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for buttons\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n// Returns a function to use in pseudos for positionals\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( nodeType ) {\n\t\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\n\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === \"boolean\" ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t\"href\": function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"href\", 2 );\n\t\t\t},\n\t\t\t\"type\": function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"type\");\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode(\"id\").value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\"TAG\": assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t\"NAME\": assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t\"CLASS\": assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( rbackslash, \"\" );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || \"\" ).replace( rbackslash, \"\" );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === \"even\" || match[2] === \"odd\" ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar unquoted, excess;\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\t\t\"ID\": assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, \"\" );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\"TAG\": function( nodeName ) {\n\t\t\tif ( nodeName === \"*\" ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, \"\" ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\")) || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.substr( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, argument, first, last ) {\n\n\t\t\tif ( type === \"nth\" ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\n\t\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase \"only\":\n\t\t\t\t\tcase \"first\":\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === \"first\" ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"last\":\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t//   not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t//   Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > \"@\" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t(type = elem.type) === \"text\" &&\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t\"radio\": createInputPseudo(\"radio\"),\n\t\t\"checkbox\": createInputPseudo(\"checkbox\"),\n\t\t\"file\": createInputPseudo(\"file\"),\n\t\t\"password\": createInputPseudo(\"password\"),\n\t\t\"image\": createInputPseudo(\"image\"),\n\n\t\t\"submit\": createButtonPseudo(\"submit\"),\n\t\t\"reset\": createButtonPseudo(\"reset\"),\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t\"active\": function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 0; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tfor ( var i = 1; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tfor ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\ti = 1,\n\t\tj = 0;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( tokens = [] );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, \" \" );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( checkNonElements || elem.nodeType === 1  ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( !xml ) {\n\t\t\t\tvar cache,\n\t\t\t\t\tdirkey = dirruns + \" \" + doneName + \" \",\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === \"string\" && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\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\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && tokens.slice( 0, i - 1 ).join(\"\").replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && tokens.join(\"\")\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); j++ ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\tcachedruns = ++superMatcher.el;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tfor ( j = 0; (matcher = setMatchers[j]); j++ ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\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\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find[\"ID\"]( token.matches[0].replace( rbackslash, \"\" ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr[\"POS\"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, \"\" ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join(\"\");\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [ \":focus\" ],\n\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ \":active\" ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explictly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"<select><option selected=''></option></select>\";\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = \"<p test=''></p>\";\n\t\t\tif ( div.querySelectorAll(\"[test^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:\\\"\\\"|'')\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here (do not put tests after this one)\n\t\t\tdiv.innerHTML = \"<input type='hidden'/>\";\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push(\":enabled\", \":disabled\");\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join(\"|\") );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join(\"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, \"[test!='']:sizzle\" );\n\t\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( \"\", \"find\", selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\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\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === \"string\" ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tret = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, \"closest\", selectors );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\trnocache = /<(?:script|object|embed|option|style)/i,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}>\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"X<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), \"before\", this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), \"after\", this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function () {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn jQuery.access( this, function( value ) {\n\t\t\tvar elem = this[0] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&\n\t\t\t\t( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [\"\", \"\"] )[1].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName( \"*\" ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], \"table\" ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], \"tbody\" ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\t\t\t\tdataType: \"script\",\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t\"throws\": true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error(\"no ajax\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction cloneFixAttributes( src, dest ) {\n\tvar nodeName;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === \"object\" ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === \"string\" && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === \"<\" && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\treturn elem.getElementsByTagName( \"*\" );\n\n\t} else if ( typeof elem.querySelectorAll !== \"undefined\" ) {\n\t\treturn elem.querySelectorAll( \"*\" );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tcloneFixAttributes( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === \"undefined\" ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, \"<$1></$2>\");\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [\"\", \"\"] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\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\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName(\"input\"), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, \"script\" ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName(\"script\") ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\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\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || \"\",\n\t\tversion: match[ 2 ] || \"0\"\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\n\t// swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trmargin = /^margin/,\n\trnumsplit = new RegExp( \"^(\" + core_pnum + \")(.*)$\", \"i\" ),\n\trnumnonpx = new RegExp( \"^(\" + core_pnum + \")(?!px)[a-z%]+$\", \"i\" ),\n\trrelNum = new RegExp( \"^([-+])=(\" + core_pnum + \")\", \"i\" ),\n\telemdisplay = { BODY: \"block\" },\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ],\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ],\n\n\teventsToggle = jQuery.fn.toggle;\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && elem.style.display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, \"display\" );\n\n\t\t\tif ( !values[ index ] && display !== \"none\" ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state, fn2 ) {\n\t\tvar bool = typeof state === \"boolean\";\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t\"fillOpacity\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t\"float\": jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === \"number\" && isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #5509\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, numeric, extra ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name );\n\t\t}\n\n\t\t//convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trsLeft = elem.runtimeStyle && elem.runtimeStyle.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === \"\" ? \"auto\" : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += parseFloat( curCSS( elem, \"padding\" + cssExpand[ i ] ) ) || 0;\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += parseFloat( curCSS( elem, \"border\" + cssExpand[ i ] + \"Width\" ) ) || 0;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox\n\t\t)\n\t) + \"px\";\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( \"<\" + nodeName + \">\" ).appendTo( document.body ),\n\t\tdisplay = elem.css(\"display\");\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === \"none\" || display === \"\" ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement(\"iframe\"), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write(\"<!DOCTYPE html>  <html><body>\");\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, \"display\" );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\n}\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, \"display\" ) ) ) {\n\t\t\t\t\treturn jQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.support.boxSizing && jQuery.css( elem, \"boxSizing\" ) === \"border-box\"\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, \"marginRight\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + \"px\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, \"display\" )) === \"none\");\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i,\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ],\n\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function(){\n\t\t\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.type ) );\n\t\t})\n\t\t.map(function( i, elem ){\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ){\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n//Serialize an array of form elements or a set of\n//key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trquery = /\\?/,\n\trscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = [\"*/\"] + [\"*\"];\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || \"*\";\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? \"unshift\" : \"push\" ]( func );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,\n\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === \"string\" ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ \"*\" ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, \"*\", inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n}\n\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = url.slice( off, url.length );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: \"html\",\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery(\"<div>\")\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, \"\" ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split( \" \" ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\n\t};\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\ttext: \"text/plain\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\t\"*\": allTypes\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\"\n\t\t},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": window.String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\tcontext: true,\n\t\t\turl: true\n\t\t}\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match === undefined ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = \"notmodified\";\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( !statusText || status ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajax\" + ( isSuccess ? \"Success\" : \"Error\" ),\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().split( core_rspace );\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? 80 : 443 ) ) !=\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? 80 : 443 ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\tfireGlobals = s.global;\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.data;\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, \"$1_=\" + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? \"&\" : \"?\" ) + \"_=\" + ts : \"\" );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout( function(){\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch (e) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {}\n\n});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\n\n\t// Remove auto dataType and get content-type in the process\n\twhile( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"content-type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n// Chain conversions given the request and the original response\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice(),\n\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== \"*\" ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split(\" \");\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\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// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[\"throws\"] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === \"string\" &&\n\t\t\t!( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === \"jsonp\" || replaceInUrl || replaceInData ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /javascript|ecmascript/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and global\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || document.getElementsByTagName( \"head\" )[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement( \"script\" );\n\n\t\t\t\tscript.async = \"async\";\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = undefined;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( \"withCredentials\" in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !s.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch( _ ) {}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\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} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([-+])=|)(\" + core_pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== \"px\" && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\n\t\t\treturn tween;\n\t\t}]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end, easing ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tcreateTweens( animation, props );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tif ( jQuery.css( elem, \"display\" ) === \"inline\" &&\n\t\t\t\tjQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, \"fxshow\" ) || jQuery._data( elem, \"fxshow\", {} );\n\t\tif ( \"hidden\" in dataShow ) {\n\t\t\thidden = dataShow.hidden;\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery.removeData( elem, \"fxshow\", true );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing any value as a 4th parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as \"10px\" are parsed to Float.\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, false, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Remove in 2.0 - this supports IE8's panic based approach\n// to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ||\n\t\t\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn't forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth? 1 : 0;\n\tfor( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p*Math.PI ) / 2;\n\t}\n};\n\njQuery.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== \"undefined\" ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop  = docElem.clientTop  || body.clientTop  || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop  = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top  + scrollTop  - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.css(body, \"marginTop\") ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, \"marginLeft\") ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, \"position\" );\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" ),\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" ),\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) && jQuery.inArray(\"auto\", [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.css(elem, \"marginTop\") ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, \"marginLeft\") ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.css(offsetParent[0], \"borderTopWidth\") ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], \"borderLeftWidth\") ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( {scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\"}, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn jQuery.access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\t top ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn jQuery.access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, value, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === \"function\" && define.amd && define.amd.jQuery ) {\n\tdefine( \"jquery\", [], function () { return jQuery; } );\n}\n\n})( window );\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot/package.json",
    "content": "{\n\t\"name\": \"Flot\",\n\t\"version\": \"0.8.3\",\n\t\"main\": \"jquery.flot.js\",\n\t\"scripts\": {\n\t\t\"test\": \"make test\"\n\t},\n\t\"devDependencies\": {\n\t\t\"jshint\": \"0.9.1\"\n\t}\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot.tooltip/.bower.json",
    "content": "{\n  \"name\": \"flot.tooltip\",\n  \"version\": \"0.8.5\",\n  \"license\": \"MIT\",\n  \"main\": \"js/jquery.flot.tooltip.js\",\n  \"ignore\": [\n    \".gitignore\",\n    \"Gruntfile.js\",\n    \"README.md\",\n    \"package.json\",\n    \"examples\",\n    \"js/old\"\n  ],\n  \"homepage\": \"https://github.com/krzysu/flot.tooltip\",\n  \"_release\": \"0.8.5\",\n  \"_resolution\": {\n    \"type\": \"version\",\n    \"tag\": \"0.8.5\",\n    \"commit\": \"e2dbb407ffcf5ece0f2e6ab922b0192b8a6d168e\"\n  },\n  \"_source\": \"git://github.com/krzysu/flot.tooltip.git\",\n  \"_target\": \"~0.8.4\",\n  \"_originalSource\": \"flot.tooltip\"\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/flot.tooltip/bower.json",
    "content": "{\n  \"name\": \"flot.tooltip\",\n  \"version\": \"0.8.5\",\n  \"license\": \"MIT\",\n  \"main\": \"js/jquery.flot.tooltip.js\",\n  \"ignore\": [\n    \".gitignore\",\n    \"Gruntfile.js\",\n    \"README.md\",\n    \"package.json\",\n    \"examples\",\n    \"js/old\"\n  ]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot.tooltip/js/jquery.flot.js",
    "content": "/* Javascript plotting library for jQuery, version 0.8.3.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\n*/\n\n// first an inline dependency, jquery.colorhelpers.js, we inline it here\n// for convenience\n\n/* Plugin for jQuery for working with colors.\n *\n * Version 1.1.\n *\n * Inspiration from jQuery color animation plugin by John Resig.\n *\n * Released under the MIT license by Ole Laursen, October 2009.\n *\n * Examples:\n *\n *   $.color.parse(\"#fff\").scale('rgb', 0.25).add('a', -0.5).toString()\n *   var c = $.color.extract($(\"#mydiv\"), 'background-color');\n *   console.log(c.r, c.g, c.b, c.a);\n *   $.color.make(100, 50, 25, 0.4).toString() // returns \"rgba(100,50,25,0.4)\"\n *\n * Note that .scale() and .add() return the same modified object\n * instead of making a new one.\n *\n * V. 1.1: Fix error handling so e.g. parsing an empty string does\n * produce a color rather than just crashing.\n */\n(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return\"rgb(\"+[o.r,o.g,o.b].join(\",\")+\")\"}else{return\"rgba(\"+[o.r,o.g,o.b,o.a].join(\",\")+\")\"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=\"\"&&c!=\"transparent\")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),\"body\"));if(c==\"rgba(0, 0, 0, 0)\")c=\"transparent\";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\s*\\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name==\"transparent\")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);\n\n// the actual Flot code\n(function($) {\n\n\t// Cache the prototype hasOwnProperty for faster access\n\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n    // A shim to provide 'detach' to jQuery versions prior to 1.4.  Using a DOM\n    // operation produces the same effect as detach, i.e. removing the element\n    // without touching its jQuery data.\n\n    // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+.\n\n    if (!$.fn.detach) {\n        $.fn.detach = function() {\n            return this.each(function() {\n                if (this.parentNode) {\n                    this.parentNode.removeChild( this );\n                }\n            });\n        };\n    }\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The Canvas object is a wrapper around an HTML5 <canvas> tag.\n\t//\n\t// @constructor\n\t// @param {string} cls List of classes to apply to the canvas.\n\t// @param {element} container Element onto which to append the canvas.\n\t//\n\t// Requiring a container is a little iffy, but unfortunately canvas\n\t// operations don't work unless the canvas is attached to the DOM.\n\n\tfunction Canvas(cls, container) {\n\n\t\tvar element = container.children(\".\" + cls)[0];\n\n\t\tif (element == null) {\n\n\t\t\telement = document.createElement(\"canvas\");\n\t\t\telement.className = cls;\n\n\t\t\t$(element).css({ direction: \"ltr\", position: \"absolute\", left: 0, top: 0 })\n\t\t\t\t.appendTo(container);\n\n\t\t\t// If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas\n\n\t\t\tif (!element.getContext) {\n\t\t\t\tif (window.G_vmlCanvasManager) {\n\t\t\t\t\telement = window.G_vmlCanvasManager.initElement(element);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element = element;\n\n\t\tvar context = this.context = element.getContext(\"2d\");\n\n\t\t// Determine the screen's ratio of physical to device-independent\n\t\t// pixels.  This is the ratio between the canvas width that the browser\n\t\t// advertises and the number of pixels actually present in that space.\n\n\t\t// The iPhone 4, for example, has a device-independent width of 320px,\n\t\t// but its screen is actually 640px wide.  It therefore has a pixel\n\t\t// ratio of 2, while most normal devices have a ratio of 1.\n\n\t\tvar devicePixelRatio = window.devicePixelRatio || 1,\n\t\t\tbackingStoreRatio =\n\t\t\t\tcontext.webkitBackingStorePixelRatio ||\n\t\t\t\tcontext.mozBackingStorePixelRatio ||\n\t\t\t\tcontext.msBackingStorePixelRatio ||\n\t\t\t\tcontext.oBackingStorePixelRatio ||\n\t\t\t\tcontext.backingStorePixelRatio || 1;\n\n\t\tthis.pixelRatio = devicePixelRatio / backingStoreRatio;\n\n\t\t// Size the canvas to match the internal dimensions of its container\n\n\t\tthis.resize(container.width(), container.height());\n\n\t\t// Collection of HTML div layers for text overlaid onto the canvas\n\n\t\tthis.textContainer = null;\n\t\tthis.text = {};\n\n\t\t// Cache of text fragments and metrics, so we can avoid expensively\n\t\t// re-calculating them when the plot is re-rendered in a loop.\n\n\t\tthis._textCache = {};\n\t}\n\n\t// Resizes the canvas to the given dimensions.\n\t//\n\t// @param {number} width New width of the canvas, in pixels.\n\t// @param {number} width New height of the canvas, in pixels.\n\n\tCanvas.prototype.resize = function(width, height) {\n\n\t\tif (width <= 0 || height <= 0) {\n\t\t\tthrow new Error(\"Invalid dimensions for plot, width = \" + width + \", height = \" + height);\n\t\t}\n\n\t\tvar element = this.element,\n\t\t\tcontext = this.context,\n\t\t\tpixelRatio = this.pixelRatio;\n\n\t\t// Resize the canvas, increasing its density based on the display's\n\t\t// pixel ratio; basically giving it more pixels without increasing the\n\t\t// size of its element, to take advantage of the fact that retina\n\t\t// displays have that many more pixels in the same advertised space.\n\n\t\t// Resizing should reset the state (excanvas seems to be buggy though)\n\n\t\tif (this.width != width) {\n\t\t\telement.width = width * pixelRatio;\n\t\t\telement.style.width = width + \"px\";\n\t\t\tthis.width = width;\n\t\t}\n\n\t\tif (this.height != height) {\n\t\t\telement.height = height * pixelRatio;\n\t\t\telement.style.height = height + \"px\";\n\t\t\tthis.height = height;\n\t\t}\n\n\t\t// Save the context, so we can reset in case we get replotted.  The\n\t\t// restore ensure that we're really back at the initial state, and\n\t\t// should be safe even if we haven't saved the initial state yet.\n\n\t\tcontext.restore();\n\t\tcontext.save();\n\n\t\t// Scale the coordinate space to match the display density; so even though we\n\t\t// may have twice as many pixels, we still want lines and other drawing to\n\t\t// appear at the same size; the extra pixels will just make them crisper.\n\n\t\tcontext.scale(pixelRatio, pixelRatio);\n\t};\n\n\t// Clears the entire canvas area, not including any overlaid HTML text\n\n\tCanvas.prototype.clear = function() {\n\t\tthis.context.clearRect(0, 0, this.width, this.height);\n\t};\n\n\t// Finishes rendering the canvas, including managing the text overlay.\n\n\tCanvas.prototype.render = function() {\n\n\t\tvar cache = this._textCache;\n\n\t\t// For each text layer, add elements marked as active that haven't\n\t\t// already been rendered, and remove those that are no longer active.\n\n\t\tfor (var layerKey in cache) {\n\t\t\tif (hasOwnProperty.call(cache, layerKey)) {\n\n\t\t\t\tvar layer = this.getTextLayer(layerKey),\n\t\t\t\t\tlayerCache = cache[layerKey];\n\n\t\t\t\tlayer.hide();\n\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tif (position.active) {\n\t\t\t\t\t\t\t\t\t\tif (!position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tlayer.append(position.element);\n\t\t\t\t\t\t\t\t\t\t\tposition.rendered = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpositions.splice(i--, 1);\n\t\t\t\t\t\t\t\t\t\tif (position.rendered) {\n\t\t\t\t\t\t\t\t\t\t\tposition.element.detach();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (positions.length == 0) {\n\t\t\t\t\t\t\t\t\tdelete styleCache[key];\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\n\t\t\t\tlayer.show();\n\t\t\t}\n\t\t}\n\t};\n\n\t// Creates (if necessary) and returns the text overlay container.\n\t//\n\t// @param {string} classes String of space-separated CSS classes used to\n\t//     uniquely identify the text layer.\n\t// @return {object} The jQuery-wrapped text-layer div.\n\n\tCanvas.prototype.getTextLayer = function(classes) {\n\n\t\tvar layer = this.text[classes];\n\n\t\t// Create the text layer if it doesn't exist\n\n\t\tif (layer == null) {\n\n\t\t\t// Create the text layer container, if it doesn't exist\n\n\t\t\tif (this.textContainer == null) {\n\t\t\t\tthis.textContainer = $(\"<div class='flot-text'></div>\")\n\t\t\t\t\t.css({\n\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t'font-size': \"smaller\",\n\t\t\t\t\t\tcolor: \"#545454\"\n\t\t\t\t\t})\n\t\t\t\t\t.insertAfter(this.element);\n\t\t\t}\n\n\t\t\tlayer = this.text[classes] = $(\"<div></div>\")\n\t\t\t\t.addClass(classes)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tbottom: 0,\n\t\t\t\t\tright: 0\n\t\t\t\t})\n\t\t\t\t.appendTo(this.textContainer);\n\t\t}\n\n\t\treturn layer;\n\t};\n\n\t// Creates (if necessary) and returns a text info object.\n\t//\n\t// The object looks like this:\n\t//\n\t// {\n\t//     width: Width of the text's wrapper div.\n\t//     height: Height of the text's wrapper div.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     positions: Array of positions at which this text is drawn.\n\t// }\n\t//\n\t// The positions array contains objects that look like this:\n\t//\n\t// {\n\t//     active: Flag indicating whether the text should be visible.\n\t//     rendered: Flag indicating whether the text is currently visible.\n\t//     element: The jQuery-wrapped HTML div containing the text.\n\t//     x: X coordinate at which to draw the text.\n\t//     y: Y coordinate at which to draw the text.\n\t// }\n\t//\n\t// Each position after the first receives a clone of the original element.\n\t//\n\t// The idea is that that the width, height, and general 'identity' of the\n\t// text is constant no matter where it is placed; the placements are a\n\t// secondary property.\n\t//\n\t// Canvas maintains a cache of recently-used text info objects; getTextInfo\n\t// either returns the cached element or creates a new entry.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {string} text Text string to retrieve info for.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @return {object} a text info object.\n\n\tCanvas.prototype.getTextInfo = function(layer, text, font, angle, width) {\n\n\t\tvar textStyle, layerCache, styleCache, info;\n\n\t\t// Cast the value to a string, in case we were given a number or such\n\n\t\ttext = \"\" + text;\n\n\t\t// If the font is a font-spec object, generate a CSS font definition\n\n\t\tif (typeof font === \"object\") {\n\t\t\ttextStyle = font.style + \" \" + font.variant + \" \" + font.weight + \" \" + font.size + \"px/\" + font.lineHeight + \"px \" + font.family;\n\t\t} else {\n\t\t\ttextStyle = font;\n\t\t}\n\n\t\t// Retrieve (or create) the cache for the text's layer and styles\n\n\t\tlayerCache = this._textCache[layer];\n\n\t\tif (layerCache == null) {\n\t\t\tlayerCache = this._textCache[layer] = {};\n\t\t}\n\n\t\tstyleCache = layerCache[textStyle];\n\n\t\tif (styleCache == null) {\n\t\t\tstyleCache = layerCache[textStyle] = {};\n\t\t}\n\n\t\tinfo = styleCache[text];\n\n\t\t// If we can't find a matching element in our cache, create a new one\n\n\t\tif (info == null) {\n\n\t\t\tvar element = $(\"<div></div>\").html(text)\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t'max-width': width,\n\t\t\t\t\ttop: -9999\n\t\t\t\t})\n\t\t\t\t.appendTo(this.getTextLayer(layer));\n\n\t\t\tif (typeof font === \"object\") {\n\t\t\t\telement.css({\n\t\t\t\t\tfont: textStyle,\n\t\t\t\t\tcolor: font.color\n\t\t\t\t});\n\t\t\t} else if (typeof font === \"string\") {\n\t\t\t\telement.addClass(font);\n\t\t\t}\n\n\t\t\tinfo = styleCache[text] = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\telement: element,\n\t\t\t\tpositions: []\n\t\t\t};\n\n\t\t\telement.detach();\n\t\t}\n\n\t\treturn info;\n\t};\n\n\t// Adds a text string to the canvas text overlay.\n\t//\n\t// The text isn't drawn immediately; it is marked as rendering, which will\n\t// result in its addition to the canvas on the next render pass.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number} x X coordinate at which to draw the text.\n\t// @param {number} y Y coordinate at which to draw the text.\n\t// @param {string} text Text string to draw.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which to rotate the text, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\t// @param {number=} width Maximum width of the text before it wraps.\n\t// @param {string=} halign Horizontal alignment of the text; either \"left\",\n\t//     \"center\" or \"right\".\n\t// @param {string=} valign Vertical alignment of the text; either \"top\",\n\t//     \"middle\" or \"bottom\".\n\n\tCanvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) {\n\n\t\tvar info = this.getTextInfo(layer, text, font, angle, width),\n\t\t\tpositions = info.positions;\n\n\t\t// Tweak the div's position to match the text's alignment\n\n\t\tif (halign == \"center\") {\n\t\t\tx -= info.width / 2;\n\t\t} else if (halign == \"right\") {\n\t\t\tx -= info.width;\n\t\t}\n\n\t\tif (valign == \"middle\") {\n\t\t\ty -= info.height / 2;\n\t\t} else if (valign == \"bottom\") {\n\t\t\ty -= info.height;\n\t\t}\n\n\t\t// Determine whether this text already exists at this position.\n\t\t// If so, mark it for inclusion in the next render pass.\n\n\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\tposition.active = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the text doesn't exist at this position, create a new entry\n\n\t\t// For the very first position we'll re-use the original element,\n\t\t// while for subsequent ones we'll clone it.\n\n\t\tposition = {\n\t\t\tactive: true,\n\t\t\trendered: false,\n\t\t\telement: positions.length ? info.element.clone() : info.element,\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\n\t\tpositions.push(position);\n\n\t\t// Move the element to its final position within the container\n\n\t\tposition.element.css({\n\t\t\ttop: Math.round(y),\n\t\t\tleft: Math.round(x),\n\t\t\t'text-align': halign\t// In case the text wraps\n\t\t});\n\t};\n\n\t// Removes one or more text strings from the canvas text overlay.\n\t//\n\t// If no parameters are given, all text within the layer is removed.\n\t//\n\t// Note that the text is not immediately removed; it is simply marked as\n\t// inactive, which will result in its removal on the next render pass.\n\t// This avoids the performance penalty for 'clear and redraw' behavior,\n\t// where we potentially get rid of all text on a layer, but will likely\n\t// add back most or all of it later, as when redrawing axes, for example.\n\t//\n\t// @param {string} layer A string of space-separated CSS classes uniquely\n\t//     identifying the layer containing this text.\n\t// @param {number=} x X coordinate of the text.\n\t// @param {number=} y Y coordinate of the text.\n\t// @param {string=} text Text string to remove.\n\t// @param {(string|object)=} font Either a string of space-separated CSS\n\t//     classes or a font-spec object, defining the text's font and style.\n\t// @param {number=} angle Angle at which the text is rotated, in degrees.\n\t//     Angle is currently unused, it will be implemented in the future.\n\n\tCanvas.prototype.removeText = function(layer, x, y, text, font, angle) {\n\t\tif (text == null) {\n\t\t\tvar layerCache = this._textCache[layer];\n\t\t\tif (layerCache != null) {\n\t\t\t\tfor (var styleKey in layerCache) {\n\t\t\t\t\tif (hasOwnProperty.call(layerCache, styleKey)) {\n\t\t\t\t\t\tvar styleCache = layerCache[styleKey];\n\t\t\t\t\t\tfor (var key in styleCache) {\n\t\t\t\t\t\t\tif (hasOwnProperty.call(styleCache, key)) {\n\t\t\t\t\t\t\t\tvar positions = styleCache[key].positions;\n\t\t\t\t\t\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\t\t\t\t\t\tposition.active = false;\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} else {\n\t\t\tvar positions = this.getTextInfo(layer, text, font, angle).positions;\n\t\t\tfor (var i = 0, position; position = positions[i]; i++) {\n\t\t\t\tif (position.x == x && position.y == y) {\n\t\t\t\t\tposition.active = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// The top-level container for the entire plot.\n\n    function Plot(placeholder, data_, options_, plugins) {\n        // data is on the form:\n        //   [ series1, series2 ... ]\n        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]\n        // or { data: [ [x1, y1], [x2, y2], ... ], label: \"some label\", ... }\n\n        var series = [],\n            options = {\n                // the color theme used for graphs\n                colors: [\"#edc240\", \"#afd8f8\", \"#cb4b4b\", \"#4da74d\", \"#9440ed\"],\n                legend: {\n                    show: true,\n                    noColumns: 1, // number of colums in legend table\n                    labelFormatter: null, // fn: string -> string\n                    labelBoxBorderColor: \"#ccc\", // border color for the little label boxes\n                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph\n                    position: \"ne\", // position of default legend container within plot\n                    margin: 5, // distance from grid edge to default legend container within plot\n                    backgroundColor: null, // null means auto-detect\n                    backgroundOpacity: 0.85, // set to 0 to avoid background\n                    sorted: null    // default to no legend sorting\n                },\n                xaxis: {\n                    show: null, // null = auto-detect, true = always, false = never\n                    position: \"bottom\", // or \"top\"\n                    mode: null, // null or \"time\"\n                    font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: \"italic\", weight: \"bold\", family: \"sans-serif\", variant: \"small-caps\" }\n                    color: null, // base color, labels, ticks\n                    tickColor: null, // possibly different color of ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    transform: null, // null or f: number -> number to transform axis\n                    inverseTransform: null, // if transform is set, this should be the inverse function\n                    min: null, // min. value to show, null means set automatically\n                    max: null, // max. value to show, null means set automatically\n                    autoscaleMargin: null, // margin in % to add if auto-setting min/max\n                    ticks: null, // either [1, 3] or [[1, \"a\"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks\n                    tickFormatter: null, // fn: number -> string\n                    labelWidth: null, // size of tick labels in pixels\n                    labelHeight: null,\n                    reserveSpace: null, // whether to reserve space even if axis isn't shown\n                    tickLength: null, // size in pixels of ticks, or \"full\" for whole line\n                    alignTicksWithAxis: null, // axis number or null for no sync\n                    tickDecimals: null, // no. of decimals, null means auto\n                    tickSize: null, // number or [number, \"unit\"]\n                    minTickSize: null // number or [number, \"unit\"]\n                },\n                yaxis: {\n                    autoscaleMargin: 0.02,\n                    position: \"left\" // or \"right\"\n                },\n                xaxes: [],\n                yaxes: [],\n                series: {\n                    points: {\n                        show: false,\n                        radius: 3,\n                        lineWidth: 2, // in pixels\n                        fill: true,\n                        fillColor: \"#ffffff\",\n                        symbol: \"circle\" // or callback\n                    },\n                    lines: {\n                        // we don't put in show: false so we can see\n                        // whether lines were actively disabled\n                        lineWidth: 2, // in pixels\n                        fill: false,\n                        fillColor: null,\n                        steps: false\n                        // Omit 'zero', so we can later default its value to\n                        // match that of the 'fill' option.\n                    },\n                    bars: {\n                        show: false,\n                        lineWidth: 2, // in pixels\n                        barWidth: 1, // in units of the x axis\n                        fill: true,\n                        fillColor: null,\n                        align: \"left\", // \"left\", \"right\", or \"center\"\n                        horizontal: false,\n                        zero: true\n                    },\n                    shadowSize: 3,\n                    highlightColor: null\n                },\n                grid: {\n                    show: true,\n                    aboveData: false,\n                    color: \"#545454\", // primary color used for outline and labels\n                    backgroundColor: null, // null for transparent, else color\n                    borderColor: null, // set if different from the grid color\n                    tickColor: null, // color for the ticks, e.g. \"rgba(0,0,0,0.15)\"\n                    margin: 0, // distance from the canvas edge to the grid\n                    labelMargin: 5, // in pixels\n                    axisMargin: 8, // in pixels\n                    borderWidth: 2, // in pixels\n                    minBorderMargin: null, // in pixels, null means taken from points radius\n                    markings: null, // array of ranges or fn: axes -> array of ranges\n                    markingsColor: \"#f4f4f4\",\n                    markingsLineWidth: 2,\n                    // interactive stuff\n                    clickable: false,\n                    hoverable: false,\n                    autoHighlight: true, // highlight in case mouse is near\n                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item\n                },\n                interaction: {\n                    redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow\n                },\n                hooks: {}\n            },\n        surface = null,     // the canvas for the plot itself\n        overlay = null,     // canvas for interactive stuff on top of plot\n        eventHolder = null, // jQuery object that events should be bound to\n        ctx = null, octx = null,\n        xaxes = [], yaxes = [],\n        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},\n        plotWidth = 0, plotHeight = 0,\n        hooks = {\n            processOptions: [],\n            processRawData: [],\n            processDatapoints: [],\n            processOffset: [],\n            drawBackground: [],\n            drawSeries: [],\n            draw: [],\n            bindEvents: [],\n            drawOverlay: [],\n            shutdown: []\n        },\n        plot = this;\n\n        // public functions\n        plot.setData = setData;\n        plot.setupGrid = setupGrid;\n        plot.draw = draw;\n        plot.getPlaceholder = function() { return placeholder; };\n        plot.getCanvas = function() { return surface.element; };\n        plot.getPlotOffset = function() { return plotOffset; };\n        plot.width = function () { return plotWidth; };\n        plot.height = function () { return plotHeight; };\n        plot.offset = function () {\n            var o = eventHolder.offset();\n            o.left += plotOffset.left;\n            o.top += plotOffset.top;\n            return o;\n        };\n        plot.getData = function () { return series; };\n        plot.getAxes = function () {\n            var res = {}, i;\n            $.each(xaxes.concat(yaxes), function (_, axis) {\n                if (axis)\n                    res[axis.direction + (axis.n != 1 ? axis.n : \"\") + \"axis\"] = axis;\n            });\n            return res;\n        };\n        plot.getXAxes = function () { return xaxes; };\n        plot.getYAxes = function () { return yaxes; };\n        plot.c2p = canvasToAxisCoords;\n        plot.p2c = axisToCanvasCoords;\n        plot.getOptions = function () { return options; };\n        plot.highlight = highlight;\n        plot.unhighlight = unhighlight;\n        plot.triggerRedrawOverlay = triggerRedrawOverlay;\n        plot.pointOffset = function(point) {\n            return {\n                left: parseInt(xaxes[axisNumber(point, \"x\") - 1].p2c(+point.x) + plotOffset.left, 10),\n                top: parseInt(yaxes[axisNumber(point, \"y\") - 1].p2c(+point.y) + plotOffset.top, 10)\n            };\n        };\n        plot.shutdown = shutdown;\n        plot.destroy = function () {\n            shutdown();\n            placeholder.removeData(\"plot\").empty();\n\n            series = [];\n            options = null;\n            surface = null;\n            overlay = null;\n            eventHolder = null;\n            ctx = null;\n            octx = null;\n            xaxes = [];\n            yaxes = [];\n            hooks = null;\n            highlights = [];\n            plot = null;\n        };\n        plot.resize = function () {\n        \tvar width = placeholder.width(),\n        \t\theight = placeholder.height();\n            surface.resize(width, height);\n            overlay.resize(width, height);\n        };\n\n        // public attributes\n        plot.hooks = hooks;\n\n        // initialize\n        initPlugins(plot);\n        parseOptions(options_);\n        setupCanvases();\n        setData(data_);\n        setupGrid();\n        draw();\n        bindEvents();\n\n\n        function executeHooks(hook, args) {\n            args = [plot].concat(args);\n            for (var i = 0; i < hook.length; ++i)\n                hook[i].apply(this, args);\n        }\n\n        function initPlugins() {\n\n            // References to key classes, allowing plugins to modify them\n\n            var classes = {\n                Canvas: Canvas\n            };\n\n            for (var i = 0; i < plugins.length; ++i) {\n                var p = plugins[i];\n                p.init(plot, classes);\n                if (p.options)\n                    $.extend(true, options, p.options);\n            }\n        }\n\n        function parseOptions(opts) {\n\n            $.extend(true, options, opts);\n\n            // $.extend merges arrays, rather than replacing them.  When less\n            // colors are provided than the size of the default palette, we\n            // end up with those colors plus the remaining defaults, which is\n            // not expected behavior; avoid it by replacing them here.\n\n            if (opts && opts.colors) {\n            \toptions.colors = opts.colors;\n            }\n\n            if (options.xaxis.color == null)\n                options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n            if (options.yaxis.color == null)\n                options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color;\n            if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility\n                options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color;\n\n            if (options.grid.borderColor == null)\n                options.grid.borderColor = options.grid.color;\n            if (options.grid.tickColor == null)\n                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();\n\n            // Fill in defaults for axis options, including any unspecified\n            // font-spec fields, if a font-spec was provided.\n\n            // If no x/y axis options were provided, create one of each anyway,\n            // since the rest of the code assumes that they exist.\n\n            var i, axisOptions, axisCount,\n                fontSize = placeholder.css(\"font-size\"),\n                fontSizeDefault = fontSize ? +fontSize.replace(\"px\", \"\") : 13,\n                fontDefaults = {\n                    style: placeholder.css(\"font-style\"),\n                    size: Math.round(0.8 * fontSizeDefault),\n                    variant: placeholder.css(\"font-variant\"),\n                    weight: placeholder.css(\"font-weight\"),\n                    family: placeholder.css(\"font-family\")\n                };\n\n            axisCount = options.xaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.xaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.xaxis, axisOptions);\n                options.xaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            axisCount = options.yaxes.length || 1;\n            for (i = 0; i < axisCount; ++i) {\n\n                axisOptions = options.yaxes[i];\n                if (axisOptions && !axisOptions.tickColor) {\n                    axisOptions.tickColor = axisOptions.color;\n                }\n\n                axisOptions = $.extend(true, {}, options.yaxis, axisOptions);\n                options.yaxes[i] = axisOptions;\n\n                if (axisOptions.font) {\n                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);\n                    if (!axisOptions.font.color) {\n                        axisOptions.font.color = axisOptions.color;\n                    }\n                    if (!axisOptions.font.lineHeight) {\n                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);\n                    }\n                }\n            }\n\n            // backwards compatibility, to be removed in future\n            if (options.xaxis.noTicks && options.xaxis.ticks == null)\n                options.xaxis.ticks = options.xaxis.noTicks;\n            if (options.yaxis.noTicks && options.yaxis.ticks == null)\n                options.yaxis.ticks = options.yaxis.noTicks;\n            if (options.x2axis) {\n                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);\n                options.xaxes[1].position = \"top\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.x2axis.min == null) {\n                    options.xaxes[1].min = null;\n                }\n                if (options.x2axis.max == null) {\n                    options.xaxes[1].max = null;\n                }\n            }\n            if (options.y2axis) {\n                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);\n                options.yaxes[1].position = \"right\";\n                // Override the inherit to allow the axis to auto-scale\n                if (options.y2axis.min == null) {\n                    options.yaxes[1].min = null;\n                }\n                if (options.y2axis.max == null) {\n                    options.yaxes[1].max = null;\n                }\n            }\n            if (options.grid.coloredAreas)\n                options.grid.markings = options.grid.coloredAreas;\n            if (options.grid.coloredAreasColor)\n                options.grid.markingsColor = options.grid.coloredAreasColor;\n            if (options.lines)\n                $.extend(true, options.series.lines, options.lines);\n            if (options.points)\n                $.extend(true, options.series.points, options.points);\n            if (options.bars)\n                $.extend(true, options.series.bars, options.bars);\n            if (options.shadowSize != null)\n                options.series.shadowSize = options.shadowSize;\n            if (options.highlightColor != null)\n                options.series.highlightColor = options.highlightColor;\n\n            // save options on axes for future reference\n            for (i = 0; i < options.xaxes.length; ++i)\n                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];\n            for (i = 0; i < options.yaxes.length; ++i)\n                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];\n\n            // add hooks from options\n            for (var n in hooks)\n                if (options.hooks[n] && options.hooks[n].length)\n                    hooks[n] = hooks[n].concat(options.hooks[n]);\n\n            executeHooks(hooks.processOptions, [options]);\n        }\n\n        function setData(d) {\n            series = parseData(d);\n            fillInSeriesOptions();\n            processData();\n        }\n\n        function parseData(d) {\n            var res = [];\n            for (var i = 0; i < d.length; ++i) {\n                var s = $.extend(true, {}, options.series);\n\n                if (d[i].data != null) {\n                    s.data = d[i].data; // move the data instead of deep-copy\n                    delete d[i].data;\n\n                    $.extend(true, s, d[i]);\n\n                    d[i].data = s.data;\n                }\n                else\n                    s.data = d[i];\n                res.push(s);\n            }\n\n            return res;\n        }\n\n        function axisNumber(obj, coord) {\n            var a = obj[coord + \"axis\"];\n            if (typeof a == \"object\") // if we got a real axis, extract number\n                a = a.n;\n            if (typeof a != \"number\")\n                a = 1; // default to first axis\n            return a;\n        }\n\n        function allAxes() {\n            // return flat array without annoying null entries\n            return $.grep(xaxes.concat(yaxes), function (a) { return a; });\n        }\n\n        function canvasToAxisCoords(pos) {\n            // return an object with x/y corresponding to all used axes\n            var res = {}, i, axis;\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used)\n                    res[\"x\" + axis.n] = axis.c2p(pos.left);\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used)\n                    res[\"y\" + axis.n] = axis.c2p(pos.top);\n            }\n\n            if (res.x1 !== undefined)\n                res.x = res.x1;\n            if (res.y1 !== undefined)\n                res.y = res.y1;\n\n            return res;\n        }\n\n        function axisToCanvasCoords(pos) {\n            // get canvas coords from the first pair of x/y found in pos\n            var res = {}, i, axis, key;\n\n            for (i = 0; i < xaxes.length; ++i) {\n                axis = xaxes[i];\n                if (axis && axis.used) {\n                    key = \"x\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"x\";\n\n                    if (pos[key] != null) {\n                        res.left = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            for (i = 0; i < yaxes.length; ++i) {\n                axis = yaxes[i];\n                if (axis && axis.used) {\n                    key = \"y\" + axis.n;\n                    if (pos[key] == null && axis.n == 1)\n                        key = \"y\";\n\n                    if (pos[key] != null) {\n                        res.top = axis.p2c(pos[key]);\n                        break;\n                    }\n                }\n            }\n\n            return res;\n        }\n\n        function getOrCreateAxis(axes, number) {\n            if (!axes[number - 1])\n                axes[number - 1] = {\n                    n: number, // save the number for future reference\n                    direction: axes == xaxes ? \"x\" : \"y\",\n                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)\n                };\n\n            return axes[number - 1];\n        }\n\n        function fillInSeriesOptions() {\n\n            var neededColors = series.length, maxIndex = -1, i;\n\n            // Subtract the number of series that already have fixed colors or\n            // color indexes from the number that we still need to generate.\n\n            for (i = 0; i < series.length; ++i) {\n                var sc = series[i].color;\n                if (sc != null) {\n                    neededColors--;\n                    if (typeof sc == \"number\" && sc > maxIndex) {\n                        maxIndex = sc;\n                    }\n                }\n            }\n\n            // If any of the series have fixed color indexes, then we need to\n            // generate at least as many colors as the highest index.\n\n            if (neededColors <= maxIndex) {\n                neededColors = maxIndex + 1;\n            }\n\n            // Generate all the colors, using first the option colors and then\n            // variations on those colors once they're exhausted.\n\n            var c, colors = [], colorPool = options.colors,\n                colorPoolSize = colorPool.length, variation = 0;\n\n            for (i = 0; i < neededColors; i++) {\n\n                c = $.color.parse(colorPool[i % colorPoolSize] || \"#666\");\n\n                // Each time we exhaust the colors in the pool we adjust\n                // a scaling factor used to produce more variations on\n                // those colors. The factor alternates negative/positive\n                // to produce lighter/darker colors.\n\n                // Reset the variation after every few cycles, or else\n                // it will end up producing only white or black colors.\n\n                if (i % colorPoolSize == 0 && i) {\n                    if (variation >= 0) {\n                        if (variation < 0.5) {\n                            variation = -variation - 0.2;\n                        } else variation = 0;\n                    } else variation = -variation;\n                }\n\n                colors[i] = c.scale('rgb', 1 + variation);\n            }\n\n            // Finalize the series options, filling in their colors\n\n            var colori = 0, s;\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                // assign colors\n                if (s.color == null) {\n                    s.color = colors[colori].toString();\n                    ++colori;\n                }\n                else if (typeof s.color == \"number\")\n                    s.color = colors[s.color].toString();\n\n                // turn on lines automatically in case nothing is set\n                if (s.lines.show == null) {\n                    var v, show = true;\n                    for (v in s)\n                        if (s[v] && s[v].show) {\n                            show = false;\n                            break;\n                        }\n                    if (show)\n                        s.lines.show = true;\n                }\n\n                // If nothing was provided for lines.zero, default it to match\n                // lines.fill, since areas by default should extend to zero.\n\n                if (s.lines.zero == null) {\n                    s.lines.zero = !!s.lines.fill;\n                }\n\n                // setup axes\n                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, \"x\"));\n                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, \"y\"));\n            }\n        }\n\n        function processData() {\n            var topSentry = Number.POSITIVE_INFINITY,\n                bottomSentry = Number.NEGATIVE_INFINITY,\n                fakeInfinity = Number.MAX_VALUE,\n                i, j, k, m, length,\n                s, points, ps, x, y, axis, val, f, p,\n                data, format;\n\n            function updateAxis(axis, min, max) {\n                if (min < axis.datamin && min != -fakeInfinity)\n                    axis.datamin = min;\n                if (max > axis.datamax && max != fakeInfinity)\n                    axis.datamax = max;\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                // init axis\n                axis.datamin = topSentry;\n                axis.datamax = bottomSentry;\n                axis.used = false;\n            });\n\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                s.datapoints = { points: [] };\n\n                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);\n            }\n\n            // first pass: clean and copy data\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                data = s.data;\n                format = s.datapoints.format;\n\n                if (!format) {\n                    format = [];\n                    // find out how to copy\n                    format.push({ x: true, number: true, required: true });\n                    format.push({ y: true, number: true, required: true });\n\n                    if (s.bars.show || (s.lines.show && s.lines.fill)) {\n                        var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));\n                        format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale });\n                        if (s.bars.horizontal) {\n                            delete format[format.length - 1].y;\n                            format[format.length - 1].x = true;\n                        }\n                    }\n\n                    s.datapoints.format = format;\n                }\n\n                if (s.datapoints.pointsize != null)\n                    continue; // already filled in\n\n                s.datapoints.pointsize = format.length;\n\n                ps = s.datapoints.pointsize;\n                points = s.datapoints.points;\n\n                var insertSteps = s.lines.show && s.lines.steps;\n                s.xaxis.used = s.yaxis.used = true;\n\n                for (j = k = 0; j < data.length; ++j, k += ps) {\n                    p = data[j];\n\n                    var nullify = p == null;\n                    if (!nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = p[m];\n                            f = format[m];\n\n                            if (f) {\n                                if (f.number && val != null) {\n                                    val = +val; // convert to number\n                                    if (isNaN(val))\n                                        val = null;\n                                    else if (val == Infinity)\n                                        val = fakeInfinity;\n                                    else if (val == -Infinity)\n                                        val = -fakeInfinity;\n                                }\n\n                                if (val == null) {\n                                    if (f.required)\n                                        nullify = true;\n\n                                    if (f.defaultValue != null)\n                                        val = f.defaultValue;\n                                }\n                            }\n\n                            points[k + m] = val;\n                        }\n                    }\n\n                    if (nullify) {\n                        for (m = 0; m < ps; ++m) {\n                            val = points[k + m];\n                            if (val != null) {\n                                f = format[m];\n                                // extract min/max info\n                                if (f.autoscale !== false) {\n                                    if (f.x) {\n                                        updateAxis(s.xaxis, val, val);\n                                    }\n                                    if (f.y) {\n                                        updateAxis(s.yaxis, val, val);\n                                    }\n                                }\n                            }\n                            points[k + m] = null;\n                        }\n                    }\n                    else {\n                        // a little bit of line specific stuff that\n                        // perhaps shouldn't be here, but lacking\n                        // better means...\n                        if (insertSteps && k > 0\n                            && points[k - ps] != null\n                            && points[k - ps] != points[k]\n                            && points[k - ps + 1] != points[k + 1]) {\n                            // copy the point to make room for a middle point\n                            for (m = 0; m < ps; ++m)\n                                points[k + ps + m] = points[k + m];\n\n                            // middle point has same y\n                            points[k + 1] = points[k - ps + 1];\n\n                            // we've added a point, better reflect that\n                            k += ps;\n                        }\n                    }\n                }\n            }\n\n            // give the hooks a chance to run\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n\n                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);\n            }\n\n            // second pass: find datamax/datamin for auto-scaling\n            for (i = 0; i < series.length; ++i) {\n                s = series[i];\n                points = s.datapoints.points;\n                ps = s.datapoints.pointsize;\n                format = s.datapoints.format;\n\n                var xmin = topSentry, ymin = topSentry,\n                    xmax = bottomSentry, ymax = bottomSentry;\n\n                for (j = 0; j < points.length; j += ps) {\n                    if (points[j] == null)\n                        continue;\n\n                    for (m = 0; m < ps; ++m) {\n                        val = points[j + m];\n                        f = format[m];\n                        if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity)\n                            continue;\n\n                        if (f.x) {\n                            if (val < xmin)\n                                xmin = val;\n                            if (val > xmax)\n                                xmax = val;\n                        }\n                        if (f.y) {\n                            if (val < ymin)\n                                ymin = val;\n                            if (val > ymax)\n                                ymax = val;\n                        }\n                    }\n                }\n\n                if (s.bars.show) {\n                    // make sure we got room for the bar on the dancing floor\n                    var delta;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            delta = 0;\n                            break;\n                        case \"right\":\n                            delta = -s.bars.barWidth;\n                            break;\n                        default:\n                            delta = -s.bars.barWidth / 2;\n                    }\n\n                    if (s.bars.horizontal) {\n                        ymin += delta;\n                        ymax += delta + s.bars.barWidth;\n                    }\n                    else {\n                        xmin += delta;\n                        xmax += delta + s.bars.barWidth;\n                    }\n                }\n\n                updateAxis(s.xaxis, xmin, xmax);\n                updateAxis(s.yaxis, ymin, ymax);\n            }\n\n            $.each(allAxes(), function (_, axis) {\n                if (axis.datamin == topSentry)\n                    axis.datamin = null;\n                if (axis.datamax == bottomSentry)\n                    axis.datamax = null;\n            });\n        }\n\n        function setupCanvases() {\n\n            // Make sure the placeholder is clear of everything except canvases\n            // from a previous plot in this container that we'll try to re-use.\n\n            placeholder.css(\"padding\", 0) // padding messes up the positioning\n                .children().filter(function(){\n                    return !$(this).hasClass(\"flot-overlay\") && !$(this).hasClass('flot-base');\n                }).remove();\n\n            if (placeholder.css(\"position\") == 'static')\n                placeholder.css(\"position\", \"relative\"); // for positioning labels and overlay\n\n            surface = new Canvas(\"flot-base\", placeholder);\n            overlay = new Canvas(\"flot-overlay\", placeholder); // overlay canvas for interactive features\n\n            ctx = surface.context;\n            octx = overlay.context;\n\n            // define which element we're listening for events on\n            eventHolder = $(overlay.element).unbind();\n\n            // If we're re-using a plot object, shut down the old one\n\n            var existing = placeholder.data(\"plot\");\n\n            if (existing) {\n                existing.shutdown();\n                overlay.clear();\n            }\n\n            // save in case we get replotted\n            placeholder.data(\"plot\", plot);\n        }\n\n        function bindEvents() {\n            // bind events\n            if (options.grid.hoverable) {\n                eventHolder.mousemove(onMouseMove);\n\n                // Use bind, rather than .mouseleave, because we officially\n                // still support jQuery 1.2.6, which doesn't define a shortcut\n                // for mouseenter or mouseleave.  This was a bug/oversight that\n                // was fixed somewhere around 1.3.x.  We can return to using\n                // .mouseleave when we drop support for 1.2.6.\n\n                eventHolder.bind(\"mouseleave\", onMouseLeave);\n            }\n\n            if (options.grid.clickable)\n                eventHolder.click(onClick);\n\n            executeHooks(hooks.bindEvents, [eventHolder]);\n        }\n\n        function shutdown() {\n            if (redrawTimeout)\n                clearTimeout(redrawTimeout);\n\n            eventHolder.unbind(\"mousemove\", onMouseMove);\n            eventHolder.unbind(\"mouseleave\", onMouseLeave);\n            eventHolder.unbind(\"click\", onClick);\n\n            executeHooks(hooks.shutdown, [eventHolder]);\n        }\n\n        function setTransformationHelpers(axis) {\n            // set helper functions on the axis, assumes plot area\n            // has been computed already\n\n            function identity(x) { return x; }\n\n            var s, m, t = axis.options.transform || identity,\n                it = axis.options.inverseTransform;\n\n            // precompute how much the axis is scaling a point\n            // in canvas space\n            if (axis.direction == \"x\") {\n                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));\n                m = Math.min(t(axis.max), t(axis.min));\n            }\n            else {\n                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));\n                s = -s;\n                m = Math.max(t(axis.max), t(axis.min));\n            }\n\n            // data point to canvas coordinate\n            if (t == identity) // slight optimization\n                axis.p2c = function (p) { return (p - m) * s; };\n            else\n                axis.p2c = function (p) { return (t(p) - m) * s; };\n            // canvas coordinate to data point\n            if (!it)\n                axis.c2p = function (c) { return m + c / s; };\n            else\n                axis.c2p = function (c) { return it(m + c / s); };\n        }\n\n        function measureTickLabels(axis) {\n\n            var opts = axis.options,\n                ticks = axis.ticks || [],\n                labelWidth = opts.labelWidth || 0,\n                labelHeight = opts.labelHeight || 0,\n                maxWidth = labelWidth || (axis.direction == \"x\" ? Math.floor(surface.width / (ticks.length || 1)) : null),\n                legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                font = opts.font || \"flot-tick-label tickLabel\";\n\n            for (var i = 0; i < ticks.length; ++i) {\n\n                var t = ticks[i];\n\n                if (!t.label)\n                    continue;\n\n                var info = surface.getTextInfo(layer, t.label, font, null, maxWidth);\n\n                labelWidth = Math.max(labelWidth, info.width);\n                labelHeight = Math.max(labelHeight, info.height);\n            }\n\n            axis.labelWidth = opts.labelWidth || labelWidth;\n            axis.labelHeight = opts.labelHeight || labelHeight;\n        }\n\n        function allocateAxisBoxFirstPhase(axis) {\n            // find the bounding box of the axis by looking at label\n            // widths/heights and ticks, make room by diminishing the\n            // plotOffset; this first phase only looks at one\n            // dimension per axis, the other dimension depends on the\n            // other axes so will have to wait\n\n            var lw = axis.labelWidth,\n                lh = axis.labelHeight,\n                pos = axis.options.position,\n                isXAxis = axis.direction === \"x\",\n                tickLength = axis.options.tickLength,\n                axisMargin = options.grid.axisMargin,\n                padding = options.grid.labelMargin,\n                innermost = true,\n                outermost = true,\n                first = true,\n                found = false;\n\n            // Determine the axis's position in its direction and on its side\n\n            $.each(isXAxis ? xaxes : yaxes, function(i, a) {\n                if (a && (a.show || a.reserveSpace)) {\n                    if (a === axis) {\n                        found = true;\n                    } else if (a.options.position === pos) {\n                        if (found) {\n                            outermost = false;\n                        } else {\n                            innermost = false;\n                        }\n                    }\n                    if (!found) {\n                        first = false;\n                    }\n                }\n            });\n\n            // The outermost axis on each side has no margin\n\n            if (outermost) {\n                axisMargin = 0;\n            }\n\n            // The ticks for the first axis in each direction stretch across\n\n            if (tickLength == null) {\n                tickLength = first ? \"full\" : 5;\n            }\n\n            if (!isNaN(+tickLength))\n                padding += +tickLength;\n\n            if (isXAxis) {\n                lh += padding;\n\n                if (pos == \"bottom\") {\n                    plotOffset.bottom += lh + axisMargin;\n                    axis.box = { top: surface.height - plotOffset.bottom, height: lh };\n                }\n                else {\n                    axis.box = { top: plotOffset.top + axisMargin, height: lh };\n                    plotOffset.top += lh + axisMargin;\n                }\n            }\n            else {\n                lw += padding;\n\n                if (pos == \"left\") {\n                    axis.box = { left: plotOffset.left + axisMargin, width: lw };\n                    plotOffset.left += lw + axisMargin;\n                }\n                else {\n                    plotOffset.right += lw + axisMargin;\n                    axis.box = { left: surface.width - plotOffset.right, width: lw };\n                }\n            }\n\n             // save for future reference\n            axis.position = pos;\n            axis.tickLength = tickLength;\n            axis.box.padding = padding;\n            axis.innermost = innermost;\n        }\n\n        function allocateAxisBoxSecondPhase(axis) {\n            // now that all axis boxes have been placed in one\n            // dimension, we can set the remaining dimension coordinates\n            if (axis.direction == \"x\") {\n                axis.box.left = plotOffset.left - axis.labelWidth / 2;\n                axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth;\n            }\n            else {\n                axis.box.top = plotOffset.top - axis.labelHeight / 2;\n                axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight;\n            }\n        }\n\n        function adjustLayoutForThingsStickingOut() {\n            // possibly adjust plot offset to ensure everything stays\n            // inside the canvas and isn't clipped off\n\n            var minMargin = options.grid.minBorderMargin,\n                axis, i;\n\n            // check stuff from the plot (FIXME: this should just read\n            // a value from the series, otherwise it's impossible to\n            // customize)\n            if (minMargin == null) {\n                minMargin = 0;\n                for (i = 0; i < series.length; ++i)\n                    minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2));\n            }\n\n            var margins = {\n                left: minMargin,\n                right: minMargin,\n                top: minMargin,\n                bottom: minMargin\n            };\n\n            // check axis labels, note we don't check the actual\n            // labels but instead use the overall width/height to not\n            // jump as much around with replots\n            $.each(allAxes(), function (_, axis) {\n                if (axis.reserveSpace && axis.ticks && axis.ticks.length) {\n                    if (axis.direction === \"x\") {\n                        margins.left = Math.max(margins.left, axis.labelWidth / 2);\n                        margins.right = Math.max(margins.right, axis.labelWidth / 2);\n                    } else {\n                        margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2);\n                        margins.top = Math.max(margins.top, axis.labelHeight / 2);\n                    }\n                }\n            });\n\n            plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left));\n            plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right));\n            plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top));\n            plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom));\n        }\n\n        function setupGrid() {\n            var i, axes = allAxes(), showGrid = options.grid.show;\n\n            // Initialize the plot's offset from the edge of the canvas\n\n            for (var a in plotOffset) {\n                var margin = options.grid.margin || 0;\n                plotOffset[a] = typeof margin == \"number\" ? margin : margin[a] || 0;\n            }\n\n            executeHooks(hooks.processOffset, [plotOffset]);\n\n            // If the grid is visible, add its border width to the offset\n\n            for (var a in plotOffset) {\n                if(typeof(options.grid.borderWidth) == \"object\") {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0;\n                }\n                else {\n                    plotOffset[a] += showGrid ? options.grid.borderWidth : 0;\n                }\n            }\n\n            $.each(axes, function (_, axis) {\n                var axisOpts = axis.options;\n                axis.show = axisOpts.show == null ? axis.used : axisOpts.show;\n                axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace;\n                setRange(axis);\n            });\n\n            if (showGrid) {\n\n                var allocatedAxes = $.grep(axes, function (axis) {\n                    return axis.show || axis.reserveSpace;\n                });\n\n                $.each(allocatedAxes, function (_, axis) {\n                    // make the ticks\n                    setupTickGeneration(axis);\n                    setTicks(axis);\n                    snapRangeToTicks(axis, axis.ticks);\n                    // find labelWidth/Height for axis\n                    measureTickLabels(axis);\n                });\n\n                // with all dimensions calculated, we can compute the\n                // axis bounding boxes, start from the outside\n                // (reverse order)\n                for (i = allocatedAxes.length - 1; i >= 0; --i)\n                    allocateAxisBoxFirstPhase(allocatedAxes[i]);\n\n                // make sure we've got enough space for things that\n                // might stick out\n                adjustLayoutForThingsStickingOut();\n\n                $.each(allocatedAxes, function (_, axis) {\n                    allocateAxisBoxSecondPhase(axis);\n                });\n            }\n\n            plotWidth = surface.width - plotOffset.left - plotOffset.right;\n            plotHeight = surface.height - plotOffset.bottom - plotOffset.top;\n\n            // now we got the proper plot dimensions, we can compute the scaling\n            $.each(axes, function (_, axis) {\n                setTransformationHelpers(axis);\n            });\n\n            if (showGrid) {\n                drawAxisLabels();\n            }\n\n            insertLegend();\n        }\n\n        function setRange(axis) {\n            var opts = axis.options,\n                min = +(opts.min != null ? opts.min : axis.datamin),\n                max = +(opts.max != null ? opts.max : axis.datamax),\n                delta = max - min;\n\n            if (delta == 0.0) {\n                // degenerate case\n                var widen = max == 0 ? 1 : 0.01;\n\n                if (opts.min == null)\n                    min -= widen;\n                // always widen max if we couldn't widen min to ensure we\n                // don't fall into min == max which doesn't work\n                if (opts.max == null || opts.min != null)\n                    max += widen;\n            }\n            else {\n                // consider autoscaling\n                var margin = opts.autoscaleMargin;\n                if (margin != null) {\n                    if (opts.min == null) {\n                        min -= delta * margin;\n                        // make sure we don't go below zero if all values\n                        // are positive\n                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)\n                            min = 0;\n                    }\n                    if (opts.max == null) {\n                        max += delta * margin;\n                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)\n                            max = 0;\n                    }\n                }\n            }\n            axis.min = min;\n            axis.max = max;\n        }\n\n        function setupTickGeneration(axis) {\n            var opts = axis.options;\n\n            // estimate number of ticks\n            var noTicks;\n            if (typeof opts.ticks == \"number\" && opts.ticks > 0)\n                noTicks = opts.ticks;\n            else\n                // heuristic based on the model a*sqrt(x) fitted to\n                // some data points that seemed reasonable\n                noTicks = 0.3 * Math.sqrt(axis.direction == \"x\" ? surface.width : surface.height);\n\n            var delta = (axis.max - axis.min) / noTicks,\n                dec = -Math.floor(Math.log(delta) / Math.LN10),\n                maxDec = opts.tickDecimals;\n\n            if (maxDec != null && dec > maxDec) {\n                dec = maxDec;\n            }\n\n            var magn = Math.pow(10, -dec),\n                norm = delta / magn, // norm is between 1.0 and 10.0\n                size;\n\n            if (norm < 1.5) {\n                size = 1;\n            } else if (norm < 3) {\n                size = 2;\n                // special case for 2.5, requires an extra decimal\n                if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {\n                    size = 2.5;\n                    ++dec;\n                }\n            } else if (norm < 7.5) {\n                size = 5;\n            } else {\n                size = 10;\n            }\n\n            size *= magn;\n\n            if (opts.minTickSize != null && size < opts.minTickSize) {\n                size = opts.minTickSize;\n            }\n\n            axis.delta = delta;\n            axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);\n            axis.tickSize = opts.tickSize || size;\n\n            // Time mode was moved to a plug-in in 0.8, and since so many people use it\n            // we'll add an especially friendly reminder to make sure they included it.\n\n            if (opts.mode == \"time\" && !axis.tickGenerator) {\n                throw new Error(\"Time mode requires the flot.time plugin.\");\n            }\n\n            // Flot supports base-10 axes; any other mode else is handled by a plug-in,\n            // like flot.time.js.\n\n            if (!axis.tickGenerator) {\n\n                axis.tickGenerator = function (axis) {\n\n                    var ticks = [],\n                        start = floorInBase(axis.min, axis.tickSize),\n                        i = 0,\n                        v = Number.NaN,\n                        prev;\n\n                    do {\n                        prev = v;\n                        v = start + i * axis.tickSize;\n                        ticks.push(v);\n                        ++i;\n                    } while (v < axis.max && v != prev);\n                    return ticks;\n                };\n\n\t\t\t\taxis.tickFormatter = function (value, axis) {\n\n\t\t\t\t\tvar factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1;\n\t\t\t\t\tvar formatted = \"\" + Math.round(value * factor) / factor;\n\n\t\t\t\t\t// If tickDecimals was specified, ensure that we have exactly that\n\t\t\t\t\t// much precision; otherwise default to the value's own precision.\n\n\t\t\t\t\tif (axis.tickDecimals != null) {\n\t\t\t\t\t\tvar decimal = formatted.indexOf(\".\");\n\t\t\t\t\t\tvar precision = decimal == -1 ? 0 : formatted.length - decimal - 1;\n\t\t\t\t\t\tif (precision < axis.tickDecimals) {\n\t\t\t\t\t\t\treturn (precision ? formatted : formatted + \".\") + (\"\" + factor).substr(1, axis.tickDecimals - precision);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n                    return formatted;\n                };\n            }\n\n            if ($.isFunction(opts.tickFormatter))\n                axis.tickFormatter = function (v, axis) { return \"\" + opts.tickFormatter(v, axis); };\n\n            if (opts.alignTicksWithAxis != null) {\n                var otherAxis = (axis.direction == \"x\" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];\n                if (otherAxis && otherAxis.used && otherAxis != axis) {\n                    // consider snapping min/max to outermost nice ticks\n                    var niceTicks = axis.tickGenerator(axis);\n                    if (niceTicks.length > 0) {\n                        if (opts.min == null)\n                            axis.min = Math.min(axis.min, niceTicks[0]);\n                        if (opts.max == null && niceTicks.length > 1)\n                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);\n                    }\n\n                    axis.tickGenerator = function (axis) {\n                        // copy ticks, scaled to this axis\n                        var ticks = [], v, i;\n                        for (i = 0; i < otherAxis.ticks.length; ++i) {\n                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);\n                            v = axis.min + v * (axis.max - axis.min);\n                            ticks.push(v);\n                        }\n                        return ticks;\n                    };\n\n                    // we might need an extra decimal since forced\n                    // ticks don't necessarily fit naturally\n                    if (!axis.mode && opts.tickDecimals == null) {\n                        var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1),\n                            ts = axis.tickGenerator(axis);\n\n                        // only proceed if the tick interval rounded\n                        // with an extra decimal doesn't give us a\n                        // zero at end\n                        if (!(ts.length > 1 && /\\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))\n                            axis.tickDecimals = extraDec;\n                    }\n                }\n            }\n        }\n\n        function setTicks(axis) {\n            var oticks = axis.options.ticks, ticks = [];\n            if (oticks == null || (typeof oticks == \"number\" && oticks > 0))\n                ticks = axis.tickGenerator(axis);\n            else if (oticks) {\n                if ($.isFunction(oticks))\n                    // generate the ticks\n                    ticks = oticks(axis);\n                else\n                    ticks = oticks;\n            }\n\n            // clean up/labelify the supplied ticks, copy them over\n            var i, v;\n            axis.ticks = [];\n            for (i = 0; i < ticks.length; ++i) {\n                var label = null;\n                var t = ticks[i];\n                if (typeof t == \"object\") {\n                    v = +t[0];\n                    if (t.length > 1)\n                        label = t[1];\n                }\n                else\n                    v = +t;\n                if (label == null)\n                    label = axis.tickFormatter(v, axis);\n                if (!isNaN(v))\n                    axis.ticks.push({ v: v, label: label });\n            }\n        }\n\n        function snapRangeToTicks(axis, ticks) {\n            if (axis.options.autoscaleMargin && ticks.length > 0) {\n                // snap to ticks\n                if (axis.options.min == null)\n                    axis.min = Math.min(axis.min, ticks[0].v);\n                if (axis.options.max == null && ticks.length > 1)\n                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);\n            }\n        }\n\n        function draw() {\n\n            surface.clear();\n\n            executeHooks(hooks.drawBackground, [ctx]);\n\n            var grid = options.grid;\n\n            // draw background, if any\n            if (grid.show && grid.backgroundColor)\n                drawBackground();\n\n            if (grid.show && !grid.aboveData) {\n                drawGrid();\n            }\n\n            for (var i = 0; i < series.length; ++i) {\n                executeHooks(hooks.drawSeries, [ctx, series[i]]);\n                drawSeries(series[i]);\n            }\n\n            executeHooks(hooks.draw, [ctx]);\n\n            if (grid.show && grid.aboveData) {\n                drawGrid();\n            }\n\n            surface.render();\n\n            // A draw implies that either the axes or data have changed, so we\n            // should probably update the overlay highlights as well.\n\n            triggerRedrawOverlay();\n        }\n\n        function extractRange(ranges, coord) {\n            var axis, from, to, key, axes = allAxes();\n\n            for (var i = 0; i < axes.length; ++i) {\n                axis = axes[i];\n                if (axis.direction == coord) {\n                    key = coord + axis.n + \"axis\";\n                    if (!ranges[key] && axis.n == 1)\n                        key = coord + \"axis\"; // support x1axis as xaxis\n                    if (ranges[key]) {\n                        from = ranges[key].from;\n                        to = ranges[key].to;\n                        break;\n                    }\n                }\n            }\n\n            // backwards-compat stuff - to be removed in future\n            if (!ranges[key]) {\n                axis = coord == \"x\" ? xaxes[0] : yaxes[0];\n                from = ranges[coord + \"1\"];\n                to = ranges[coord + \"2\"];\n            }\n\n            // auto-reverse as an added bonus\n            if (from != null && to != null && from > to) {\n                var tmp = from;\n                from = to;\n                to = tmp;\n            }\n\n            return { from: from, to: to, axis: axis };\n        }\n\n        function drawBackground() {\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, \"rgba(255, 255, 255, 0)\");\n            ctx.fillRect(0, 0, plotWidth, plotHeight);\n            ctx.restore();\n        }\n\n        function drawGrid() {\n            var i, axes, bw, bc;\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // draw markings\n            var markings = options.grid.markings;\n            if (markings) {\n                if ($.isFunction(markings)) {\n                    axes = plot.getAxes();\n                    // xmin etc. is backwards compatibility, to be\n                    // removed in the future\n                    axes.xmin = axes.xaxis.min;\n                    axes.xmax = axes.xaxis.max;\n                    axes.ymin = axes.yaxis.min;\n                    axes.ymax = axes.yaxis.max;\n\n                    markings = markings(axes);\n                }\n\n                for (i = 0; i < markings.length; ++i) {\n                    var m = markings[i],\n                        xrange = extractRange(m, \"x\"),\n                        yrange = extractRange(m, \"y\");\n\n                    // fill in missing\n                    if (xrange.from == null)\n                        xrange.from = xrange.axis.min;\n                    if (xrange.to == null)\n                        xrange.to = xrange.axis.max;\n                    if (yrange.from == null)\n                        yrange.from = yrange.axis.min;\n                    if (yrange.to == null)\n                        yrange.to = yrange.axis.max;\n\n                    // clip\n                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||\n                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)\n                        continue;\n\n                    xrange.from = Math.max(xrange.from, xrange.axis.min);\n                    xrange.to = Math.min(xrange.to, xrange.axis.max);\n                    yrange.from = Math.max(yrange.from, yrange.axis.min);\n                    yrange.to = Math.min(yrange.to, yrange.axis.max);\n\n                    var xequal = xrange.from === xrange.to,\n                        yequal = yrange.from === yrange.to;\n\n                    if (xequal && yequal) {\n                        continue;\n                    }\n\n                    // then draw\n                    xrange.from = Math.floor(xrange.axis.p2c(xrange.from));\n                    xrange.to = Math.floor(xrange.axis.p2c(xrange.to));\n                    yrange.from = Math.floor(yrange.axis.p2c(yrange.from));\n                    yrange.to = Math.floor(yrange.axis.p2c(yrange.to));\n\n                    if (xequal || yequal) {\n                        var lineWidth = m.lineWidth || options.grid.markingsLineWidth,\n                            subPixel = lineWidth % 2 ? 0.5 : 0;\n                        ctx.beginPath();\n                        ctx.strokeStyle = m.color || options.grid.markingsColor;\n                        ctx.lineWidth = lineWidth;\n                        if (xequal) {\n                            ctx.moveTo(xrange.to + subPixel, yrange.from);\n                            ctx.lineTo(xrange.to + subPixel, yrange.to);\n                        } else {\n                            ctx.moveTo(xrange.from, yrange.to + subPixel);\n                            ctx.lineTo(xrange.to, yrange.to + subPixel);                            \n                        }\n                        ctx.stroke();\n                    } else {\n                        ctx.fillStyle = m.color || options.grid.markingsColor;\n                        ctx.fillRect(xrange.from, yrange.to,\n                                     xrange.to - xrange.from,\n                                     yrange.from - yrange.to);\n                    }\n                }\n            }\n\n            // draw the ticks\n            axes = allAxes();\n            bw = options.grid.borderWidth;\n\n            for (var j = 0; j < axes.length; ++j) {\n                var axis = axes[j], box = axis.box,\n                    t = axis.tickLength, x, y, xoff, yoff;\n                if (!axis.show || axis.ticks.length == 0)\n                    continue;\n\n                ctx.lineWidth = 1;\n\n                // find the edges\n                if (axis.direction == \"x\") {\n                    x = 0;\n                    if (t == \"full\")\n                        y = (axis.position == \"top\" ? 0 : plotHeight);\n                    else\n                        y = box.top - plotOffset.top + (axis.position == \"top\" ? box.height : 0);\n                }\n                else {\n                    y = 0;\n                    if (t == \"full\")\n                        x = (axis.position == \"left\" ? 0 : plotWidth);\n                    else\n                        x = box.left - plotOffset.left + (axis.position == \"left\" ? box.width : 0);\n                }\n\n                // draw tick bar\n                if (!axis.innermost) {\n                    ctx.strokeStyle = axis.options.color;\n                    ctx.beginPath();\n                    xoff = yoff = 0;\n                    if (axis.direction == \"x\")\n                        xoff = plotWidth + 1;\n                    else\n                        yoff = plotHeight + 1;\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\") {\n                            y = Math.floor(y) + 0.5;\n                        } else {\n                            x = Math.floor(x) + 0.5;\n                        }\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                    ctx.stroke();\n                }\n\n                // draw ticks\n\n                ctx.strokeStyle = axis.options.tickColor;\n\n                ctx.beginPath();\n                for (i = 0; i < axis.ticks.length; ++i) {\n                    var v = axis.ticks[i].v;\n\n                    xoff = yoff = 0;\n\n                    if (isNaN(v) || v < axis.min || v > axis.max\n                        // skip those lying on the axes if we got a border\n                        || (t == \"full\"\n                            && ((typeof bw == \"object\" && bw[axis.position] > 0) || bw > 0)\n                            && (v == axis.min || v == axis.max)))\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        x = axis.p2c(v);\n                        yoff = t == \"full\" ? -plotHeight : t;\n\n                        if (axis.position == \"top\")\n                            yoff = -yoff;\n                    }\n                    else {\n                        y = axis.p2c(v);\n                        xoff = t == \"full\" ? -plotWidth : t;\n\n                        if (axis.position == \"left\")\n                            xoff = -xoff;\n                    }\n\n                    if (ctx.lineWidth == 1) {\n                        if (axis.direction == \"x\")\n                            x = Math.floor(x) + 0.5;\n                        else\n                            y = Math.floor(y) + 0.5;\n                    }\n\n                    ctx.moveTo(x, y);\n                    ctx.lineTo(x + xoff, y + yoff);\n                }\n\n                ctx.stroke();\n            }\n\n\n            // draw border\n            if (bw) {\n                // If either borderWidth or borderColor is an object, then draw the border\n                // line by line instead of as one rectangle\n                bc = options.grid.borderColor;\n                if(typeof bw == \"object\" || typeof bc == \"object\") {\n                    if (typeof bw !== \"object\") {\n                        bw = {top: bw, right: bw, bottom: bw, left: bw};\n                    }\n                    if (typeof bc !== \"object\") {\n                        bc = {top: bc, right: bc, bottom: bc, left: bc};\n                    }\n\n                    if (bw.top > 0) {\n                        ctx.strokeStyle = bc.top;\n                        ctx.lineWidth = bw.top;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left, 0 - bw.top/2);\n                        ctx.lineTo(plotWidth, 0 - bw.top/2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.right > 0) {\n                        ctx.strokeStyle = bc.right;\n                        ctx.lineWidth = bw.right;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top);\n                        ctx.lineTo(plotWidth + bw.right / 2, plotHeight);\n                        ctx.stroke();\n                    }\n\n                    if (bw.bottom > 0) {\n                        ctx.strokeStyle = bc.bottom;\n                        ctx.lineWidth = bw.bottom;\n                        ctx.beginPath();\n                        ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2);\n                        ctx.lineTo(0, plotHeight + bw.bottom / 2);\n                        ctx.stroke();\n                    }\n\n                    if (bw.left > 0) {\n                        ctx.strokeStyle = bc.left;\n                        ctx.lineWidth = bw.left;\n                        ctx.beginPath();\n                        ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom);\n                        ctx.lineTo(0- bw.left/2, 0);\n                        ctx.stroke();\n                    }\n                }\n                else {\n                    ctx.lineWidth = bw;\n                    ctx.strokeStyle = options.grid.borderColor;\n                    ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);\n                }\n            }\n\n            ctx.restore();\n        }\n\n        function drawAxisLabels() {\n\n            $.each(allAxes(), function (_, axis) {\n                var box = axis.box,\n                    legacyStyles = axis.direction + \"Axis \" + axis.direction + axis.n + \"Axis\",\n                    layer = \"flot-\" + axis.direction + \"-axis flot-\" + axis.direction + axis.n + \"-axis \" + legacyStyles,\n                    font = axis.options.font || \"flot-tick-label tickLabel\",\n                    tick, x, y, halign, valign;\n\n                // Remove text before checking for axis.show and ticks.length;\n                // otherwise plugins, like flot-tickrotor, that draw their own\n                // tick labels will end up with both theirs and the defaults.\n\n                surface.removeText(layer);\n\n                if (!axis.show || axis.ticks.length == 0)\n                    return;\n\n                for (var i = 0; i < axis.ticks.length; ++i) {\n\n                    tick = axis.ticks[i];\n                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)\n                        continue;\n\n                    if (axis.direction == \"x\") {\n                        halign = \"center\";\n                        x = plotOffset.left + axis.p2c(tick.v);\n                        if (axis.position == \"bottom\") {\n                            y = box.top + box.padding;\n                        } else {\n                            y = box.top + box.height - box.padding;\n                            valign = \"bottom\";\n                        }\n                    } else {\n                        valign = \"middle\";\n                        y = plotOffset.top + axis.p2c(tick.v);\n                        if (axis.position == \"left\") {\n                            x = box.left + box.width - box.padding;\n                            halign = \"right\";\n                        } else {\n                            x = box.left + box.padding;\n                        }\n                    }\n\n                    surface.addText(layer, x, y, tick.label, font, null, null, halign, valign);\n                }\n            });\n        }\n\n        function drawSeries(series) {\n            if (series.lines.show)\n                drawSeriesLines(series);\n            if (series.bars.show)\n                drawSeriesBars(series);\n            if (series.points.show)\n                drawSeriesPoints(series);\n        }\n\n        function drawSeriesLines(series) {\n            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    prevx = null, prevy = null;\n\n                ctx.beginPath();\n                for (var i = ps; i < points.length; i += ps) {\n                    var x1 = points[i - ps], y1 = points[i - ps + 1],\n                        x2 = points[i], y2 = points[i + 1];\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min) {\n                        if (y2 < axisy.min)\n                            continue;   // line segment is outside\n                        // compute new intersection point\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min) {\n                        if (y1 < axisy.min)\n                            continue;\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max) {\n                        if (y2 > axisy.max)\n                            continue;\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max) {\n                        if (y1 > axisy.max)\n                            continue;\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (x1 != prevx || y1 != prevy)\n                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);\n\n                    prevx = x2;\n                    prevy = y2;\n                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);\n                }\n                ctx.stroke();\n            }\n\n            function plotLineArea(datapoints, axisx, axisy) {\n                var points = datapoints.points,\n                    ps = datapoints.pointsize,\n                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),\n                    i = 0, top, areaOpen = false,\n                    ypos = 1, segmentStart = 0, segmentEnd = 0;\n\n                // we process each segment in two turns, first forward\n                // direction to sketch out top, then once we hit the\n                // end we go backwards to sketch the bottom\n                while (true) {\n                    if (ps > 0 && i > points.length + ps)\n                        break;\n\n                    i += ps; // ps is negative if going backwards\n\n                    var x1 = points[i - ps],\n                        y1 = points[i - ps + ypos],\n                        x2 = points[i], y2 = points[i + ypos];\n\n                    if (areaOpen) {\n                        if (ps > 0 && x1 != null && x2 == null) {\n                            // at turning point\n                            segmentEnd = i;\n                            ps = -ps;\n                            ypos = 2;\n                            continue;\n                        }\n\n                        if (ps < 0 && i == segmentStart + ps) {\n                            // done with the reverse sweep\n                            ctx.fill();\n                            areaOpen = false;\n                            ps = -ps;\n                            ypos = 1;\n                            i = segmentStart = segmentEnd + ps;\n                            continue;\n                        }\n                    }\n\n                    if (x1 == null || x2 == null)\n                        continue;\n\n                    // clip x values\n\n                    // clip with xmin\n                    if (x1 <= x2 && x1 < axisx.min) {\n                        if (x2 < axisx.min)\n                            continue;\n                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.min;\n                    }\n                    else if (x2 <= x1 && x2 < axisx.min) {\n                        if (x1 < axisx.min)\n                            continue;\n                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.min;\n                    }\n\n                    // clip with xmax\n                    if (x1 >= x2 && x1 > axisx.max) {\n                        if (x2 > axisx.max)\n                            continue;\n                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x1 = axisx.max;\n                    }\n                    else if (x2 >= x1 && x2 > axisx.max) {\n                        if (x1 > axisx.max)\n                            continue;\n                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;\n                        x2 = axisx.max;\n                    }\n\n                    if (!areaOpen) {\n                        // open area\n                        ctx.beginPath();\n                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));\n                        areaOpen = true;\n                    }\n\n                    // now first check the case where both is outside\n                    if (y1 >= axisy.max && y2 >= axisy.max) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));\n                        continue;\n                    }\n                    else if (y1 <= axisy.min && y2 <= axisy.min) {\n                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));\n                        continue;\n                    }\n\n                    // else it's a bit more complicated, there might\n                    // be a flat maxed out rectangle first, then a\n                    // triangular cutout or reverse; to find these\n                    // keep track of the current x values\n                    var x1old = x1, x2old = x2;\n\n                    // clip the y values, without shortcutting, we\n                    // go through all cases in turn\n\n                    // clip with ymin\n                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {\n                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.min;\n                    }\n                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {\n                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.min;\n                    }\n\n                    // clip with ymax\n                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {\n                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y1 = axisy.max;\n                    }\n                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {\n                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;\n                        y2 = axisy.max;\n                    }\n\n                    // if the x value was changed we got a rectangle\n                    // to fill\n                    if (x1 != x1old) {\n                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));\n                        // it goes to (x1, y1), but we fill that below\n                    }\n\n                    // fill triangular section, this sometimes result\n                    // in redundant points if (x1, y1) hasn't changed\n                    // from previous line to, but we just ignore that\n                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));\n                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n\n                    // fill the other rectangle if it's there\n                    if (x2 != x2old) {\n                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));\n                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));\n                    }\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n            ctx.lineJoin = \"round\";\n\n            var lw = series.lines.lineWidth,\n                sw = series.shadowSize;\n            // FIXME: consider another form of shadow when filling is turned on\n            if (lw > 0 && sw > 0) {\n                // draw shadow as a thick and thin line with transparency\n                ctx.lineWidth = sw;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                // position shadow at angle from the mid of line\n                var angle = Math.PI/18;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);\n                ctx.lineWidth = sw/2;\n                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);\n            if (fillStyle) {\n                ctx.fillStyle = fillStyle;\n                plotLineArea(series.datapoints, series.xaxis, series.yaxis);\n            }\n\n            if (lw > 0)\n                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function drawSeriesPoints(series) {\n            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    var x = points[i], y = points[i + 1];\n                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                        continue;\n\n                    ctx.beginPath();\n                    x = axisx.p2c(x);\n                    y = axisy.p2c(y) + offset;\n                    if (symbol == \"circle\")\n                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);\n                    else\n                        symbol(ctx, x, y, radius, shadow);\n                    ctx.closePath();\n\n                    if (fillStyle) {\n                        ctx.fillStyle = fillStyle;\n                        ctx.fill();\n                    }\n                    ctx.stroke();\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            var lw = series.points.lineWidth,\n                sw = series.shadowSize,\n                radius = series.points.radius,\n                symbol = series.points.symbol;\n\n            // If the user sets the line width to 0, we change it to a very \n            // small value. A line width of 0 seems to force the default of 1.\n            // Doing the conditional here allows the shadow setting to still be \n            // optional even with a lineWidth of 0.\n\n            if( lw == 0 )\n                lw = 0.0001;\n\n            if (lw > 0 && sw > 0) {\n                // draw shadow in two steps\n                var w = sw / 2;\n                ctx.lineWidth = w;\n                ctx.strokeStyle = \"rgba(0,0,0,0.1)\";\n                plotPoints(series.datapoints, radius, null, w + w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n\n                ctx.strokeStyle = \"rgba(0,0,0,0.2)\";\n                plotPoints(series.datapoints, radius, null, w/2, true,\n                           series.xaxis, series.yaxis, symbol);\n            }\n\n            ctx.lineWidth = lw;\n            ctx.strokeStyle = series.color;\n            plotPoints(series.datapoints, radius,\n                       getFillStyle(series.points, series.color), 0, false,\n                       series.xaxis, series.yaxis, symbol);\n            ctx.restore();\n        }\n\n        function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {\n            var left, right, bottom, top,\n                drawLeft, drawRight, drawTop, drawBottom,\n                tmp;\n\n            // in horizontal mode, we start the bar from the left\n            // instead of from the bottom so it appears to be\n            // horizontal rather than vertical\n            if (horizontal) {\n                drawBottom = drawRight = drawTop = true;\n                drawLeft = false;\n                left = b;\n                right = x;\n                top = y + barLeft;\n                bottom = y + barRight;\n\n                // account for negative bars\n                if (right < left) {\n                    tmp = right;\n                    right = left;\n                    left = tmp;\n                    drawLeft = true;\n                    drawRight = false;\n                }\n            }\n            else {\n                drawLeft = drawRight = drawTop = true;\n                drawBottom = false;\n                left = x + barLeft;\n                right = x + barRight;\n                bottom = b;\n                top = y;\n\n                // account for negative bars\n                if (top < bottom) {\n                    tmp = top;\n                    top = bottom;\n                    bottom = tmp;\n                    drawBottom = true;\n                    drawTop = false;\n                }\n            }\n\n            // clip\n            if (right < axisx.min || left > axisx.max ||\n                top < axisy.min || bottom > axisy.max)\n                return;\n\n            if (left < axisx.min) {\n                left = axisx.min;\n                drawLeft = false;\n            }\n\n            if (right > axisx.max) {\n                right = axisx.max;\n                drawRight = false;\n            }\n\n            if (bottom < axisy.min) {\n                bottom = axisy.min;\n                drawBottom = false;\n            }\n\n            if (top > axisy.max) {\n                top = axisy.max;\n                drawTop = false;\n            }\n\n            left = axisx.p2c(left);\n            bottom = axisy.p2c(bottom);\n            right = axisx.p2c(right);\n            top = axisy.p2c(top);\n\n            // fill the bar\n            if (fillStyleCallback) {\n                c.fillStyle = fillStyleCallback(bottom, top);\n                c.fillRect(left, top, right - left, bottom - top)\n            }\n\n            // draw outline\n            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {\n                c.beginPath();\n\n                // FIXME: inline moveTo is buggy with excanvas\n                c.moveTo(left, bottom);\n                if (drawLeft)\n                    c.lineTo(left, top);\n                else\n                    c.moveTo(left, top);\n                if (drawTop)\n                    c.lineTo(right, top);\n                else\n                    c.moveTo(right, top);\n                if (drawRight)\n                    c.lineTo(right, bottom);\n                else\n                    c.moveTo(right, bottom);\n                if (drawBottom)\n                    c.lineTo(left, bottom);\n                else\n                    c.moveTo(left, bottom);\n                c.stroke();\n            }\n        }\n\n        function drawSeriesBars(series) {\n            function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) {\n                var points = datapoints.points, ps = datapoints.pointsize;\n\n                for (var i = 0; i < points.length; i += ps) {\n                    if (points[i] == null)\n                        continue;\n                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);\n                }\n            }\n\n            ctx.save();\n            ctx.translate(plotOffset.left, plotOffset.top);\n\n            // FIXME: figure out a way to add shadows (for instance along the right edge)\n            ctx.lineWidth = series.bars.lineWidth;\n            ctx.strokeStyle = series.color;\n\n            var barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;\n            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis);\n            ctx.restore();\n        }\n\n        function getFillStyle(filloptions, seriesColor, bottom, top) {\n            var fill = filloptions.fill;\n            if (!fill)\n                return null;\n\n            if (filloptions.fillColor)\n                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);\n\n            var c = $.color.parse(seriesColor);\n            c.a = typeof fill == \"number\" ? fill : 0.4;\n            c.normalize();\n            return c.toString();\n        }\n\n        function insertLegend() {\n\n            if (options.legend.container != null) {\n                $(options.legend.container).html(\"\");\n            } else {\n                placeholder.find(\".legend\").remove();\n            }\n\n            if (!options.legend.show) {\n                return;\n            }\n\n            var fragments = [], entries = [], rowStarted = false,\n                lf = options.legend.labelFormatter, s, label;\n\n            // Build a list of legend entries, with each having a label and a color\n\n            for (var i = 0; i < series.length; ++i) {\n                s = series[i];\n                if (s.label) {\n                    label = lf ? lf(s.label, s) : s.label;\n                    if (label) {\n                        entries.push({\n                            label: label,\n                            color: s.color\n                        });\n                    }\n                }\n            }\n\n            // Sort the legend using either the default or a custom comparator\n\n            if (options.legend.sorted) {\n                if ($.isFunction(options.legend.sorted)) {\n                    entries.sort(options.legend.sorted);\n                } else if (options.legend.sorted == \"reverse\") {\n                \tentries.reverse();\n                } else {\n                    var ascending = options.legend.sorted != \"descending\";\n                    entries.sort(function(a, b) {\n                        return a.label == b.label ? 0 : (\n                            (a.label < b.label) != ascending ? 1 : -1   // Logical XOR\n                        );\n                    });\n                }\n            }\n\n            // Generate markup for the list of entries, in their final order\n\n            for (var i = 0; i < entries.length; ++i) {\n\n                var entry = entries[i];\n\n                if (i % options.legend.noColumns == 0) {\n                    if (rowStarted)\n                        fragments.push('</tr>');\n                    fragments.push('<tr>');\n                    rowStarted = true;\n                }\n\n                fragments.push(\n                    '<td class=\"legendColorBox\"><div style=\"border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px\"><div style=\"width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden\"></div></div></td>' +\n                    '<td class=\"legendLabel\">' + entry.label + '</td>'\n                );\n            }\n\n            if (rowStarted)\n                fragments.push('</tr>');\n\n            if (fragments.length == 0)\n                return;\n\n            var table = '<table style=\"font-size:smaller;color:' + options.grid.color + '\">' + fragments.join(\"\") + '</table>';\n            if (options.legend.container != null)\n                $(options.legend.container).html(table);\n            else {\n                var pos = \"\",\n                    p = options.legend.position,\n                    m = options.legend.margin;\n                if (m[0] == null)\n                    m = [m, m];\n                if (p.charAt(0) == \"n\")\n                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';\n                else if (p.charAt(0) == \"s\")\n                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';\n                if (p.charAt(1) == \"e\")\n                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';\n                else if (p.charAt(1) == \"w\")\n                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';\n                var legend = $('<div class=\"legend\">' + table.replace('style=\"', 'style=\"position:absolute;' + pos +';') + '</div>').appendTo(placeholder);\n                if (options.legend.backgroundOpacity != 0.0) {\n                    // put in the transparent background\n                    // separately to avoid blended labels and\n                    // label boxes\n                    var c = options.legend.backgroundColor;\n                    if (c == null) {\n                        c = options.grid.backgroundColor;\n                        if (c && typeof c == \"string\")\n                            c = $.color.parse(c);\n                        else\n                            c = $.color.extract(legend, 'background-color');\n                        c.a = 1;\n                        c = c.toString();\n                    }\n                    var div = legend.children();\n                    $('<div style=\"position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';\"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);\n                }\n            }\n        }\n\n\n        // interactive features\n\n        var highlights = [],\n            redrawTimeout = null;\n\n        // returns the data item the mouse is over, or null if none is found\n        function findNearbyItem(mouseX, mouseY, seriesFilter) {\n            var maxDistance = options.grid.mouseActiveRadius,\n                smallestDistance = maxDistance * maxDistance + 1,\n                item = null, foundPoint = false, i, j, ps;\n\n            for (i = series.length - 1; i >= 0; --i) {\n                if (!seriesFilter(series[i]))\n                    continue;\n\n                var s = series[i],\n                    axisx = s.xaxis,\n                    axisy = s.yaxis,\n                    points = s.datapoints.points,\n                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster\n                    my = axisy.c2p(mouseY),\n                    maxx = maxDistance / axisx.scale,\n                    maxy = maxDistance / axisy.scale;\n\n                ps = s.datapoints.pointsize;\n                // with inverse transforms, we can't use the maxx/maxy\n                // optimization, sadly\n                if (axisx.options.inverseTransform)\n                    maxx = Number.MAX_VALUE;\n                if (axisy.options.inverseTransform)\n                    maxy = Number.MAX_VALUE;\n\n                if (s.lines.show || s.points.show) {\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1];\n                        if (x == null)\n                            continue;\n\n                        // For points and lines, the cursor must be within a\n                        // certain distance to the data point\n                        if (x - mx > maxx || x - mx < -maxx ||\n                            y - my > maxy || y - my < -maxy)\n                            continue;\n\n                        // We have to calculate distances in pixels, not in\n                        // data units, because the scales of the axes may be different\n                        var dx = Math.abs(axisx.p2c(x) - mouseX),\n                            dy = Math.abs(axisy.p2c(y) - mouseY),\n                            dist = dx * dx + dy * dy; // we save the sqrt\n\n                        // use <= to ensure last point takes precedence\n                        // (last generally means on top of)\n                        if (dist < smallestDistance) {\n                            smallestDistance = dist;\n                            item = [i, j / ps];\n                        }\n                    }\n                }\n\n                if (s.bars.show && !item) { // no other point can be nearby\n\n                    var barLeft, barRight;\n\n                    switch (s.bars.align) {\n                        case \"left\":\n                            barLeft = 0;\n                            break;\n                        case \"right\":\n                            barLeft = -s.bars.barWidth;\n                            break;\n                        default:\n                            barLeft = -s.bars.barWidth / 2;\n                    }\n\n                    barRight = barLeft + s.bars.barWidth;\n\n                    for (j = 0; j < points.length; j += ps) {\n                        var x = points[j], y = points[j + 1], b = points[j + 2];\n                        if (x == null)\n                            continue;\n\n                        // for a bar graph, the cursor must be inside the bar\n                        if (series[i].bars.horizontal ?\n                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) &&\n                             my >= y + barLeft && my <= y + barRight) :\n                            (mx >= x + barLeft && mx <= x + barRight &&\n                             my >= Math.min(b, y) && my <= Math.max(b, y)))\n                                item = [i, j / ps];\n                    }\n                }\n            }\n\n            if (item) {\n                i = item[0];\n                j = item[1];\n                ps = series[i].datapoints.pointsize;\n\n                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),\n                         dataIndex: j,\n                         series: series[i],\n                         seriesIndex: i };\n            }\n\n            return null;\n        }\n\n        function onMouseMove(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return s[\"hoverable\"] != false; });\n        }\n\n        function onMouseLeave(e) {\n            if (options.grid.hoverable)\n                triggerClickHoverEvent(\"plothover\", e,\n                                       function (s) { return false; });\n        }\n\n        function onClick(e) {\n            triggerClickHoverEvent(\"plotclick\", e,\n                                   function (s) { return s[\"clickable\"] != false; });\n        }\n\n        // trigger click or hover event (they send the same parameters\n        // so we share their code)\n        function triggerClickHoverEvent(eventname, event, seriesFilter) {\n            var offset = eventHolder.offset(),\n                canvasX = event.pageX - offset.left - plotOffset.left,\n                canvasY = event.pageY - offset.top - plotOffset.top,\n            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });\n\n            pos.pageX = event.pageX;\n            pos.pageY = event.pageY;\n\n            var item = findNearbyItem(canvasX, canvasY, seriesFilter);\n\n            if (item) {\n                // fill in mouse pos for any listeners out there\n                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10);\n                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10);\n            }\n\n            if (options.grid.autoHighlight) {\n                // clear auto-highlights\n                for (var i = 0; i < highlights.length; ++i) {\n                    var h = highlights[i];\n                    if (h.auto == eventname &&\n                        !(item && h.series == item.series &&\n                          h.point[0] == item.datapoint[0] &&\n                          h.point[1] == item.datapoint[1]))\n                        unhighlight(h.series, h.point);\n                }\n\n                if (item)\n                    highlight(item.series, item.datapoint, eventname);\n            }\n\n            placeholder.trigger(eventname, [ pos, item ]);\n        }\n\n        function triggerRedrawOverlay() {\n            var t = options.interaction.redrawOverlayInterval;\n            if (t == -1) {      // skip event queue\n                drawOverlay();\n                return;\n            }\n\n            if (!redrawTimeout)\n                redrawTimeout = setTimeout(drawOverlay, t);\n        }\n\n        function drawOverlay() {\n            redrawTimeout = null;\n\n            // draw highlights\n            octx.save();\n            overlay.clear();\n            octx.translate(plotOffset.left, plotOffset.top);\n\n            var i, hi;\n            for (i = 0; i < highlights.length; ++i) {\n                hi = highlights[i];\n\n                if (hi.series.bars.show)\n                    drawBarHighlight(hi.series, hi.point);\n                else\n                    drawPointHighlight(hi.series, hi.point);\n            }\n            octx.restore();\n\n            executeHooks(hooks.drawOverlay, [octx]);\n        }\n\n        function highlight(s, point, auto) {\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i == -1) {\n                highlights.push({ series: s, point: point, auto: auto });\n\n                triggerRedrawOverlay();\n            }\n            else if (!auto)\n                highlights[i].auto = false;\n        }\n\n        function unhighlight(s, point) {\n            if (s == null && point == null) {\n                highlights = [];\n                triggerRedrawOverlay();\n                return;\n            }\n\n            if (typeof s == \"number\")\n                s = series[s];\n\n            if (typeof point == \"number\") {\n                var ps = s.datapoints.pointsize;\n                point = s.datapoints.points.slice(ps * point, ps * (point + 1));\n            }\n\n            var i = indexOfHighlight(s, point);\n            if (i != -1) {\n                highlights.splice(i, 1);\n\n                triggerRedrawOverlay();\n            }\n        }\n\n        function indexOfHighlight(s, p) {\n            for (var i = 0; i < highlights.length; ++i) {\n                var h = highlights[i];\n                if (h.series == s && h.point[0] == p[0]\n                    && h.point[1] == p[1])\n                    return i;\n            }\n            return -1;\n        }\n\n        function drawPointHighlight(series, point) {\n            var x = point[0], y = point[1],\n                axisx = series.xaxis, axisy = series.yaxis,\n                highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString();\n\n            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)\n                return;\n\n            var pointRadius = series.points.radius + series.points.lineWidth / 2;\n            octx.lineWidth = pointRadius;\n            octx.strokeStyle = highlightColor;\n            var radius = 1.5 * pointRadius;\n            x = axisx.p2c(x);\n            y = axisy.p2c(y);\n\n            octx.beginPath();\n            if (series.points.symbol == \"circle\")\n                octx.arc(x, y, radius, 0, 2 * Math.PI, false);\n            else\n                series.points.symbol(octx, x, y, radius, false);\n            octx.closePath();\n            octx.stroke();\n        }\n\n        function drawBarHighlight(series, point) {\n            var highlightColor = (typeof series.highlightColor === \"string\") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(),\n                fillStyle = highlightColor,\n                barLeft;\n\n            switch (series.bars.align) {\n                case \"left\":\n                    barLeft = 0;\n                    break;\n                case \"right\":\n                    barLeft = -series.bars.barWidth;\n                    break;\n                default:\n                    barLeft = -series.bars.barWidth / 2;\n            }\n\n            octx.lineWidth = series.bars.lineWidth;\n            octx.strokeStyle = highlightColor;\n\n            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,\n                    function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);\n        }\n\n        function getColorOrGradient(spec, bottom, top, defaultColor) {\n            if (typeof spec == \"string\")\n                return spec;\n            else {\n                // assume this is a gradient spec; IE currently only\n                // supports a simple vertical gradient properly, so that's\n                // what we support too\n                var gradient = ctx.createLinearGradient(0, top, 0, bottom);\n\n                for (var i = 0, l = spec.colors.length; i < l; ++i) {\n                    var c = spec.colors[i];\n                    if (typeof c != \"string\") {\n                        var co = $.color.parse(defaultColor);\n                        if (c.brightness != null)\n                            co = co.scale('rgb', c.brightness);\n                        if (c.opacity != null)\n                            co.a *= c.opacity;\n                        c = co.toString();\n                    }\n                    gradient.addColorStop(i / (l - 1), c);\n                }\n\n                return gradient;\n            }\n        }\n    }\n\n    // Add the plot function to the top level of the jQuery object\n\n    $.plot = function(placeholder, data, options) {\n        //var t0 = new Date();\n        var plot = new Plot($(placeholder), data, options, $.plot.plugins);\n        //(window.console ? console.log : alert)(\"time used (msecs): \" + ((new Date()).getTime() - t0.getTime()));\n        return plot;\n    };\n\n    $.plot.version = \"0.8.3\";\n\n    $.plot.plugins = [];\n\n    // Also add the plot function as a chainable property\n\n    $.fn.plot = function(data, options) {\n        return this.each(function() {\n            $.plot(this, data, options);\n        });\n    };\n\n    // round to nearby lower multiple of base\n    function floorInBase(n, base) {\n        return base * Math.floor(n / base);\n    }\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot.tooltip/js/jquery.flot.tooltip.js",
    "content": "/*\n * jquery.flot.tooltip\n * \n * description: easy-to-use tooltips for Flot charts\n * version: 0.8.5\n * authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround\n * website: https://github.com/krzysu/flot.tooltip\n * \n * build on 2015-05-11\n * released under MIT License, 2012\n*/ \n(function ($) {\n    // plugin options, default values\n    var defaultOptions = {\n        tooltip: {\n            show: false,\n            cssClass: \"flotTip\",\n            content: \"%s | X: %x | Y: %y\",\n            // allowed templates are:\n            // %s -> series label,\n            // %c -> series color,\n            // %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),\n            // %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),\n            // %x -> X value,\n            // %y -> Y value,\n            // %x.2 -> precision of X value,\n            // %p -> percent\n            xDateFormat: null,\n            yDateFormat: null,\n            monthNames: null,\n            dayNames: null,\n            shifts: {\n                x: 10,\n                y: 20\n            },\n            defaultTheme: true,\n            lines: false,\n\n            // callbacks\n            onHover: function (flotItem, $tooltipEl) {},\n\n            $compat: false\n        }\n    };\n\n    // dummy default options object for legacy code (<0.8.5) - is deleted later\n    defaultOptions.tooltipOpts = defaultOptions.tooltip;\n\n    // object\n    var FlotTooltip = function (plot) {\n        // variables\n        this.tipPosition = {x: 0, y: 0};\n\n        this.init(plot);\n    };\n\n    // main plugin function\n    FlotTooltip.prototype.init = function (plot) {\n        var that = this;\n\n        // detect other flot plugins\n        var plotPluginsLength = $.plot.plugins.length;\n        this.plotPlugins = [];\n\n        if (plotPluginsLength) {\n            for (var p = 0; p < plotPluginsLength; p++) {\n                this.plotPlugins.push($.plot.plugins[p].name);\n            }\n        }\n\n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n\n            // get plot options\n            that.plotOptions = plot.getOptions();\n\n            // for legacy (<0.8.5) implementations\n            if (typeof(that.plotOptions.tooltip) === 'boolean') {\n                that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip;\n                that.plotOptions.tooltip = that.plotOptions.tooltipOpts;\n                delete that.plotOptions.tooltipOpts;\n            }\n\n            // if not enabled return\n            if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return;\n\n            // shortcut to access tooltip options\n            that.tooltipOptions = that.plotOptions.tooltip;\n\n            if (that.tooltipOptions.$compat) {\n                that.wfunc = 'width';\n                that.hfunc = 'height';\n            } else {\n                that.wfunc = 'innerWidth';\n                that.hfunc = 'innerHeight';\n            }\n\n            // create tooltip DOM element\n            var $tip = that.getDomElement();\n\n            // bind event\n            $( plot.getPlaceholder() ).bind(\"plothover\", plothover);\n\n            $(eventHolder).bind('mousemove', mouseMove);\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder){\n            $(plot.getPlaceholder()).unbind(\"plothover\", plothover);\n            $(eventHolder).unbind(\"mousemove\", mouseMove);\n        });\n\n        function mouseMove(e){\n            var pos = {};\n            pos.x = e.pageX;\n            pos.y = e.pageY;\n            plot.setTooltipPosition(pos);\n        }\n\n        function plothover(event, pos, item) {\n            // Simple distance formula.\n            var lineDistance = function (p1x, p1y, p2x, p2y) {\n                return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));\n            };\n\n            // Here is some voodoo magic for determining the distance to a line form a given point {x, y}.\n            var dotLineLength = function (x, y, x0, y0, x1, y1, o) {\n                if (o && !(o =\n                    function (x, y, x0, y0, x1, y1) {\n                        if (typeof x0 !== 'undefined') return { x: x0, y: y };\n                        else if (typeof y0 !== 'undefined') return { x: x, y: y0 };\n\n                        var left,\n                            tg = -1 / ((y1 - y0) / (x1 - x0));\n\n                        return {\n                            x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1),\n                            y: tg * left - tg * x + y\n                        };\n                    } (x, y, x0, y0, x1, y1),\n                    o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1))\n                ) {\n                    var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1);\n                    return l1 > l2 ? l2 : l1;\n                } else {\n                    var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1;\n                    return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b);\n                }\n            };\n\n            if (item) {\n                plot.showTooltip(item, pos);\n            } else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) {\n                var maxDistance = that.plotOptions.grid.mouseActiveRadius;\n\n                var closestTrace = {\n                    distance: maxDistance + 1\n                };\n\n                $.each(plot.getData(), function (i, series) {\n                    var xBeforeIndex = 0,\n                        xAfterIndex = -1;\n\n                    // Our search here assumes our data is sorted via the x-axis.\n                    // TODO: Improve efficiency somehow - search smaller sets of data.\n                    for (var j = 1; j < series.data.length; j++) {\n                        if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) {\n                            xBeforeIndex = j - 1;\n                            xAfterIndex = j;\n                        }\n                    }\n\n                    if (xAfterIndex === -1) {\n                        plot.hideTooltip();\n                        return;\n                    }\n\n                    var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] },\n                        pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] };\n\n                    var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x),\n                        series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false);\n\n                    if (distToLine < closestTrace.distance) {\n\n                        var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) <\n                            lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex;\n\n                        var pointSize = series.datapoints.pointsize;\n\n                        // Calculate the point on the line vertically closest to our cursor.\n                        var pointOnLine = [\n                            pos.x,\n                            pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x)))\n                        ];\n\n                        var item = {\n                            datapoint: pointOnLine,\n                            dataIndex: closestIndex,\n                            series: series,\n                            seriesIndex: i\n                        };\n\n                        closestTrace = {\n                            distance: distToLine,\n                            item: item\n                        };\n                    }\n                });\n\n                if (closestTrace.distance < maxDistance + 1)\n                    plot.showTooltip(closestTrace.item, pos);\n                else\n                    plot.hideTooltip();\n            } else {\n                plot.hideTooltip();\n            }\n        }\n\n        // Quick little function for setting the tooltip position.\n        plot.setTooltipPosition = function (pos) {\n            var $tip = that.getDomElement();\n\n            var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x;\n            var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y;\n            if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) {\n                pos.x -= totalTipWidth;\n            }\n            if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) {\n                pos.y -= totalTipHeight;\n            }\n            that.tipPosition.x = pos.x;\n            that.tipPosition.y = pos.y;\n        };\n\n        // Quick little function for showing the tooltip.\n        plot.showTooltip = function (target, position) {\n            var $tip = that.getDomElement();\n\n            // convert tooltip content template to real tipText\n            var tipText = that.stringFormat(that.tooltipOptions.content, target);\n            if (tipText === '')\n            \treturn;\n\n            $tip.html(tipText);\n            plot.setTooltipPosition({ x: position.pageX, y: position.pageY });\n            $tip.css({\n                left: that.tipPosition.x + that.tooltipOptions.shifts.x,\n                top: that.tipPosition.y + that.tooltipOptions.shifts.y\n            }).show();\n\n            // run callback\n            if (typeof that.tooltipOptions.onHover === 'function') {\n                that.tooltipOptions.onHover(target, $tip);\n            }\n        };\n\n        // Quick little function for hiding the tooltip.\n        plot.hideTooltip = function () {\n            that.getDomElement().hide().html('');\n        };\n    };\n\n    /**\n     * get or create tooltip DOM element\n     * @return jQuery object\n     */\n    FlotTooltip.prototype.getDomElement = function () {\n        var $tip = $('.' + this.tooltipOptions.cssClass);\n\n        if( $tip.length === 0 ){\n            $tip = $('<div />').addClass(this.tooltipOptions.cssClass);\n            $tip.appendTo('body').hide().css({position: 'absolute'});\n\n            if(this.tooltipOptions.defaultTheme) {\n                $tip.css({\n                    'background': '#fff',\n                    'z-index': '1040',\n                    'padding': '0.4em 0.6em',\n                    'border-radius': '0.5em',\n                    'font-size': '0.8em',\n                    'border': '1px solid #111',\n                    'display': 'none',\n                    'white-space': 'nowrap'\n                });\n            }\n        }\n\n        return $tip;\n    };\n\n    /**\n     * core function, create tooltip content\n     * @param  {string} content - template with tooltip content\n     * @param  {object} item - Flot item\n     * @return {string} real tooltip content for current item\n     */\n    FlotTooltip.prototype.stringFormat = function (content, item) {\n\n        var percentPattern = /%p\\.{0,1}(\\d{0,})/;\n        var seriesPattern = /%s/;\n        var colorPattern = /%c/;\n        var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded\n        var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded\n        var xPattern = /%x\\.{0,1}(\\d{0,})/;\n        var yPattern = /%y\\.{0,1}(\\d{0,})/;\n        var xPatternWithoutPrecision = \"%x\";\n        var yPatternWithoutPrecision = \"%y\";\n        var customTextPattern = \"%ct\";\n\n        var x, y, customText, p;\n\n        // for threshold plugin we need to read data from different place\n        if (typeof item.series.threshold !== \"undefined\") {\n            x = item.datapoint[0];\n            y = item.datapoint[1];\n            customText = item.datapoint[2];\n        } else if (typeof item.series.lines !== \"undefined\" && item.series.lines.steps) {\n            x = item.series.datapoints.points[item.dataIndex * 2];\n            y = item.series.datapoints.points[item.dataIndex * 2 + 1];\n            // TODO: where to find custom text in this variant?\n            customText = \"\";\n        } else {\n            x = item.series.data[item.dataIndex][0];\n            y = item.series.data[item.dataIndex][1];\n            customText = item.series.data[item.dataIndex][2];\n        }\n\n        // I think this is only in case of threshold plugin\n        if (item.series.label === null && item.series.originSeries) {\n            item.series.label = item.series.originSeries.label;\n        }\n\n        // if it is a function callback get the content string\n        if (typeof(content) === 'function') {\n            content = content(item.series.label, x, y, item);\n        }\n\n        // the case where the passed content is equal to false\n        if (typeof(content) === 'boolean' && !content) {\n            return '';\n        }\n\n        // percent match for pie charts and stacked percent\n        if (typeof (item.series.percent) !== 'undefined') {\n            p = item.series.percent;\n        } else if (typeof (item.series.percents) !== 'undefined') {\n            p = item.series.percents[item.dataIndex];\n        }        \n        if (typeof p === 'number') {\n            content = this.adjustValPrecision(percentPattern, content, p);\n        }\n\n        // series match\n        if (typeof(item.series.label) !== 'undefined') {\n            content = content.replace(seriesPattern, item.series.label);\n        } else {\n            //remove %s if label is undefined\n            content = content.replace(seriesPattern, \"\");\n        }\n        \n        // color match\n        if (typeof(item.series.color) !== 'undefined') {\n            content = content.replace(colorPattern, item.series.color);\n        } else {\n            //remove %s if color is undefined\n            content = content.replace(colorPattern, \"\");\n        }\n\n        // x axis label match\n        if (this.hasAxisLabel('xaxis', item)) {\n            content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel);\n        } else {\n            //remove %lx if axis label is undefined or axislabels plugin not present\n            content = content.replace(xLabelPattern, \"\");\n        }\n\n        // y axis label match\n        if (this.hasAxisLabel('yaxis', item)) {\n            content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel);\n        } else {\n            //remove %ly if axis label is undefined or axislabels plugin not present\n            content = content.replace(yLabelPattern, \"\");\n        }\n\n        // time mode axes with custom dateFormat\n        if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) {\n            content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options));\n        }\n        if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) {\n            content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options));\n        }\n\n        // set precision if defined\n        if (typeof x === 'number') {\n            content = this.adjustValPrecision(xPattern, content, x);\n        }\n        if (typeof y === 'number') {\n            content = this.adjustValPrecision(yPattern, content, y);\n        }\n\n        // change x from number to given label, if given\n        if (typeof item.series.xaxis.ticks !== 'undefined') {\n\n            var ticks;\n            if (this.hasRotatedXAxisTicks(item)) {\n                // xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks\n                ticks = 'rotatedTicks';\n            } else {\n                ticks = 'ticks';\n            }\n\n            // see https://github.com/krzysu/flot.tooltip/issues/65\n            var tickIndex = item.dataIndex + item.seriesIndex;\n\n            for (var index in item.series.xaxis[ticks]) {\n                if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) {\n                    var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v;\n                    if (valueX === x) {\n                        content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label);\n                    }\n                }\n            }\n        }\n\n        // change y from number to given label, if given\n        if (typeof item.series.yaxis.ticks !== 'undefined') {\n            for (var index in item.series.yaxis.ticks) {\n                if (item.series.yaxis.ticks.hasOwnProperty(index)) {\n                    var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[index].label : item.series.yaxis.ticks[index].v;\n                    if (valueY === y) {\n                        content = content.replace(yPattern, item.series.yaxis.ticks[index].label);\n                    }\n                }\n            }\n        }\n\n        // if no value customization, use tickFormatter by default\n        if (typeof item.series.xaxis.tickFormatter !== 'undefined') {\n            //escape dollar\n            content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\\$/g, '$$'));\n        }\n        if (typeof item.series.yaxis.tickFormatter !== 'undefined') {\n            //escape dollar\n            content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\\$/g, '$$'));\n        }\n\n        if (customText)\n            content = content.replace(customTextPattern, customText);\n\n        return content;\n    };\n\n    // helpers just for readability\n    FlotTooltip.prototype.isTimeMode = function (axisName, item) {\n        return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time');\n    };\n\n    FlotTooltip.prototype.isXDateFormat = function (item) {\n        return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null);\n    };\n\n    FlotTooltip.prototype.isYDateFormat = function (item) {\n        return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null);\n    };\n\n    FlotTooltip.prototype.isCategoriesMode = function (axisName, item) {\n        return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories');\n    };\n\n    //\n    FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) {\n        var theDate = $.plot.dateGenerator(tmst, options);\n        return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames);\n    };\n\n    //\n    FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) {\n\n        var precision;\n        var matchResult = content.match(pattern);\n        if( matchResult !== null ) {\n            if(RegExp.$1 !== '') {\n                precision = RegExp.$1;\n                value = value.toFixed(precision);\n\n                // only replace content if precision exists, in other case use thickformater\n                content = content.replace(pattern, value);\n            }\n        }\n        return content;\n    };\n\n    // other plugins detection below\n\n    // check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given\n    FlotTooltip.prototype.hasAxisLabel = function (axisName, item) {\n        return ($.inArray(this.plotPlugins, 'axisLabels') !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0);\n    };\n\n    // check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used\n    FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) {\n        return ($.inArray(this.plotPlugins, 'tickRotor') !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined');\n    };\n\n    //\n    var init = function (plot) {\n      new FlotTooltip(plot);\n    };\n\n    // define Flot plugin\n    $.plot.plugins.push({\n        init: init,\n        options: defaultOptions,\n        name: 'tooltip',\n        version: '0.8.5'\n    });\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/flot.tooltip/js/jquery.flot.tooltip.source.js",
    "content": "(function ($) {\n    // plugin options, default values\n    var defaultOptions = {\n        tooltip: {\n            show: false,\n            cssClass: \"flotTip\",\n            content: \"%s | X: %x | Y: %y\",\n            // allowed templates are:\n            // %s -> series label,\n            // %c -> series color,\n            // %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),\n            // %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),\n            // %x -> X value,\n            // %y -> Y value,\n            // %x.2 -> precision of X value,\n            // %p -> percent\n            xDateFormat: null,\n            yDateFormat: null,\n            monthNames: null,\n            dayNames: null,\n            shifts: {\n                x: 10,\n                y: 20\n            },\n            defaultTheme: true,\n            lines: false,\n\n            // callbacks\n            onHover: function (flotItem, $tooltipEl) {},\n\n            $compat: false\n        }\n    };\n\n    // dummy default options object for legacy code (<0.8.5) - is deleted later\n    defaultOptions.tooltipOpts = defaultOptions.tooltip;\n\n    // object\n    var FlotTooltip = function (plot) {\n        // variables\n        this.tipPosition = {x: 0, y: 0};\n\n        this.init(plot);\n    };\n\n    // main plugin function\n    FlotTooltip.prototype.init = function (plot) {\n        var that = this;\n\n        // detect other flot plugins\n        var plotPluginsLength = $.plot.plugins.length;\n        this.plotPlugins = [];\n\n        if (plotPluginsLength) {\n            for (var p = 0; p < plotPluginsLength; p++) {\n                this.plotPlugins.push($.plot.plugins[p].name);\n            }\n        }\n\n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n\n            // get plot options\n            that.plotOptions = plot.getOptions();\n\n            // for legacy (<0.8.5) implementations\n            if (typeof(that.plotOptions.tooltip) === 'boolean') {\n                that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip;\n                that.plotOptions.tooltip = that.plotOptions.tooltipOpts;\n                delete that.plotOptions.tooltipOpts;\n            }\n\n            // if not enabled return\n            if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return;\n\n            // shortcut to access tooltip options\n            that.tooltipOptions = that.plotOptions.tooltip;\n\n            if (that.tooltipOptions.$compat) {\n                that.wfunc = 'width';\n                that.hfunc = 'height';\n            } else {\n                that.wfunc = 'innerWidth';\n                that.hfunc = 'innerHeight';\n            }\n\n            // create tooltip DOM element\n            var $tip = that.getDomElement();\n\n            // bind event\n            $( plot.getPlaceholder() ).bind(\"plothover\", plothover);\n\n            $(eventHolder).bind('mousemove', mouseMove);\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder){\n            $(plot.getPlaceholder()).unbind(\"plothover\", plothover);\n            $(eventHolder).unbind(\"mousemove\", mouseMove);\n        });\n\n        function mouseMove(e){\n            var pos = {};\n            pos.x = e.pageX;\n            pos.y = e.pageY;\n            plot.setTooltipPosition(pos);\n        }\n\n        function plothover(event, pos, item) {\n            // Simple distance formula.\n            var lineDistance = function (p1x, p1y, p2x, p2y) {\n                return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));\n            };\n\n            // Here is some voodoo magic for determining the distance to a line form a given point {x, y}.\n            var dotLineLength = function (x, y, x0, y0, x1, y1, o) {\n                if (o && !(o =\n                    function (x, y, x0, y0, x1, y1) {\n                        if (typeof x0 !== 'undefined') return { x: x0, y: y };\n                        else if (typeof y0 !== 'undefined') return { x: x, y: y0 };\n\n                        var left,\n                            tg = -1 / ((y1 - y0) / (x1 - x0));\n\n                        return {\n                            x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1),\n                            y: tg * left - tg * x + y\n                        };\n                    } (x, y, x0, y0, x1, y1),\n                    o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1))\n                ) {\n                    var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1);\n                    return l1 > l2 ? l2 : l1;\n                } else {\n                    var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1;\n                    return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b);\n                }\n            };\n\n            if (item) {\n                plot.showTooltip(item, pos);\n            } else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) {\n                var maxDistance = that.plotOptions.grid.mouseActiveRadius;\n\n                var closestTrace = {\n                    distance: maxDistance + 1\n                };\n\n                $.each(plot.getData(), function (i, series) {\n                    var xBeforeIndex = 0,\n                        xAfterIndex = -1;\n\n                    // Our search here assumes our data is sorted via the x-axis.\n                    // TODO: Improve efficiency somehow - search smaller sets of data.\n                    for (var j = 1; j < series.data.length; j++) {\n                        if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) {\n                            xBeforeIndex = j - 1;\n                            xAfterIndex = j;\n                        }\n                    }\n\n                    if (xAfterIndex === -1) {\n                        plot.hideTooltip();\n                        return;\n                    }\n\n                    var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] },\n                        pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] };\n\n                    var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x),\n                        series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false);\n\n                    if (distToLine < closestTrace.distance) {\n\n                        var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) <\n                            lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex;\n\n                        var pointSize = series.datapoints.pointsize;\n\n                        // Calculate the point on the line vertically closest to our cursor.\n                        var pointOnLine = [\n                            pos.x,\n                            pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x)))\n                        ];\n\n                        var item = {\n                            datapoint: pointOnLine,\n                            dataIndex: closestIndex,\n                            series: series,\n                            seriesIndex: i\n                        };\n\n                        closestTrace = {\n                            distance: distToLine,\n                            item: item\n                        };\n                    }\n                });\n\n                if (closestTrace.distance < maxDistance + 1)\n                    plot.showTooltip(closestTrace.item, pos);\n                else\n                    plot.hideTooltip();\n            } else {\n                plot.hideTooltip();\n            }\n        }\n\n        // Quick little function for setting the tooltip position.\n        plot.setTooltipPosition = function (pos) {\n            var $tip = that.getDomElement();\n\n            var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x;\n            var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y;\n            if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) {\n                pos.x -= totalTipWidth;\n            }\n            if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) {\n                pos.y -= totalTipHeight;\n            }\n            that.tipPosition.x = pos.x;\n            that.tipPosition.y = pos.y;\n        };\n\n        // Quick little function for showing the tooltip.\n        plot.showTooltip = function (target, position) {\n            var $tip = that.getDomElement();\n\n            // convert tooltip content template to real tipText\n            var tipText = that.stringFormat(that.tooltipOptions.content, target);\n            if (tipText === '')\n            \treturn;\n\n            $tip.html(tipText);\n            plot.setTooltipPosition({ x: position.pageX, y: position.pageY });\n            $tip.css({\n                left: that.tipPosition.x + that.tooltipOptions.shifts.x,\n                top: that.tipPosition.y + that.tooltipOptions.shifts.y\n            }).show();\n\n            // run callback\n            if (typeof that.tooltipOptions.onHover === 'function') {\n                that.tooltipOptions.onHover(target, $tip);\n            }\n        };\n\n        // Quick little function for hiding the tooltip.\n        plot.hideTooltip = function () {\n            that.getDomElement().hide().html('');\n        };\n    };\n\n    /**\n     * get or create tooltip DOM element\n     * @return jQuery object\n     */\n    FlotTooltip.prototype.getDomElement = function () {\n        var $tip = $('.' + this.tooltipOptions.cssClass);\n\n        if( $tip.length === 0 ){\n            $tip = $('<div />').addClass(this.tooltipOptions.cssClass);\n            $tip.appendTo('body').hide().css({position: 'absolute'});\n\n            if(this.tooltipOptions.defaultTheme) {\n                $tip.css({\n                    'background': '#fff',\n                    'z-index': '1040',\n                    'padding': '0.4em 0.6em',\n                    'border-radius': '0.5em',\n                    'font-size': '0.8em',\n                    'border': '1px solid #111',\n                    'display': 'none',\n                    'white-space': 'nowrap'\n                });\n            }\n        }\n\n        return $tip;\n    };\n\n    /**\n     * core function, create tooltip content\n     * @param  {string} content - template with tooltip content\n     * @param  {object} item - Flot item\n     * @return {string} real tooltip content for current item\n     */\n    FlotTooltip.prototype.stringFormat = function (content, item) {\n\n        var percentPattern = /%p\\.{0,1}(\\d{0,})/;\n        var seriesPattern = /%s/;\n        var colorPattern = /%c/;\n        var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded\n        var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded\n        var xPattern = /%x\\.{0,1}(\\d{0,})/;\n        var yPattern = /%y\\.{0,1}(\\d{0,})/;\n        var xPatternWithoutPrecision = \"%x\";\n        var yPatternWithoutPrecision = \"%y\";\n        var customTextPattern = \"%ct\";\n\n        var x, y, customText, p;\n\n        // for threshold plugin we need to read data from different place\n        if (typeof item.series.threshold !== \"undefined\") {\n            x = item.datapoint[0];\n            y = item.datapoint[1];\n            customText = item.datapoint[2];\n        } else if (typeof item.series.lines !== \"undefined\" && item.series.lines.steps) {\n            x = item.series.datapoints.points[item.dataIndex * 2];\n            y = item.series.datapoints.points[item.dataIndex * 2 + 1];\n            // TODO: where to find custom text in this variant?\n            customText = \"\";\n        } else {\n            x = item.series.data[item.dataIndex][0];\n            y = item.series.data[item.dataIndex][1];\n            customText = item.series.data[item.dataIndex][2];\n        }\n\n        // I think this is only in case of threshold plugin\n        if (item.series.label === null && item.series.originSeries) {\n            item.series.label = item.series.originSeries.label;\n        }\n\n        // if it is a function callback get the content string\n        if (typeof(content) === 'function') {\n            content = content(item.series.label, x, y, item);\n        }\n\n        // the case where the passed content is equal to false\n        if (typeof(content) === 'boolean' && !content) {\n            return '';\n        }\n\n        // percent match for pie charts and stacked percent\n        if (typeof (item.series.percent) !== 'undefined') {\n            p = item.series.percent;\n        } else if (typeof (item.series.percents) !== 'undefined') {\n            p = item.series.percents[item.dataIndex];\n        }        \n        if (typeof p === 'number') {\n            content = this.adjustValPrecision(percentPattern, content, p);\n        }\n\n        // series match\n        if (typeof(item.series.label) !== 'undefined') {\n            content = content.replace(seriesPattern, item.series.label);\n        } else {\n            //remove %s if label is undefined\n            content = content.replace(seriesPattern, \"\");\n        }\n        \n        // color match\n        if (typeof(item.series.color) !== 'undefined') {\n            content = content.replace(colorPattern, item.series.color);\n        } else {\n            //remove %s if color is undefined\n            content = content.replace(colorPattern, \"\");\n        }\n\n        // x axis label match\n        if (this.hasAxisLabel('xaxis', item)) {\n            content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel);\n        } else {\n            //remove %lx if axis label is undefined or axislabels plugin not present\n            content = content.replace(xLabelPattern, \"\");\n        }\n\n        // y axis label match\n        if (this.hasAxisLabel('yaxis', item)) {\n            content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel);\n        } else {\n            //remove %ly if axis label is undefined or axislabels plugin not present\n            content = content.replace(yLabelPattern, \"\");\n        }\n\n        // time mode axes with custom dateFormat\n        if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) {\n            content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options));\n        }\n        if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) {\n            content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options));\n        }\n\n        // set precision if defined\n        if (typeof x === 'number') {\n            content = this.adjustValPrecision(xPattern, content, x);\n        }\n        if (typeof y === 'number') {\n            content = this.adjustValPrecision(yPattern, content, y);\n        }\n\n        // change x from number to given label, if given\n        if (typeof item.series.xaxis.ticks !== 'undefined') {\n\n            var ticks;\n            if (this.hasRotatedXAxisTicks(item)) {\n                // xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks\n                ticks = 'rotatedTicks';\n            } else {\n                ticks = 'ticks';\n            }\n\n            // see https://github.com/krzysu/flot.tooltip/issues/65\n            var tickIndex = item.dataIndex + item.seriesIndex;\n\n            for (var index in item.series.xaxis[ticks]) {\n                if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) {\n                    var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v;\n                    if (valueX === x) {\n                        content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label);\n                    }\n                }\n            }\n        }\n\n        // change y from number to given label, if given\n        if (typeof item.series.yaxis.ticks !== 'undefined') {\n            for (var index in item.series.yaxis.ticks) {\n                if (item.series.yaxis.ticks.hasOwnProperty(index)) {\n                    var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[index].label : item.series.yaxis.ticks[index].v;\n                    if (valueY === y) {\n                        content = content.replace(yPattern, item.series.yaxis.ticks[index].label);\n                    }\n                }\n            }\n        }\n\n        // if no value customization, use tickFormatter by default\n        if (typeof item.series.xaxis.tickFormatter !== 'undefined') {\n            //escape dollar\n            content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\\$/g, '$$'));\n        }\n        if (typeof item.series.yaxis.tickFormatter !== 'undefined') {\n            //escape dollar\n            content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\\$/g, '$$'));\n        }\n\n        if (customText)\n            content = content.replace(customTextPattern, customText);\n\n        return content;\n    };\n\n    // helpers just for readability\n    FlotTooltip.prototype.isTimeMode = function (axisName, item) {\n        return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time');\n    };\n\n    FlotTooltip.prototype.isXDateFormat = function (item) {\n        return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null);\n    };\n\n    FlotTooltip.prototype.isYDateFormat = function (item) {\n        return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null);\n    };\n\n    FlotTooltip.prototype.isCategoriesMode = function (axisName, item) {\n        return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories');\n    };\n\n    //\n    FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) {\n        var theDate = $.plot.dateGenerator(tmst, options);\n        return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames);\n    };\n\n    //\n    FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) {\n\n        var precision;\n        var matchResult = content.match(pattern);\n        if( matchResult !== null ) {\n            if(RegExp.$1 !== '') {\n                precision = RegExp.$1;\n                value = value.toFixed(precision);\n\n                // only replace content if precision exists, in other case use thickformater\n                content = content.replace(pattern, value);\n            }\n        }\n        return content;\n    };\n\n    // other plugins detection below\n\n    // check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given\n    FlotTooltip.prototype.hasAxisLabel = function (axisName, item) {\n        return ($.inArray(this.plotPlugins, 'axisLabels') !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0);\n    };\n\n    // check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used\n    FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) {\n        return ($.inArray(this.plotPlugins, 'tickRotor') !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined');\n    };\n\n    //\n    var init = function (plot) {\n      new FlotTooltip(plot);\n    };\n\n    // define Flot plugin\n    $.plot.plugins.push({\n        init: init,\n        options: defaultOptions,\n        name: 'tooltip',\n        version: '0.8.5'\n    });\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/af.js",
    "content": "!function(e,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],n):\"object\"==typeof exports?n(require(\"moment\"),require(\"fullcalendar\")):n(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,\"a\",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p=\"\",n(n.s=65)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},65:function(e,n,a){Object.defineProperty(n,\"__esModule\",{value:!0}),a(66);var t=a(1);t.datepickerLocale(\"af\",\"af\",{closeText:\"Selekteer\",prevText:\"Vorige\",nextText:\"Volgende\",currentText:\"Vandag\",monthNames:[\"Januarie\",\"Februarie\",\"Maart\",\"April\",\"Mei\",\"Junie\",\"Julie\",\"Augustus\",\"September\",\"Oktober\",\"November\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mrt\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Des\"],dayNames:[\"Sondag\",\"Maandag\",\"Dinsdag\",\"Woensdag\",\"Donderdag\",\"Vrydag\",\"Saterdag\"],dayNamesShort:[\"Son\",\"Maa\",\"Din\",\"Woe\",\"Don\",\"Vry\",\"Sat\"],dayNamesMin:[\"So\",\"Ma\",\"Di\",\"Wo\",\"Do\",\"Vr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"af\",{buttonText:{year:\"Jaar\",month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayHtml:\"Heeldag\",eventLimitText:\"Addisionele\",noEventsMessage:\"Daar is geen gebeurtenisse nie\"})},66:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){return e.defineLocale(\"af\",{months:\"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag\".split(\"_\"),weekdaysShort:\"Son_Maa_Din_Woe_Don_Vry_Sat\".split(\"_\"),weekdaysMin:\"So_Ma_Di_Wo_Do_Vr_Sa\".split(\"_\"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,n,a){return e<12?a?\"vm\":\"VM\":a?\"nm\":\"NM\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Vandag om] LT\",nextDay:\"[Môre om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[Gister om] LT\",lastWeek:\"[Laas] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"oor %s\",past:\"%s gelede\",s:\"'n paar sekondes\",ss:\"%d sekondes\",m:\"'n minuut\",mm:\"%d minute\",h:\"'n uur\",hh:\"%d ure\",d:\"'n dag\",dd:\"%d dae\",M:\"'n maand\",MM:\"%d maande\",y:\"'n jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ar-dz.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=67)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},67:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(68);var r=n(1);r.datepickerLocale(\"ar-dz\",\"ar-DZ\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"جانفي\",\"فيفري\",\"مارس\",\"أفريل\",\"ماي\",\"جوان\",\"جويلية\",\"أوت\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"ar-dz\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},68:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ar-dz\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"أح_إث_ثلا_أر_خم_جم_سب\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:0,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ar-kw.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=69)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},69:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(70);var r=n(1);r.datepickerLocale(\"ar-kw\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"ar-kw\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},70:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ar-kw\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:0,doy:12}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ar-ly.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=71)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},71:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(72);var n=r(1);n.datepickerLocale(\"ar-ly\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-ly\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},72:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",0:\"0\"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},o=function(e){return function(t,o,d,a){var u=r(t),s=n[e][r(t)];return 2===u&&(s=s[o?0:1]),s.replace(/%d/i,t)}},d=[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"];return e.defineLocale(\"ar-ly\",{months:d,monthsShort:d,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/‏M/‏YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,t,r){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:o(\"s\"),ss:o(\"s\"),m:o(\"m\"),mm:o(\"m\"),h:o(\"h\"),hh:o(\"h\"),d:o(\"d\"),dd:o(\"d\"),M:o(\"M\"),MM:o(\"M\"),y:o(\"y\"),yy:o(\"y\")},preparse:function(e){return e.replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return t[e]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ar-ma.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=73)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},73:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(74);var r=n(1);r.datepickerLocale(\"ar-ma\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"ar-ma\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},74:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ar-ma\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:6,doy:12}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ar-sa.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=75)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},75:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(76);var n=r(1);n.datepickerLocale(\"ar-sa\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-sa\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},76:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},r={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"};return e.defineLocale(\"ar-sa\",{months:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,t,r){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return r[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return t[e]}).replace(/,/g,\"،\")},week:{dow:0,doy:6}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ar-tn.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=77)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},77:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(78);var r=n(1);r.datepickerLocale(\"ar-tn\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"ar-tn\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},78:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ar-tn\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ar.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=79)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},79:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(80);var n=r(1);n.datepickerLocale(\"ar\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},80:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},r={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},a=function(e){return function(t,r,a,d){var u=n(t),i=o[e][n(t)];return 2===u&&(i=i[r?0:1]),i.replace(/%d/i,t)}},d=[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"];return e.defineLocale(\"ar\",{months:d,monthsShort:d,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/‏M/‏YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,t,r){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:a(\"s\"),ss:a(\"s\"),m:a(\"m\"),mm:a(\"m\"),h:a(\"h\"),hh:a(\"h\"),d:a(\"d\"),dd:a(\"d\"),M:a(\"M\"),MM:a(\"M\"),y:a(\"y\"),yy:a(\"y\")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return r[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return t[e]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/bg.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=81)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},81:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(82);var r=n(1);r.datepickerLocale(\"bg\",\"bg\",{closeText:\"затвори\",prevText:\"&#x3C;назад\",nextText:\"напред&#x3E;\",nextBigText:\"&#x3E;&#x3E;\",currentText:\"днес\",monthNames:[\"Януари\",\"Февруари\",\"Март\",\"Април\",\"Май\",\"Юни\",\"Юли\",\"Август\",\"Септември\",\"Октомври\",\"Ноември\",\"Декември\"],monthNamesShort:[\"Яну\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Юни\",\"Юли\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дек\"],dayNames:[\"Неделя\",\"Понеделник\",\"Вторник\",\"Сряда\",\"Четвъртък\",\"Петък\",\"Събота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Вто\",\"Сря\",\"Чет\",\"Пет\",\"Съб\"],dayNamesMin:[\"Не\",\"По\",\"Вт\",\"Ср\",\"Че\",\"Пе\",\"Съ\"],weekHeader:\"Wk\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"bg\",{buttonText:{month:\"Месец\",week:\"Седмица\",day:\"Ден\",list:\"График\"},allDayText:\"Цял ден\",eventLimitText:function(e){return\"+още \"+e},noEventsMessage:\"Няма събития за показване\"})},82:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"bg\",{months:\"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"неделя_понеделник_вторник_сряда_четвъртък_петък_събота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сря_чет_пет_съб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Днес в] LT\",nextDay:\"[Утре в] LT\",nextWeek:\"dddd [в] LT\",lastDay:\"[Вчера в] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[В изминалата] dddd [в] LT\";case 1:case 2:case 4:case 5:return\"[В изминалия] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"след %s\",past:\"преди %s\",s:\"няколко секунди\",ss:\"%d секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дни\",M:\"месец\",MM:\"%d месеца\",y:\"година\",yy:\"%d години\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+\"-ев\":0===n?e+\"-ен\":n>10&&n<20?e+\"-ти\":1===t?e+\"-ви\":2===t?e+\"-ри\":7===t||8===t?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/bs.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=83)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},83:function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(84);var r=t(1);r.datepickerLocale(\"bs\",\"bs\",{closeText:\"Zatvori\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Danas\",monthNames:[\"Januar\",\"Februar\",\"Mart\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"August\",\"Septembar\",\"Oktobar\",\"Novmbar\",\"Decembar\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Nedjelja\",\"Ponedjeljak\",\"Utorak\",\"Srijeda\",\"Četvrtak\",\"Petak\",\"Subota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Sri\",\"Čet\",\"Pet\",\"Sub\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"Sr\",\"Če\",\"Pe\",\"Su\"],weekHeader:\"Sed\",dateFormat:\"dd.mm.yy.\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"bs\",{buttonText:{prev:\"Prošli\",next:\"Sljedeći\",month:\"Mjesec\",week:\"Sedmica\",day:\"Dan\",list:\"Raspored\"},allDayText:\"Cijeli dan\",eventLimitText:function(e){return\"+ još \"+e},noEventsMessage:\"Nema događaja za prikazivanje\"})},84:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var r=e+\" \";switch(t){case\"ss\":return r+=1===e?\"sekunda\":2===e||3===e||4===e?\"sekunde\":\"sekundi\";case\"m\":return a?\"jedna minuta\":\"jedne minute\";case\"mm\":return r+=1===e?\"minuta\":2===e||3===e||4===e?\"minute\":\"minuta\";case\"h\":return a?\"jedan sat\":\"jednog sata\";case\"hh\":return r+=1===e?\"sat\":2===e||3===e||4===e?\"sata\":\"sati\";case\"dd\":return r+=1===e?\"dan\":\"dana\";case\"MM\":return r+=1===e?\"mjesec\":2===e||3===e||4===e?\"mjeseca\":\"mjeseci\";case\"yy\":return r+=1===e?\"godina\":2===e||3===e||4===e?\"godine\":\"godina\"}}return e.defineLocale(\"bs\",{months:\"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",ss:a,m:a,mm:a,h:a,hh:a,d:\"dan\",dd:a,M:\"mjesec\",MM:a,y:\"godinu\",yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ca.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var d=n[r]={i:r,l:!1,exports:{}};return e[r].call(d.exports,d,d.exports,t),d.l=!0,d.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=85)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},85:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(86);var r=n(1);r.datepickerLocale(\"ca\",\"ca\",{closeText:\"Tanca\",prevText:\"Anterior\",nextText:\"Següent\",currentText:\"Avui\",monthNames:[\"gener\",\"febrer\",\"març\",\"abril\",\"maig\",\"juny\",\"juliol\",\"agost\",\"setembre\",\"octubre\",\"novembre\",\"desembre\"],monthNamesShort:[\"gen\",\"feb\",\"març\",\"abr\",\"maig\",\"juny\",\"jul\",\"ag\",\"set\",\"oct\",\"nov\",\"des\"],dayNames:[\"diumenge\",\"dilluns\",\"dimarts\",\"dimecres\",\"dijous\",\"divendres\",\"dissabte\"],dayNamesShort:[\"dg\",\"dl\",\"dt\",\"dc\",\"dj\",\"dv\",\"ds\"],dayNamesMin:[\"dg\",\"dl\",\"dt\",\"dc\",\"dj\",\"dv\",\"ds\"],weekHeader:\"Set\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"ca\",{buttonText:{month:\"Mes\",week:\"Setmana\",day:\"Dia\",list:\"Agenda\"},allDayText:\"Tot el dia\",eventLimitText:\"més\",noEventsMessage:\"No hi ha esdeveniments per mostrar\"})},86:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ca\",{months:{standalone:\"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre\".split(\"_\"),format:\"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\"_\"),isFormat:/D[oD]?(\\s)+MMMM/},monthsShort:\"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte\".split(\"_\"),weekdaysShort:\"dg._dl._dt._dc._dj._dv._ds.\".split(\"_\"),weekdaysMin:\"dg_dl_dt_dc_dj_dv_ds\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [de] YYYY\",ll:\"D MMM YYYY\",LLL:\"D MMMM [de] YYYY [a les] H:mm\",lll:\"D MMM YYYY, H:mm\",LLLL:\"dddd D MMMM [de] YYYY [a les] H:mm\",llll:\"ddd D MMM YYYY, H:mm\"},calendar:{sameDay:function(){return\"[avui a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextDay:function(){return\"[demà a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextWeek:function(){return\"dddd [a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastDay:function(){return\"[ahir a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [passat a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"d'aquí %s\",past:\"fa %s\",s:\"uns segons\",ss:\"%d segons\",m:\"un minut\",mm:\"%d minuts\",h:\"una hora\",hh:\"%d hores\",d:\"un dia\",dd:\"%d dies\",M:\"un mes\",MM:\"%d mesos\",y:\"un any\",yy:\"%d anys\"},dayOfMonthOrdinalParse:/\\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?\"r\":2===e?\"n\":3===e?\"r\":4===e?\"t\":\"è\";return\"w\"!==t&&\"W\"!==t||(n=\"a\"),e+n},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/cs.js",
    "content": "!function(e,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],n):\"object\"==typeof exports?n(require(\"moment\"),require(\"fullcalendar\")):n(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p=\"\",n(n.s=87)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},87:function(e,n,t){Object.defineProperty(n,\"__esModule\",{value:!0}),t(88);var r=t(1);r.datepickerLocale(\"cs\",\"cs\",{closeText:\"Zavřít\",prevText:\"&#x3C;Dříve\",nextText:\"Později&#x3E;\",currentText:\"Nyní\",monthNames:[\"leden\",\"únor\",\"březen\",\"duben\",\"květen\",\"červen\",\"červenec\",\"srpen\",\"září\",\"říjen\",\"listopad\",\"prosinec\"],monthNamesShort:[\"led\",\"úno\",\"bře\",\"dub\",\"kvě\",\"čer\",\"čvc\",\"srp\",\"zář\",\"říj\",\"lis\",\"pro\"],dayNames:[\"neděle\",\"pondělí\",\"úterý\",\"středa\",\"čtvrtek\",\"pátek\",\"sobota\"],dayNamesShort:[\"ne\",\"po\",\"út\",\"st\",\"čt\",\"pá\",\"so\"],dayNamesMin:[\"ne\",\"po\",\"út\",\"st\",\"čt\",\"pá\",\"so\"],weekHeader:\"Týd\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"cs\",{buttonText:{month:\"Měsíc\",week:\"Týden\",day:\"Den\",list:\"Agenda\"},allDayText:\"Celý den\",eventLimitText:function(e){return\"+další: \"+e},noEventsMessage:\"Žádné akce k zobrazení\"})},88:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,r,s){var o=e+\" \";switch(r){case\"s\":return t||s?\"pár sekund\":\"pár sekundami\";case\"ss\":return t||s?o+(n(e)?\"sekundy\":\"sekund\"):o+\"sekundami\";case\"m\":return t?\"minuta\":s?\"minutu\":\"minutou\";case\"mm\":return t||s?o+(n(e)?\"minuty\":\"minut\"):o+\"minutami\";case\"h\":return t?\"hodina\":s?\"hodinu\":\"hodinou\";case\"hh\":return t||s?o+(n(e)?\"hodiny\":\"hodin\"):o+\"hodinami\";case\"d\":return t||s?\"den\":\"dnem\";case\"dd\":return t||s?o+(n(e)?\"dny\":\"dní\"):o+\"dny\";case\"M\":return t||s?\"měsíc\":\"měsícem\";case\"MM\":return t||s?o+(n(e)?\"měsíce\":\"měsíců\"):o+\"měsíci\";case\"y\":return t||s?\"rok\":\"rokem\";case\"yy\":return t||s?o+(n(e)?\"roky\":\"let\"):o+\"lety\"}}var r=\"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec\".split(\"_\"),s=\"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro\".split(\"_\");return e.defineLocale(\"cs\",{months:r,monthsShort:s,monthsParse:function(e,n){var t,r=[];for(t=0;t<12;t++)r[t]=new RegExp(\"^\"+e[t]+\"$|^\"+n[t]+\"$\",\"i\");return r}(r,s),shortMonthsParse:function(e){var n,t=[];for(n=0;n<12;n++)t[n]=new RegExp(\"^\"+e[n]+\"$\",\"i\");return t}(s),longMonthsParse:function(e){var n,t=[];for(n=0;n<12;n++)t[n]=new RegExp(\"^\"+e[n]+\"$\",\"i\");return t}(r),weekdays:\"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota\".split(\"_\"),weekdaysShort:\"ne_po_út_st_čt_pá_so\".split(\"_\"),weekdaysMin:\"ne_po_út_st_čt_pá_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\",l:\"D. M. YYYY\"},calendar:{sameDay:\"[dnes v] LT\",nextDay:\"[zítra v] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v neděli v] LT\";case 1:case 2:return\"[v] dddd [v] LT\";case 3:return\"[ve středu v] LT\";case 4:return\"[ve čtvrtek v] LT\";case 5:return\"[v pátek v] LT\";case 6:return\"[v sobotu v] LT\"}},lastDay:\"[včera v] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulou neděli v] LT\";case 1:case 2:return\"[minulé] dddd [v] LT\";case 3:return\"[minulou středu v] LT\";case 4:case 5:return\"[minulý] dddd [v] LT\";case 6:return\"[minulou sobotu v] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"před %s\",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/da.js",
    "content": "!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var t={};return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=89)}({0:function(r,t){r.exports=e},1:function(e,t){e.exports=r},89:function(e,r,t){Object.defineProperty(r,\"__esModule\",{value:!0}),t(90);var n=t(1);n.datepickerLocale(\"da\",\"da\",{closeText:\"Luk\",prevText:\"&#x3C;Forrige\",nextText:\"Næste&#x3E;\",currentText:\"Idag\",monthNames:[\"Januar\",\"Februar\",\"Marts\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Søndag\",\"Mandag\",\"Tirsdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lørdag\"],dayNamesShort:[\"Søn\",\"Man\",\"Tir\",\"Ons\",\"Tor\",\"Fre\",\"Lør\"],dayNamesMin:[\"Sø\",\"Ma\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lø\"],weekHeader:\"Uge\",dateFormat:\"dd-mm-yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"da\",{buttonText:{month:\"Måned\",week:\"Uge\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dagen\",eventLimitText:\"flere\",noEventsMessage:\"Ingen arrangementer at vise\"})},90:function(e,r,t){!function(e,r){r(t(0))}(0,function(e){return e.defineLocale(\"da\",{months:\"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"søn_man_tir_ons_tor_fre_lør\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd [d.] D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"på dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[i] dddd[s kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"få sekunder\",ss:\"%d sekunder\",m:\"et minut\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dage\",M:\"en måned\",MM:\"%d måneder\",y:\"et år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/de-at.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=91)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},91:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(92);var r=n(1);r.datepickerLocale(\"de-at\",\"de\",{closeText:\"Schließen\",prevText:\"&#x3C;Zurück\",nextText:\"Vor&#x3E;\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"de-at\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})},92:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return t?a[n][0]:a[n][1]}return e.defineLocale(\"de-at\",{months:\"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",ss:\"%d Sekunden\",m:t,mm:\"%d Minuten\",h:t,hh:\"%d Stunden\",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/de-ch.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=93)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},93:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(94);var r=n(1);r.datepickerLocale(\"de-ch\",\"de\",{closeText:\"Schließen\",prevText:\"&#x3C;Zurück\",nextText:\"Vor&#x3E;\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"de-ch\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})},94:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return t?a[n][0]:a[n][1]}return e.defineLocale(\"de-ch\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",ss:\"%d Sekunden\",m:t,mm:\"%d Minuten\",h:t,hh:\"%d Stunden\",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/de.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=95)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},95:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(96);var r=n(1);r.datepickerLocale(\"de\",\"de\",{closeText:\"Schließen\",prevText:\"&#x3C;Zurück\",nextText:\"Vor&#x3E;\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"de\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})},96:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return t?a[n][0]:a[n][1]}return e.defineLocale(\"de\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",ss:\"%d Sekunden\",m:t,mm:\"%d Minuten\",h:t,hh:\"%d Stunden\",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/el.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=97)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},97:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(98);var o=n(1);o.datepickerLocale(\"el\",\"el\",{closeText:\"Κλείσιμο\",prevText:\"Προηγούμενος\",nextText:\"Επόμενος\",currentText:\"Σήμερα\",monthNames:[\"Ιανουάριος\",\"Φεβρουάριος\",\"Μάρτιος\",\"Απρίλιος\",\"Μάιος\",\"Ιούνιος\",\"Ιούλιος\",\"Αύγουστος\",\"Σεπτέμβριος\",\"Οκτώβριος\",\"Νοέμβριος\",\"Δεκέμβριος\"],monthNamesShort:[\"Ιαν\",\"Φεβ\",\"Μαρ\",\"Απρ\",\"Μαι\",\"Ιουν\",\"Ιουλ\",\"Αυγ\",\"Σεπ\",\"Οκτ\",\"Νοε\",\"Δεκ\"],dayNames:[\"Κυριακή\",\"Δευτέρα\",\"Τρίτη\",\"Τετάρτη\",\"Πέμπτη\",\"Παρασκευή\",\"Σάββατο\"],dayNamesShort:[\"Κυρ\",\"Δευ\",\"Τρι\",\"Τετ\",\"Πεμ\",\"Παρ\",\"Σαβ\"],dayNamesMin:[\"Κυ\",\"Δε\",\"Τρ\",\"Τε\",\"Πε\",\"Πα\",\"Σα\"],weekHeader:\"Εβδ\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),o.locale(\"el\",{buttonText:{month:\"Μήνας\",week:\"Εβδομάδα\",day:\"Ημέρα\",list:\"Ατζέντα\"},allDayText:\"Ολοήμερο\",eventLimitText:\"περισσότερα\",noEventsMessage:\"Δεν υπάρχουν γεγονότα για να εμφανιστεί\"})},98:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e){return e instanceof Function||\"[object Function]\"===Object.prototype.toString.call(e)}return e.defineLocale(\"el\",{monthsNominativeEl:\"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος\".split(\"_\"),monthsGenitiveEl:\"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου\".split(\"_\"),months:function(e,t){return e?\"string\"==typeof t&&/D/.test(t.substring(0,t.indexOf(\"MMMM\")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:\"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ\".split(\"_\"),weekdays:\"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο\".split(\"_\"),weekdaysShort:\"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ\".split(\"_\"),weekdaysMin:\"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα\".split(\"_\"),meridiem:function(e,t,n){return e>11?n?\"μμ\":\"ΜΜ\":n?\"πμ\":\"ΠΜ\"},isPM:function(e){return\"μ\"===(e+\"\").toLowerCase()[0]},meridiemParse:/[ΠΜ]\\.?Μ?\\.?/i,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendarEl:{sameDay:\"[Σήμερα {}] LT\",nextDay:\"[Αύριο {}] LT\",nextWeek:\"dddd [{}] LT\",lastDay:\"[Χθες {}] LT\",lastWeek:function(){switch(this.day()){case 6:return\"[το προηγούμενο] dddd [{}] LT\";default:return\"[την προηγούμενη] dddd [{}] LT\"}},sameElse:\"L\"},calendar:function(e,n){var o=this._calendarEl[e],r=n&&n.hours();return t(o)&&(o=o.apply(n)),o.replace(\"{}\",r%12==1?\"στη\":\"στις\")},relativeTime:{future:\"σε %s\",past:\"%s πριν\",s:\"λίγα δευτερόλεπτα\",ss:\"%d δευτερόλεπτα\",m:\"ένα λεπτό\",mm:\"%d λεπτά\",h:\"μία ώρα\",hh:\"%d ώρες\",d:\"μία μέρα\",dd:\"%d μέρες\",M:\"ένας μήνας\",MM:\"%d μήνες\",y:\"ένας χρόνος\",yy:\"%d χρόνια\"},dayOfMonthOrdinalParse:/\\d{1,2}η/,ordinal:\"%dη\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/en-au.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,\"a\",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=99)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},100:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){return e.defineLocale(\"en-au\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")},week:{dow:1,doy:4}})})},99:function(e,t,a){Object.defineProperty(t,\"__esModule\",{value:!0}),a(100);var r=a(1);r.datepickerLocale(\"en-au\",\"en-AU\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"en-au\")}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/en-ca.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=101)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},101:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(102),n(1).locale(\"en-ca\")},102:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"en-ca\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"YYYY-MM-DD\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/en-gb.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=103)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},103:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(104);var a=r(1);a.datepickerLocale(\"en-gb\",\"en-GB\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),a.locale(\"en-gb\")},104:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale(\"en-gb\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/en-ie.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=105)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},105:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(106),n(1).locale(\"en-ie\")},106:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"en-ie\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/en-nz.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=107)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},107:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(108);var a=r(1);a.datepickerLocale(\"en-nz\",\"en-NZ\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),a.locale(\"en-nz\")},108:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale(\"en-nz\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/es-do.js",
    "content": "!function(e,o){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=o(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],o):\"object\"==typeof exports?o(require(\"moment\"),require(\"fullcalendar\")):o(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,o){return function(e){function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}var r={};return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,\"a\",r),r},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p=\"\",o(o.s=109)}({0:function(o,r){o.exports=e},1:function(e,r){e.exports=o},109:function(e,o,r){Object.defineProperty(o,\"__esModule\",{value:!0}),r(110);var t=r(1);t.datepickerLocale(\"es-do\",\"es\",{closeText:\"Cerrar\",prevText:\"&#x3C;Ant\",nextText:\"Sig&#x3E;\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"es-do\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo<br/>el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})},110:function(e,o,r){!function(e,o){o(r(0))}(0,function(e){var o=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),r=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),t=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;return e.defineLocale(\"es-do\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?r[e.month()]:o[e.month()]:o},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY h:mm A\",LLLL:\"dddd, D [de] MMMM [de] YYYY h:mm A\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/es-us.js",
    "content": "!function(e,o){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=o(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],o):\"object\"==typeof exports?o(require(\"moment\"),require(\"fullcalendar\")):o(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,o){return function(e){function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}var t={};return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,\"a\",t),t},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p=\"\",o(o.s=111)}({0:function(o,t){o.exports=e},1:function(e,t){e.exports=o},111:function(e,o,t){Object.defineProperty(o,\"__esModule\",{value:!0}),t(112);var n=t(1);n.datepickerLocale(\"es-us\",\"es\",{closeText:\"Cerrar\",prevText:\"&#x3C;Ant\",nextText:\"Sig&#x3E;\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"es-us\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo<br/>el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})},112:function(e,o,t){!function(e,o){o(t(0))}(0,function(e){var o=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),t=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\");return e.defineLocale(\"es-us\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:o[e.month()]:o},monthsParseExact:!0,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"MM/DD/YYYY\",LL:\"MMMM [de] D [de] YYYY\",LLL:\"MMMM [de] D [de] YYYY h:mm A\",LLLL:\"dddd, MMMM [de] D [de] YYYY h:mm A\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:0,doy:6}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/es.js",
    "content": "!function(e,o){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=o(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],o):\"object\"==typeof exports?o(require(\"moment\"),require(\"fullcalendar\")):o(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,o){return function(e){function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}var r={};return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,\"a\",r),r},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p=\"\",o(o.s=113)}({0:function(o,r){o.exports=e},1:function(e,r){e.exports=o},113:function(e,o,r){Object.defineProperty(o,\"__esModule\",{value:!0}),r(114);var t=r(1);t.datepickerLocale(\"es\",\"es\",{closeText:\"Cerrar\",prevText:\"&#x3C;Ant\",nextText:\"Sig&#x3E;\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"es\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo<br/>el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})},114:function(e,o,r){!function(e,o){o(r(0))}(0,function(e){var o=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),r=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),t=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;return e.defineLocale(\"es\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?r[e.month()]:o[e.month()]:o},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/et.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(a[n])return a[n].exports;var u=a[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,n){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,\"a\",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=115)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},115:function(e,t,a){Object.defineProperty(t,\"__esModule\",{value:!0}),a(116);var n=a(1);n.datepickerLocale(\"et\",\"et\",{closeText:\"Sulge\",prevText:\"Eelnev\",nextText:\"Järgnev\",currentText:\"Täna\",monthNames:[\"Jaanuar\",\"Veebruar\",\"Märts\",\"Aprill\",\"Mai\",\"Juuni\",\"Juuli\",\"August\",\"September\",\"Oktoober\",\"November\",\"Detsember\"],monthNamesShort:[\"Jaan\",\"Veebr\",\"Märts\",\"Apr\",\"Mai\",\"Juuni\",\"Juuli\",\"Aug\",\"Sept\",\"Okt\",\"Nov\",\"Dets\"],dayNames:[\"Pühapäev\",\"Esmaspäev\",\"Teisipäev\",\"Kolmapäev\",\"Neljapäev\",\"Reede\",\"Laupäev\"],dayNamesShort:[\"Pühap\",\"Esmasp\",\"Teisip\",\"Kolmap\",\"Neljap\",\"Reede\",\"Laup\"],dayNamesMin:[\"P\",\"E\",\"T\",\"K\",\"N\",\"R\",\"L\"],weekHeader:\"näd\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"et\",{buttonText:{month:\"Kuu\",week:\"Nädal\",day:\"Päev\",list:\"Päevakord\"},allDayText:\"Kogu päev\",eventLimitText:function(e){return\"+ veel \"+e},noEventsMessage:\"Kuvamiseks puuduvad sündmused\"})},116:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){function t(e,t,a,n){var u={s:[\"mõne sekundi\",\"mõni sekund\",\"paar sekundit\"],ss:[e+\"sekundi\",e+\"sekundit\"],m:[\"ühe minuti\",\"üks minut\"],mm:[e+\" minuti\",e+\" minutit\"],h:[\"ühe tunni\",\"tund aega\",\"üks tund\"],hh:[e+\" tunni\",e+\" tundi\"],d:[\"ühe päeva\",\"üks päev\"],M:[\"kuu aja\",\"kuu aega\",\"üks kuu\"],MM:[e+\" kuu\",e+\" kuud\"],y:[\"ühe aasta\",\"aasta\",\"üks aasta\"],yy:[e+\" aasta\",e+\" aastat\"]};return t?u[a][2]?u[a][2]:u[a][1]:n?u[a][0]:u[a][1]}return e.defineLocale(\"et\",{months:\"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember\".split(\"_\"),monthsShort:\"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets\".split(\"_\"),weekdays:\"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev\".split(\"_\"),weekdaysShort:\"P_E_T_K_N_R_L\".split(\"_\"),weekdaysMin:\"P_E_T_K_N_R_L\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[Täna,] LT\",nextDay:\"[Homme,] LT\",nextWeek:\"[Järgmine] dddd LT\",lastDay:\"[Eile,] LT\",lastWeek:\"[Eelmine] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s pärast\",past:\"%s tagasi\",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:\"%d päeva\",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/eu.js",
    "content": "!function(a,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],e):\"object\"==typeof exports?e(require(\"moment\"),require(\"fullcalendar\")):e(a.moment,a.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(a,e){return function(a){function e(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return a[r].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var t={};return e.m=a,e.c=t,e.d=function(a,t,r){e.o(a,t)||Object.defineProperty(a,t,{configurable:!1,enumerable:!0,get:r})},e.n=function(a){var t=a&&a.__esModule?function(){return a.default}:function(){return a};return e.d(t,\"a\",t),t},e.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},e.p=\"\",e(e.s=117)}({0:function(e,t){e.exports=a},1:function(a,t){a.exports=e},117:function(a,e,t){Object.defineProperty(e,\"__esModule\",{value:!0}),t(118);var r=t(1);r.datepickerLocale(\"eu\",\"eu\",{closeText:\"Egina\",prevText:\"&#x3C;Aur\",nextText:\"Hur&#x3E;\",currentText:\"Gaur\",monthNames:[\"urtarrila\",\"otsaila\",\"martxoa\",\"apirila\",\"maiatza\",\"ekaina\",\"uztaila\",\"abuztua\",\"iraila\",\"urria\",\"azaroa\",\"abendua\"],monthNamesShort:[\"urt.\",\"ots.\",\"mar.\",\"api.\",\"mai.\",\"eka.\",\"uzt.\",\"abu.\",\"ira.\",\"urr.\",\"aza.\",\"abe.\"],dayNames:[\"igandea\",\"astelehena\",\"asteartea\",\"asteazkena\",\"osteguna\",\"ostirala\",\"larunbata\"],dayNamesShort:[\"ig.\",\"al.\",\"ar.\",\"az.\",\"og.\",\"ol.\",\"lr.\"],dayNamesMin:[\"ig\",\"al\",\"ar\",\"az\",\"og\",\"ol\",\"lr\"],weekHeader:\"As\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"eu\",{buttonText:{month:\"Hilabetea\",week:\"Astea\",day:\"Eguna\",list:\"Agenda\"},allDayHtml:\"Egun<br/>osoa\",eventLimitText:\"gehiago\",noEventsMessage:\"Ez dago ekitaldirik erakusteko\"})},118:function(a,e,t){!function(a,e){e(t(0))}(0,function(a){return a.defineLocale(\"eu\",{months:\"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua\".split(\"_\"),monthsShort:\"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.\".split(\"_\"),monthsParseExact:!0,weekdays:\"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata\".split(\"_\"),weekdaysShort:\"ig._al._ar._az._og._ol._lr.\".split(\"_\"),weekdaysMin:\"ig_al_ar_az_og_ol_lr\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY[ko] MMMM[ren] D[a]\",LLL:\"YYYY[ko] MMMM[ren] D[a] HH:mm\",LLLL:\"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm\",l:\"YYYY-M-D\",ll:\"YYYY[ko] MMM D[a]\",lll:\"YYYY[ko] MMM D[a] HH:mm\",llll:\"ddd, YYYY[ko] MMM D[a] HH:mm\"},calendar:{sameDay:\"[gaur] LT[etan]\",nextDay:\"[bihar] LT[etan]\",nextWeek:\"dddd LT[etan]\",lastDay:\"[atzo] LT[etan]\",lastWeek:\"[aurreko] dddd LT[etan]\",sameElse:\"L\"},relativeTime:{future:\"%s barru\",past:\"duela %s\",s:\"segundo batzuk\",ss:\"%d segundo\",m:\"minutu bat\",mm:\"%d minutu\",h:\"ordu bat\",hh:\"%d ordu\",d:\"egun bat\",dd:\"%d egun\",M:\"hilabete bat\",MM:\"%d hilabete\",y:\"urte bat\",yy:\"%d urte\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/fa.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=119)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},119:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(120);var r=n(1);r.datepickerLocale(\"fa\",\"fa\",{closeText:\"بستن\",prevText:\"&#x3C;قبلی\",nextText:\"بعدی&#x3E;\",currentText:\"امروز\",monthNames:[\"ژانویه\",\"فوریه\",\"مارس\",\"آوریل\",\"مه\",\"ژوئن\",\"ژوئیه\",\"اوت\",\"سپتامبر\",\"اکتبر\",\"نوامبر\",\"دسامبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"يکشنبه\",\"دوشنبه\",\"سه‌شنبه\",\"چهارشنبه\",\"پنجشنبه\",\"جمعه\",\"شنبه\"],dayNamesShort:[\"ی\",\"د\",\"س\",\"چ\",\"پ\",\"ج\",\"ش\"],dayNamesMin:[\"ی\",\"د\",\"س\",\"چ\",\"پ\",\"ج\",\"ش\"],weekHeader:\"هف\",dateFormat:\"yy/mm/dd\",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"fa\",{buttonText:{month:\"ماه\",week:\"هفته\",day:\"روز\",list:\"برنامه\"},allDayText:\"تمام روز\",eventLimitText:function(e){return\"بیش از \"+e},noEventsMessage:\"هیچ رویدادی به نمایش\"})},120:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={1:\"۱\",2:\"۲\",3:\"۳\",4:\"۴\",5:\"۵\",6:\"۶\",7:\"۷\",8:\"۸\",9:\"۹\",0:\"۰\"},n={\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"۰\":\"0\"};return e.defineLocale(\"fa\",{months:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),monthsShort:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),weekdays:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysShort:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysMin:\"ی_د_س_چ_پ_ج_ش\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?\"قبل از ظهر\":\"بعد از ظهر\"},calendar:{sameDay:\"[امروز ساعت] LT\",nextDay:\"[فردا ساعت] LT\",nextWeek:\"dddd [ساعت] LT\",lastDay:\"[دیروز ساعت] LT\",lastWeek:\"dddd [پیش] [ساعت] LT\",sameElse:\"L\"},relativeTime:{future:\"در %s\",past:\"%s پیش\",s:\"چند ثانیه\",ss:\"ثانیه d%\",m:\"یک دقیقه\",mm:\"%d دقیقه\",h:\"یک ساعت\",hh:\"%d ساعت\",d:\"یک روز\",dd:\"%d روز\",M:\"یک ماه\",MM:\"%d ماه\",y:\"یک سال\",yy:\"%d سال\"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return n[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return t[e]}).replace(/,/g,\"،\")},dayOfMonthOrdinalParse:/\\d{1,2}م/,ordinal:\"%dم\",week:{dow:6,doy:12}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/fi.js",
    "content": "!function(e,u){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=u(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],u):\"object\"==typeof exports?u(require(\"moment\"),require(\"fullcalendar\")):u(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,u){return function(e){function u(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,u),n.l=!0,n.exports}var t={};return u.m=e,u.c=t,u.d=function(e,t,a){u.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,\"a\",t),t},u.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},u.p=\"\",u(u.s=121)}({0:function(u,t){u.exports=e},1:function(e,t){e.exports=u},121:function(e,u,t){Object.defineProperty(u,\"__esModule\",{value:!0}),t(122);var a=t(1);a.datepickerLocale(\"fi\",\"fi\",{closeText:\"Sulje\",prevText:\"&#xAB;Edellinen\",nextText:\"Seuraava&#xBB;\",currentText:\"Tänään\",monthNames:[\"Tammikuu\",\"Helmikuu\",\"Maaliskuu\",\"Huhtikuu\",\"Toukokuu\",\"Kesäkuu\",\"Heinäkuu\",\"Elokuu\",\"Syyskuu\",\"Lokakuu\",\"Marraskuu\",\"Joulukuu\"],monthNamesShort:[\"Tammi\",\"Helmi\",\"Maalis\",\"Huhti\",\"Touko\",\"Kesä\",\"Heinä\",\"Elo\",\"Syys\",\"Loka\",\"Marras\",\"Joulu\"],dayNamesShort:[\"Su\",\"Ma\",\"Ti\",\"Ke\",\"To\",\"Pe\",\"La\"],dayNames:[\"Sunnuntai\",\"Maanantai\",\"Tiistai\",\"Keskiviikko\",\"Torstai\",\"Perjantai\",\"Lauantai\"],dayNamesMin:[\"Su\",\"Ma\",\"Ti\",\"Ke\",\"To\",\"Pe\",\"La\"],weekHeader:\"Vk\",dateFormat:\"d.m.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),a.locale(\"fi\",{buttonText:{month:\"Kuukausi\",week:\"Viikko\",day:\"Päivä\",list:\"Tapahtumat\"},allDayText:\"Koko päivä\",eventLimitText:\"lisää\",noEventsMessage:\"Ei näytettäviä tapahtumia\"})},122:function(e,u,t){!function(e,u){u(t(0))}(0,function(e){function u(e,u,a,n){var i=\"\";switch(a){case\"s\":return n?\"muutaman sekunnin\":\"muutama sekunti\";case\"ss\":return n?\"sekunnin\":\"sekuntia\";case\"m\":return n?\"minuutin\":\"minuutti\";case\"mm\":i=n?\"minuutin\":\"minuuttia\";break;case\"h\":return n?\"tunnin\":\"tunti\";case\"hh\":i=n?\"tunnin\":\"tuntia\";break;case\"d\":return n?\"päivän\":\"päivä\";case\"dd\":i=n?\"päivän\":\"päivää\";break;case\"M\":return n?\"kuukauden\":\"kuukausi\";case\"MM\":i=n?\"kuukauden\":\"kuukautta\";break;case\"y\":return n?\"vuoden\":\"vuosi\";case\"yy\":i=n?\"vuoden\":\"vuotta\"}return i=t(e,n)+\" \"+i}function t(e,u){return e<10?u?n[e]:a[e]:e}var a=\"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän\".split(\" \"),n=[\"nolla\",\"yhden\",\"kahden\",\"kolmen\",\"neljän\",\"viiden\",\"kuuden\",a[7],a[8],a[9]];return e.defineLocale(\"fi\",{months:\"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),monthsShort:\"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu\".split(\"_\"),weekdays:\"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),weekdaysShort:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),weekdaysMin:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"Do MMMM[ta] YYYY\",LLL:\"Do MMMM[ta] YYYY, [klo] HH.mm\",LLLL:\"dddd, Do MMMM[ta] YYYY, [klo] HH.mm\",l:\"D.M.YYYY\",ll:\"Do MMM YYYY\",lll:\"Do MMM YYYY, [klo] HH.mm\",llll:\"ddd, Do MMM YYYY, [klo] HH.mm\"},calendar:{sameDay:\"[tänään] [klo] LT\",nextDay:\"[huomenna] [klo] LT\",nextWeek:\"dddd [klo] LT\",lastDay:\"[eilen] [klo] LT\",lastWeek:\"[viime] dddd[na] [klo] LT\",sameElse:\"L\"},relativeTime:{future:\"%s päästä\",past:\"%s sitten\",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/fr-ca.js",
    "content": "!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,\"a\",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=123)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},123:function(e,r,n){Object.defineProperty(r,\"__esModule\",{value:!0}),n(124);var t=n(1);t.datepickerLocale(\"fr-ca\",\"fr-CA\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"yy-mm-dd\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"fr-ca\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la<br/>journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},124:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale(\"fr-ca\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|e)/,ordinal:function(e,r){switch(r){default:case\"M\":case\"Q\":case\"D\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/fr-ch.js",
    "content": "!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,\"a\",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=125)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},125:function(e,r,n){Object.defineProperty(r,\"__esModule\",{value:!0}),n(126);var t=n(1);t.datepickerLocale(\"fr-ch\",\"fr-CH\",{closeText:\"Fermer\",prevText:\"&#x3C;Préc\",nextText:\"Suiv&#x3E;\",currentText:\"Courant\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"fr-ch\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la<br/>journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},126:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale(\"fr-ch\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|e)/,ordinal:function(e,r){switch(r){default:case\"M\":case\"Q\":case\"D\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/fr.js",
    "content": "!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,\"a\",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=127)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},127:function(e,r,n){Object.defineProperty(r,\"__esModule\",{value:!0}),n(128);var t=n(1);t.datepickerLocale(\"fr\",\"fr\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"fr\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la<br/>journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},128:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale(\"fr\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|)/,ordinal:function(e,r){switch(r){case\"D\":return e+(1===e?\"er\":\"\");default:case\"M\":case\"Q\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/gl.js",
    "content": "!function(e,o){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=o(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],o):\"object\"==typeof exports?o(require(\"moment\"),require(\"fullcalendar\")):o(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,o){return function(e){function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}var t={};return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,\"a\",t),t},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p=\"\",o(o.s=129)}({0:function(o,t){o.exports=e},1:function(e,t){e.exports=o},129:function(e,o,t){Object.defineProperty(o,\"__esModule\",{value:!0}),t(130);var n=t(1);n.datepickerLocale(\"gl\",\"gl\",{closeText:\"Pechar\",prevText:\"&#x3C;Ant\",nextText:\"Seg&#x3E;\",currentText:\"Hoxe\",monthNames:[\"Xaneiro\",\"Febreiro\",\"Marzo\",\"Abril\",\"Maio\",\"Xuño\",\"Xullo\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Decembro\"],monthNamesShort:[\"Xan\",\"Feb\",\"Mar\",\"Abr\",\"Mai\",\"Xuñ\",\"Xul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dec\"],dayNames:[\"Domingo\",\"Luns\",\"Martes\",\"Mércores\",\"Xoves\",\"Venres\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Lun\",\"Mar\",\"Mér\",\"Xov\",\"Ven\",\"Sáb\"],dayNamesMin:[\"Do\",\"Lu\",\"Ma\",\"Mé\",\"Xo\",\"Ve\",\"Sá\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"gl\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Axenda\"},allDayHtml:\"Todo<br/>o día\",eventLimitText:\"máis\",noEventsMessage:\"Non hai eventos para amosar\"})},130:function(e,o,t){!function(e,o){o(t(0))}(0,function(e){return e.defineLocale(\"gl\",{months:\"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro\".split(\"_\"),monthsShort:\"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"domingo_luns_martes_mércores_xoves_venres_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mér._xov._ven._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mé_xo_ve_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoxe \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextDay:function(){return\"[mañá \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextWeek:function(){return\"dddd [\"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},lastDay:function(){return\"[onte \"+(1!==this.hours()?\"á\":\"a\")+\"] LT\"},lastWeek:function(){return\"[o] dddd [pasado \"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:function(e){return 0===e.indexOf(\"un\")?\"n\"+e:\"en \"+e},past:\"hai %s\",s:\"uns segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"unha hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/he.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=131)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},131:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(132);var r=n(1);r.datepickerLocale(\"he\",\"he\",{closeText:\"סגור\",prevText:\"&#x3C;הקודם\",nextText:\"הבא&#x3E;\",currentText:\"היום\",monthNames:[\"ינואר\",\"פברואר\",\"מרץ\",\"אפריל\",\"מאי\",\"יוני\",\"יולי\",\"אוגוסט\",\"ספטמבר\",\"אוקטובר\",\"נובמבר\",\"דצמבר\"],monthNamesShort:[\"ינו\",\"פבר\",\"מרץ\",\"אפר\",\"מאי\",\"יוני\",\"יולי\",\"אוג\",\"ספט\",\"אוק\",\"נוב\",\"דצמ\"],dayNames:[\"ראשון\",\"שני\",\"שלישי\",\"רביעי\",\"חמישי\",\"שישי\",\"שבת\"],dayNamesShort:[\"א'\",\"ב'\",\"ג'\",\"ד'\",\"ה'\",\"ו'\",\"שבת\"],dayNamesMin:[\"א'\",\"ב'\",\"ג'\",\"ד'\",\"ה'\",\"ו'\",\"שבת\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"he\",{buttonText:{month:\"חודש\",week:\"שבוע\",day:\"יום\",list:\"סדר יום\"},allDayText:\"כל היום\",eventLimitText:\"אחר\",noEventsMessage:\"אין אירועים להצגה\",weekNumberTitle:\"שבוע\"})},132:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"he\",{months:\"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר\".split(\"_\"),monthsShort:\"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳\".split(\"_\"),weekdays:\"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת\".split(\"_\"),weekdaysShort:\"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳\".split(\"_\"),weekdaysMin:\"א_ב_ג_ד_ה_ו_ש\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [ב]MMMM YYYY\",LLL:\"D [ב]MMMM YYYY HH:mm\",LLLL:\"dddd, D [ב]MMMM YYYY HH:mm\",l:\"D/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[היום ב־]LT\",nextDay:\"[מחר ב־]LT\",nextWeek:\"dddd [בשעה] LT\",lastDay:\"[אתמול ב־]LT\",lastWeek:\"[ביום] dddd [האחרון בשעה] LT\",sameElse:\"L\"},relativeTime:{future:\"בעוד %s\",past:\"לפני %s\",s:\"מספר שניות\",ss:\"%d שניות\",m:\"דקה\",mm:\"%d דקות\",h:\"שעה\",hh:function(e){return 2===e?\"שעתיים\":e+\" שעות\"},d:\"יום\",dd:function(e){return 2===e?\"יומיים\":e+\" ימים\"},M:\"חודש\",MM:function(e){return 2===e?\"חודשיים\":e+\" חודשים\"},y:\"שנה\",yy:function(e){return 2===e?\"שנתיים\":e%10==0&&10!==e?e+\" שנה\":e+\" שנים\"}},meridiemParse:/אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה\"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?\"לפנות בוקר\":e<10?\"בבוקר\":e<12?n?'לפנה\"צ':\"לפני הצהריים\":e<18?n?'אחה\"צ':\"אחרי הצהריים\":\"בערב\"}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/hi.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=133)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},133:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(134);var r=n(1);r.datepickerLocale(\"hi\",\"hi\",{closeText:\"बंद\",prevText:\"पिछला\",nextText:\"अगला\",currentText:\"आज\",monthNames:[\"जनवरी \",\"फरवरी\",\"मार्च\",\"अप्रेल\",\"मई\",\"जून\",\"जूलाई\",\"अगस्त \",\"सितम्बर\",\"अक्टूबर\",\"नवम्बर\",\"दिसम्बर\"],monthNamesShort:[\"जन\",\"फर\",\"मार्च\",\"अप्रेल\",\"मई\",\"जून\",\"जूलाई\",\"अग\",\"सित\",\"अक्ट\",\"नव\",\"दि\"],dayNames:[\"रविवार\",\"सोमवार\",\"मंगलवार\",\"बुधवार\",\"गुरुवार\",\"शुक्रवार\",\"शनिवार\"],dayNamesShort:[\"रवि\",\"सोम\",\"मंगल\",\"बुध\",\"गुरु\",\"शुक्र\",\"शनि\"],dayNamesMin:[\"रवि\",\"सोम\",\"मंगल\",\"बुध\",\"गुरु\",\"शुक्र\",\"शनि\"],weekHeader:\"हफ्ता\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"hi\",{buttonText:{month:\"महीना\",week:\"सप्ताह\",day:\"दिन\",list:\"कार्यसूची\"},allDayText:\"सभी दिन\",eventLimitText:function(e){return\"+अधिक \"+e},noEventsMessage:\"कोई घटनाओं को प्रदर्शित करने के लिए\"})},134:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"},n={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"};return e.defineLocale(\"hi\",{months:\"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर\".split(\"_\"),monthsShort:\"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.\".split(\"_\"),monthsParseExact:!0,weekdays:\"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार\".split(\"_\"),weekdaysShort:\"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि\".split(\"_\"),weekdaysMin:\"र_सो_मं_बु_गु_शु_श\".split(\"_\"),longDateFormat:{LT:\"A h:mm बजे\",LTS:\"A h:mm:ss बजे\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm बजे\",LLLL:\"dddd, D MMMM YYYY, A h:mm बजे\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[कल] LT\",nextWeek:\"dddd, LT\",lastDay:\"[कल] LT\",lastWeek:\"[पिछले] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s में\",past:\"%s पहले\",s:\"कुछ ही क्षण\",ss:\"%d सेकंड\",m:\"एक मिनट\",mm:\"%d मिनट\",h:\"एक घंटा\",hh:\"%d घंटे\",d:\"एक दिन\",dd:\"%d दिन\",M:\"एक महीने\",MM:\"%d महीने\",y:\"एक वर्ष\",yy:\"%d वर्ष\"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),\"रात\"===t?e<4?e:e+12:\"सुबह\"===t?e:\"दोपहर\"===t?e>=10?e:e+12:\"शाम\"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?\"रात\":e<10?\"सुबह\":e<17?\"दोपहर\":e<20?\"शाम\":\"रात\"},week:{dow:0,doy:6}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/hr.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=135)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},135:function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(136);var n=t(1);n.datepickerLocale(\"hr\",\"hr\",{closeText:\"Zatvori\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Danas\",monthNames:[\"Siječanj\",\"Veljača\",\"Ožujak\",\"Travanj\",\"Svibanj\",\"Lipanj\",\"Srpanj\",\"Kolovoz\",\"Rujan\",\"Listopad\",\"Studeni\",\"Prosinac\"],monthNamesShort:[\"Sij\",\"Velj\",\"Ožu\",\"Tra\",\"Svi\",\"Lip\",\"Srp\",\"Kol\",\"Ruj\",\"Lis\",\"Stu\",\"Pro\"],dayNames:[\"Nedjelja\",\"Ponedjeljak\",\"Utorak\",\"Srijeda\",\"Četvrtak\",\"Petak\",\"Subota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Sri\",\"Čet\",\"Pet\",\"Sub\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"Sr\",\"Če\",\"Pe\",\"Su\"],weekHeader:\"Tje\",dateFormat:\"dd.mm.yy.\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"hr\",{buttonText:{prev:\"Prijašnji\",next:\"Sljedeći\",month:\"Mjesec\",week:\"Tjedan\",day:\"Dan\",list:\"Raspored\"},allDayText:\"Cijeli dan\",eventLimitText:function(e){return\"+ još \"+e},noEventsMessage:\"Nema događaja za prikaz\"})},136:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+\" \";switch(t){case\"ss\":return n+=1===e?\"sekunda\":2===e||3===e||4===e?\"sekunde\":\"sekundi\";case\"m\":return a?\"jedna minuta\":\"jedne minute\";case\"mm\":return n+=1===e?\"minuta\":2===e||3===e||4===e?\"minute\":\"minuta\";case\"h\":return a?\"jedan sat\":\"jednog sata\";case\"hh\":return n+=1===e?\"sat\":2===e||3===e||4===e?\"sata\":\"sati\";case\"dd\":return n+=1===e?\"dan\":\"dana\";case\"MM\":return n+=1===e?\"mjesec\":2===e||3===e||4===e?\"mjeseca\":\"mjeseci\";case\"yy\":return n+=1===e?\"godina\":2===e||3===e||4===e?\"godine\":\"godina\"}}return e.defineLocale(\"hr\",{months:{format:\"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca\".split(\"_\"),standalone:\"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac\".split(\"_\")},monthsShort:\"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",ss:a,m:a,mm:a,h:a,hh:a,d:\"dan\",dd:a,M:\"mjesec\",MM:a,y:\"godinu\",yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/hu.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=137)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},137:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(138);var n=r(1);n.datepickerLocale(\"hu\",\"hu\",{closeText:\"bezár\",prevText:\"vissza\",nextText:\"előre\",currentText:\"ma\",monthNames:[\"Január\",\"Február\",\"Március\",\"Április\",\"Május\",\"Június\",\"Július\",\"Augusztus\",\"Szeptember\",\"Október\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Már\",\"Ápr\",\"Máj\",\"Jún\",\"Júl\",\"Aug\",\"Szep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Vasárnap\",\"Hétfő\",\"Kedd\",\"Szerda\",\"Csütörtök\",\"Péntek\",\"Szombat\"],dayNamesShort:[\"Vas\",\"Hét\",\"Ked\",\"Sze\",\"Csü\",\"Pén\",\"Szo\"],dayNamesMin:[\"V\",\"H\",\"K\",\"Sze\",\"Cs\",\"P\",\"Szo\"],weekHeader:\"Hét\",dateFormat:\"yy.mm.dd.\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"\"}),n.locale(\"hu\",{buttonText:{month:\"Hónap\",week:\"Hét\",day:\"Nap\",list:\"Napló\"},allDayText:\"Egész nap\",eventLimitText:\"további\",noEventsMessage:\"Nincs megjeleníthető események\"})},138:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e,t,r,n){var a=e;switch(r){case\"s\":return n||t?\"néhány másodperc\":\"néhány másodperce\";case\"ss\":return a+(n||t)?\" másodperc\":\" másodperce\";case\"m\":return\"egy\"+(n||t?\" perc\":\" perce\");case\"mm\":return a+(n||t?\" perc\":\" perce\");case\"h\":return\"egy\"+(n||t?\" óra\":\" órája\");case\"hh\":return a+(n||t?\" óra\":\" órája\");case\"d\":return\"egy\"+(n||t?\" nap\":\" napja\");case\"dd\":return a+(n||t?\" nap\":\" napja\");case\"M\":return\"egy\"+(n||t?\" hónap\":\" hónapja\");case\"MM\":return a+(n||t?\" hónap\":\" hónapja\");case\"y\":return\"egy\"+(n||t?\" év\":\" éve\");case\"yy\":return a+(n||t?\" év\":\" éve\")}return\"\"}function r(e){return(e?\"\":\"[múlt] \")+\"[\"+n[this.day()]+\"] LT[-kor]\"}var n=\"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton\".split(\" \");return e.defineLocale(\"hu\",{months:\"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december\".split(\"_\"),monthsShort:\"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec\".split(\"_\"),weekdays:\"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat\".split(\"_\"),weekdaysShort:\"vas_hét_kedd_sze_csüt_pén_szo\".split(\"_\"),weekdaysMin:\"v_h_k_sze_cs_p_szo\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY. MMMM D.\",LLL:\"YYYY. MMMM D. H:mm\",LLLL:\"YYYY. MMMM D., dddd H:mm\"},meridiemParse:/de|du/i,isPM:function(e){return\"u\"===e.charAt(1).toLowerCase()},meridiem:function(e,t,r){return e<12?!0===r?\"de\":\"DE\":!0===r?\"du\":\"DU\"},calendar:{sameDay:\"[ma] LT[-kor]\",nextDay:\"[holnap] LT[-kor]\",nextWeek:function(){return r.call(this,!0)},lastDay:\"[tegnap] LT[-kor]\",lastWeek:function(){return r.call(this,!1)},sameElse:\"L\"},relativeTime:{future:\"%s múlva\",past:\"%s\",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/id.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=139)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},139:function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(140);var n=t(1);n.datepickerLocale(\"id\",\"id\",{closeText:\"Tutup\",prevText:\"&#x3C;mundur\",nextText:\"maju&#x3E;\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Maret\",\"April\",\"Mei\",\"Juni\",\"Juli\",\"Agustus\",\"September\",\"Oktober\",\"Nopember\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Agus\",\"Sep\",\"Okt\",\"Nop\",\"Des\"],dayNames:[\"Minggu\",\"Senin\",\"Selasa\",\"Rabu\",\"Kamis\",\"Jumat\",\"Sabtu\"],dayNamesShort:[\"Min\",\"Sen\",\"Sel\",\"Rab\",\"kam\",\"Jum\",\"Sab\"],dayNamesMin:[\"Mg\",\"Sn\",\"Sl\",\"Rb\",\"Km\",\"jm\",\"Sb\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"id\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayHtml:\"Sehari<br/>penuh\",eventLimitText:\"lebih\",noEventsMessage:\"Tidak ada acara untuk ditampilkan\"})},140:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"id\",{months:\"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu\".split(\"_\"),weekdaysShort:\"Min_Sen_Sel_Rab_Kam_Jum_Sab\".split(\"_\"),weekdaysMin:\"Mg_Sn_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"siang\"===a?e>=11?e:e+12:\"sore\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"siang\":e<19?\"sore\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Besok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kemarin pukul] LT\",lastWeek:\"dddd [lalu pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lalu\",s:\"beberapa detik\",ss:\"%d detik\",m:\"semenit\",mm:\"%d menit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/is.js",
    "content": "!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,\"a\",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=141)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},141:function(e,r,n){Object.defineProperty(r,\"__esModule\",{value:!0}),n(142);var t=n(1);t.datepickerLocale(\"is\",\"is\",{closeText:\"Loka\",prevText:\"&#x3C; Fyrri\",nextText:\"Næsti &#x3E;\",currentText:\"Í dag\",monthNames:[\"Janúar\",\"Febrúar\",\"Mars\",\"Apríl\",\"Maí\",\"Júní\",\"Júlí\",\"Ágúst\",\"September\",\"Október\",\"Nóvember\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maí\",\"Jún\",\"Júl\",\"Ágú\",\"Sep\",\"Okt\",\"Nóv\",\"Des\"],dayNames:[\"Sunnudagur\",\"Mánudagur\",\"Þriðjudagur\",\"Miðvikudagur\",\"Fimmtudagur\",\"Föstudagur\",\"Laugardagur\"],dayNamesShort:[\"Sun\",\"Mán\",\"Þri\",\"Mið\",\"Fim\",\"Fös\",\"Lau\"],dayNamesMin:[\"Su\",\"Má\",\"Þr\",\"Mi\",\"Fi\",\"Fö\",\"La\"],weekHeader:\"Vika\",dateFormat:\"dd.mm.yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"is\",{buttonText:{month:\"Mánuður\",week:\"Vika\",day:\"Dagur\",list:\"Dagskrá\"},allDayHtml:\"Allan<br/>daginn\",eventLimitText:\"meira\",noEventsMessage:\"Engir viðburðir til að sýna\"})},142:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){function r(e){return e%100==11||e%10!=1}function n(e,n,t,a){var u=e+\" \";switch(t){case\"s\":return n||a?\"nokkrar sekúndur\":\"nokkrum sekúndum\";case\"ss\":return r(e)?u+(n||a?\"sekúndur\":\"sekúndum\"):u+\"sekúnda\";case\"m\":return n?\"mínúta\":\"mínútu\";case\"mm\":return r(e)?u+(n||a?\"mínútur\":\"mínútum\"):n?u+\"mínúta\":u+\"mínútu\";case\"hh\":return r(e)?u+(n||a?\"klukkustundir\":\"klukkustundum\"):u+\"klukkustund\";case\"d\":return n?\"dagur\":a?\"dag\":\"degi\";case\"dd\":return r(e)?n?u+\"dagar\":u+(a?\"daga\":\"dögum\"):n?u+\"dagur\":u+(a?\"dag\":\"degi\");case\"M\":return n?\"mánuður\":a?\"mánuð\":\"mánuði\";case\"MM\":return r(e)?n?u+\"mánuðir\":u+(a?\"mánuði\":\"mánuðum\"):n?u+\"mánuður\":u+(a?\"mánuð\":\"mánuði\");case\"y\":return n||a?\"ár\":\"ári\";case\"yy\":return r(e)?u+(n||a?\"ár\":\"árum\"):u+(n||a?\"ár\":\"ári\")}}return e.defineLocale(\"is\",{months:\"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des\".split(\"_\"),weekdays:\"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur\".split(\"_\"),weekdaysShort:\"sun_mán_þri_mið_fim_fös_lau\".split(\"_\"),weekdaysMin:\"Su_Má_Þr_Mi_Fi_Fö_La\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd, D. MMMM YYYY [kl.] H:mm\"},calendar:{sameDay:\"[í dag kl.] LT\",nextDay:\"[á morgun kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[í gær kl.] LT\",lastWeek:\"[síðasta] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"eftir %s\",past:\"fyrir %s síðan\",s:n,ss:n,m:n,mm:n,h:\"klukkustund\",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/it.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,n){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,\"a\",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=143)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},143:function(e,t,o){Object.defineProperty(t,\"__esModule\",{value:!0}),o(144);var n=o(1);n.datepickerLocale(\"it\",\"it\",{closeText:\"Chiudi\",prevText:\"&#x3C;Prec\",nextText:\"Succ&#x3E;\",currentText:\"Oggi\",monthNames:[\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"],monthNamesShort:[\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"],dayNames:[\"Domenica\",\"Lunedì\",\"Martedì\",\"Mercoledì\",\"Giovedì\",\"Venerdì\",\"Sabato\"],dayNamesShort:[\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\"],dayNamesMin:[\"Do\",\"Lu\",\"Ma\",\"Me\",\"Gi\",\"Ve\",\"Sa\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"it\",{buttonText:{month:\"Mese\",week:\"Settimana\",day:\"Giorno\",list:\"Agenda\"},allDayHtml:\"Tutto il<br/>giorno\",eventLimitText:function(e){return\"+altri \"+e},noEventsMessage:\"Non ci sono eventi da visualizzare\"})},144:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale(\"it\",{months:\"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre\".split(\"_\"),monthsShort:\"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic\".split(\"_\"),weekdays:\"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato\".split(\"_\"),weekdaysShort:\"dom_lun_mar_mer_gio_ven_sab\".split(\"_\"),weekdaysMin:\"do_lu_ma_me_gi_ve_sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Oggi alle] LT\",nextDay:\"[Domani alle] LT\",nextWeek:\"dddd [alle] LT\",lastDay:\"[Ieri alle] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[la scorsa] dddd [alle] LT\";default:return\"[lo scorso] dddd [alle] LT\"}},sameElse:\"L\"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?\"tra\":\"in\")+\" \"+e},past:\"%s fa\",s:\"alcuni secondi\",ss:\"%d secondi\",m:\"un minuto\",mm:\"%d minuti\",h:\"un'ora\",hh:\"%d ore\",d:\"un giorno\",dd:\"%d giorni\",M:\"un mese\",MM:\"%d mesi\",y:\"un anno\",yy:\"%d anni\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ja.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=145)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},145:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(146);var r=n(1);r.datepickerLocale(\"ja\",\"ja\",{closeText:\"閉じる\",prevText:\"&#x3C;前\",nextText:\"次&#x3E;\",currentText:\"今日\",monthNames:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],monthNamesShort:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],dayNames:[\"日曜日\",\"月曜日\",\"火曜日\",\"水曜日\",\"木曜日\",\"金曜日\",\"土曜日\"],dayNamesShort:[\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],dayNamesMin:[\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],weekHeader:\"週\",dateFormat:\"yy/mm/dd\",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),r.locale(\"ja\",{buttonText:{month:\"月\",week:\"週\",day:\"日\",list:\"予定リスト\"},allDayText:\"終日\",eventLimitText:function(e){return\"他 \"+e+\" 件\"},noEventsMessage:\"イベントが表示されないように\"})},146:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ja\",{months:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日\".split(\"_\"),weekdaysShort:\"日_月_火_水_木_金_土\".split(\"_\"),weekdaysMin:\"日_月_火_水_木_金_土\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日 HH:mm\",LLLL:\"YYYY年M月D日 HH:mm dddd\",l:\"YYYY/MM/DD\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日 HH:mm dddd\"},meridiemParse:/午前|午後/i,isPM:function(e){return\"午後\"===e},meridiem:function(e,t,n){return e<12?\"午前\":\"午後\"},calendar:{sameDay:\"[今日] LT\",nextDay:\"[明日] LT\",nextWeek:\"[来週]dddd LT\",lastDay:\"[昨日] LT\",lastWeek:\"[前週]dddd LT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}日/,ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"DDD\":return e+\"日\";default:return e}},relativeTime:{future:\"%s後\",past:\"%s前\",s:\"数秒\",ss:\"%d秒\",m:\"1分\",mm:\"%d分\",h:\"1時間\",hh:\"%d時間\",d:\"1日\",dd:\"%d日\",M:\"1ヶ月\",MM:\"%dヶ月\",y:\"1年\",yy:\"%d年\"}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ka.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=147)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},147:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(148);var r=n(1);r.datepickerLocale(\"ka\",\"ka\",{closeText:\"დახურვა\",prevText:\"წინა\",nextText:\"შემდეგი\",currentText:\"დღეს\",monthNames:[\"იანვარი\",\"თებერვალი\",\"მარტი\",\"აპრილი\",\"მაისი\",\"ივნისი\",\"ივლისი\",\"აგვისტო\",\"სექტემბერი\",\"ოქტომბერი\",\"ნოემბერი\",\"დეკემბერი\"],monthNamesShort:[\"იან\",\"თებ\",\"მარ\",\"აპრ\",\"მაი\",\"ივნ\",\"ივლ\",\"აგვ\",\"სექ\",\"ოქტ\",\"ნოე\",\"დეკ\"],dayNames:[\"კვირა\",\"ორშაბათი\",\"სამშაბათი\",\"ოთხშაბათი\",\"ხუთშაბათი\",\"პარასკევი\",\"შაბათი\"],dayNamesShort:[\"კვი\",\"ორშ\",\"სამ\",\"ოთხ\",\"ხუთ\",\"პარ\",\"შაბ\"],dayNamesMin:[\"კვ\",\"ორ\",\"სა\",\"ოთ\",\"ხუ\",\"პა\",\"შა\"],weekHeader:\"კვ\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"ka\",{buttonText:{month:\"თვე\",week:\"კვირა\",day:\"დღე\",list:\"დღის წესრიგი\"},allDayText:\"მთელი დღე\",eventLimitText:function(e){return\"+ კიდევ \"+e},noEventsMessage:\"ღონისძიებები არ არის\"})},148:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ka\",{months:{standalone:\"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი\".split(\"_\"),format:\"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს\".split(\"_\")},monthsShort:\"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ\".split(\"_\"),weekdays:{standalone:\"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი\".split(\"_\"),format:\"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს\".split(\"_\"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:\"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ\".split(\"_\"),weekdaysMin:\"კვ_ორ_სა_ოთ_ხუ_პა_შა\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[დღეს] LT[-ზე]\",nextDay:\"[ხვალ] LT[-ზე]\",lastDay:\"[გუშინ] LT[-ზე]\",nextWeek:\"[შემდეგ] dddd LT[-ზე]\",lastWeek:\"[წინა] dddd LT-ზე\",sameElse:\"L\"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,\"ში\"):e+\"ში\"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,\"ის უკან\"):/წელი/.test(e)?e.replace(/წელი$/,\"წლის უკან\"):void 0},s:\"რამდენიმე წამი\",ss:\"%d წამი\",m:\"წუთი\",mm:\"%d წუთი\",h:\"საათი\",hh:\"%d საათი\",d:\"დღე\",dd:\"%d დღე\",M:\"თვე\",MM:\"%d თვე\",y:\"წელი\",yy:\"%d წელი\"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+\"-ლი\":e<20||e<=100&&e%20==0||e%100==0?\"მე-\"+e:e+\"-ე\"},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/kk.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=149)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},149:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(150);var r=n(1);r.datepickerLocale(\"kk\",\"kk\",{closeText:\"Жабу\",prevText:\"&#x3C;Алдыңғы\",nextText:\"Келесі&#x3E;\",currentText:\"Бүгін\",monthNames:[\"Қаңтар\",\"Ақпан\",\"Наурыз\",\"Сәуір\",\"Мамыр\",\"Маусым\",\"Шілде\",\"Тамыз\",\"Қыркүйек\",\"Қазан\",\"Қараша\",\"Желтоқсан\"],monthNamesShort:[\"Қаң\",\"Ақп\",\"Нау\",\"Сәу\",\"Мам\",\"Мау\",\"Шіл\",\"Там\",\"Қыр\",\"Қаз\",\"Қар\",\"Жел\"],dayNames:[\"Жексенбі\",\"Дүйсенбі\",\"Сейсенбі\",\"Сәрсенбі\",\"Бейсенбі\",\"Жұма\",\"Сенбі\"],dayNamesShort:[\"жкс\",\"дсн\",\"ссн\",\"срс\",\"бсн\",\"жма\",\"снб\"],dayNamesMin:[\"Жк\",\"Дс\",\"Сс\",\"Ср\",\"Бс\",\"Жм\",\"Сн\"],weekHeader:\"Не\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"kk\",{buttonText:{month:\"Ай\",week:\"Апта\",day:\"Күн\",list:\"Күн тәртібі\"},allDayText:\"Күні бойы\",eventLimitText:function(e){return\"+ тағы \"+e},noEventsMessage:\"Көрсету үшін оқиғалар жоқ\"})},150:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={0:\"-ші\",1:\"-ші\",2:\"-ші\",3:\"-ші\",4:\"-ші\",5:\"-ші\",6:\"-шы\",7:\"-ші\",8:\"-ші\",9:\"-шы\",10:\"-шы\",20:\"-шы\",30:\"-шы\",40:\"-шы\",50:\"-ші\",60:\"-шы\",70:\"-ші\",80:\"-ші\",90:\"-шы\",100:\"-ші\"};return e.defineLocale(\"kk\",{months:\"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан\".split(\"_\"),monthsShort:\"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел\".split(\"_\"),weekdays:\"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі\".split(\"_\"),weekdaysShort:\"жек_дүй_сей_сәр_бей_жұм_сен\".split(\"_\"),weekdaysMin:\"жк_дй_сй_ср_бй_жм_сн\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Бүгін сағат] LT\",nextDay:\"[Ертең сағат] LT\",nextWeek:\"dddd [сағат] LT\",lastDay:\"[Кеше сағат] LT\",lastWeek:\"[Өткен аптаның] dddd [сағат] LT\",sameElse:\"L\"},relativeTime:{future:\"%s ішінде\",past:\"%s бұрын\",s:\"бірнеше секунд\",ss:\"%d секунд\",m:\"бір минут\",mm:\"%d минут\",h:\"бір сағат\",hh:\"%d сағат\",d:\"бір күн\",dd:\"%d күн\",M:\"бір ай\",MM:\"%d ай\",y:\"бір жыл\",yy:\"%d жыл\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ші|шы)/,ordinal:function(e){var n=e%10,r=e>=100?100:null;return e+(t[e]||t[n]||t[r])},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ko.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=151)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},151:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(152);var r=n(1);r.datepickerLocale(\"ko\",\"ko\",{closeText:\"닫기\",prevText:\"이전달\",nextText:\"다음달\",currentText:\"오늘\",monthNames:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"],monthNamesShort:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"],dayNames:[\"일요일\",\"월요일\",\"화요일\",\"수요일\",\"목요일\",\"금요일\",\"토요일\"],dayNamesShort:[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"],dayNamesMin:[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"],weekHeader:\"주\",dateFormat:\"yy. m. d.\",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"년\"}),r.locale(\"ko\",{buttonText:{month:\"월\",week:\"주\",day:\"일\",list:\"일정목록\"},allDayText:\"종일\",eventLimitText:\"개\",noEventsMessage:\"일정이 없습니다\"})},152:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"ko\",{months:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),monthsShort:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),weekdays:\"일요일_월요일_화요일_수요일_목요일_금요일_토요일\".split(\"_\"),weekdaysShort:\"일_월_화_수_목_금_토\".split(\"_\"),weekdaysMin:\"일_월_화_수_목_금_토\".split(\"_\"),longDateFormat:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY년 MMMM D일\",LLL:\"YYYY년 MMMM D일 A h:mm\",LLLL:\"YYYY년 MMMM D일 dddd A h:mm\",l:\"YYYY.MM.DD.\",ll:\"YYYY년 MMMM D일\",lll:\"YYYY년 MMMM D일 A h:mm\",llll:\"YYYY년 MMMM D일 dddd A h:mm\"},calendar:{sameDay:\"오늘 LT\",nextDay:\"내일 LT\",nextWeek:\"dddd LT\",lastDay:\"어제 LT\",lastWeek:\"지난주 dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s 후\",past:\"%s 전\",s:\"몇 초\",ss:\"%d초\",m:\"1분\",mm:\"%d분\",h:\"한 시간\",hh:\"%d시간\",d:\"하루\",dd:\"%d일\",M:\"한 달\",MM:\"%d달\",y:\"일 년\",yy:\"%d년\"},dayOfMonthOrdinalParse:/\\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"DDD\":return e+\"일\";case\"M\":return e+\"월\";case\"w\":case\"W\":return e+\"주\";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return\"오후\"===e},meridiem:function(e,t,n){return e<12?\"오전\":\"오후\"}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/lb.js",
    "content": "!function(e,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],n):\"object\"==typeof exports?n(require(\"moment\"),require(\"fullcalendar\")):n(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p=\"\",n(n.s=153)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},153:function(e,n,t){Object.defineProperty(n,\"__esModule\",{value:!0}),t(154);var r=t(1);r.datepickerLocale(\"lb\",\"lb\",{closeText:\"Fäerdeg\",prevText:\"Zréck\",nextText:\"Weider\",currentText:\"Haut\",monthNames:[\"Januar\",\"Februar\",\"Mäerz\",\"Abrëll\",\"Mee\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mäe\",\"Abr\",\"Mee\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonndeg\",\"Méindeg\",\"Dënschdeg\",\"Mëttwoch\",\"Donneschdeg\",\"Freideg\",\"Samschdeg\"],dayNamesShort:[\"Son\",\"Méi\",\"Dën\",\"Mët\",\"Don\",\"Fre\",\"Sam\"],dayNamesMin:[\"So\",\"Mé\",\"Dë\",\"Më\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"W\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"lb\",{buttonText:{month:\"Mount\",week:\"Woch\",day:\"Dag\",list:\"Terminiwwersiicht\"},allDayText:\"Ganzen Dag\",eventLimitText:\"méi\",noEventsMessage:\"Nee Evenementer ze affichéieren\"})},154:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e,n,t,r){var o={m:[\"eng Minutt\",\"enger Minutt\"],h:[\"eng Stonn\",\"enger Stonn\"],d:[\"een Dag\",\"engem Dag\"],M:[\"ee Mount\",\"engem Mount\"],y:[\"ee Joer\",\"engem Joer\"]};return n?o[t][0]:o[t][1]}function t(e){return o(e.substr(0,e.indexOf(\" \")))?\"a \"+e:\"an \"+e}function r(e){return o(e.substr(0,e.indexOf(\" \")))?\"viru \"+e:\"virun \"+e}function o(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var n=e%10,t=e/10;return o(0===n?t:n)}if(e<1e4){for(;e>=10;)e/=10;return o(e)}return e/=1e3,o(e)}return e.defineLocale(\"lb\",{months:\"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg\".split(\"_\"),weekdaysShort:\"So._Mé._Dë._Më._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mé_Dë_Më_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm [Auer]\",LTS:\"H:mm:ss [Auer]\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm [Auer]\",LLLL:\"dddd, D. MMMM YYYY H:mm [Auer]\"},calendar:{sameDay:\"[Haut um] LT\",sameElse:\"L\",nextDay:\"[Muer um] LT\",nextWeek:\"dddd [um] LT\",lastDay:\"[Gëschter um] LT\",lastWeek:function(){switch(this.day()){case 2:case 4:return\"[Leschten] dddd [um] LT\";default:return\"[Leschte] dddd [um] LT\"}}},relativeTime:{future:t,past:r,s:\"e puer Sekonnen\",ss:\"%d Sekonnen\",m:n,mm:\"%d Minutten\",h:n,hh:\"%d Stonnen\",d:n,dd:\"%d Deeg\",M:n,MM:\"%d Méint\",y:n,yy:\"%d Joer\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/lt.js",
    "content": "!function(e,i){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=i(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],i):\"object\"==typeof exports?i(require(\"moment\"),require(\"fullcalendar\")):i(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,i){return function(e){function i(a){if(n[a])return n[a].exports;var t=n[a]={i:a,l:!1,exports:{}};return e[a].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n={};return i.m=e,i.c=n,i.d=function(e,n,a){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,\"a\",n),n},i.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},i.p=\"\",i(i.s=155)}({0:function(i,n){i.exports=e},1:function(e,n){e.exports=i},155:function(e,i,n){Object.defineProperty(i,\"__esModule\",{value:!0}),n(156);var a=n(1);a.datepickerLocale(\"lt\",\"lt\",{closeText:\"Uždaryti\",prevText:\"&#x3C;Atgal\",nextText:\"Pirmyn&#x3E;\",currentText:\"Šiandien\",monthNames:[\"Sausis\",\"Vasaris\",\"Kovas\",\"Balandis\",\"Gegužė\",\"Birželis\",\"Liepa\",\"Rugpjūtis\",\"Rugsėjis\",\"Spalis\",\"Lapkritis\",\"Gruodis\"],monthNamesShort:[\"Sau\",\"Vas\",\"Kov\",\"Bal\",\"Geg\",\"Bir\",\"Lie\",\"Rugp\",\"Rugs\",\"Spa\",\"Lap\",\"Gru\"],dayNames:[\"sekmadienis\",\"pirmadienis\",\"antradienis\",\"trečiadienis\",\"ketvirtadienis\",\"penktadienis\",\"šeštadienis\"],dayNamesShort:[\"sek\",\"pir\",\"ant\",\"tre\",\"ket\",\"pen\",\"šeš\"],dayNamesMin:[\"Se\",\"Pr\",\"An\",\"Tr\",\"Ke\",\"Pe\",\"Še\"],weekHeader:\"SAV\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"\"}),a.locale(\"lt\",{buttonText:{month:\"Mėnuo\",week:\"Savaitė\",day:\"Diena\",list:\"Darbotvarkė\"},allDayText:\"Visą dieną\",eventLimitText:\"daugiau\",noEventsMessage:\"Nėra įvykių rodyti\"})},156:function(e,i,n){!function(e,i){i(n(0))}(0,function(e){function i(e,i,n,a){return i?\"kelios sekundės\":a?\"kelių sekundžių\":\"kelias sekundes\"}function n(e,i,n,a){return i?t(n)[0]:a?t(n)[1]:t(n)[2]}function a(e){return e%10==0||e>10&&e<20}function t(e){return r[e].split(\"_\")}function s(e,i,s,r){var d=e+\" \";return 1===e?d+n(e,i,s[0],r):i?d+(a(e)?t(s)[1]:t(s)[0]):r?d+t(s)[1]:d+(a(e)?t(s)[1]:t(s)[2])}var r={ss:\"sekundė_sekundžių_sekundes\",m:\"minutė_minutės_minutę\",mm:\"minutės_minučių_minutes\",h:\"valanda_valandos_valandą\",hh:\"valandos_valandų_valandas\",d:\"diena_dienos_dieną\",dd:\"dienos_dienų_dienas\",M:\"mėnuo_mėnesio_mėnesį\",MM:\"mėnesiai_mėnesių_mėnesius\",y:\"metai_metų_metus\",yy:\"metai_metų_metus\"};return e.defineLocale(\"lt\",{months:{format:\"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio\".split(\"_\"),standalone:\"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis\".split(\"_\"),isFormat:/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/},monthsShort:\"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd\".split(\"_\"),weekdays:{format:\"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį\".split(\"_\"),standalone:\"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis\".split(\"_\"),isFormat:/dddd HH:mm/},weekdaysShort:\"Sek_Pir_Ant_Tre_Ket_Pen_Šeš\".split(\"_\"),weekdaysMin:\"S_P_A_T_K_Pn_Š\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY [m.] MMMM D [d.]\",LLL:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",LLLL:\"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]\",l:\"YYYY-MM-DD\",ll:\"YYYY [m.] MMMM D [d.]\",lll:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",llll:\"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]\"},calendar:{sameDay:\"[Šiandien] LT\",nextDay:\"[Rytoj] LT\",nextWeek:\"dddd LT\",lastDay:\"[Vakar] LT\",lastWeek:\"[Praėjusį] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"po %s\",past:\"prieš %s\",s:i,ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\\d{1,2}-oji/,ordinal:function(e){return e+\"-oji\"},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/lv.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(s){if(n[s])return n[s].exports;var i=n[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,s){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=157)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},157:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(158);var s=n(1);s.datepickerLocale(\"lv\",\"lv\",{closeText:\"Aizvērt\",prevText:\"Iepr.\",nextText:\"Nāk.\",currentText:\"Šodien\",monthNames:[\"Janvāris\",\"Februāris\",\"Marts\",\"Aprīlis\",\"Maijs\",\"Jūnijs\",\"Jūlijs\",\"Augusts\",\"Septembris\",\"Oktobris\",\"Novembris\",\"Decembris\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Jūn\",\"Jūl\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"svētdiena\",\"pirmdiena\",\"otrdiena\",\"trešdiena\",\"ceturtdiena\",\"piektdiena\",\"sestdiena\"],dayNamesShort:[\"svt\",\"prm\",\"otr\",\"tre\",\"ctr\",\"pkt\",\"sst\"],dayNamesMin:[\"Sv\",\"Pr\",\"Ot\",\"Tr\",\"Ct\",\"Pk\",\"Ss\"],weekHeader:\"Ned.\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),s.locale(\"lv\",{buttonText:{month:\"Mēnesis\",week:\"Nedēļa\",day:\"Diena\",list:\"Dienas kārtība\"},allDayText:\"Visu dienu\",eventLimitText:function(e){return\"+vēl \"+e},noEventsMessage:\"Nav notikumu\"})},158:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function n(e,n,s){return e+\" \"+t(a[s],e,n)}function s(e,n,s){return t(a[s],e,n)}function i(e,t){return t?\"dažas sekundes\":\"dažām sekundēm\"}var a={ss:\"sekundes_sekundēm_sekunde_sekundes\".split(\"_\"),m:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),mm:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),h:\"stundas_stundām_stunda_stundas\".split(\"_\"),hh:\"stundas_stundām_stunda_stundas\".split(\"_\"),d:\"dienas_dienām_diena_dienas\".split(\"_\"),dd:\"dienas_dienām_diena_dienas\".split(\"_\"),M:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),MM:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),y:\"gada_gadiem_gads_gadi\".split(\"_\"),yy:\"gada_gadiem_gads_gadi\".split(\"_\")};return e.defineLocale(\"lv\",{months:\"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena\".split(\"_\"),weekdaysShort:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysMin:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY.\",LL:\"YYYY. [gada] D. MMMM\",LLL:\"YYYY. [gada] D. MMMM, HH:mm\",LLLL:\"YYYY. [gada] D. MMMM, dddd, HH:mm\"},calendar:{sameDay:\"[Šodien pulksten] LT\",nextDay:\"[Rīt pulksten] LT\",nextWeek:\"dddd [pulksten] LT\",lastDay:\"[Vakar pulksten] LT\",lastWeek:\"[Pagājušā] dddd [pulksten] LT\",sameElse:\"L\"},relativeTime:{future:\"pēc %s\",past:\"pirms %s\",s:i,ss:n,m:s,mm:n,h:s,hh:n,d:s,dd:n,M:s,MM:n,y:s,yy:n},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/mk.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=159)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},159:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(160);var r=n(1);r.datepickerLocale(\"mk\",\"mk\",{closeText:\"Затвори\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Денес\",monthNames:[\"Јануари\",\"Февруари\",\"Март\",\"Април\",\"Мај\",\"Јуни\",\"Јули\",\"Август\",\"Септември\",\"Октомври\",\"Ноември\",\"Декември\"],monthNamesShort:[\"Јан\",\"Фев\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Ное\",\"Дек\"],dayNames:[\"Недела\",\"Понеделник\",\"Вторник\",\"Среда\",\"Четврток\",\"Петок\",\"Сабота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Вто\",\"Сре\",\"Чет\",\"Пет\",\"Саб\"],dayNamesMin:[\"Не\",\"По\",\"Вт\",\"Ср\",\"Че\",\"Пе\",\"Са\"],weekHeader:\"Сед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"mk\",{buttonText:{month:\"Месец\",week:\"Недела\",day:\"Ден\",list:\"График\"},allDayText:\"Цел ден\",eventLimitText:function(e){return\"+повеќе \"+e},noEventsMessage:\"Нема настани за прикажување\"})},160:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"mk\",{months:\"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"недела_понеделник_вторник_среда_четврток_петок_сабота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сре_чет_пет_саб\".split(\"_\"),weekdaysMin:\"нe_пo_вт_ср_че_пе_сa\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Денес во] LT\",nextDay:\"[Утре во] LT\",nextWeek:\"[Во] dddd [во] LT\",lastDay:\"[Вчера во] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[Изминатата] dddd [во] LT\";case 1:case 2:case 4:case 5:return\"[Изминатиот] dddd [во] LT\"}},sameElse:\"L\"},relativeTime:{future:\"после %s\",past:\"пред %s\",s:\"неколку секунди\",ss:\"%d секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дена\",M:\"месец\",MM:\"%d месеци\",y:\"година\",yy:\"%d години\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+\"-ев\":0===n?e+\"-ен\":n>10&&n<20?e+\"-ти\":1===t?e+\"-ви\":2===t?e+\"-ри\":7===t||8===t?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ms-my.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=161)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},161:function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(162);var n=t(1);n.datepickerLocale(\"ms-my\",\"ms\",{closeText:\"Tutup\",prevText:\"&#x3C;Sebelum\",nextText:\"Selepas&#x3E;\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Mac\",\"April\",\"Mei\",\"Jun\",\"Julai\",\"Ogos\",\"September\",\"Oktober\",\"November\",\"Disember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mac\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Ogo\",\"Sep\",\"Okt\",\"Nov\",\"Dis\"],dayNames:[\"Ahad\",\"Isnin\",\"Selasa\",\"Rabu\",\"Khamis\",\"Jumaat\",\"Sabtu\"],dayNamesShort:[\"Aha\",\"Isn\",\"Sel\",\"Rab\",\"kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"Is\",\"Se\",\"Ra\",\"Kh\",\"Ju\",\"Sa\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ms-my\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayText:\"Sepanjang hari\",eventLimitText:function(e){return\"masih ada \"+e+\" acara\"},noEventsMessage:\"Tiada peristiwa untuk dipaparkan\"})},162:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ms-my\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"tengahari\"===a?e>=11?e:e+12:\"petang\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"tengahari\":e<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",ss:\"%d saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ms.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=163)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},163:function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(164);var n=t(1);n.datepickerLocale(\"ms\",\"ms\",{closeText:\"Tutup\",prevText:\"&#x3C;Sebelum\",nextText:\"Selepas&#x3E;\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Mac\",\"April\",\"Mei\",\"Jun\",\"Julai\",\"Ogos\",\"September\",\"Oktober\",\"November\",\"Disember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mac\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Ogo\",\"Sep\",\"Okt\",\"Nov\",\"Dis\"],dayNames:[\"Ahad\",\"Isnin\",\"Selasa\",\"Rabu\",\"Khamis\",\"Jumaat\",\"Sabtu\"],dayNamesShort:[\"Aha\",\"Isn\",\"Sel\",\"Rab\",\"kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"Is\",\"Se\",\"Ra\",\"Kh\",\"Ju\",\"Sa\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ms\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayText:\"Sepanjang hari\",eventLimitText:function(e){return\"masih ada \"+e+\" acara\"},noEventsMessage:\"Tiada peristiwa untuk dipaparkan\"})},164:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ms\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"tengahari\"===a?e>=11?e:e+12:\"petang\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"tengahari\":e<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",ss:\"%d saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/nb.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=165)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},165:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(166);var r=n(1);r.datepickerLocale(\"nb\",\"nb\",{closeText:\"Lukk\",prevText:\"&#xAB;Forrige\",nextText:\"Neste&#xBB;\",currentText:\"I dag\",monthNames:[\"januar\",\"februar\",\"mars\",\"april\",\"mai\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"desember\"],monthNamesShort:[\"jan\",\"feb\",\"mar\",\"apr\",\"mai\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"des\"],dayNamesShort:[\"søn\",\"man\",\"tir\",\"ons\",\"tor\",\"fre\",\"lør\"],dayNames:[\"søndag\",\"mandag\",\"tirsdag\",\"onsdag\",\"torsdag\",\"fredag\",\"lørdag\"],dayNamesMin:[\"sø\",\"ma\",\"ti\",\"on\",\"to\",\"fr\",\"lø\"],weekHeader:\"Uke\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"nb\",{buttonText:{month:\"Måned\",week:\"Uke\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dagen\",eventLimitText:\"til\",noEventsMessage:\"Ingen hendelser å vise\"})},166:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"nb\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"sø._ma._ti._on._to._fr._lø.\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[forrige] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"noen sekunder\",ss:\"%d sekunder\",m:\"ett minutt\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dager\",M:\"en måned\",MM:\"%d måneder\",y:\"ett år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/nl-be.js",
    "content": "!function(e,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],n):\"object\"==typeof exports?n(require(\"moment\"),require(\"fullcalendar\")):n(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,\"a\",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p=\"\",n(n.s=167)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},167:function(e,n,a){Object.defineProperty(n,\"__esModule\",{value:!0}),a(168);var t=a(1);t.datepickerLocale(\"nl-be\",\"nl-BE\",{closeText:\"Sluiten\",prevText:\"←\",nextText:\"→\",currentText:\"Vandaag\",monthNames:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthNamesShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],dayNames:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"],dayNamesShort:[\"zon\",\"maa\",\"din\",\"woe\",\"don\",\"vri\",\"zat\"],dayNamesMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"nl-be\",{buttonText:{month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dag\",eventLimitText:\"extra\",noEventsMessage:\"Geen evenementen om te laten zien\"})},168:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){var n=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),a=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),t=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;return e.defineLocale(\"nl-be\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?a[e.month()]:n[e.month()]:n},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"zo_ma_di_wo_do_vr_za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",ss:\"%d seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/nl.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var n={};return a.m=e,a.c=n,a.d=function(e,n,t){a.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,\"a\",n),n},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=169)}({0:function(a,n){a.exports=e},1:function(e,n){e.exports=a},169:function(e,a,n){Object.defineProperty(a,\"__esModule\",{value:!0}),n(170);var t=n(1);t.datepickerLocale(\"nl\",\"nl\",{closeText:\"Sluiten\",prevText:\"←\",nextText:\"→\",currentText:\"Vandaag\",monthNames:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthNamesShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],dayNames:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"],dayNamesShort:[\"zon\",\"maa\",\"din\",\"woe\",\"don\",\"vri\",\"zat\"],dayNamesMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],weekHeader:\"Wk\",dateFormat:\"dd-mm-yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"nl\",{buttonText:{year:\"Jaar\",month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dag\",eventLimitText:\"extra\",noEventsMessage:\"Geen evenementen om te laten zien\"})},170:function(e,a,n){!function(e,a){a(n(0))}(0,function(e){var a=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),n=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),t=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;return e.defineLocale(\"nl\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?n[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"zo_ma_di_wo_do_vr_za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",ss:\"%d seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/nn.js",
    "content": "!function(e,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],n):\"object\"==typeof exports?n(require(\"moment\"),require(\"fullcalendar\")):n(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,n){return function(e){function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p=\"\",n(n.s=171)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},171:function(e,n,t){Object.defineProperty(n,\"__esModule\",{value:!0}),t(172);var a=t(1);a.datepickerLocale(\"nn\",\"nn\",{closeText:\"Lukk\",prevText:\"&#xAB;Førre\",nextText:\"Neste&#xBB;\",currentText:\"I dag\",monthNames:[\"januar\",\"februar\",\"mars\",\"april\",\"mai\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"desember\"],monthNamesShort:[\"jan\",\"feb\",\"mar\",\"apr\",\"mai\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"des\"],dayNamesShort:[\"sun\",\"mån\",\"tys\",\"ons\",\"tor\",\"fre\",\"lau\"],dayNames:[\"sundag\",\"måndag\",\"tysdag\",\"onsdag\",\"torsdag\",\"fredag\",\"laurdag\"],dayNamesMin:[\"su\",\"må\",\"ty\",\"on\",\"to\",\"fr\",\"la\"],weekHeader:\"Veke\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),a.locale(\"nn\",{buttonText:{month:\"Månad\",week:\"Veke\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Heile dagen\",eventLimitText:\"til\",noEventsMessage:\"Ingen hendelser å vise\"})},172:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){return e.defineLocale(\"nn\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag\".split(\"_\"),weekdaysShort:\"sun_mån_tys_ons_tor_fre_lau\".split(\"_\"),weekdaysMin:\"su_må_ty_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[I dag klokka] LT\",nextDay:\"[I morgon klokka] LT\",nextWeek:\"dddd [klokka] LT\",lastDay:\"[I går klokka] LT\",lastWeek:\"[Føregåande] dddd [klokka] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s sidan\",s:\"nokre sekund\",ss:\"%d sekund\",m:\"eit minutt\",mm:\"%d minutt\",h:\"ein time\",hh:\"%d timar\",d:\"ein dag\",dd:\"%d dagar\",M:\"ein månad\",MM:\"%d månader\",y:\"eit år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/pl.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=173)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},173:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(174);var n=r(1);n.datepickerLocale(\"pl\",\"pl\",{closeText:\"Zamknij\",prevText:\"&#x3C;Poprzedni\",nextText:\"Następny&#x3E;\",currentText:\"Dziś\",monthNames:[\"Styczeń\",\"Luty\",\"Marzec\",\"Kwiecień\",\"Maj\",\"Czerwiec\",\"Lipiec\",\"Sierpień\",\"Wrzesień\",\"Październik\",\"Listopad\",\"Grudzień\"],monthNamesShort:[\"Sty\",\"Lu\",\"Mar\",\"Kw\",\"Maj\",\"Cze\",\"Lip\",\"Sie\",\"Wrz\",\"Pa\",\"Lis\",\"Gru\"],dayNames:[\"Niedziela\",\"Poniedziałek\",\"Wtorek\",\"Środa\",\"Czwartek\",\"Piątek\",\"Sobota\"],dayNamesShort:[\"Nie\",\"Pn\",\"Wt\",\"Śr\",\"Czw\",\"Pt\",\"So\"],dayNamesMin:[\"N\",\"Pn\",\"Wt\",\"Śr\",\"Cz\",\"Pt\",\"So\"],weekHeader:\"Tydz\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"pl\",{buttonText:{month:\"Miesiąc\",week:\"Tydzień\",day:\"Dzień\",list:\"Plan dnia\"},allDayText:\"Cały dzień\",eventLimitText:\"więcej\",noEventsMessage:\"Brak wydarzeń do wyświetlenia\"})},174:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function r(e,r,n){var i=e+\" \";switch(n){case\"ss\":return i+(t(e)?\"sekundy\":\"sekund\");case\"m\":return r?\"minuta\":\"minutę\";case\"mm\":return i+(t(e)?\"minuty\":\"minut\");case\"h\":return r?\"godzina\":\"godzinę\";case\"hh\":return i+(t(e)?\"godziny\":\"godzin\");case\"MM\":return i+(t(e)?\"miesiące\":\"miesięcy\");case\"yy\":return i+(t(e)?\"lata\":\"lat\")}}var n=\"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień\".split(\"_\"),i=\"stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia\".split(\"_\");return e.defineLocale(\"pl\",{months:function(e,t){return e?\"\"===t?\"(\"+i[e.month()]+\"|\"+n[e.month()]+\")\":/D MMMM/.test(t)?i[e.month()]:n[e.month()]:n},monthsShort:\"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru\".split(\"_\"),weekdays:\"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota\".split(\"_\"),weekdaysShort:\"ndz_pon_wt_śr_czw_pt_sob\".split(\"_\"),weekdaysMin:\"Nd_Pn_Wt_Śr_Cz_Pt_So\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Dziś o] LT\",nextDay:\"[Jutro o] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[W niedzielę o] LT\";case 2:return\"[We wtorek o] LT\";case 3:return\"[W środę o] LT\";case 6:return\"[W sobotę o] LT\";default:return\"[W] dddd [o] LT\"}},lastDay:\"[Wczoraj o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[W zeszłą niedzielę o] LT\";case 3:return\"[W zeszłą środę o] LT\";case 6:return\"[W zeszłą sobotę o] LT\";default:return\"[W zeszły] dddd [o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"%s temu\",s:\"kilka sekund\",ss:r,m:r,mm:r,h:r,hh:r,d:\"1 dzień\",dd:\"%d dni\",M:\"miesiąc\",MM:r,y:\"rok\",yy:r},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/pt-br.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(o[r])return o[r].exports;var a=o[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,r){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,\"a\",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=175)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},175:function(e,t,o){Object.defineProperty(t,\"__esModule\",{value:!0}),o(176);var r=o(1);r.datepickerLocale(\"pt-br\",\"pt-BR\",{closeText:\"Fechar\",prevText:\"&#x3C;Anterior\",nextText:\"Próximo&#x3E;\",currentText:\"Hoje\",monthNames:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],monthNamesShort:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],dayNames:[\"Domingo\",\"Segunda-feira\",\"Terça-feira\",\"Quarta-feira\",\"Quinta-feira\",\"Sexta-feira\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],dayNamesMin:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"pt-br\",{buttonText:{month:\"Mês\",week:\"Semana\",day:\"Dia\",list:\"Compromissos\"},allDayText:\"dia inteiro\",eventLimitText:function(e){return\"mais +\"+e},noEventsMessage:\"Não há eventos para mostrar\"})},176:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale(\"pt-br\",{months:\"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro\".split(\"_\"),monthsShort:\"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez\".split(\"_\"),weekdays:\"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Do_2ª_3ª_4ª_5ª_6ª_Sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY [às] HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY [às] HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"há %s\",s:\"poucos segundos\",ss:\"%d segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\"})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/pt.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(o[a])return o[a].exports;var r=o[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,a){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,\"a\",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=177)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},177:function(e,t,o){Object.defineProperty(t,\"__esModule\",{value:!0}),o(178);var a=o(1);a.datepickerLocale(\"pt\",\"pt\",{closeText:\"Fechar\",prevText:\"Anterior\",nextText:\"Seguinte\",currentText:\"Hoje\",monthNames:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],monthNamesShort:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],dayNames:[\"Domingo\",\"Segunda-feira\",\"Terça-feira\",\"Quarta-feira\",\"Quinta-feira\",\"Sexta-feira\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],dayNamesMin:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],weekHeader:\"Sem\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),a.locale(\"pt\",{buttonText:{month:\"Mês\",week:\"Semana\",day:\"Dia\",list:\"Agenda\"},allDayText:\"Todo o dia\",eventLimitText:\"mais\",noEventsMessage:\"Não há eventos para mostrar\"})},178:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale(\"pt\",{months:\"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro\".split(\"_\"),monthsShort:\"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez\".split(\"_\"),weekdays:\"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Do_2ª_3ª_4ª_5ª_6ª_Sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"há %s\",s:\"segundos\",ss:\"%d segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ro.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=179)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},179:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(180);var i=n(1);i.datepickerLocale(\"ro\",\"ro\",{closeText:\"Închide\",prevText:\"&#xAB; Luna precedentă\",nextText:\"Luna următoare &#xBB;\",currentText:\"Azi\",monthNames:[\"Ianuarie\",\"Februarie\",\"Martie\",\"Aprilie\",\"Mai\",\"Iunie\",\"Iulie\",\"August\",\"Septembrie\",\"Octombrie\",\"Noiembrie\",\"Decembrie\"],monthNamesShort:[\"Ian\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Iun\",\"Iul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Duminică\",\"Luni\",\"Marţi\",\"Miercuri\",\"Joi\",\"Vineri\",\"Sâmbătă\"],dayNamesShort:[\"Dum\",\"Lun\",\"Mar\",\"Mie\",\"Joi\",\"Vin\",\"Sâm\"],dayNamesMin:[\"Du\",\"Lu\",\"Ma\",\"Mi\",\"Jo\",\"Vi\",\"Sâ\"],weekHeader:\"Săpt\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),i.locale(\"ro\",{buttonText:{prev:\"precedentă\",next:\"următoare\",month:\"Lună\",week:\"Săptămână\",day:\"Zi\",list:\"Agendă\"},allDayText:\"Toată ziua\",eventLimitText:function(e){return\"+alte \"+e},noEventsMessage:\"Nu există evenimente de afișat\"})},180:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n){var i={ss:\"secunde\",mm:\"minute\",hh:\"ore\",dd:\"zile\",MM:\"luni\",yy:\"ani\"},r=\" \";return(e%100>=20||e>=100&&e%100==0)&&(r=\" de \"),e+r+i[n]}return e.defineLocale(\"ro\",{months:\"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie\".split(\"_\"),monthsShort:\"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"duminică_luni_marți_miercuri_joi_vineri_sâmbătă\".split(\"_\"),weekdaysShort:\"Dum_Lun_Mar_Mie_Joi_Vin_Sâm\".split(\"_\"),weekdaysMin:\"Du_Lu_Ma_Mi_Jo_Vi_Sâ\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[azi la] LT\",nextDay:\"[mâine la] LT\",nextWeek:\"dddd [la] LT\",lastDay:\"[ieri la] LT\",lastWeek:\"[fosta] dddd [la] LT\",sameElse:\"L\"},relativeTime:{future:\"peste %s\",past:\"%s în urmă\",s:\"câteva secunde\",ss:t,m:\"un minut\",mm:t,h:\"o oră\",hh:t,d:\"o zi\",dd:t,M:\"o lună\",MM:t,y:\"un an\",yy:t},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/ru.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var s=r[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=181)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},181:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(182);var n=r(1);n.datepickerLocale(\"ru\",\"ru\",{closeText:\"Закрыть\",prevText:\"&#x3C;Пред\",nextText:\"След&#x3E;\",currentText:\"Сегодня\",monthNames:[\"Январь\",\"Февраль\",\"Март\",\"Апрель\",\"Май\",\"Июнь\",\"Июль\",\"Август\",\"Сентябрь\",\"Октябрь\",\"Ноябрь\",\"Декабрь\"],monthNamesShort:[\"Янв\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Июн\",\"Июл\",\"Авг\",\"Сен\",\"Окт\",\"Ноя\",\"Дек\"],dayNames:[\"воскресенье\",\"понедельник\",\"вторник\",\"среда\",\"четверг\",\"пятница\",\"суббота\"],dayNamesShort:[\"вск\",\"пнд\",\"втр\",\"срд\",\"чтв\",\"птн\",\"сбт\"],dayNamesMin:[\"Вс\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],weekHeader:\"Нед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ru\",{buttonText:{month:\"Месяц\",week:\"Неделя\",day:\"День\",list:\"Повестка дня\"},allDayText:\"Весь день\",eventLimitText:function(e){return\"+ ещё \"+e},noEventsMessage:\"Нет событий для отображения\"})},182:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e,t){var r=e.split(\"_\");return t%10==1&&t%100!=11?r[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?r[1]:r[2]}function r(e,r,n){var s={ss:r?\"секунда_секунды_секунд\":\"секунду_секунды_секунд\",mm:r?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"};return\"m\"===n?r?\"минута\":\"минуту\":e+\" \"+t(s[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return e.defineLocale(\"ru\",{months:{format:\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),standalone:\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\")},monthsShort:{format:\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),standalone:\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\")},weekdays:{standalone:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),format:\"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу\".split(\"_\"),isFormat:/\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/},weekdaysShort:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsShortRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},calendar:{sameDay:\"[Сегодня в] LT\",nextDay:\"[Завтра в] LT\",lastDay:\"[Вчера в] LT\",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В следующее] dddd [в] LT\";case 1:case 2:case 4:return\"[В следующий] dddd [в] LT\";case 3:case 5:case 6:return\"[В следующую] dddd [в] LT\"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В прошлое] dddd [в] LT\";case 1:case 2:case 4:return\"[В прошлый] dddd [в] LT\";case 3:case 5:case 6:return\"[В прошлую] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",ss:r,m:r,mm:r,h:\"час\",hh:r,d:\"день\",dd:r,M:\"месяц\",MM:r,y:\"год\",yy:r},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,r){return e<4?\"ночи\":e<12?\"утра\":e<17?\"дня\":\"вечера\"},dayOfMonthOrdinalParse:/\\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case\"M\":case\"d\":case\"DDD\":return e+\"-й\";case\"D\":return e+\"-го\";case\"w\":case\"W\":return e+\"-я\";default:return e}},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/sk.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=183)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},183:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(184);var n=r(1);n.datepickerLocale(\"sk\",\"sk\",{closeText:\"Zavrieť\",prevText:\"&#x3C;Predchádzajúci\",nextText:\"Nasledujúci&#x3E;\",currentText:\"Dnes\",monthNames:[\"január\",\"február\",\"marec\",\"apríl\",\"máj\",\"jún\",\"júl\",\"august\",\"september\",\"október\",\"november\",\"december\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Máj\",\"Jún\",\"Júl\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"nedeľa\",\"pondelok\",\"utorok\",\"streda\",\"štvrtok\",\"piatok\",\"sobota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Str\",\"Štv\",\"Pia\",\"Sob\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"St\",\"Št\",\"Pia\",\"So\"],weekHeader:\"Ty\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sk\",{buttonText:{month:\"Mesiac\",week:\"Týždeň\",day:\"Deň\",list:\"Rozvrh\"},allDayText:\"Celý deň\",eventLimitText:function(e){return\"+ďalšie: \"+e},noEventsMessage:\"Žiadne akcie na zobrazenie\"})},184:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e){return e>1&&e<5}function r(e,r,n,o){var a=e+\" \";switch(n){case\"s\":return r||o?\"pár sekúnd\":\"pár sekundami\";case\"ss\":return r||o?a+(t(e)?\"sekundy\":\"sekúnd\"):a+\"sekundami\";case\"m\":return r?\"minúta\":o?\"minútu\":\"minútou\";case\"mm\":return r||o?a+(t(e)?\"minúty\":\"minút\"):a+\"minútami\";case\"h\":return r?\"hodina\":o?\"hodinu\":\"hodinou\";case\"hh\":return r||o?a+(t(e)?\"hodiny\":\"hodín\"):a+\"hodinami\";case\"d\":return r||o?\"deň\":\"dňom\";case\"dd\":return r||o?a+(t(e)?\"dni\":\"dní\"):a+\"dňami\";case\"M\":return r||o?\"mesiac\":\"mesiacom\";case\"MM\":return r||o?a+(t(e)?\"mesiace\":\"mesiacov\"):a+\"mesiacmi\";case\"y\":return r||o?\"rok\":\"rokom\";case\"yy\":return r||o?a+(t(e)?\"roky\":\"rokov\"):a+\"rokmi\"}}var n=\"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december\".split(\"_\"),o=\"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec\".split(\"_\");return e.defineLocale(\"sk\",{months:n,monthsShort:o,weekdays:\"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota\".split(\"_\"),weekdaysShort:\"ne_po_ut_st_št_pi_so\".split(\"_\"),weekdaysMin:\"ne_po_ut_st_št_pi_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[dnes o] LT\",nextDay:\"[zajtra o] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v nedeľu o] LT\";case 1:case 2:return\"[v] dddd [o] LT\";case 3:return\"[v stredu o] LT\";case 4:return\"[vo štvrtok o] LT\";case 5:return\"[v piatok o] LT\";case 6:return\"[v sobotu o] LT\"}},lastDay:\"[včera o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulú nedeľu o] LT\";case 1:case 2:return\"[minulý] dddd [o] LT\";case 3:return\"[minulú stredu o] LT\";case 4:case 5:return\"[minulý] dddd [o] LT\";case 6:return\"[minulú sobotu o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pred %s\",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/sl.js",
    "content": "!function(e,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],n):\"object\"==typeof exports?n(require(\"moment\"),require(\"fullcalendar\")):n(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p=\"\",n(n.s=185)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},185:function(e,n,t){Object.defineProperty(n,\"__esModule\",{value:!0}),t(186);var r=t(1);r.datepickerLocale(\"sl\",\"sl\",{closeText:\"Zapri\",prevText:\"&#x3C;Prejšnji\",nextText:\"Naslednji&#x3E;\",currentText:\"Trenutni\",monthNames:[\"Januar\",\"Februar\",\"Marec\",\"April\",\"Maj\",\"Junij\",\"Julij\",\"Avgust\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Nedelja\",\"Ponedeljek\",\"Torek\",\"Sreda\",\"Četrtek\",\"Petek\",\"Sobota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Tor\",\"Sre\",\"Čet\",\"Pet\",\"Sob\"],dayNamesMin:[\"Ne\",\"Po\",\"To\",\"Sr\",\"Če\",\"Pe\",\"So\"],weekHeader:\"Teden\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"sl\",{buttonText:{month:\"Mesec\",week:\"Teden\",day:\"Dan\",list:\"Dnevni red\"},allDayText:\"Ves dan\",eventLimitText:\"več\",noEventsMessage:\"Ni dogodkov za prikaz\"})},186:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e,n,t,r){var a=e+\" \";switch(t){case\"s\":return n||r?\"nekaj sekund\":\"nekaj sekundami\";case\"ss\":return a+=1===e?n?\"sekundo\":\"sekundi\":2===e?n||r?\"sekundi\":\"sekundah\":e<5?n||r?\"sekunde\":\"sekundah\":\"sekund\";case\"m\":return n?\"ena minuta\":\"eno minuto\";case\"mm\":return a+=1===e?n?\"minuta\":\"minuto\":2===e?n||r?\"minuti\":\"minutama\":e<5?n||r?\"minute\":\"minutami\":n||r?\"minut\":\"minutami\";case\"h\":return n?\"ena ura\":\"eno uro\";case\"hh\":return a+=1===e?n?\"ura\":\"uro\":2===e?n||r?\"uri\":\"urama\":e<5?n||r?\"ure\":\"urami\":n||r?\"ur\":\"urami\";case\"d\":return n||r?\"en dan\":\"enim dnem\";case\"dd\":return a+=1===e?n||r?\"dan\":\"dnem\":2===e?n||r?\"dni\":\"dnevoma\":n||r?\"dni\":\"dnevi\";case\"M\":return n||r?\"en mesec\":\"enim mesecem\";case\"MM\":return a+=1===e?n||r?\"mesec\":\"mesecem\":2===e?n||r?\"meseca\":\"mesecema\":e<5?n||r?\"mesece\":\"meseci\":n||r?\"mesecev\":\"meseci\";case\"y\":return n||r?\"eno leto\":\"enim letom\";case\"yy\":return a+=1===e?n||r?\"leto\":\"letom\":2===e?n||r?\"leti\":\"letoma\":e<5?n||r?\"leta\":\"leti\":n||r?\"let\":\"leti\"}}return e.defineLocale(\"sl\",{months:\"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota\".split(\"_\"),weekdaysShort:\"ned._pon._tor._sre._čet._pet._sob.\".split(\"_\"),weekdaysMin:\"ne_po_to_sr_če_pe_so\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danes ob] LT\",nextDay:\"[jutri ob] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v] [nedeljo] [ob] LT\";case 3:return\"[v] [sredo] [ob] LT\";case 6:return\"[v] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[v] dddd [ob] LT\"}},lastDay:\"[včeraj ob] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[prejšnjo] [nedeljo] [ob] LT\";case 3:return\"[prejšnjo] [sredo] [ob] LT\";case 6:return\"[prejšnjo] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[prejšnji] dddd [ob] LT\"}},sameElse:\"L\"},relativeTime:{future:\"čez %s\",past:\"pred %s\",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/sq.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=187)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},187:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(188);var n=r(1);n.datepickerLocale(\"sq\",\"sq\",{closeText:\"mbylle\",prevText:\"&#x3C;mbrapa\",nextText:\"Përpara&#x3E;\",currentText:\"sot\",monthNames:[\"Janar\",\"Shkurt\",\"Mars\",\"Prill\",\"Maj\",\"Qershor\",\"Korrik\",\"Gusht\",\"Shtator\",\"Tetor\",\"Nëntor\",\"Dhjetor\"],monthNamesShort:[\"Jan\",\"Shk\",\"Mar\",\"Pri\",\"Maj\",\"Qer\",\"Kor\",\"Gus\",\"Sht\",\"Tet\",\"Nën\",\"Dhj\"],dayNames:[\"E Diel\",\"E Hënë\",\"E Martë\",\"E Mërkurë\",\"E Enjte\",\"E Premte\",\"E Shtune\"],dayNamesShort:[\"Di\",\"Hë\",\"Ma\",\"Më\",\"En\",\"Pr\",\"Sh\"],dayNamesMin:[\"Di\",\"Hë\",\"Ma\",\"Më\",\"En\",\"Pr\",\"Sh\"],weekHeader:\"Ja\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sq\",{buttonText:{month:\"Muaj\",week:\"Javë\",day:\"Ditë\",list:\"Listë\"},allDayHtml:\"Gjithë<br/>ditën\",eventLimitText:function(e){return\"+më tepër \"+e},noEventsMessage:\"Nuk ka evente për të shfaqur\"})},188:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale(\"sq\",{months:\"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor\".split(\"_\"),monthsShort:\"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj\".split(\"_\"),weekdays:\"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë\".split(\"_\"),weekdaysShort:\"Die_Hën_Mar_Mër_Enj_Pre_Sht\".split(\"_\"),weekdaysMin:\"D_H_Ma_Më_E_P_Sh\".split(\"_\"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return\"M\"===e.charAt(0)},meridiem:function(e,t,r){return e<12?\"PD\":\"MD\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Sot në] LT\",nextDay:\"[Nesër në] LT\",nextWeek:\"dddd [në] LT\",lastDay:\"[Dje në] LT\",lastWeek:\"dddd [e kaluar në] LT\",sameElse:\"L\"},relativeTime:{future:\"në %s\",past:\"%s më parë\",s:\"disa sekonda\",ss:\"%d sekonda\",m:\"një minutë\",mm:\"%d minuta\",h:\"një orë\",hh:\"%d orë\",d:\"një ditë\",dd:\"%d ditë\",M:\"një muaj\",MM:\"%d muaj\",y:\"një vit\",yy:\"%d vite\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/sr-cyrl.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=189)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},189:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:!0}),r(190);var n=r(1);n.datepickerLocale(\"sr-cyrl\",\"sr\",{closeText:\"Затвори\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Данас\",monthNames:[\"Јануар\",\"Фебруар\",\"Март\",\"Април\",\"Мај\",\"Јун\",\"Јул\",\"Август\",\"Септембар\",\"Октобар\",\"Новембар\",\"Децембар\"],monthNamesShort:[\"Јан\",\"Феб\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дец\"],dayNames:[\"Недеља\",\"Понедељак\",\"Уторак\",\"Среда\",\"Четвртак\",\"Петак\",\"Субота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Уто\",\"Сре\",\"Чет\",\"Пет\",\"Суб\"],dayNamesMin:[\"Не\",\"По\",\"Ут\",\"Ср\",\"Че\",\"Пе\",\"Су\"],weekHeader:\"Сед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sr-cyrl\",{buttonText:{prev:\"Претходна\",next:\"следећи\",month:\"Месец\",week:\"Недеља\",day:\"Дан\",list:\"Планер\"},allDayText:\"Цео дан\",eventLimitText:function(e){return\"+ још \"+e},noEventsMessage:\"Нема догађаја за приказ\"})},190:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={words:{ss:[\"секунда\",\"секунде\",\"секунди\"],m:[\"један минут\",\"једне минуте\"],mm:[\"минут\",\"минуте\",\"минута\"],h:[\"један сат\",\"једног сата\"],hh:[\"сат\",\"сата\",\"сати\"],dd:[\"дан\",\"дана\",\"дана\"],MM:[\"месец\",\"месеца\",\"месеци\"],yy:[\"година\",\"године\",\"година\"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,r,n){var a=t.words[n];return 1===n.length?r?a[0]:a[1]:e+\" \"+t.correctGrammaticalCase(e,a)}};return e.defineLocale(\"sr-cyrl\",{months:\"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар\".split(\"_\"),monthsShort:\"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.\".split(\"_\"),monthsParseExact:!0,weekdays:\"недеља_понедељак_уторак_среда_четвртак_петак_субота\".split(\"_\"),weekdaysShort:\"нед._пон._уто._сре._чет._пет._суб.\".split(\"_\"),weekdaysMin:\"не_по_ут_ср_че_пе_су\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[данас у] LT\",nextDay:\"[сутра у] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[у] [недељу] [у] LT\";case 3:return\"[у] [среду] [у] LT\";case 6:return\"[у] [суботу] [у] LT\";case 1:case 2:case 4:case 5:return\"[у] dddd [у] LT\"}},lastDay:\"[јуче у] LT\",lastWeek:function(){return[\"[прошле] [недеље] [у] LT\",\"[прошлог] [понедељка] [у] LT\",\"[прошлог] [уторка] [у] LT\",\"[прошле] [среде] [у] LT\",\"[прошлог] [четвртка] [у] LT\",\"[прошлог] [петка] [у] LT\",\"[прошле] [суботе] [у] LT\"][this.day()]},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"пре %s\",s:\"неколико секунди\",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:\"дан\",dd:t.translate,M:\"месец\",MM:t.translate,y:\"годину\",yy:t.translate},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/sr.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,\"a\",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=191)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},191:function(e,t,a){Object.defineProperty(t,\"__esModule\",{value:!0}),a(192);var r=a(1);r.datepickerLocale(\"sr\",\"sr-SR\",{closeText:\"Zatvori\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Danas\",monthNames:[\"Januar\",\"Februar\",\"Mart\",\"April\",\"Maj\",\"Jun\",\"Jul\",\"Avgust\",\"Septembar\",\"Oktobar\",\"Novembar\",\"Decembar\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Nedelja\",\"Ponedeljak\",\"Utorak\",\"Sreda\",\"Četvrtak\",\"Petak\",\"Subota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Sre\",\"Čet\",\"Pet\",\"Sub\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"Sr\",\"Če\",\"Pe\",\"Su\"],weekHeader:\"Sed\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"sr\",{buttonText:{prev:\"Prethodna\",next:\"Sledeći\",month:\"Mеsеc\",week:\"Nеdеlja\",day:\"Dan\",list:\"Planеr\"},allDayText:\"Cеo dan\",eventLimitText:function(e){return\"+ još \"+e},noEventsMessage:\"Nеma događaja za prikaz\"})},192:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){var t={words:{ss:[\"sekunda\",\"sekunde\",\"sekundi\"],m:[\"jedan minut\",\"jedne minute\"],mm:[\"minut\",\"minute\",\"minuta\"],h:[\"jedan sat\",\"jednog sata\"],hh:[\"sat\",\"sata\",\"sati\"],dd:[\"dan\",\"dana\",\"dana\"],MM:[\"mesec\",\"meseca\",\"meseci\"],yy:[\"godina\",\"godine\",\"godina\"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,r){var n=t.words[r];return 1===r.length?a?n[0]:n[1]:e+\" \"+t.correctGrammaticalCase(e,n)}};return e.defineLocale(\"sr\",{months:\"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sre._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedelju] [u] LT\";case 3:return\"[u] [sredu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[juče u] LT\",lastWeek:function(){return[\"[prošle] [nedelje] [u] LT\",\"[prošlog] [ponedeljka] [u] LT\",\"[prošlog] [utorka] [u] LT\",\"[prošle] [srede] [u] LT\",\"[prošlog] [četvrtka] [u] LT\",\"[prošlog] [petka] [u] LT\",\"[prošle] [subote] [u] LT\"][this.day()]},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pre %s\",s:\"nekoliko sekundi\",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:\"dan\",dd:t.translate,M:\"mesec\",MM:t.translate,y:\"godinu\",yy:t.translate},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/sv.js",
    "content": "!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var t={};return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=193)}({0:function(r,t){r.exports=e},1:function(e,t){e.exports=r},193:function(e,r,t){Object.defineProperty(r,\"__esModule\",{value:!0}),t(194);var n=t(1);n.datepickerLocale(\"sv\",\"sv\",{closeText:\"Stäng\",prevText:\"&#xAB;Förra\",nextText:\"Nästa&#xBB;\",currentText:\"Idag\",monthNames:[\"Januari\",\"Februari\",\"Mars\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"Augusti\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNamesShort:[\"Sön\",\"Mån\",\"Tis\",\"Ons\",\"Tor\",\"Fre\",\"Lör\"],dayNames:[\"Söndag\",\"Måndag\",\"Tisdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lördag\"],dayNamesMin:[\"Sö\",\"Må\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lö\"],weekHeader:\"v. \",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sv\",{buttonText:{month:\"Månad\",week:\"Vecka\",day:\"Dag\",list:\"Program\"},allDayText:\"Heldag\",eventLimitText:\"till\",noEventsMessage:\"Inga händelser att visa\"})},194:function(e,r,t){!function(e,r){r(t(0))}(0,function(e){return e.defineLocale(\"sv\",{months:\"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag\".split(\"_\"),weekdaysShort:\"sön_mån_tis_ons_tor_fre_lör\".split(\"_\"),weekdaysMin:\"sö_må_ti_on_to_fr_lö\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D MMMM YYYY [kl.] HH:mm\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Idag] LT\",nextDay:\"[Imorgon] LT\",lastDay:\"[Igår] LT\",nextWeek:\"[På] dddd LT\",lastWeek:\"[I] dddd[s] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"för %s sedan\",s:\"några sekunder\",ss:\"%d sekunder\",m:\"en minut\",mm:\"%d minuter\",h:\"en timme\",hh:\"%d timmar\",d:\"en dag\",dd:\"%d dagar\",M:\"en månad\",MM:\"%d månader\",y:\"ett år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}(e|a)/,ordinal:function(e){var r=e%10;return e+(1==~~(e%100/10)?\"e\":1===r?\"a\":2===r?\"a\":\"e\")},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/th.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=195)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},195:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(196);var r=n(1);r.datepickerLocale(\"th\",\"th\",{closeText:\"ปิด\",prevText:\"&#xAB;&#xA0;ย้อน\",nextText:\"ถัดไป&#xA0;&#xBB;\",currentText:\"วันนี้\",monthNames:[\"มกราคม\",\"กุมภาพันธ์\",\"มีนาคม\",\"เมษายน\",\"พฤษภาคม\",\"มิถุนายน\",\"กรกฎาคม\",\"สิงหาคม\",\"กันยายน\",\"ตุลาคม\",\"พฤศจิกายน\",\"ธันวาคม\"],monthNamesShort:[\"ม.ค.\",\"ก.พ.\",\"มี.ค.\",\"เม.ย.\",\"พ.ค.\",\"มิ.ย.\",\"ก.ค.\",\"ส.ค.\",\"ก.ย.\",\"ต.ค.\",\"พ.ย.\",\"ธ.ค.\"],dayNames:[\"อาทิตย์\",\"จันทร์\",\"อังคาร\",\"พุธ\",\"พฤหัสบดี\",\"ศุกร์\",\"เสาร์\"],dayNamesShort:[\"อา.\",\"จ.\",\"อ.\",\"พ.\",\"พฤ.\",\"ศ.\",\"ส.\"],dayNamesMin:[\"อา.\",\"จ.\",\"อ.\",\"พ.\",\"พฤ.\",\"ศ.\",\"ส.\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"th\",{buttonText:{month:\"เดือน\",week:\"สัปดาห์\",day:\"วัน\",list:\"แผนงาน\"},allDayText:\"ตลอดวัน\",eventLimitText:\"เพิ่มเติม\",noEventsMessage:\"ไม่มีกิจกรรมที่จะแสดง\"})},196:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"th\",{months:\"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม\".split(\"_\"),monthsShort:\"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.\".split(\"_\"),monthsParseExact:!0,weekdays:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์\".split(\"_\"),weekdaysShort:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์\".split(\"_\"),weekdaysMin:\"อา._จ._อ._พ._พฤ._ศ._ส.\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY เวลา H:mm\",LLLL:\"วันddddที่ D MMMM YYYY เวลา H:mm\"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return\"หลังเที่ยง\"===e},meridiem:function(e,t,n){return e<12?\"ก่อนเที่ยง\":\"หลังเที่ยง\"},calendar:{sameDay:\"[วันนี้ เวลา] LT\",nextDay:\"[พรุ่งนี้ เวลา] LT\",nextWeek:\"dddd[หน้า เวลา] LT\",lastDay:\"[เมื่อวานนี้ เวลา] LT\",lastWeek:\"[วัน]dddd[ที่แล้ว เวลา] LT\",sameElse:\"L\"},relativeTime:{future:\"อีก %s\",past:\"%sที่แล้ว\",s:\"ไม่กี่วินาที\",ss:\"%d วินาที\",m:\"1 นาที\",mm:\"%d นาที\",h:\"1 ชั่วโมง\",hh:\"%d ชั่วโมง\",d:\"1 วัน\",dd:\"%d วัน\",M:\"1 เดือน\",MM:\"%d เดือน\",y:\"1 ปี\",yy:\"%d ปี\"}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/tr.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=197)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},197:function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(198);var n=t(1);n.datepickerLocale(\"tr\",\"tr\",{closeText:\"kapat\",prevText:\"&#x3C;geri\",nextText:\"ileri&#x3e\",currentText:\"bugün\",monthNames:[\"Ocak\",\"Şubat\",\"Mart\",\"Nisan\",\"Mayıs\",\"Haziran\",\"Temmuz\",\"Ağustos\",\"Eylül\",\"Ekim\",\"Kasım\",\"Aralık\"],monthNamesShort:[\"Oca\",\"Şub\",\"Mar\",\"Nis\",\"May\",\"Haz\",\"Tem\",\"Ağu\",\"Eyl\",\"Eki\",\"Kas\",\"Ara\"],dayNames:[\"Pazar\",\"Pazartesi\",\"Salı\",\"Çarşamba\",\"Perşembe\",\"Cuma\",\"Cumartesi\"],dayNamesShort:[\"Pz\",\"Pt\",\"Sa\",\"Ça\",\"Pe\",\"Cu\",\"Ct\"],dayNamesMin:[\"Pz\",\"Pt\",\"Sa\",\"Ça\",\"Pe\",\"Cu\",\"Ct\"],weekHeader:\"Hf\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"tr\",{buttonText:{next:\"ileri\",month:\"Ay\",week:\"Hafta\",day:\"Gün\",list:\"Ajanda\"},allDayText:\"Tüm gün\",eventLimitText:\"daha fazla\",noEventsMessage:\"Herhangi bir etkinlik görüntülemek için\"})},198:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:\"'inci\",5:\"'inci\",8:\"'inci\",70:\"'inci\",80:\"'inci\",2:\"'nci\",7:\"'nci\",20:\"'nci\",50:\"'nci\",3:\"'üncü\",4:\"'üncü\",100:\"'üncü\",6:\"'ncı\",9:\"'uncu\",10:\"'uncu\",30:\"'uncu\",60:\"'ıncı\",90:\"'ıncı\"};return e.defineLocale(\"tr\",{months:\"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık\".split(\"_\"),monthsShort:\"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara\".split(\"_\"),weekdays:\"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi\".split(\"_\"),weekdaysShort:\"Paz_Pts_Sal_Çar_Per_Cum_Cts\".split(\"_\"),weekdaysMin:\"Pz_Pt_Sa_Ça_Pe_Cu_Ct\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[bugün saat] LT\",nextDay:\"[yarın saat] LT\",nextWeek:\"[gelecek] dddd [saat] LT\",lastDay:\"[dün] LT\",lastWeek:\"[geçen] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s sonra\",past:\"%s önce\",s:\"birkaç saniye\",ss:\"%d saniye\",m:\"bir dakika\",mm:\"%d dakika\",h:\"bir saat\",hh:\"%d saat\",d:\"bir gün\",dd:\"%d gün\",M:\"bir ay\",MM:\"%d ay\",y:\"bir yıl\",yy:\"%d yıl\"},ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"Do\":case\"DD\":return e;default:if(0===e)return e+\"'ıncı\";var n=e%10,r=e%100-n,i=e>=100?100:null;return e+(a[n]||a[r]||a[i])}},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/uk.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=199)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},199:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(200);var r=n(1);r.datepickerLocale(\"uk\",\"uk\",{closeText:\"Закрити\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Сьогодні\",monthNames:[\"Січень\",\"Лютий\",\"Березень\",\"Квітень\",\"Травень\",\"Червень\",\"Липень\",\"Серпень\",\"Вересень\",\"Жовтень\",\"Листопад\",\"Грудень\"],monthNamesShort:[\"Січ\",\"Лют\",\"Бер\",\"Кві\",\"Тра\",\"Чер\",\"Лип\",\"Сер\",\"Вер\",\"Жов\",\"Лис\",\"Гру\"],dayNames:[\"неділя\",\"понеділок\",\"вівторок\",\"середа\",\"четвер\",\"п’ятниця\",\"субота\"],dayNamesShort:[\"нед\",\"пнд\",\"вів\",\"срд\",\"чтв\",\"птн\",\"сбт\"],dayNamesMin:[\"Нд\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],weekHeader:\"Тиж\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),r.locale(\"uk\",{buttonText:{month:\"Місяць\",week:\"Тиждень\",day:\"День\",list:\"Порядок денний\"},allDayText:\"Увесь день\",eventLimitText:function(e){return\"+ще \"+e+\"...\"},noEventsMessage:\"Немає подій для відображення\"})},200:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t){var n=e.split(\"_\");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var a={ss:n?\"секунда_секунди_секунд\":\"секунду_секунди_секунд\",mm:n?\"хвилина_хвилини_хвилин\":\"хвилину_хвилини_хвилин\",hh:n?\"година_години_годин\":\"годину_години_годин\",dd:\"день_дні_днів\",MM:\"місяць_місяці_місяців\",yy:\"рік_роки_років\"};return\"m\"===r?n?\"хвилина\":\"хвилину\":\"h\"===r?n?\"година\":\"годину\":e+\" \"+t(a[r],+e)}function r(e,t){var n={nominative:\"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота\".split(\"_\"),accusative:\"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу\".split(\"_\"),genitive:\"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи\".split(\"_\")};return e?n[/(\\[[ВвУу]\\]) ?dddd/.test(t)?\"accusative\":/\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(t)?\"genitive\":\"nominative\"][e.day()]:n.nominative}function a(e){return function(){return e+\"о\"+(11===this.hours()?\"б\":\"\")+\"] LT\"}}return e.defineLocale(\"uk\",{months:{format:\"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня\".split(\"_\"),standalone:\"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень\".split(\"_\")},monthsShort:\"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд\".split(\"_\"),weekdays:r,weekdaysShort:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY р.\",LLL:\"D MMMM YYYY р., HH:mm\",LLLL:\"dddd, D MMMM YYYY р., HH:mm\"},calendar:{sameDay:a(\"[Сьогодні \"),nextDay:a(\"[Завтра \"),lastDay:a(\"[Вчора \"),nextWeek:a(\"[У] dddd [\"),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a(\"[Минулої] dddd [\").call(this);case 1:case 2:case 4:return a(\"[Минулого] dddd [\").call(this)}},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"%s тому\",s:\"декілька секунд\",ss:n,m:n,mm:n,h:\"годину\",hh:n,d:\"день\",dd:n,M:\"місяць\",MM:n,y:\"рік\",yy:n},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?\"ночі\":e<12?\"ранку\":e<17?\"дня\":\"вечора\"},dayOfMonthOrdinalParse:/\\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case\"M\":case\"d\":case\"DDD\":case\"w\":case\"W\":return e+\"-й\";case\"D\":return e+\"-го\";default:return e}},week:{dow:1,doy:7}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/vi.js",
    "content": "!function(t,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],n):\"object\"==typeof exports?n(require(\"moment\"),require(\"fullcalendar\")):n(t.moment,t.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(t,n){return function(t){function n(h){if(e[h])return e[h].exports;var r=e[h]={i:h,l:!1,exports:{}};return t[h].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,h){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:h})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p=\"\",n(n.s=201)}({0:function(n,e){n.exports=t},1:function(t,e){t.exports=n},201:function(t,n,e){Object.defineProperty(n,\"__esModule\",{value:!0}),e(202);var h=e(1);h.datepickerLocale(\"vi\",\"vi\",{closeText:\"Đóng\",prevText:\"&#x3C;Trước\",nextText:\"Tiếp&#x3E;\",currentText:\"Hôm nay\",monthNames:[\"Tháng Một\",\"Tháng Hai\",\"Tháng Ba\",\"Tháng Tư\",\"Tháng Năm\",\"Tháng Sáu\",\"Tháng Bảy\",\"Tháng Tám\",\"Tháng Chín\",\"Tháng Mười\",\"Tháng Mười Một\",\"Tháng Mười Hai\"],monthNamesShort:[\"Tháng 1\",\"Tháng 2\",\"Tháng 3\",\"Tháng 4\",\"Tháng 5\",\"Tháng 6\",\"Tháng 7\",\"Tháng 8\",\"Tháng 9\",\"Tháng 10\",\"Tháng 11\",\"Tháng 12\"],dayNames:[\"Chủ Nhật\",\"Thứ Hai\",\"Thứ Ba\",\"Thứ Tư\",\"Thứ Năm\",\"Thứ Sáu\",\"Thứ Bảy\"],dayNamesShort:[\"CN\",\"T2\",\"T3\",\"T4\",\"T5\",\"T6\",\"T7\"],dayNamesMin:[\"CN\",\"T2\",\"T3\",\"T4\",\"T5\",\"T6\",\"T7\"],weekHeader:\"Tu\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),h.locale(\"vi\",{buttonText:{month:\"Tháng\",week:\"Tuần\",day:\"Ngày\",list:\"Lịch biểu\"},allDayText:\"Cả ngày\",eventLimitText:function(t){return\"+ thêm \"+t},noEventsMessage:\"Không có sự kiện để hiển thị\"})},202:function(t,n,e){!function(t,n){n(e(0))}(0,function(t){return t.defineLocale(\"vi\",{months:\"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12\".split(\"_\"),monthsShort:\"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12\".split(\"_\"),monthsParseExact:!0,weekdays:\"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy\".split(\"_\"),weekdaysShort:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysMin:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,n,e){return t<12?e?\"sa\":\"SA\":e?\"ch\":\"CH\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [năm] YYYY\",LLL:\"D MMMM [năm] YYYY HH:mm\",LLLL:\"dddd, D MMMM [năm] YYYY HH:mm\",l:\"DD/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Hôm nay lúc] LT\",nextDay:\"[Ngày mai lúc] LT\",nextWeek:\"dddd [tuần tới lúc] LT\",lastDay:\"[Hôm qua lúc] LT\",lastWeek:\"dddd [tuần rồi lúc] LT\",sameElse:\"L\"},relativeTime:{future:\"%s tới\",past:\"%s trước\",s:\"vài giây\",ss:\"%d giây\",m:\"một phút\",mm:\"%d phút\",h:\"một giờ\",hh:\"%d giờ\",d:\"một ngày\",dd:\"%d ngày\",M:\"một tháng\",MM:\"%d tháng\",y:\"một năm\",yy:\"%d năm\"},dayOfMonthOrdinalParse:/\\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/zh-cn.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=203)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},203:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(204);var r=n(1);r.datepickerLocale(\"zh-cn\",\"zh-CN\",{closeText:\"关闭\",prevText:\"&#x3C;上月\",nextText:\"下月&#x3E;\",currentText:\"今天\",monthNames:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],monthNamesShort:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],dayNames:[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"],dayNamesShort:[\"周日\",\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\"],dayNamesMin:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],weekHeader:\"周\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),r.locale(\"zh-cn\",{buttonText:{month:\"月\",week:\"周\",day:\"日\",list:\"日程\"},allDayText:\"全天\",eventLimitText:function(e){return\"另外 \"+e+\" 个\"},noEventsMessage:\"没有事件显示\"})},204:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"zh-cn\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah点mm分\",LLLL:\"YYYY年M月D日ddddAh点mm分\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),\"凌晨\"===t||\"早上\"===t||\"上午\"===t?e:\"下午\"===t||\"晚上\"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?\"凌晨\":r<900?\"早上\":r<1130?\"上午\":r<1230?\"中午\":r<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"DDD\":return e+\"日\";case\"M\":return e+\"月\";case\"w\":case\"W\":return e+\"周\";default:return e}},relativeTime:{future:\"%s内\",past:\"%s前\",s:\"几秒\",ss:\"%d 秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},week:{dow:1,doy:4}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale/zh-tw.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=205)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},205:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(206);var r=n(1);r.datepickerLocale(\"zh-tw\",\"zh-TW\",{closeText:\"關閉\",prevText:\"&#x3C;上月\",nextText:\"下月&#x3E;\",currentText:\"今天\",monthNames:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],monthNamesShort:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],dayNames:[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"],dayNamesShort:[\"周日\",\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\"],dayNamesMin:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],weekHeader:\"周\",dateFormat:\"yy/mm/dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),r.locale(\"zh-tw\",{buttonText:{month:\"月\",week:\"週\",day:\"天\",list:\"活動列表\"},allDayText:\"整天\",eventLimitText:\"顯示更多\",noEventsMessage:\"没有任何活動\"})},206:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"zh-tw\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"週日_週一_週二_週三_週四_週五_週六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日 HH:mm\",LLLL:\"YYYY年M月D日dddd HH:mm\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),\"凌晨\"===t||\"早上\"===t||\"上午\"===t?e:\"中午\"===t?e>=11?e:e+12:\"下午\"===t||\"晚上\"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?\"凌晨\":r<900?\"早上\":r<1130?\"上午\":r<1230?\"中午\":r<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"DDD\":return e+\"日\";case\"M\":return e+\"月\";case\"w\":case\"W\":return e+\"週\";default:return e}},relativeTime:{future:\"%s內\",past:\"%s前\",s:\"幾秒\",ss:\"%d 秒\",m:\"1 分鐘\",mm:\"%d 分鐘\",h:\"1 小時\",hh:\"%d 小時\",d:\"1 天\",dd:\"%d 天\",M:\"1 個月\",MM:\"%d 個月\",y:\"1 年\",yy:\"%d 年\"}})})}})});"
  },
  {
    "path": "public/admin-panel/assets/libs/fullcalendar/dist/locale-all.js",
    "content": "!function(e,a){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=a(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],a):\"object\"==typeof exports?a(require(\"moment\"),require(\"fullcalendar\")):a(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p=\"\",a(a.s=434)}([function(a,t){a.exports=e},function(e,t){e.exports=a},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(66);var n=t(1);n.datepickerLocale(\"af\",\"af\",{closeText:\"Selekteer\",prevText:\"Vorige\",nextText:\"Volgende\",currentText:\"Vandag\",monthNames:[\"Januarie\",\"Februarie\",\"Maart\",\"April\",\"Mei\",\"Junie\",\"Julie\",\"Augustus\",\"September\",\"Oktober\",\"November\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mrt\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Des\"],dayNames:[\"Sondag\",\"Maandag\",\"Dinsdag\",\"Woensdag\",\"Donderdag\",\"Vrydag\",\"Saterdag\"],dayNamesShort:[\"Son\",\"Maa\",\"Din\",\"Woe\",\"Don\",\"Vry\",\"Sat\"],dayNamesMin:[\"So\",\"Ma\",\"Di\",\"Wo\",\"Do\",\"Vr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"af\",{buttonText:{year:\"Jaar\",month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayHtml:\"Heeldag\",eventLimitText:\"Addisionele\",noEventsMessage:\"Daar is geen gebeurtenisse nie\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"af\",{months:\"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag\".split(\"_\"),weekdaysShort:\"Son_Maa_Din_Woe_Don_Vry_Sat\".split(\"_\"),weekdaysMin:\"So_Ma_Di_Wo_Do_Vr_Sa\".split(\"_\"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?\"vm\":\"VM\":t?\"nm\":\"NM\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Vandag om] LT\",nextDay:\"[Môre om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[Gister om] LT\",lastWeek:\"[Laas] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"oor %s\",past:\"%s gelede\",s:\"'n paar sekondes\",ss:\"%d sekondes\",m:\"'n minuut\",mm:\"%d minute\",h:\"'n uur\",hh:\"%d ure\",d:\"'n dag\",dd:\"%d dae\",M:\"'n maand\",MM:\"%d maande\",y:\"'n jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(68);var n=t(1);n.datepickerLocale(\"ar-dz\",\"ar-DZ\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"جانفي\",\"فيفري\",\"مارس\",\"أفريل\",\"ماي\",\"جوان\",\"جويلية\",\"أوت\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-dz\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ar-dz\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"أح_إث_ثلا_أر_خم_جم_سب\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:0,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(70);var n=t(1);n.datepickerLocale(\"ar-kw\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-kw\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ar-kw\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:0,doy:12}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(72);var n=t(1);n.datepickerLocale(\"ar-ly\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-ly\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",0:\"0\"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},r=function(e){return function(a,r,s,d){var i=t(a),o=n[e][t(a)];return 2===i&&(o=o[r?0:1]),o.replace(/%d/i,a)}},s=[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"];return e.defineLocale(\"ar-ly\",{months:s,monthsShort:s,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/‏M/‏YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,a,t){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:r(\"s\"),ss:r(\"s\"),m:r(\"m\"),mm:r(\"m\"),h:r(\"h\"),hh:r(\"h\"),d:r(\"d\"),dd:r(\"d\"),M:r(\"M\"),MM:r(\"M\"),y:r(\"y\"),yy:r(\"y\")},preparse:function(e){return e.replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return a[e]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(74);var n=t(1);n.datepickerLocale(\"ar-ma\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-ma\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ar-ma\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(76);var n=t(1);n.datepickerLocale(\"ar-sa\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-sa\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},t={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"};return e.defineLocale(\"ar-sa\",{months:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,a,t){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return a[e]}).replace(/,/g,\"،\")},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(78);var n=t(1);n.datepickerLocale(\"ar-tn\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar-tn\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ar-tn\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",ss:\"%d ثانية\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(80);var n=t(1);n.datepickerLocale(\"ar\",\"ar\",{closeText:\"إغلاق\",prevText:\"&#x3C;السابق\",nextText:\"التالي&#x3E;\",currentText:\"اليوم\",monthNames:[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"الأحد\",\"الاثنين\",\"الثلاثاء\",\"الأربعاء\",\"الخميس\",\"الجمعة\",\"السبت\"],dayNamesShort:[\"أحد\",\"اثنين\",\"ثلاثاء\",\"أربعاء\",\"خميس\",\"جمعة\",\"سبت\"],dayNamesMin:[\"ح\",\"ن\",\"ث\",\"ر\",\"خ\",\"ج\",\"س\"],weekHeader:\"أسبوع\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ar\",{buttonText:{month:\"شهر\",week:\"أسبوع\",day:\"يوم\",list:\"أجندة\"},allDayText:\"اليوم كله\",eventLimitText:\"أخرى\",noEventsMessage:\"أي أحداث لعرض\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},t={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"];return e.defineLocale(\"ar\",{months:d,monthsShort:d,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/‏M/‏YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,a,t){return e<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:s(\"s\"),ss:s(\"s\"),m:s(\"m\"),mm:s(\"m\"),h:s(\"h\"),hh:s(\"h\"),d:s(\"d\"),dd:s(\"d\"),M:s(\"M\"),MM:s(\"M\"),y:s(\"y\"),yy:s(\"y\")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return a[e]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(82);var n=t(1);n.datepickerLocale(\"bg\",\"bg\",{closeText:\"затвори\",prevText:\"&#x3C;назад\",nextText:\"напред&#x3E;\",nextBigText:\"&#x3E;&#x3E;\",currentText:\"днес\",monthNames:[\"Януари\",\"Февруари\",\"Март\",\"Април\",\"Май\",\"Юни\",\"Юли\",\"Август\",\"Септември\",\"Октомври\",\"Ноември\",\"Декември\"],monthNamesShort:[\"Яну\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Юни\",\"Юли\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дек\"],dayNames:[\"Неделя\",\"Понеделник\",\"Вторник\",\"Сряда\",\"Четвъртък\",\"Петък\",\"Събота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Вто\",\"Сря\",\"Чет\",\"Пет\",\"Съб\"],dayNamesMin:[\"Не\",\"По\",\"Вт\",\"Ср\",\"Че\",\"Пе\",\"Съ\"],weekHeader:\"Wk\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"bg\",{buttonText:{month:\"Месец\",week:\"Седмица\",day:\"Ден\",list:\"График\"},allDayText:\"Цял ден\",eventLimitText:function(e){return\"+още \"+e},noEventsMessage:\"Няма събития за показване\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"bg\",{months:\"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"неделя_понеделник_вторник_сряда_четвъртък_петък_събота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сря_чет_пет_съб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Днес в] LT\",nextDay:\"[Утре в] LT\",nextWeek:\"dddd [в] LT\",lastDay:\"[Вчера в] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[В изминалата] dddd [в] LT\";case 1:case 2:case 4:case 5:return\"[В изминалия] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"след %s\",past:\"преди %s\",s:\"няколко секунди\",ss:\"%d секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дни\",M:\"месец\",MM:\"%d месеца\",y:\"година\",yy:\"%d години\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+\"-ев\":0===t?e+\"-ен\":t>10&&t<20?e+\"-ти\":1===a?e+\"-ви\":2===a?e+\"-ри\":7===a||8===a?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(84);var n=t(1);n.datepickerLocale(\"bs\",\"bs\",{closeText:\"Zatvori\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Danas\",monthNames:[\"Januar\",\"Februar\",\"Mart\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"August\",\"Septembar\",\"Oktobar\",\"Novmbar\",\"Decembar\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Nedjelja\",\"Ponedjeljak\",\"Utorak\",\"Srijeda\",\"Četvrtak\",\"Petak\",\"Subota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Sri\",\"Čet\",\"Pet\",\"Sub\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"Sr\",\"Če\",\"Pe\",\"Su\"],weekHeader:\"Sed\",dateFormat:\"dd.mm.yy.\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"bs\",{buttonText:{prev:\"Prošli\",next:\"Sljedeći\",month:\"Mjesec\",week:\"Sedmica\",day:\"Dan\",list:\"Raspored\"},allDayText:\"Cijeli dan\",eventLimitText:function(e){return\"+ još \"+e},noEventsMessage:\"Nema događaja za prikazivanje\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+\" \";switch(t){case\"ss\":return n+=1===e?\"sekunda\":2===e||3===e||4===e?\"sekunde\":\"sekundi\";case\"m\":return a?\"jedna minuta\":\"jedne minute\";case\"mm\":return n+=1===e?\"minuta\":2===e||3===e||4===e?\"minute\":\"minuta\";case\"h\":return a?\"jedan sat\":\"jednog sata\";case\"hh\":return n+=1===e?\"sat\":2===e||3===e||4===e?\"sata\":\"sati\";case\"dd\":return n+=1===e?\"dan\":\"dana\";case\"MM\":return n+=1===e?\"mjesec\":2===e||3===e||4===e?\"mjeseca\":\"mjeseci\";case\"yy\":return n+=1===e?\"godina\":2===e||3===e||4===e?\"godine\":\"godina\"}}return e.defineLocale(\"bs\",{months:\"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",ss:a,m:a,mm:a,h:a,hh:a,d:\"dan\",dd:a,M:\"mjesec\",MM:a,y:\"godinu\",yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(86);var n=t(1);n.datepickerLocale(\"ca\",\"ca\",{closeText:\"Tanca\",prevText:\"Anterior\",nextText:\"Següent\",currentText:\"Avui\",monthNames:[\"gener\",\"febrer\",\"març\",\"abril\",\"maig\",\"juny\",\"juliol\",\"agost\",\"setembre\",\"octubre\",\"novembre\",\"desembre\"],monthNamesShort:[\"gen\",\"feb\",\"març\",\"abr\",\"maig\",\"juny\",\"jul\",\"ag\",\"set\",\"oct\",\"nov\",\"des\"],dayNames:[\"diumenge\",\"dilluns\",\"dimarts\",\"dimecres\",\"dijous\",\"divendres\",\"dissabte\"],dayNamesShort:[\"dg\",\"dl\",\"dt\",\"dc\",\"dj\",\"dv\",\"ds\"],dayNamesMin:[\"dg\",\"dl\",\"dt\",\"dc\",\"dj\",\"dv\",\"ds\"],weekHeader:\"Set\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ca\",{buttonText:{month:\"Mes\",week:\"Setmana\",day:\"Dia\",list:\"Agenda\"},allDayText:\"Tot el dia\",eventLimitText:\"més\",noEventsMessage:\"No hi ha esdeveniments per mostrar\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ca\",{months:{standalone:\"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre\".split(\"_\"),format:\"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\"_\"),isFormat:/D[oD]?(\\s)+MMMM/},monthsShort:\"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte\".split(\"_\"),weekdaysShort:\"dg._dl._dt._dc._dj._dv._ds.\".split(\"_\"),weekdaysMin:\"dg_dl_dt_dc_dj_dv_ds\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [de] YYYY\",ll:\"D MMM YYYY\",LLL:\"D MMMM [de] YYYY [a les] H:mm\",lll:\"D MMM YYYY, H:mm\",LLLL:\"dddd D MMMM [de] YYYY [a les] H:mm\",llll:\"ddd D MMM YYYY, H:mm\"},calendar:{sameDay:function(){return\"[avui a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextDay:function(){return\"[demà a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextWeek:function(){return\"dddd [a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastDay:function(){return\"[ahir a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [passat a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"d'aquí %s\",past:\"fa %s\",s:\"uns segons\",ss:\"%d segons\",m:\"un minut\",mm:\"%d minuts\",h:\"una hora\",hh:\"%d hores\",d:\"un dia\",dd:\"%d dies\",M:\"un mes\",MM:\"%d mesos\",y:\"un any\",yy:\"%d anys\"},dayOfMonthOrdinalParse:/\\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?\"r\":2===e?\"n\":3===e?\"r\":4===e?\"t\":\"è\";return\"w\"!==a&&\"W\"!==a||(t=\"a\"),e+t},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(88);var n=t(1);n.datepickerLocale(\"cs\",\"cs\",{closeText:\"Zavřít\",prevText:\"&#x3C;Dříve\",nextText:\"Později&#x3E;\",currentText:\"Nyní\",monthNames:[\"leden\",\"únor\",\"březen\",\"duben\",\"květen\",\"červen\",\"červenec\",\"srpen\",\"září\",\"říjen\",\"listopad\",\"prosinec\"],monthNamesShort:[\"led\",\"úno\",\"bře\",\"dub\",\"kvě\",\"čer\",\"čvc\",\"srp\",\"zář\",\"říj\",\"lis\",\"pro\"],dayNames:[\"neděle\",\"pondělí\",\"úterý\",\"středa\",\"čtvrtek\",\"pátek\",\"sobota\"],dayNamesShort:[\"ne\",\"po\",\"út\",\"st\",\"čt\",\"pá\",\"so\"],dayNamesMin:[\"ne\",\"po\",\"út\",\"st\",\"čt\",\"pá\",\"so\"],weekHeader:\"Týd\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"cs\",{buttonText:{month:\"Měsíc\",week:\"Týden\",day:\"Den\",list:\"Agenda\"},allDayText:\"Celý den\",eventLimitText:function(e){return\"+další: \"+e},noEventsMessage:\"Žádné akce k zobrazení\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,n,r){var s=e+\" \";switch(n){case\"s\":return t||r?\"pár sekund\":\"pár sekundami\";case\"ss\":return t||r?s+(a(e)?\"sekundy\":\"sekund\"):s+\"sekundami\";case\"m\":return t?\"minuta\":r?\"minutu\":\"minutou\";case\"mm\":return t||r?s+(a(e)?\"minuty\":\"minut\"):s+\"minutami\";case\"h\":return t?\"hodina\":r?\"hodinu\":\"hodinou\";case\"hh\":return t||r?s+(a(e)?\"hodiny\":\"hodin\"):s+\"hodinami\";case\"d\":return t||r?\"den\":\"dnem\";case\"dd\":return t||r?s+(a(e)?\"dny\":\"dní\"):s+\"dny\";case\"M\":return t||r?\"měsíc\":\"měsícem\";case\"MM\":return t||r?s+(a(e)?\"měsíce\":\"měsíců\"):s+\"měsíci\";case\"y\":return t||r?\"rok\":\"rokem\";case\"yy\":return t||r?s+(a(e)?\"roky\":\"let\"):s+\"lety\"}}var n=\"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec\".split(\"_\"),r=\"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro\".split(\"_\");return e.defineLocale(\"cs\",{months:n,monthsShort:r,monthsParse:function(e,a){var t,n=[];for(t=0;t<12;t++)n[t]=new RegExp(\"^\"+e[t]+\"$|^\"+a[t]+\"$\",\"i\");return n}(n,r),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp(\"^\"+e[a]+\"$\",\"i\");return t}(r),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp(\"^\"+e[a]+\"$\",\"i\");return t}(n),weekdays:\"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota\".split(\"_\"),weekdaysShort:\"ne_po_út_st_čt_pá_so\".split(\"_\"),weekdaysMin:\"ne_po_út_st_čt_pá_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\",l:\"D. M. YYYY\"},calendar:{sameDay:\"[dnes v] LT\",nextDay:\"[zítra v] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v neděli v] LT\";case 1:case 2:return\"[v] dddd [v] LT\";case 3:return\"[ve středu v] LT\";case 4:return\"[ve čtvrtek v] LT\";case 5:return\"[v pátek v] LT\";case 6:return\"[v sobotu v] LT\"}},lastDay:\"[včera v] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulou neděli v] LT\";case 1:case 2:return\"[minulé] dddd [v] LT\";case 3:return\"[minulou středu v] LT\";case 4:case 5:return\"[minulý] dddd [v] LT\";case 6:return\"[minulou sobotu v] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"před %s\",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(90);var n=t(1);n.datepickerLocale(\"da\",\"da\",{closeText:\"Luk\",prevText:\"&#x3C;Forrige\",nextText:\"Næste&#x3E;\",currentText:\"Idag\",monthNames:[\"Januar\",\"Februar\",\"Marts\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Søndag\",\"Mandag\",\"Tirsdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lørdag\"],dayNamesShort:[\"Søn\",\"Man\",\"Tir\",\"Ons\",\"Tor\",\"Fre\",\"Lør\"],dayNamesMin:[\"Sø\",\"Ma\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lø\"],weekHeader:\"Uge\",dateFormat:\"dd-mm-yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"da\",{buttonText:{month:\"Måned\",week:\"Uge\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dagen\",eventLimitText:\"flere\",noEventsMessage:\"Ingen arrangementer at vise\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"da\",{months:\"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"søn_man_tir_ons_tor_fre_lør\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd [d.] D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"på dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[i] dddd[s kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"få sekunder\",ss:\"%d sekunder\",m:\"et minut\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dage\",M:\"en måned\",MM:\"%d måneder\",y:\"et år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(92);var n=t(1);n.datepickerLocale(\"de-at\",\"de\",{closeText:\"Schließen\",prevText:\"&#x3C;Zurück\",nextText:\"Vor&#x3E;\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"de-at\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return a?r[t][0]:r[t][1]}return e.defineLocale(\"de-at\",{\nmonths:\"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",ss:\"%d Sekunden\",m:a,mm:\"%d Minuten\",h:a,hh:\"%d Stunden\",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(94);var n=t(1);n.datepickerLocale(\"de-ch\",\"de\",{closeText:\"Schließen\",prevText:\"&#x3C;Zurück\",nextText:\"Vor&#x3E;\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"de-ch\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return a?r[t][0]:r[t][1]}return e.defineLocale(\"de-ch\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",ss:\"%d Sekunden\",m:a,mm:\"%d Minuten\",h:a,hh:\"%d Stunden\",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(96);var n=t(1);n.datepickerLocale(\"de\",\"de\",{closeText:\"Schließen\",prevText:\"&#x3C;Zurück\",nextText:\"Vor&#x3E;\",currentText:\"Heute\",monthNames:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\"],dayNamesShort:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],dayNamesMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"KW\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"de\",{buttonText:{month:\"Monat\",week:\"Woche\",day:\"Tag\",list:\"Terminübersicht\"},allDayText:\"Ganztägig\",eventLimitText:function(e){return\"+ weitere \"+e},noEventsMessage:\"Keine Ereignisse anzuzeigen\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return a?r[t][0]:r[t][1]}return e.defineLocale(\"de\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",ss:\"%d Sekunden\",m:a,mm:\"%d Minuten\",h:a,hh:\"%d Stunden\",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(98);var n=t(1);n.datepickerLocale(\"el\",\"el\",{closeText:\"Κλείσιμο\",prevText:\"Προηγούμενος\",nextText:\"Επόμενος\",currentText:\"Σήμερα\",monthNames:[\"Ιανουάριος\",\"Φεβρουάριος\",\"Μάρτιος\",\"Απρίλιος\",\"Μάιος\",\"Ιούνιος\",\"Ιούλιος\",\"Αύγουστος\",\"Σεπτέμβριος\",\"Οκτώβριος\",\"Νοέμβριος\",\"Δεκέμβριος\"],monthNamesShort:[\"Ιαν\",\"Φεβ\",\"Μαρ\",\"Απρ\",\"Μαι\",\"Ιουν\",\"Ιουλ\",\"Αυγ\",\"Σεπ\",\"Οκτ\",\"Νοε\",\"Δεκ\"],dayNames:[\"Κυριακή\",\"Δευτέρα\",\"Τρίτη\",\"Τετάρτη\",\"Πέμπτη\",\"Παρασκευή\",\"Σάββατο\"],dayNamesShort:[\"Κυρ\",\"Δευ\",\"Τρι\",\"Τετ\",\"Πεμ\",\"Παρ\",\"Σαβ\"],dayNamesMin:[\"Κυ\",\"Δε\",\"Τρ\",\"Τε\",\"Πε\",\"Πα\",\"Σα\"],weekHeader:\"Εβδ\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"el\",{buttonText:{month:\"Μήνας\",week:\"Εβδομάδα\",day:\"Ημέρα\",list:\"Ατζέντα\"},allDayText:\"Ολοήμερο\",eventLimitText:\"περισσότερα\",noEventsMessage:\"Δεν υπάρχουν γεγονότα για να εμφανιστεί\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e instanceof Function||\"[object Function]\"===Object.prototype.toString.call(e)}return e.defineLocale(\"el\",{monthsNominativeEl:\"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος\".split(\"_\"),monthsGenitiveEl:\"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου\".split(\"_\"),months:function(e,a){return e?\"string\"==typeof a&&/D/.test(a.substring(0,a.indexOf(\"MMMM\")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:\"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ\".split(\"_\"),weekdays:\"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο\".split(\"_\"),weekdaysShort:\"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ\".split(\"_\"),weekdaysMin:\"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα\".split(\"_\"),meridiem:function(e,a,t){return e>11?t?\"μμ\":\"ΜΜ\":t?\"πμ\":\"ΠΜ\"},isPM:function(e){return\"μ\"===(e+\"\").toLowerCase()[0]},meridiemParse:/[ΠΜ]\\.?Μ?\\.?/i,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendarEl:{sameDay:\"[Σήμερα {}] LT\",nextDay:\"[Αύριο {}] LT\",nextWeek:\"dddd [{}] LT\",lastDay:\"[Χθες {}] LT\",lastWeek:function(){switch(this.day()){case 6:return\"[το προηγούμενο] dddd [{}] LT\";default:return\"[την προηγούμενη] dddd [{}] LT\"}},sameElse:\"L\"},calendar:function(e,t){var n=this._calendarEl[e],r=t&&t.hours();return a(n)&&(n=n.apply(t)),n.replace(\"{}\",r%12==1?\"στη\":\"στις\")},relativeTime:{future:\"σε %s\",past:\"%s πριν\",s:\"λίγα δευτερόλεπτα\",ss:\"%d δευτερόλεπτα\",m:\"ένα λεπτό\",mm:\"%d λεπτά\",h:\"μία ώρα\",hh:\"%d ώρες\",d:\"μία μέρα\",dd:\"%d μέρες\",M:\"ένας μήνας\",MM:\"%d μήνες\",y:\"ένας χρόνος\",yy:\"%d χρόνια\"},dayOfMonthOrdinalParse:/\\d{1,2}η/,ordinal:\"%dη\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(100);var n=t(1);n.datepickerLocale(\"en-au\",\"en-AU\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"en-au\")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"en-au\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(102),t(1).locale(\"en-ca\")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"en-ca\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"YYYY-MM-DD\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\")}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(104);var n=t(1);n.datepickerLocale(\"en-gb\",\"en-GB\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"en-gb\")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"en-gb\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(106),t(1).locale(\"en-ie\")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"en-ie\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(108);var n=t(1);n.datepickerLocale(\"en-nz\",\"en-NZ\",{closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"en-nz\")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"en-nz\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?\"th\":1===a?\"st\":2===a?\"nd\":3===a?\"rd\":\"th\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(110);var n=t(1);n.datepickerLocale(\"es-do\",\"es\",{closeText:\"Cerrar\",prevText:\"&#x3C;Ant\",nextText:\"Sig&#x3E;\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"es-do\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo<br/>el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),t=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;return e.defineLocale(\"es-do\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY h:mm A\",LLLL:\"dddd, D [de] MMMM [de] YYYY h:mm A\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(112);var n=t(1);n.datepickerLocale(\"es-us\",\"es\",{closeText:\"Cerrar\",prevText:\"&#x3C;Ant\",nextText:\"Sig&#x3E;\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"es-us\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo<br/>el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),t=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\");return e.defineLocale(\"es-us\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsParseExact:!0,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"MM/DD/YYYY\",LL:\"MMMM [de] D [de] YYYY\",LLL:\"MMMM [de] D [de] YYYY h:mm A\",LLLL:\"dddd, MMMM [de] D [de] YYYY h:mm A\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(114);var n=t(1);n.datepickerLocale(\"es\",\"es\",{closeText:\"Cerrar\",prevText:\"&#x3C;Ant\",nextText:\"Sig&#x3E;\",currentText:\"Hoy\",monthNames:[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],monthNamesShort:[\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],dayNames:[\"domingo\",\"lunes\",\"martes\",\"miércoles\",\"jueves\",\"viernes\",\"sábado\"],dayNamesShort:[\"dom\",\"lun\",\"mar\",\"mié\",\"jue\",\"vie\",\"sáb\"],dayNamesMin:[\"D\",\"L\",\"M\",\"X\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"es\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Agenda\"},allDayHtml:\"Todo<br/>el día\",eventLimitText:\"más\",noEventsMessage:\"No hay eventos para mostrar\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),t=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;return e.defineLocale(\"es\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(116);var n=t(1);n.datepickerLocale(\"et\",\"et\",{closeText:\"Sulge\",prevText:\"Eelnev\",nextText:\"Järgnev\",currentText:\"Täna\",monthNames:[\"Jaanuar\",\"Veebruar\",\"Märts\",\"Aprill\",\"Mai\",\"Juuni\",\"Juuli\",\"August\",\"September\",\"Oktoober\",\"November\",\"Detsember\"],monthNamesShort:[\"Jaan\",\"Veebr\",\"Märts\",\"Apr\",\"Mai\",\"Juuni\",\"Juuli\",\"Aug\",\"Sept\",\"Okt\",\"Nov\",\"Dets\"],dayNames:[\"Pühapäev\",\"Esmaspäev\",\"Teisipäev\",\"Kolmapäev\",\"Neljapäev\",\"Reede\",\"Laupäev\"],dayNamesShort:[\"Pühap\",\"Esmasp\",\"Teisip\",\"Kolmap\",\"Neljap\",\"Reede\",\"Laup\"],dayNamesMin:[\"P\",\"E\",\"T\",\"K\",\"N\",\"R\",\"L\"],weekHeader:\"näd\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"et\",{buttonText:{month:\"Kuu\",week:\"Nädal\",day:\"Päev\",list:\"Päevakord\"},allDayText:\"Kogu päev\",eventLimitText:function(e){return\"+ veel \"+e},noEventsMessage:\"Kuvamiseks puuduvad sündmused\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={s:[\"mõne sekundi\",\"mõni sekund\",\"paar sekundit\"],ss:[e+\"sekundi\",e+\"sekundit\"],m:[\"ühe minuti\",\"üks minut\"],mm:[e+\" minuti\",e+\" minutit\"],h:[\"ühe tunni\",\"tund aega\",\"üks tund\"],hh:[e+\" tunni\",e+\" tundi\"],d:[\"ühe päeva\",\"üks päev\"],M:[\"kuu aja\",\"kuu aega\",\"üks kuu\"],MM:[e+\" kuu\",e+\" kuud\"],y:[\"ühe aasta\",\"aasta\",\"üks aasta\"],yy:[e+\" aasta\",e+\" aastat\"]};return a?r[t][2]?r[t][2]:r[t][1]:n?r[t][0]:r[t][1]}return e.defineLocale(\"et\",{months:\"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember\".split(\"_\"),monthsShort:\"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets\".split(\"_\"),weekdays:\"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev\".split(\"_\"),weekdaysShort:\"P_E_T_K_N_R_L\".split(\"_\"),weekdaysMin:\"P_E_T_K_N_R_L\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[Täna,] LT\",nextDay:\"[Homme,] LT\",nextWeek:\"[Järgmine] dddd LT\",lastDay:\"[Eile,] LT\",lastWeek:\"[Eelmine] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s pärast\",past:\"%s tagasi\",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:\"%d päeva\",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(118);var n=t(1);n.datepickerLocale(\"eu\",\"eu\",{closeText:\"Egina\",prevText:\"&#x3C;Aur\",nextText:\"Hur&#x3E;\",currentText:\"Gaur\",monthNames:[\"urtarrila\",\"otsaila\",\"martxoa\",\"apirila\",\"maiatza\",\"ekaina\",\"uztaila\",\"abuztua\",\"iraila\",\"urria\",\"azaroa\",\"abendua\"],monthNamesShort:[\"urt.\",\"ots.\",\"mar.\",\"api.\",\"mai.\",\"eka.\",\"uzt.\",\"abu.\",\"ira.\",\"urr.\",\"aza.\",\"abe.\"],dayNames:[\"igandea\",\"astelehena\",\"asteartea\",\"asteazkena\",\"osteguna\",\"ostirala\",\"larunbata\"],dayNamesShort:[\"ig.\",\"al.\",\"ar.\",\"az.\",\"og.\",\"ol.\",\"lr.\"],dayNamesMin:[\"ig\",\"al\",\"ar\",\"az\",\"og\",\"ol\",\"lr\"],weekHeader:\"As\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"eu\",{buttonText:{month:\"Hilabetea\",week:\"Astea\",day:\"Eguna\",list:\"Agenda\"},allDayHtml:\"Egun<br/>osoa\",eventLimitText:\"gehiago\",noEventsMessage:\"Ez dago ekitaldirik erakusteko\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"eu\",{months:\"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua\".split(\"_\"),monthsShort:\"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.\".split(\"_\"),monthsParseExact:!0,weekdays:\"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata\".split(\"_\"),weekdaysShort:\"ig._al._ar._az._og._ol._lr.\".split(\"_\"),weekdaysMin:\"ig_al_ar_az_og_ol_lr\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY[ko] MMMM[ren] D[a]\",LLL:\"YYYY[ko] MMMM[ren] D[a] HH:mm\",LLLL:\"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm\",l:\"YYYY-M-D\",ll:\"YYYY[ko] MMM D[a]\",lll:\"YYYY[ko] MMM D[a] HH:mm\",llll:\"ddd, YYYY[ko] MMM D[a] HH:mm\"},calendar:{sameDay:\"[gaur] LT[etan]\",nextDay:\"[bihar] LT[etan]\",nextWeek:\"dddd LT[etan]\",lastDay:\"[atzo] LT[etan]\",lastWeek:\"[aurreko] dddd LT[etan]\",sameElse:\"L\"},relativeTime:{future:\"%s barru\",past:\"duela %s\",s:\"segundo batzuk\",ss:\"%d segundo\",m:\"minutu bat\",mm:\"%d minutu\",h:\"ordu bat\",hh:\"%d ordu\",d:\"egun bat\",dd:\"%d egun\",M:\"hilabete bat\",MM:\"%d hilabete\",y:\"urte bat\",yy:\"%d urte\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(120);var n=t(1);n.datepickerLocale(\"fa\",\"fa\",{closeText:\"بستن\",prevText:\"&#x3C;قبلی\",nextText:\"بعدی&#x3E;\",currentText:\"امروز\",monthNames:[\"ژانویه\",\"فوریه\",\"مارس\",\"آوریل\",\"مه\",\"ژوئن\",\"ژوئیه\",\"اوت\",\"سپتامبر\",\"اکتبر\",\"نوامبر\",\"دسامبر\"],monthNamesShort:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\"],dayNames:[\"يکشنبه\",\"دوشنبه\",\"سه‌شنبه\",\"چهارشنبه\",\"پنجشنبه\",\"جمعه\",\"شنبه\"],dayNamesShort:[\"ی\",\"د\",\"س\",\"چ\",\"پ\",\"ج\",\"ش\"],dayNamesMin:[\"ی\",\"د\",\"س\",\"چ\",\"پ\",\"ج\",\"ش\"],weekHeader:\"هف\",dateFormat:\"yy/mm/dd\",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"fa\",{buttonText:{month:\"ماه\",week:\"هفته\",day:\"روز\",list:\"برنامه\"},allDayText:\"تمام روز\",eventLimitText:function(e){return\"بیش از \"+e},noEventsMessage:\"هیچ رویدادی به نمایش\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:\"۱\",2:\"۲\",3:\"۳\",4:\"۴\",5:\"۵\",6:\"۶\",7:\"۷\",8:\"۸\",9:\"۹\",0:\"۰\"},t={\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"۰\":\"0\"};return e.defineLocale(\"fa\",{months:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),monthsShort:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),weekdays:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysShort:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysMin:\"ی_د_س_چ_پ_ج_ش\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?\"قبل از ظهر\":\"بعد از ظهر\"},calendar:{sameDay:\"[امروز ساعت] LT\",nextDay:\"[فردا ساعت] LT\",nextWeek:\"dddd [ساعت] LT\",lastDay:\"[دیروز ساعت] LT\",lastWeek:\"dddd [پیش] [ساعت] LT\",sameElse:\"L\"},relativeTime:{future:\"در %s\",past:\"%s پیش\",s:\"چند ثانیه\",ss:\"ثانیه d%\",m:\"یک دقیقه\",mm:\"%d دقیقه\",h:\"یک ساعت\",hh:\"%d ساعت\",d:\"یک روز\",dd:\"%d روز\",M:\"یک ماه\",MM:\"%d ماه\",y:\"یک سال\",yy:\"%d سال\"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return a[e]}).replace(/,/g,\"،\")},dayOfMonthOrdinalParse:/\\d{1,2}م/,ordinal:\"%dم\",week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(122);var n=t(1);n.datepickerLocale(\"fi\",\"fi\",{closeText:\"Sulje\",prevText:\"&#xAB;Edellinen\",nextText:\"Seuraava&#xBB;\",currentText:\"Tänään\",monthNames:[\"Tammikuu\",\"Helmikuu\",\"Maaliskuu\",\"Huhtikuu\",\"Toukokuu\",\"Kesäkuu\",\"Heinäkuu\",\"Elokuu\",\"Syyskuu\",\"Lokakuu\",\"Marraskuu\",\"Joulukuu\"],monthNamesShort:[\"Tammi\",\"Helmi\",\"Maalis\",\"Huhti\",\"Touko\",\"Kesä\",\"Heinä\",\"Elo\",\"Syys\",\"Loka\",\"Marras\",\"Joulu\"],dayNamesShort:[\"Su\",\"Ma\",\"Ti\",\"Ke\",\"To\",\"Pe\",\"La\"],dayNames:[\"Sunnuntai\",\"Maanantai\",\"Tiistai\",\"Keskiviikko\",\"Torstai\",\"Perjantai\",\"Lauantai\"],dayNamesMin:[\"Su\",\"Ma\",\"Ti\",\"Ke\",\"To\",\"Pe\",\"La\"],weekHeader:\"Vk\",dateFormat:\"d.m.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"fi\",{buttonText:{month:\"Kuukausi\",week:\"Viikko\",day:\"Päivä\",list:\"Tapahtumat\"},allDayText:\"Koko päivä\",eventLimitText:\"lisää\",noEventsMessage:\"Ei näytettäviä tapahtumia\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,n,r){var s=\"\";switch(n){\ncase\"s\":return r?\"muutaman sekunnin\":\"muutama sekunti\";case\"ss\":return r?\"sekunnin\":\"sekuntia\";case\"m\":return r?\"minuutin\":\"minuutti\";case\"mm\":s=r?\"minuutin\":\"minuuttia\";break;case\"h\":return r?\"tunnin\":\"tunti\";case\"hh\":s=r?\"tunnin\":\"tuntia\";break;case\"d\":return r?\"päivän\":\"päivä\";case\"dd\":s=r?\"päivän\":\"päivää\";break;case\"M\":return r?\"kuukauden\":\"kuukausi\";case\"MM\":s=r?\"kuukauden\":\"kuukautta\";break;case\"y\":return r?\"vuoden\":\"vuosi\";case\"yy\":s=r?\"vuoden\":\"vuotta\"}return s=t(e,r)+\" \"+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n=\"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän\".split(\" \"),r=[\"nolla\",\"yhden\",\"kahden\",\"kolmen\",\"neljän\",\"viiden\",\"kuuden\",n[7],n[8],n[9]];return e.defineLocale(\"fi\",{months:\"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),monthsShort:\"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu\".split(\"_\"),weekdays:\"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),weekdaysShort:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),weekdaysMin:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"Do MMMM[ta] YYYY\",LLL:\"Do MMMM[ta] YYYY, [klo] HH.mm\",LLLL:\"dddd, Do MMMM[ta] YYYY, [klo] HH.mm\",l:\"D.M.YYYY\",ll:\"Do MMM YYYY\",lll:\"Do MMM YYYY, [klo] HH.mm\",llll:\"ddd, Do MMM YYYY, [klo] HH.mm\"},calendar:{sameDay:\"[tänään] [klo] LT\",nextDay:\"[huomenna] [klo] LT\",nextWeek:\"dddd [klo] LT\",lastDay:\"[eilen] [klo] LT\",lastWeek:\"[viime] dddd[na] [klo] LT\",sameElse:\"L\"},relativeTime:{future:\"%s päästä\",past:\"%s sitten\",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(124);var n=t(1);n.datepickerLocale(\"fr-ca\",\"fr-CA\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"yy-mm-dd\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"fr-ca\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la<br/>journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"fr-ca\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case\"M\":case\"Q\":case\"D\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(126);var n=t(1);n.datepickerLocale(\"fr-ch\",\"fr-CH\",{closeText:\"Fermer\",prevText:\"&#x3C;Préc\",nextText:\"Suiv&#x3E;\",currentText:\"Courant\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sm\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"fr-ch\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la<br/>journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"fr-ch\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case\"M\":case\"Q\":case\"D\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(128);var n=t(1);n.datepickerLocale(\"fr\",\"fr\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"fr\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la<br/>journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"fr\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case\"D\":return e+(1===e?\"er\":\"\");default:case\"M\":case\"Q\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(130);var n=t(1);n.datepickerLocale(\"gl\",\"gl\",{closeText:\"Pechar\",prevText:\"&#x3C;Ant\",nextText:\"Seg&#x3E;\",currentText:\"Hoxe\",monthNames:[\"Xaneiro\",\"Febreiro\",\"Marzo\",\"Abril\",\"Maio\",\"Xuño\",\"Xullo\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Decembro\"],monthNamesShort:[\"Xan\",\"Feb\",\"Mar\",\"Abr\",\"Mai\",\"Xuñ\",\"Xul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dec\"],dayNames:[\"Domingo\",\"Luns\",\"Martes\",\"Mércores\",\"Xoves\",\"Venres\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Lun\",\"Mar\",\"Mér\",\"Xov\",\"Ven\",\"Sáb\"],dayNamesMin:[\"Do\",\"Lu\",\"Ma\",\"Mé\",\"Xo\",\"Ve\",\"Sá\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"gl\",{buttonText:{month:\"Mes\",week:\"Semana\",day:\"Día\",list:\"Axenda\"},allDayHtml:\"Todo<br/>o día\",eventLimitText:\"máis\",noEventsMessage:\"Non hai eventos para amosar\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"gl\",{months:\"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro\".split(\"_\"),monthsShort:\"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"domingo_luns_martes_mércores_xoves_venres_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mér._xov._ven._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mé_xo_ve_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoxe \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextDay:function(){return\"[mañá \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextWeek:function(){return\"dddd [\"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},lastDay:function(){return\"[onte \"+(1!==this.hours()?\"á\":\"a\")+\"] LT\"},lastWeek:function(){return\"[o] dddd [pasado \"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:function(e){return 0===e.indexOf(\"un\")?\"n\"+e:\"en \"+e},past:\"hai %s\",s:\"uns segundos\",ss:\"%d segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"unha hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(132);var n=t(1);n.datepickerLocale(\"he\",\"he\",{closeText:\"סגור\",prevText:\"&#x3C;הקודם\",nextText:\"הבא&#x3E;\",currentText:\"היום\",monthNames:[\"ינואר\",\"פברואר\",\"מרץ\",\"אפריל\",\"מאי\",\"יוני\",\"יולי\",\"אוגוסט\",\"ספטמבר\",\"אוקטובר\",\"נובמבר\",\"דצמבר\"],monthNamesShort:[\"ינו\",\"פבר\",\"מרץ\",\"אפר\",\"מאי\",\"יוני\",\"יולי\",\"אוג\",\"ספט\",\"אוק\",\"נוב\",\"דצמ\"],dayNames:[\"ראשון\",\"שני\",\"שלישי\",\"רביעי\",\"חמישי\",\"שישי\",\"שבת\"],dayNamesShort:[\"א'\",\"ב'\",\"ג'\",\"ד'\",\"ה'\",\"ו'\",\"שבת\"],dayNamesMin:[\"א'\",\"ב'\",\"ג'\",\"ד'\",\"ה'\",\"ו'\",\"שבת\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"he\",{buttonText:{month:\"חודש\",week:\"שבוע\",day:\"יום\",list:\"סדר יום\"},allDayText:\"כל היום\",eventLimitText:\"אחר\",noEventsMessage:\"אין אירועים להצגה\",weekNumberTitle:\"שבוע\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"he\",{months:\"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר\".split(\"_\"),monthsShort:\"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳\".split(\"_\"),weekdays:\"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת\".split(\"_\"),weekdaysShort:\"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳\".split(\"_\"),weekdaysMin:\"א_ב_ג_ד_ה_ו_ש\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [ב]MMMM YYYY\",LLL:\"D [ב]MMMM YYYY HH:mm\",LLLL:\"dddd, D [ב]MMMM YYYY HH:mm\",l:\"D/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[היום ב־]LT\",nextDay:\"[מחר ב־]LT\",nextWeek:\"dddd [בשעה] LT\",lastDay:\"[אתמול ב־]LT\",lastWeek:\"[ביום] dddd [האחרון בשעה] LT\",sameElse:\"L\"},relativeTime:{future:\"בעוד %s\",past:\"לפני %s\",s:\"מספר שניות\",ss:\"%d שניות\",m:\"דקה\",mm:\"%d דקות\",h:\"שעה\",hh:function(e){return 2===e?\"שעתיים\":e+\" שעות\"},d:\"יום\",dd:function(e){return 2===e?\"יומיים\":e+\" ימים\"},M:\"חודש\",MM:function(e){return 2===e?\"חודשיים\":e+\" חודשים\"},y:\"שנה\",yy:function(e){return 2===e?\"שנתיים\":e%10==0&&10!==e?e+\" שנה\":e+\" שנים\"}},meridiemParse:/אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה\"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?\"לפנות בוקר\":e<10?\"בבוקר\":e<12?t?'לפנה\"צ':\"לפני הצהריים\":e<18?t?'אחה\"צ':\"אחרי הצהריים\":\"בערב\"}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(134);var n=t(1);n.datepickerLocale(\"hi\",\"hi\",{closeText:\"बंद\",prevText:\"पिछला\",nextText:\"अगला\",currentText:\"आज\",monthNames:[\"जनवरी \",\"फरवरी\",\"मार्च\",\"अप्रेल\",\"मई\",\"जून\",\"जूलाई\",\"अगस्त \",\"सितम्बर\",\"अक्टूबर\",\"नवम्बर\",\"दिसम्बर\"],monthNamesShort:[\"जन\",\"फर\",\"मार्च\",\"अप्रेल\",\"मई\",\"जून\",\"जूलाई\",\"अग\",\"सित\",\"अक्ट\",\"नव\",\"दि\"],dayNames:[\"रविवार\",\"सोमवार\",\"मंगलवार\",\"बुधवार\",\"गुरुवार\",\"शुक्रवार\",\"शनिवार\"],dayNamesShort:[\"रवि\",\"सोम\",\"मंगल\",\"बुध\",\"गुरु\",\"शुक्र\",\"शनि\"],dayNamesMin:[\"रवि\",\"सोम\",\"मंगल\",\"बुध\",\"गुरु\",\"शुक्र\",\"शनि\"],weekHeader:\"हफ्ता\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"hi\",{buttonText:{month:\"महीना\",week:\"सप्ताह\",day:\"दिन\",list:\"कार्यसूची\"},allDayText:\"सभी दिन\",eventLimitText:function(e){return\"+अधिक \"+e},noEventsMessage:\"कोई घटनाओं को प्रदर्शित करने के लिए\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"},t={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"};return e.defineLocale(\"hi\",{months:\"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर\".split(\"_\"),monthsShort:\"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.\".split(\"_\"),monthsParseExact:!0,weekdays:\"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार\".split(\"_\"),weekdaysShort:\"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि\".split(\"_\"),weekdaysMin:\"र_सो_मं_बु_गु_शु_श\".split(\"_\"),longDateFormat:{LT:\"A h:mm बजे\",LTS:\"A h:mm:ss बजे\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm बजे\",LLLL:\"dddd, D MMMM YYYY, A h:mm बजे\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[कल] LT\",nextWeek:\"dddd, LT\",lastDay:\"[कल] LT\",lastWeek:\"[पिछले] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s में\",past:\"%s पहले\",s:\"कुछ ही क्षण\",ss:\"%d सेकंड\",m:\"एक मिनट\",mm:\"%d मिनट\",h:\"एक घंटा\",hh:\"%d घंटे\",d:\"एक दिन\",dd:\"%d दिन\",M:\"एक महीने\",MM:\"%d महीने\",y:\"एक वर्ष\",yy:\"%d वर्ष\"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return a[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),\"रात\"===a?e<4?e:e+12:\"सुबह\"===a?e:\"दोपहर\"===a?e>=10?e:e+12:\"शाम\"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?\"रात\":e<10?\"सुबह\":e<17?\"दोपहर\":e<20?\"शाम\":\"रात\"},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(136);var n=t(1);n.datepickerLocale(\"hr\",\"hr\",{closeText:\"Zatvori\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Danas\",monthNames:[\"Siječanj\",\"Veljača\",\"Ožujak\",\"Travanj\",\"Svibanj\",\"Lipanj\",\"Srpanj\",\"Kolovoz\",\"Rujan\",\"Listopad\",\"Studeni\",\"Prosinac\"],monthNamesShort:[\"Sij\",\"Velj\",\"Ožu\",\"Tra\",\"Svi\",\"Lip\",\"Srp\",\"Kol\",\"Ruj\",\"Lis\",\"Stu\",\"Pro\"],dayNames:[\"Nedjelja\",\"Ponedjeljak\",\"Utorak\",\"Srijeda\",\"Četvrtak\",\"Petak\",\"Subota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Sri\",\"Čet\",\"Pet\",\"Sub\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"Sr\",\"Če\",\"Pe\",\"Su\"],weekHeader:\"Tje\",dateFormat:\"dd.mm.yy.\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"hr\",{buttonText:{prev:\"Prijašnji\",next:\"Sljedeći\",month:\"Mjesec\",week:\"Tjedan\",day:\"Dan\",list:\"Raspored\"},allDayText:\"Cijeli dan\",eventLimitText:function(e){return\"+ još \"+e},noEventsMessage:\"Nema događaja za prikaz\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+\" \";switch(t){case\"ss\":return n+=1===e?\"sekunda\":2===e||3===e||4===e?\"sekunde\":\"sekundi\";case\"m\":return a?\"jedna minuta\":\"jedne minute\";case\"mm\":return n+=1===e?\"minuta\":2===e||3===e||4===e?\"minute\":\"minuta\";case\"h\":return a?\"jedan sat\":\"jednog sata\";case\"hh\":return n+=1===e?\"sat\":2===e||3===e||4===e?\"sata\":\"sati\";case\"dd\":return n+=1===e?\"dan\":\"dana\";case\"MM\":return n+=1===e?\"mjesec\":2===e||3===e||4===e?\"mjeseca\":\"mjeseci\";case\"yy\":return n+=1===e?\"godina\":2===e||3===e||4===e?\"godine\":\"godina\"}}return e.defineLocale(\"hr\",{months:{format:\"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca\".split(\"_\"),standalone:\"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac\".split(\"_\")},monthsShort:\"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",ss:a,m:a,mm:a,h:a,hh:a,d:\"dan\",dd:a,M:\"mjesec\",MM:a,y:\"godinu\",yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(138);var n=t(1);n.datepickerLocale(\"hu\",\"hu\",{closeText:\"bezár\",prevText:\"vissza\",nextText:\"előre\",currentText:\"ma\",monthNames:[\"Január\",\"Február\",\"Március\",\"Április\",\"Május\",\"Június\",\"Július\",\"Augusztus\",\"Szeptember\",\"Október\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Már\",\"Ápr\",\"Máj\",\"Jún\",\"Júl\",\"Aug\",\"Szep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Vasárnap\",\"Hétfő\",\"Kedd\",\"Szerda\",\"Csütörtök\",\"Péntek\",\"Szombat\"],dayNamesShort:[\"Vas\",\"Hét\",\"Ked\",\"Sze\",\"Csü\",\"Pén\",\"Szo\"],dayNamesMin:[\"V\",\"H\",\"K\",\"Sze\",\"Cs\",\"P\",\"Szo\"],weekHeader:\"Hét\",dateFormat:\"yy.mm.dd.\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"\"}),n.locale(\"hu\",{buttonText:{month:\"Hónap\",week:\"Hét\",day:\"Nap\",list:\"Napló\"},allDayText:\"Egész nap\",eventLimitText:\"további\",noEventsMessage:\"Nincs megjeleníthető események\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e;switch(t){case\"s\":return n||a?\"néhány másodperc\":\"néhány másodperce\";case\"ss\":return r+(n||a)?\" másodperc\":\" másodperce\";case\"m\":return\"egy\"+(n||a?\" perc\":\" perce\");case\"mm\":return r+(n||a?\" perc\":\" perce\");case\"h\":return\"egy\"+(n||a?\" óra\":\" órája\");case\"hh\":return r+(n||a?\" óra\":\" órája\");case\"d\":return\"egy\"+(n||a?\" nap\":\" napja\");case\"dd\":return r+(n||a?\" nap\":\" napja\");case\"M\":return\"egy\"+(n||a?\" hónap\":\" hónapja\");case\"MM\":return r+(n||a?\" hónap\":\" hónapja\");case\"y\":return\"egy\"+(n||a?\" év\":\" éve\");case\"yy\":return r+(n||a?\" év\":\" éve\")}return\"\"}function t(e){return(e?\"\":\"[múlt] \")+\"[\"+n[this.day()]+\"] LT[-kor]\"}var n=\"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton\".split(\" \");return e.defineLocale(\"hu\",{months:\"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december\".split(\"_\"),monthsShort:\"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec\".split(\"_\"),weekdays:\"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat\".split(\"_\"),weekdaysShort:\"vas_hét_kedd_sze_csüt_pén_szo\".split(\"_\"),weekdaysMin:\"v_h_k_sze_cs_p_szo\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY. MMMM D.\",LLL:\"YYYY. MMMM D. H:mm\",LLLL:\"YYYY. MMMM D., dddd H:mm\"},meridiemParse:/de|du/i,isPM:function(e){return\"u\"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?\"de\":\"DE\":!0===t?\"du\":\"DU\"},calendar:{sameDay:\"[ma] LT[-kor]\",nextDay:\"[holnap] LT[-kor]\",nextWeek:function(){return t.call(this,!0)},lastDay:\"[tegnap] LT[-kor]\",lastWeek:function(){return t.call(this,!1)},sameElse:\"L\"},relativeTime:{future:\"%s múlva\",past:\"%s\",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(140);var n=t(1);n.datepickerLocale(\"id\",\"id\",{closeText:\"Tutup\",prevText:\"&#x3C;mundur\",nextText:\"maju&#x3E;\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Maret\",\"April\",\"Mei\",\"Juni\",\"Juli\",\"Agustus\",\"September\",\"Oktober\",\"Nopember\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Agus\",\"Sep\",\"Okt\",\"Nop\",\"Des\"],dayNames:[\"Minggu\",\"Senin\",\"Selasa\",\"Rabu\",\"Kamis\",\"Jumat\",\"Sabtu\"],dayNamesShort:[\"Min\",\"Sen\",\"Sel\",\"Rab\",\"kam\",\"Jum\",\"Sab\"],dayNamesMin:[\"Mg\",\"Sn\",\"Sl\",\"Rb\",\"Km\",\"jm\",\"Sb\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"id\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayHtml:\"Sehari<br/>penuh\",eventLimitText:\"lebih\",noEventsMessage:\"Tidak ada acara untuk ditampilkan\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"id\",{months:\"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu\".split(\"_\"),weekdaysShort:\"Min_Sen_Sel_Rab_Kam_Jum_Sab\".split(\"_\"),weekdaysMin:\"Mg_Sn_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"siang\"===a?e>=11?e:e+12:\"sore\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"siang\":e<19?\"sore\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Besok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kemarin pukul] LT\",lastWeek:\"dddd [lalu pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lalu\",s:\"beberapa detik\",ss:\"%d detik\",m:\"semenit\",mm:\"%d menit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(142);var n=t(1);n.datepickerLocale(\"is\",\"is\",{closeText:\"Loka\",prevText:\"&#x3C; Fyrri\",nextText:\"Næsti &#x3E;\",currentText:\"Í dag\",monthNames:[\"Janúar\",\"Febrúar\",\"Mars\",\"Apríl\",\"Maí\",\"Júní\",\"Júlí\",\"Ágúst\",\"September\",\"Október\",\"Nóvember\",\"Desember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maí\",\"Jún\",\"Júl\",\"Ágú\",\"Sep\",\"Okt\",\"Nóv\",\"Des\"],dayNames:[\"Sunnudagur\",\"Mánudagur\",\"Þriðjudagur\",\"Miðvikudagur\",\"Fimmtudagur\",\"Föstudagur\",\"Laugardagur\"],dayNamesShort:[\"Sun\",\"Mán\",\"Þri\",\"Mið\",\"Fim\",\"Fös\",\"Lau\"],dayNamesMin:[\"Su\",\"Má\",\"Þr\",\"Mi\",\"Fi\",\"Fö\",\"La\"],weekHeader:\"Vika\",dateFormat:\"dd.mm.yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"is\",{buttonText:{month:\"Mánuður\",week:\"Vika\",day:\"Dagur\",list:\"Dagskrá\"},allDayHtml:\"Allan<br/>daginn\",eventLimitText:\"meira\",noEventsMessage:\"Engir viðburðir til að sýna\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%100==11||e%10!=1}function t(e,t,n,r){var s=e+\" \";switch(n){case\"s\":return t||r?\"nokkrar sekúndur\":\"nokkrum sekúndum\";case\"ss\":return a(e)?s+(t||r?\"sekúndur\":\"sekúndum\"):s+\"sekúnda\";case\"m\":return t?\"mínúta\":\"mínútu\";case\"mm\":return a(e)?s+(t||r?\"mínútur\":\"mínútum\"):t?s+\"mínúta\":s+\"mínútu\";case\"hh\":return a(e)?s+(t||r?\"klukkustundir\":\"klukkustundum\"):s+\"klukkustund\";case\"d\":return t?\"dagur\":r?\"dag\":\"degi\";case\"dd\":return a(e)?t?s+\"dagar\":s+(r?\"daga\":\"dögum\"):t?s+\"dagur\":s+(r?\"dag\":\"degi\");case\"M\":return t?\"mánuður\":r?\"mánuð\":\"mánuði\";case\"MM\":return a(e)?t?s+\"mánuðir\":s+(r?\"mánuði\":\"mánuðum\"):t?s+\"mánuður\":s+(r?\"mánuð\":\"mánuði\");case\"y\":return t||r?\"ár\":\"ári\";case\"yy\":return a(e)?s+(t||r?\"ár\":\"árum\"):s+(t||r?\"ár\":\"ári\")}}return e.defineLocale(\"is\",{months:\"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des\".split(\"_\"),weekdays:\"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur\".split(\"_\"),weekdaysShort:\"sun_mán_þri_mið_fim_fös_lau\".split(\"_\"),weekdaysMin:\"Su_Má_Þr_Mi_Fi_Fö_La\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd, D. MMMM YYYY [kl.] H:mm\"},calendar:{sameDay:\"[í dag kl.] LT\",nextDay:\"[á morgun kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[í gær kl.] LT\",lastWeek:\"[síðasta] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"eftir %s\",past:\"fyrir %s síðan\",s:t,ss:t,m:t,mm:t,h:\"klukkustund\",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(144);var n=t(1);n.datepickerLocale(\"it\",\"it\",{closeText:\"Chiudi\",prevText:\"&#x3C;Prec\",nextText:\"Succ&#x3E;\",currentText:\"Oggi\",monthNames:[\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"],monthNamesShort:[\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"],dayNames:[\"Domenica\",\"Lunedì\",\"Martedì\",\"Mercoledì\",\"Giovedì\",\"Venerdì\",\"Sabato\"],dayNamesShort:[\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\"],dayNamesMin:[\"Do\",\"Lu\",\"Ma\",\"Me\",\"Gi\",\"Ve\",\"Sa\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"it\",{buttonText:{month:\"Mese\",week:\"Settimana\",day:\"Giorno\",list:\"Agenda\"},allDayHtml:\"Tutto il<br/>giorno\",eventLimitText:function(e){return\"+altri \"+e},noEventsMessage:\"Non ci sono eventi da visualizzare\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"it\",{months:\"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre\".split(\"_\"),monthsShort:\"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic\".split(\"_\"),weekdays:\"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato\".split(\"_\"),weekdaysShort:\"dom_lun_mar_mer_gio_ven_sab\".split(\"_\"),weekdaysMin:\"do_lu_ma_me_gi_ve_sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Oggi alle] LT\",nextDay:\"[Domani alle] LT\",nextWeek:\"dddd [alle] LT\",lastDay:\"[Ieri alle] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[la scorsa] dddd [alle] LT\";default:return\"[lo scorso] dddd [alle] LT\"}},sameElse:\"L\"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?\"tra\":\"in\")+\" \"+e},past:\"%s fa\",s:\"alcuni secondi\",ss:\"%d secondi\",m:\"un minuto\",mm:\"%d minuti\",h:\"un'ora\",hh:\"%d ore\",d:\"un giorno\",dd:\"%d giorni\",M:\"un mese\",MM:\"%d mesi\",y:\"un anno\",yy:\"%d anni\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(146);var n=t(1);n.datepickerLocale(\"ja\",\"ja\",{closeText:\"閉じる\",prevText:\"&#x3C;前\",nextText:\"次&#x3E;\",currentText:\"今日\",monthNames:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],monthNamesShort:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],dayNames:[\"日曜日\",\"月曜日\",\"火曜日\",\"水曜日\",\"木曜日\",\"金曜日\",\"土曜日\"],dayNamesShort:[\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],dayNamesMin:[\"日\",\"月\",\"火\",\"水\",\"木\",\"金\",\"土\"],weekHeader:\"週\",dateFormat:\"yy/mm/dd\",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),n.locale(\"ja\",{buttonText:{month:\"月\",week:\"週\",day:\"日\",list:\"予定リスト\"},allDayText:\"終日\",eventLimitText:function(e){return\"他 \"+e+\" 件\"},noEventsMessage:\"イベントが表示されないように\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ja\",{months:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日\".split(\"_\"),weekdaysShort:\"日_月_火_水_木_金_土\".split(\"_\"),weekdaysMin:\"日_月_火_水_木_金_土\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日 HH:mm\",LLLL:\"YYYY年M月D日 HH:mm dddd\",l:\"YYYY/MM/DD\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日 HH:mm dddd\"},meridiemParse:/午前|午後/i,isPM:function(e){return\"午後\"===e},meridiem:function(e,a,t){return e<12?\"午前\":\"午後\"},calendar:{sameDay:\"[今日] LT\",nextDay:\"[明日] LT\",nextWeek:\"[来週]dddd LT\",lastDay:\"[昨日] LT\",lastWeek:\"[前週]dddd LT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}日/,ordinal:function(e,a){switch(a){case\"d\":case\"D\":case\"DDD\":return e+\"日\";default:return e}},relativeTime:{future:\"%s後\",past:\"%s前\",s:\"数秒\",ss:\"%d秒\",m:\"1分\",mm:\"%d分\",h:\"1時間\",hh:\"%d時間\",d:\"1日\",dd:\"%d日\",M:\"1ヶ月\",MM:\"%dヶ月\",y:\"1年\",yy:\"%d年\"}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(148);var n=t(1);n.datepickerLocale(\"ka\",\"ka\",{closeText:\"დახურვა\",prevText:\"წინა\",nextText:\"შემდეგი\",currentText:\"დღეს\",monthNames:[\"იანვარი\",\"თებერვალი\",\"მარტი\",\"აპრილი\",\"მაისი\",\"ივნისი\",\"ივლისი\",\"აგვისტო\",\"სექტემბერი\",\"ოქტომბერი\",\"ნოემბერი\",\"დეკემბერი\"],monthNamesShort:[\"იან\",\"თებ\",\"მარ\",\"აპრ\",\"მაი\",\"ივნ\",\"ივლ\",\"აგვ\",\"სექ\",\"ოქტ\",\"ნოე\",\"დეკ\"],dayNames:[\"კვირა\",\"ორშაბათი\",\"სამშაბათი\",\"ოთხშაბათი\",\"ხუთშაბათი\",\"პარასკევი\",\"შაბათი\"],dayNamesShort:[\"კვი\",\"ორშ\",\"სამ\",\"ოთხ\",\"ხუთ\",\"პარ\",\"შაბ\"],dayNamesMin:[\"კვ\",\"ორ\",\"სა\",\"ოთ\",\"ხუ\",\"პა\",\"შა\"],weekHeader:\"კვ\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ka\",{buttonText:{month:\"თვე\",week:\"კვირა\",day:\"დღე\",list:\"დღის წესრიგი\"},allDayText:\"მთელი დღე\",eventLimitText:function(e){return\"+ კიდევ \"+e},noEventsMessage:\"ღონისძიებები არ არის\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ka\",{months:{standalone:\"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი\".split(\"_\"),format:\"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს\".split(\"_\")},monthsShort:\"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ\".split(\"_\"),weekdays:{standalone:\"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი\".split(\"_\"),format:\"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს\".split(\"_\"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:\"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ\".split(\"_\"),weekdaysMin:\"კვ_ორ_სა_ოთ_ხუ_პა_შა\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[დღეს] LT[-ზე]\",nextDay:\"[ხვალ] LT[-ზე]\",lastDay:\"[გუშინ] LT[-ზე]\",nextWeek:\"[შემდეგ] dddd LT[-ზე]\",lastWeek:\"[წინა] dddd LT-ზე\",sameElse:\"L\"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,\"ში\"):e+\"ში\"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,\"ის უკან\"):/წელი/.test(e)?e.replace(/წელი$/,\"წლის უკან\"):void 0},s:\"რამდენიმე წამი\",ss:\"%d წამი\",m:\"წუთი\",mm:\"%d წუთი\",h:\"საათი\",hh:\"%d საათი\",d:\"დღე\",dd:\"%d დღე\",M:\"თვე\",MM:\"%d თვე\",y:\"წელი\",yy:\"%d წელი\"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+\"-ლი\":e<20||e<=100&&e%20==0||e%100==0?\"მე-\"+e:e+\"-ე\"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(150);var n=t(1);n.datepickerLocale(\"kk\",\"kk\",{closeText:\"Жабу\",prevText:\"&#x3C;Алдыңғы\",nextText:\"Келесі&#x3E;\",currentText:\"Бүгін\",monthNames:[\"Қаңтар\",\"Ақпан\",\"Наурыз\",\"Сәуір\",\"Мамыр\",\"Маусым\",\"Шілде\",\"Тамыз\",\"Қыркүйек\",\"Қазан\",\"Қараша\",\"Желтоқсан\"],\nmonthNamesShort:[\"Қаң\",\"Ақп\",\"Нау\",\"Сәу\",\"Мам\",\"Мау\",\"Шіл\",\"Там\",\"Қыр\",\"Қаз\",\"Қар\",\"Жел\"],dayNames:[\"Жексенбі\",\"Дүйсенбі\",\"Сейсенбі\",\"Сәрсенбі\",\"Бейсенбі\",\"Жұма\",\"Сенбі\"],dayNamesShort:[\"жкс\",\"дсн\",\"ссн\",\"срс\",\"бсн\",\"жма\",\"снб\"],dayNamesMin:[\"Жк\",\"Дс\",\"Сс\",\"Ср\",\"Бс\",\"Жм\",\"Сн\"],weekHeader:\"Не\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"kk\",{buttonText:{month:\"Ай\",week:\"Апта\",day:\"Күн\",list:\"Күн тәртібі\"},allDayText:\"Күні бойы\",eventLimitText:function(e){return\"+ тағы \"+e},noEventsMessage:\"Көрсету үшін оқиғалар жоқ\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={0:\"-ші\",1:\"-ші\",2:\"-ші\",3:\"-ші\",4:\"-ші\",5:\"-ші\",6:\"-шы\",7:\"-ші\",8:\"-ші\",9:\"-шы\",10:\"-шы\",20:\"-шы\",30:\"-шы\",40:\"-шы\",50:\"-ші\",60:\"-шы\",70:\"-ші\",80:\"-ші\",90:\"-шы\",100:\"-ші\"};return e.defineLocale(\"kk\",{months:\"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан\".split(\"_\"),monthsShort:\"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел\".split(\"_\"),weekdays:\"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі\".split(\"_\"),weekdaysShort:\"жек_дүй_сей_сәр_бей_жұм_сен\".split(\"_\"),weekdaysMin:\"жк_дй_сй_ср_бй_жм_сн\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Бүгін сағат] LT\",nextDay:\"[Ертең сағат] LT\",nextWeek:\"dddd [сағат] LT\",lastDay:\"[Кеше сағат] LT\",lastWeek:\"[Өткен аптаның] dddd [сағат] LT\",sameElse:\"L\"},relativeTime:{future:\"%s ішінде\",past:\"%s бұрын\",s:\"бірнеше секунд\",ss:\"%d секунд\",m:\"бір минут\",mm:\"%d минут\",h:\"бір сағат\",hh:\"%d сағат\",d:\"бір күн\",dd:\"%d күн\",M:\"бір ай\",MM:\"%d ай\",y:\"бір жыл\",yy:\"%d жыл\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ші|шы)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(152);var n=t(1);n.datepickerLocale(\"ko\",\"ko\",{closeText:\"닫기\",prevText:\"이전달\",nextText:\"다음달\",currentText:\"오늘\",monthNames:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"],monthNamesShort:[\"1월\",\"2월\",\"3월\",\"4월\",\"5월\",\"6월\",\"7월\",\"8월\",\"9월\",\"10월\",\"11월\",\"12월\"],dayNames:[\"일요일\",\"월요일\",\"화요일\",\"수요일\",\"목요일\",\"금요일\",\"토요일\"],dayNamesShort:[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"],dayNamesMin:[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"],weekHeader:\"주\",dateFormat:\"yy. m. d.\",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"년\"}),n.locale(\"ko\",{buttonText:{month:\"월\",week:\"주\",day:\"일\",list:\"일정목록\"},allDayText:\"종일\",eventLimitText:\"개\",noEventsMessage:\"일정이 없습니다\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ko\",{months:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),monthsShort:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),weekdays:\"일요일_월요일_화요일_수요일_목요일_금요일_토요일\".split(\"_\"),weekdaysShort:\"일_월_화_수_목_금_토\".split(\"_\"),weekdaysMin:\"일_월_화_수_목_금_토\".split(\"_\"),longDateFormat:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY년 MMMM D일\",LLL:\"YYYY년 MMMM D일 A h:mm\",LLLL:\"YYYY년 MMMM D일 dddd A h:mm\",l:\"YYYY.MM.DD.\",ll:\"YYYY년 MMMM D일\",lll:\"YYYY년 MMMM D일 A h:mm\",llll:\"YYYY년 MMMM D일 dddd A h:mm\"},calendar:{sameDay:\"오늘 LT\",nextDay:\"내일 LT\",nextWeek:\"dddd LT\",lastDay:\"어제 LT\",lastWeek:\"지난주 dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s 후\",past:\"%s 전\",s:\"몇 초\",ss:\"%d초\",m:\"1분\",mm:\"%d분\",h:\"한 시간\",hh:\"%d시간\",d:\"하루\",dd:\"%d일\",M:\"한 달\",MM:\"%d달\",y:\"일 년\",yy:\"%d년\"},dayOfMonthOrdinalParse:/\\d{1,2}(일|월|주)/,ordinal:function(e,a){switch(a){case\"d\":case\"D\":case\"DDD\":return e+\"일\";case\"M\":return e+\"월\";case\"w\":case\"W\":return e+\"주\";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return\"오후\"===e},meridiem:function(e,a,t){return e<12?\"오전\":\"오후\"}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(154);var n=t(1);n.datepickerLocale(\"lb\",\"lb\",{closeText:\"Fäerdeg\",prevText:\"Zréck\",nextText:\"Weider\",currentText:\"Haut\",monthNames:[\"Januar\",\"Februar\",\"Mäerz\",\"Abrëll\",\"Mee\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mäe\",\"Abr\",\"Mee\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],dayNames:[\"Sonndeg\",\"Méindeg\",\"Dënschdeg\",\"Mëttwoch\",\"Donneschdeg\",\"Freideg\",\"Samschdeg\"],dayNamesShort:[\"Son\",\"Méi\",\"Dën\",\"Mët\",\"Don\",\"Fre\",\"Sam\"],dayNamesMin:[\"So\",\"Mé\",\"Dë\",\"Më\",\"Do\",\"Fr\",\"Sa\"],weekHeader:\"W\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"lb\",{buttonText:{month:\"Mount\",week:\"Woch\",day:\"Dag\",list:\"Terminiwwersiicht\"},allDayText:\"Ganzen Dag\",eventLimitText:\"méi\",noEventsMessage:\"Nee Evenementer ze affichéieren\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:[\"eng Minutt\",\"enger Minutt\"],h:[\"eng Stonn\",\"enger Stonn\"],d:[\"een Dag\",\"engem Dag\"],M:[\"ee Mount\",\"engem Mount\"],y:[\"ee Joer\",\"engem Joer\"]};return a?r[t][0]:r[t][1]}function t(e){return r(e.substr(0,e.indexOf(\" \")))?\"a \"+e:\"an \"+e}function n(e){return r(e.substr(0,e.indexOf(\" \")))?\"viru \"+e:\"virun \"+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}return e.defineLocale(\"lb\",{months:\"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg\".split(\"_\"),weekdaysShort:\"So._Mé._Dë._Më._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mé_Dë_Më_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm [Auer]\",LTS:\"H:mm:ss [Auer]\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm [Auer]\",LLLL:\"dddd, D. MMMM YYYY H:mm [Auer]\"},calendar:{sameDay:\"[Haut um] LT\",sameElse:\"L\",nextDay:\"[Muer um] LT\",nextWeek:\"dddd [um] LT\",lastDay:\"[Gëschter um] LT\",lastWeek:function(){switch(this.day()){case 2:case 4:return\"[Leschten] dddd [um] LT\";default:return\"[Leschte] dddd [um] LT\"}}},relativeTime:{future:t,past:n,s:\"e puer Sekonnen\",ss:\"%d Sekonnen\",m:a,mm:\"%d Minutten\",h:a,hh:\"%d Stonnen\",d:a,dd:\"%d Deeg\",M:a,MM:\"%d Méint\",y:a,yy:\"%d Joer\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(156);var n=t(1);n.datepickerLocale(\"lt\",\"lt\",{closeText:\"Uždaryti\",prevText:\"&#x3C;Atgal\",nextText:\"Pirmyn&#x3E;\",currentText:\"Šiandien\",monthNames:[\"Sausis\",\"Vasaris\",\"Kovas\",\"Balandis\",\"Gegužė\",\"Birželis\",\"Liepa\",\"Rugpjūtis\",\"Rugsėjis\",\"Spalis\",\"Lapkritis\",\"Gruodis\"],monthNamesShort:[\"Sau\",\"Vas\",\"Kov\",\"Bal\",\"Geg\",\"Bir\",\"Lie\",\"Rugp\",\"Rugs\",\"Spa\",\"Lap\",\"Gru\"],dayNames:[\"sekmadienis\",\"pirmadienis\",\"antradienis\",\"trečiadienis\",\"ketvirtadienis\",\"penktadienis\",\"šeštadienis\"],dayNamesShort:[\"sek\",\"pir\",\"ant\",\"tre\",\"ket\",\"pen\",\"šeš\"],dayNamesMin:[\"Se\",\"Pr\",\"An\",\"Tr\",\"Ke\",\"Pe\",\"Še\"],weekHeader:\"SAV\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"\"}),n.locale(\"lt\",{buttonText:{month:\"Mėnuo\",week:\"Savaitė\",day:\"Diena\",list:\"Darbotvarkė\"},allDayText:\"Visą dieną\",eventLimitText:\"daugiau\",noEventsMessage:\"Nėra įvykių rodyti\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){return a?\"kelios sekundės\":n?\"kelių sekundžių\":\"kelias sekundes\"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10==0||e>10&&e<20}function r(e){return d[e].split(\"_\")}function s(e,a,s,d){var i=e+\" \";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={ss:\"sekundė_sekundžių_sekundes\",m:\"minutė_minutės_minutę\",mm:\"minutės_minučių_minutes\",h:\"valanda_valandos_valandą\",hh:\"valandos_valandų_valandas\",d:\"diena_dienos_dieną\",dd:\"dienos_dienų_dienas\",M:\"mėnuo_mėnesio_mėnesį\",MM:\"mėnesiai_mėnesių_mėnesius\",y:\"metai_metų_metus\",yy:\"metai_metų_metus\"};return e.defineLocale(\"lt\",{months:{format:\"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio\".split(\"_\"),standalone:\"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis\".split(\"_\"),isFormat:/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/},monthsShort:\"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd\".split(\"_\"),weekdays:{format:\"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį\".split(\"_\"),standalone:\"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis\".split(\"_\"),isFormat:/dddd HH:mm/},weekdaysShort:\"Sek_Pir_Ant_Tre_Ket_Pen_Šeš\".split(\"_\"),weekdaysMin:\"S_P_A_T_K_Pn_Š\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY [m.] MMMM D [d.]\",LLL:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",LLLL:\"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]\",l:\"YYYY-MM-DD\",ll:\"YYYY [m.] MMMM D [d.]\",lll:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",llll:\"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]\"},calendar:{sameDay:\"[Šiandien] LT\",nextDay:\"[Rytoj] LT\",nextWeek:\"dddd LT\",lastDay:\"[Vakar] LT\",lastWeek:\"[Praėjusį] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"po %s\",past:\"prieš %s\",s:a,ss:s,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},dayOfMonthOrdinalParse:/\\d{1,2}-oji/,ordinal:function(e){return e+\"-oji\"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(158);var n=t(1);n.datepickerLocale(\"lv\",\"lv\",{closeText:\"Aizvērt\",prevText:\"Iepr.\",nextText:\"Nāk.\",currentText:\"Šodien\",monthNames:[\"Janvāris\",\"Februāris\",\"Marts\",\"Aprīlis\",\"Maijs\",\"Jūnijs\",\"Jūlijs\",\"Augusts\",\"Septembris\",\"Oktobris\",\"Novembris\",\"Decembris\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Jūn\",\"Jūl\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"svētdiena\",\"pirmdiena\",\"otrdiena\",\"trešdiena\",\"ceturtdiena\",\"piektdiena\",\"sestdiena\"],dayNamesShort:[\"svt\",\"prm\",\"otr\",\"tre\",\"ctr\",\"pkt\",\"sst\"],dayNamesMin:[\"Sv\",\"Pr\",\"Ot\",\"Tr\",\"Ct\",\"Pk\",\"Ss\"],weekHeader:\"Ned.\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"lv\",{buttonText:{month:\"Mēnesis\",week:\"Nedēļa\",day:\"Diena\",list:\"Dienas kārtība\"},allDayText:\"Visu dienu\",eventLimitText:function(e){return\"+vēl \"+e},noEventsMessage:\"Nav notikumu\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function t(e,t,n){return e+\" \"+a(s[n],e,t)}function n(e,t,n){return a(s[n],e,t)}function r(e,a){return a?\"dažas sekundes\":\"dažām sekundēm\"}var s={ss:\"sekundes_sekundēm_sekunde_sekundes\".split(\"_\"),m:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),mm:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),h:\"stundas_stundām_stunda_stundas\".split(\"_\"),hh:\"stundas_stundām_stunda_stundas\".split(\"_\"),d:\"dienas_dienām_diena_dienas\".split(\"_\"),dd:\"dienas_dienām_diena_dienas\".split(\"_\"),M:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),MM:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),y:\"gada_gadiem_gads_gadi\".split(\"_\"),yy:\"gada_gadiem_gads_gadi\".split(\"_\")};return e.defineLocale(\"lv\",{months:\"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena\".split(\"_\"),weekdaysShort:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysMin:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY.\",LL:\"YYYY. [gada] D. MMMM\",LLL:\"YYYY. [gada] D. MMMM, HH:mm\",LLLL:\"YYYY. [gada] D. MMMM, dddd, HH:mm\"},calendar:{sameDay:\"[Šodien pulksten] LT\",nextDay:\"[Rīt pulksten] LT\",nextWeek:\"dddd [pulksten] LT\",lastDay:\"[Vakar pulksten] LT\",lastWeek:\"[Pagājušā] dddd [pulksten] LT\",sameElse:\"L\"},relativeTime:{future:\"pēc %s\",past:\"pirms %s\",s:r,ss:t,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(160);var n=t(1);n.datepickerLocale(\"mk\",\"mk\",{closeText:\"Затвори\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Денес\",monthNames:[\"Јануари\",\"Февруари\",\"Март\",\"Април\",\"Мај\",\"Јуни\",\"Јули\",\"Август\",\"Септември\",\"Октомври\",\"Ноември\",\"Декември\"],monthNamesShort:[\"Јан\",\"Фев\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Ное\",\"Дек\"],dayNames:[\"Недела\",\"Понеделник\",\"Вторник\",\"Среда\",\"Четврток\",\"Петок\",\"Сабота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Вто\",\"Сре\",\"Чет\",\"Пет\",\"Саб\"],dayNamesMin:[\"Не\",\"По\",\"Вт\",\"Ср\",\"Че\",\"Пе\",\"Са\"],weekHeader:\"Сед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"mk\",{buttonText:{month:\"Месец\",week:\"Недела\",day:\"Ден\",list:\"График\"},allDayText:\"Цел ден\",eventLimitText:function(e){return\"+повеќе \"+e},noEventsMessage:\"Нема настани за прикажување\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"mk\",{months:\"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"недела_понеделник_вторник_среда_четврток_петок_сабота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сре_чет_пет_саб\".split(\"_\"),weekdaysMin:\"нe_пo_вт_ср_че_пе_сa\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Денес во] LT\",nextDay:\"[Утре во] LT\",nextWeek:\"[Во] dddd [во] LT\",lastDay:\"[Вчера во] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[Изминатата] dddd [во] LT\";case 1:case 2:case 4:case 5:return\"[Изминатиот] dddd [во] LT\"}},sameElse:\"L\"},relativeTime:{future:\"после %s\",past:\"пред %s\",s:\"неколку секунди\",ss:\"%d секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дена\",M:\"месец\",MM:\"%d месеци\",y:\"година\",yy:\"%d години\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+\"-ев\":0===t?e+\"-ен\":t>10&&t<20?e+\"-ти\":1===a?e+\"-ви\":2===a?e+\"-ри\":7===a||8===a?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(162);var n=t(1);n.datepickerLocale(\"ms-my\",\"ms\",{closeText:\"Tutup\",prevText:\"&#x3C;Sebelum\",nextText:\"Selepas&#x3E;\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Mac\",\"April\",\"Mei\",\"Jun\",\"Julai\",\"Ogos\",\"September\",\"Oktober\",\"November\",\"Disember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mac\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Ogo\",\"Sep\",\"Okt\",\"Nov\",\"Dis\"],dayNames:[\"Ahad\",\"Isnin\",\"Selasa\",\"Rabu\",\"Khamis\",\"Jumaat\",\"Sabtu\"],dayNamesShort:[\"Aha\",\"Isn\",\"Sel\",\"Rab\",\"kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"Is\",\"Se\",\"Ra\",\"Kh\",\"Ju\",\"Sa\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ms-my\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayText:\"Sepanjang hari\",eventLimitText:function(e){return\"masih ada \"+e+\" acara\"},noEventsMessage:\"Tiada peristiwa untuk dipaparkan\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ms-my\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"tengahari\"===a?e>=11?e:e+12:\"petang\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"tengahari\":e<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",ss:\"%d saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(164);var n=t(1);n.datepickerLocale(\"ms\",\"ms\",{closeText:\"Tutup\",prevText:\"&#x3C;Sebelum\",nextText:\"Selepas&#x3E;\",currentText:\"hari ini\",monthNames:[\"Januari\",\"Februari\",\"Mac\",\"April\",\"Mei\",\"Jun\",\"Julai\",\"Ogos\",\"September\",\"Oktober\",\"November\",\"Disember\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mac\",\"Apr\",\"Mei\",\"Jun\",\"Jul\",\"Ogo\",\"Sep\",\"Okt\",\"Nov\",\"Dis\"],dayNames:[\"Ahad\",\"Isnin\",\"Selasa\",\"Rabu\",\"Khamis\",\"Jumaat\",\"Sabtu\"],dayNamesShort:[\"Aha\",\"Isn\",\"Sel\",\"Rab\",\"kha\",\"Jum\",\"Sab\"],dayNamesMin:[\"Ah\",\"Is\",\"Se\",\"Ra\",\"Kh\",\"Ju\",\"Sa\"],weekHeader:\"Mg\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ms\",{buttonText:{month:\"Bulan\",week:\"Minggu\",day:\"Hari\",list:\"Agenda\"},allDayText:\"Sepanjang hari\",eventLimitText:function(e){return\"masih ada \"+e+\" acara\"},noEventsMessage:\"Tiada peristiwa untuk dipaparkan\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"ms\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),\"pagi\"===a?e:\"tengahari\"===a?e>=11?e:e+12:\"petang\"===a||\"malam\"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?\"pagi\":e<15?\"tengahari\":e<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",ss:\"%d saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(166);var n=t(1);n.datepickerLocale(\"nb\",\"nb\",{closeText:\"Lukk\",prevText:\"&#xAB;Forrige\",nextText:\"Neste&#xBB;\",currentText:\"I dag\",monthNames:[\"januar\",\"februar\",\"mars\",\"april\",\"mai\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"desember\"],monthNamesShort:[\"jan\",\"feb\",\"mar\",\"apr\",\"mai\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"des\"],dayNamesShort:[\"søn\",\"man\",\"tir\",\"ons\",\"tor\",\"fre\",\"lør\"],dayNames:[\"søndag\",\"mandag\",\"tirsdag\",\"onsdag\",\"torsdag\",\"fredag\",\"lørdag\"],dayNamesMin:[\"sø\",\"ma\",\"ti\",\"on\",\"to\",\"fr\",\"lø\"],weekHeader:\"Uke\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"nb\",{buttonText:{month:\"Måned\",week:\"Uke\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dagen\",eventLimitText:\"til\",noEventsMessage:\"Ingen hendelser å vise\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"nb\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"sø._ma._ti._on._to._fr._lø.\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[forrige] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"noen sekunder\",ss:\"%d sekunder\",m:\"ett minutt\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dager\",M:\"en måned\",MM:\"%d måneder\",y:\"ett år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(168);var n=t(1);n.datepickerLocale(\"nl-be\",\"nl-BE\",{closeText:\"Sluiten\",prevText:\"←\",nextText:\"→\",currentText:\"Vandaag\",monthNames:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthNamesShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],dayNames:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"],dayNamesShort:[\"zon\",\"maa\",\"din\",\"woe\",\"don\",\"vri\",\"zat\"],dayNamesMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"nl-be\",{buttonText:{month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dag\",eventLimitText:\"extra\",noEventsMessage:\"Geen evenementen om te laten zien\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),t=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;return e.defineLocale(\"nl-be\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"zo_ma_di_wo_do_vr_za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",ss:\"%d seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(170);var n=t(1);n.datepickerLocale(\"nl\",\"nl\",{closeText:\"Sluiten\",prevText:\"←\",nextText:\"→\",currentText:\"Vandaag\",monthNames:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthNamesShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],dayNames:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"],dayNamesShort:[\"zon\",\"maa\",\"din\",\"woe\",\"don\",\"vri\",\"zat\"],dayNamesMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],weekHeader:\"Wk\",dateFormat:\"dd-mm-yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"nl\",{buttonText:{year:\"Jaar\",month:\"Maand\",week:\"Week\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Hele dag\",eventLimitText:\"extra\",noEventsMessage:\"Geen evenementen om te laten zien\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),t=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;return e.defineLocale(\"nl\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"zo_ma_di_wo_do_vr_za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",ss:\"%d seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(172);var n=t(1);n.datepickerLocale(\"nn\",\"nn\",{closeText:\"Lukk\",prevText:\"&#xAB;Førre\",nextText:\"Neste&#xBB;\",currentText:\"I dag\",monthNames:[\"januar\",\"februar\",\"mars\",\"april\",\"mai\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"desember\"],monthNamesShort:[\"jan\",\"feb\",\"mar\",\"apr\",\"mai\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"des\"],dayNamesShort:[\"sun\",\"mån\",\"tys\",\"ons\",\"tor\",\"fre\",\"lau\"],dayNames:[\"sundag\",\"måndag\",\"tysdag\",\"onsdag\",\"torsdag\",\"fredag\",\"laurdag\"],dayNamesMin:[\"su\",\"må\",\"ty\",\"on\",\"to\",\"fr\",\"la\"],weekHeader:\"Veke\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"nn\",{buttonText:{month:\"Månad\",week:\"Veke\",day:\"Dag\",list:\"Agenda\"},allDayText:\"Heile dagen\",eventLimitText:\"til\",noEventsMessage:\"Ingen hendelser å vise\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"nn\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag\".split(\"_\"),weekdaysShort:\"sun_mån_tys_ons_tor_fre_lau\".split(\"_\"),weekdaysMin:\"su_må_ty_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[I dag klokka] LT\",nextDay:\"[I morgon klokka] LT\",nextWeek:\"dddd [klokka] LT\",lastDay:\"[I går klokka] LT\",lastWeek:\"[Føregåande] dddd [klokka] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s sidan\",s:\"nokre sekund\",ss:\"%d sekund\",m:\"eit minutt\",mm:\"%d minutt\",h:\"ein time\",hh:\"%d timar\",d:\"ein dag\",dd:\"%d dagar\",M:\"ein månad\",MM:\"%d månader\",y:\"eit år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(174);var n=t(1);n.datepickerLocale(\"pl\",\"pl\",{closeText:\"Zamknij\",prevText:\"&#x3C;Poprzedni\",nextText:\"Następny&#x3E;\",currentText:\"Dziś\",monthNames:[\"Styczeń\",\"Luty\",\"Marzec\",\"Kwiecień\",\"Maj\",\"Czerwiec\",\"Lipiec\",\"Sierpień\",\"Wrzesień\",\"Październik\",\"Listopad\",\"Grudzień\"],monthNamesShort:[\"Sty\",\"Lu\",\"Mar\",\"Kw\",\"Maj\",\"Cze\",\"Lip\",\"Sie\",\"Wrz\",\"Pa\",\"Lis\",\"Gru\"],dayNames:[\"Niedziela\",\"Poniedziałek\",\"Wtorek\",\"Środa\",\"Czwartek\",\"Piątek\",\"Sobota\"],dayNamesShort:[\"Nie\",\"Pn\",\"Wt\",\"Śr\",\"Czw\",\"Pt\",\"So\"],dayNamesMin:[\"N\",\"Pn\",\"Wt\",\"Śr\",\"Cz\",\"Pt\",\"So\"],weekHeader:\"Tydz\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"pl\",{buttonText:{month:\"Miesiąc\",week:\"Tydzień\",day:\"Dzień\",list:\"Plan dnia\"},allDayText:\"Cały dzień\",eventLimitText:\"więcej\",noEventsMessage:\"Brak wydarzeń do wyświetlenia\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function t(e,t,n){var r=e+\" \";switch(n){case\"ss\":return r+(a(e)?\"sekundy\":\"sekund\");case\"m\":return t?\"minuta\":\"minutę\";case\"mm\":return r+(a(e)?\"minuty\":\"minut\");case\"h\":return t?\"godzina\":\"godzinę\";case\"hh\":return r+(a(e)?\"godziny\":\"godzin\");case\"MM\":return r+(a(e)?\"miesiące\":\"miesięcy\");case\"yy\":return r+(a(e)?\"lata\":\"lat\")}}var n=\"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień\".split(\"_\"),r=\"stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia\".split(\"_\");return e.defineLocale(\"pl\",{months:function(e,a){return e?\"\"===a?\"(\"+r[e.month()]+\"|\"+n[e.month()]+\")\":/D MMMM/.test(a)?r[e.month()]:n[e.month()]:n},monthsShort:\"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru\".split(\"_\"),weekdays:\"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota\".split(\"_\"),weekdaysShort:\"ndz_pon_wt_śr_czw_pt_sob\".split(\"_\"),weekdaysMin:\"Nd_Pn_Wt_Śr_Cz_Pt_So\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Dziś o] LT\",nextDay:\"[Jutro o] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[W niedzielę o] LT\";case 2:return\"[We wtorek o] LT\";case 3:return\"[W środę o] LT\";case 6:return\"[W sobotę o] LT\";default:return\"[W] dddd [o] LT\"}},lastDay:\"[Wczoraj o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[W zeszłą niedzielę o] LT\";case 3:return\"[W zeszłą środę o] LT\";case 6:return\"[W zeszłą sobotę o] LT\";default:return\"[W zeszły] dddd [o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"%s temu\",s:\"kilka sekund\",ss:t,m:t,mm:t,h:t,hh:t,d:\"1 dzień\",dd:\"%d dni\",M:\"miesiąc\",MM:t,y:\"rok\",yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(176);var n=t(1);n.datepickerLocale(\"pt-br\",\"pt-BR\",{closeText:\"Fechar\",prevText:\"&#x3C;Anterior\",nextText:\"Próximo&#x3E;\",currentText:\"Hoje\",monthNames:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],monthNamesShort:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],dayNames:[\"Domingo\",\"Segunda-feira\",\"Terça-feira\",\"Quarta-feira\",\"Quinta-feira\",\"Sexta-feira\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],dayNamesMin:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],weekHeader:\"Sm\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"pt-br\",{buttonText:{month:\"Mês\",week:\"Semana\",day:\"Dia\",list:\"Compromissos\"},allDayText:\"dia inteiro\",eventLimitText:function(e){return\"mais +\"+e},noEventsMessage:\"Não há eventos para mostrar\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"pt-br\",{months:\"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro\".split(\"_\"),monthsShort:\"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez\".split(\"_\"),weekdays:\"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Do_2ª_3ª_4ª_5ª_6ª_Sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY [às] HH:mm\",\nLLLL:\"dddd, D [de] MMMM [de] YYYY [às] HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"há %s\",s:\"poucos segundos\",ss:\"%d segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\"})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(178);var n=t(1);n.datepickerLocale(\"pt\",\"pt\",{closeText:\"Fechar\",prevText:\"Anterior\",nextText:\"Seguinte\",currentText:\"Hoje\",monthNames:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],monthNamesShort:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],dayNames:[\"Domingo\",\"Segunda-feira\",\"Terça-feira\",\"Quarta-feira\",\"Quinta-feira\",\"Sexta-feira\",\"Sábado\"],dayNamesShort:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],dayNamesMin:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\"],weekHeader:\"Sem\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"pt\",{buttonText:{month:\"Mês\",week:\"Semana\",day:\"Dia\",list:\"Agenda\"},allDayText:\"Todo o dia\",eventLimitText:\"mais\",noEventsMessage:\"Não há eventos para mostrar\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"pt\",{months:\"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro\".split(\"_\"),monthsShort:\"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez\".split(\"_\"),weekdays:\"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Do_2ª_3ª_4ª_5ª_6ª_Sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"há %s\",s:\"segundos\",ss:\"%d segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(180);var n=t(1);n.datepickerLocale(\"ro\",\"ro\",{closeText:\"Închide\",prevText:\"&#xAB; Luna precedentă\",nextText:\"Luna următoare &#xBB;\",currentText:\"Azi\",monthNames:[\"Ianuarie\",\"Februarie\",\"Martie\",\"Aprilie\",\"Mai\",\"Iunie\",\"Iulie\",\"August\",\"Septembrie\",\"Octombrie\",\"Noiembrie\",\"Decembrie\"],monthNamesShort:[\"Ian\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Iun\",\"Iul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Duminică\",\"Luni\",\"Marţi\",\"Miercuri\",\"Joi\",\"Vineri\",\"Sâmbătă\"],dayNamesShort:[\"Dum\",\"Lun\",\"Mar\",\"Mie\",\"Joi\",\"Vin\",\"Sâm\"],dayNamesMin:[\"Du\",\"Lu\",\"Ma\",\"Mi\",\"Jo\",\"Vi\",\"Sâ\"],weekHeader:\"Săpt\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ro\",{buttonText:{prev:\"precedentă\",next:\"următoare\",month:\"Lună\",week:\"Săptămână\",day:\"Zi\",list:\"Agendă\"},allDayText:\"Toată ziua\",eventLimitText:function(e){return\"+alte \"+e},noEventsMessage:\"Nu există evenimente de afișat\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n={ss:\"secunde\",mm:\"minute\",hh:\"ore\",dd:\"zile\",MM:\"luni\",yy:\"ani\"},r=\" \";return(e%100>=20||e>=100&&e%100==0)&&(r=\" de \"),e+r+n[t]}return e.defineLocale(\"ro\",{months:\"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie\".split(\"_\"),monthsShort:\"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"duminică_luni_marți_miercuri_joi_vineri_sâmbătă\".split(\"_\"),weekdaysShort:\"Dum_Lun_Mar_Mie_Joi_Vin_Sâm\".split(\"_\"),weekdaysMin:\"Du_Lu_Ma_Mi_Jo_Vi_Sâ\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[azi la] LT\",nextDay:\"[mâine la] LT\",nextWeek:\"dddd [la] LT\",lastDay:\"[ieri la] LT\",lastWeek:\"[fosta] dddd [la] LT\",sameElse:\"L\"},relativeTime:{future:\"peste %s\",past:\"%s în urmă\",s:\"câteva secunde\",ss:a,m:\"un minut\",mm:a,h:\"o oră\",hh:a,d:\"o zi\",dd:a,M:\"o lună\",MM:a,y:\"un an\",yy:a},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(182);var n=t(1);n.datepickerLocale(\"ru\",\"ru\",{closeText:\"Закрыть\",prevText:\"&#x3C;Пред\",nextText:\"След&#x3E;\",currentText:\"Сегодня\",monthNames:[\"Январь\",\"Февраль\",\"Март\",\"Апрель\",\"Май\",\"Июнь\",\"Июль\",\"Август\",\"Сентябрь\",\"Октябрь\",\"Ноябрь\",\"Декабрь\"],monthNamesShort:[\"Янв\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Июн\",\"Июл\",\"Авг\",\"Сен\",\"Окт\",\"Ноя\",\"Дек\"],dayNames:[\"воскресенье\",\"понедельник\",\"вторник\",\"среда\",\"четверг\",\"пятница\",\"суббота\"],dayNamesShort:[\"вск\",\"пнд\",\"втр\",\"срд\",\"чтв\",\"птн\",\"сбт\"],dayNamesMin:[\"Вс\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],weekHeader:\"Нед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"ru\",{buttonText:{month:\"Месяц\",week:\"Неделя\",day:\"День\",list:\"Повестка дня\"},allDayText:\"Весь день\",eventLimitText:function(e){return\"+ ещё \"+e},noEventsMessage:\"Нет событий для отображения\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split(\"_\");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?\"секунда_секунды_секунд\":\"секунду_секунды_секунд\",mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"};return\"m\"===n?t?\"минута\":\"минуту\":e+\" \"+a(r[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return e.defineLocale(\"ru\",{months:{format:\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),standalone:\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\")},monthsShort:{format:\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),standalone:\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\")},weekdays:{standalone:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),format:\"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу\".split(\"_\"),isFormat:/\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/},weekdaysShort:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsShortRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},calendar:{sameDay:\"[Сегодня в] LT\",nextDay:\"[Завтра в] LT\",lastDay:\"[Вчера в] LT\",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В следующее] dddd [в] LT\";case 1:case 2:case 4:return\"[В следующий] dddd [в] LT\";case 3:case 5:case 6:return\"[В следующую] dddd [в] LT\"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В прошлое] dddd [в] LT\";case 1:case 2:case 4:return\"[В прошлый] dddd [в] LT\";case 3:case 5:case 6:return\"[В прошлую] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",ss:t,m:t,mm:t,h:\"час\",hh:t,d:\"день\",dd:t,M:\"месяц\",MM:t,y:\"год\",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?\"ночи\":e<12?\"утра\":e<17?\"дня\":\"вечера\"},dayOfMonthOrdinalParse:/\\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case\"M\":case\"d\":case\"DDD\":return e+\"-й\";case\"D\":return e+\"-го\";case\"w\":case\"W\":return e+\"-я\";default:return e}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(184);var n=t(1);n.datepickerLocale(\"sk\",\"sk\",{closeText:\"Zavrieť\",prevText:\"&#x3C;Predchádzajúci\",nextText:\"Nasledujúci&#x3E;\",currentText:\"Dnes\",monthNames:[\"január\",\"február\",\"marec\",\"apríl\",\"máj\",\"jún\",\"júl\",\"august\",\"september\",\"október\",\"november\",\"december\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Máj\",\"Jún\",\"Júl\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"nedeľa\",\"pondelok\",\"utorok\",\"streda\",\"štvrtok\",\"piatok\",\"sobota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Str\",\"Štv\",\"Pia\",\"Sob\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"St\",\"Št\",\"Pia\",\"So\"],weekHeader:\"Ty\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sk\",{buttonText:{month:\"Mesiac\",week:\"Týždeň\",day:\"Deň\",list:\"Rozvrh\"},allDayText:\"Celý deň\",eventLimitText:function(e){return\"+ďalšie: \"+e},noEventsMessage:\"Žiadne akcie na zobrazenie\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5}function t(e,t,n,r){var s=e+\" \";switch(n){case\"s\":return t||r?\"pár sekúnd\":\"pár sekundami\";case\"ss\":return t||r?s+(a(e)?\"sekundy\":\"sekúnd\"):s+\"sekundami\";case\"m\":return t?\"minúta\":r?\"minútu\":\"minútou\";case\"mm\":return t||r?s+(a(e)?\"minúty\":\"minút\"):s+\"minútami\";case\"h\":return t?\"hodina\":r?\"hodinu\":\"hodinou\";case\"hh\":return t||r?s+(a(e)?\"hodiny\":\"hodín\"):s+\"hodinami\";case\"d\":return t||r?\"deň\":\"dňom\";case\"dd\":return t||r?s+(a(e)?\"dni\":\"dní\"):s+\"dňami\";case\"M\":return t||r?\"mesiac\":\"mesiacom\";case\"MM\":return t||r?s+(a(e)?\"mesiace\":\"mesiacov\"):s+\"mesiacmi\";case\"y\":return t||r?\"rok\":\"rokom\";case\"yy\":return t||r?s+(a(e)?\"roky\":\"rokov\"):s+\"rokmi\"}}var n=\"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december\".split(\"_\"),r=\"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec\".split(\"_\");return e.defineLocale(\"sk\",{months:n,monthsShort:r,weekdays:\"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota\".split(\"_\"),weekdaysShort:\"ne_po_ut_st_št_pi_so\".split(\"_\"),weekdaysMin:\"ne_po_ut_st_št_pi_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[dnes o] LT\",nextDay:\"[zajtra o] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v nedeľu o] LT\";case 1:case 2:return\"[v] dddd [o] LT\";case 3:return\"[v stredu o] LT\";case 4:return\"[vo štvrtok o] LT\";case 5:return\"[v piatok o] LT\";case 6:return\"[v sobotu o] LT\"}},lastDay:\"[včera o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulú nedeľu o] LT\";case 1:case 2:return\"[minulý] dddd [o] LT\";case 3:return\"[minulú stredu o] LT\";case 4:case 5:return\"[minulý] dddd [o] LT\";case 6:return\"[minulú sobotu o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pred %s\",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(186);var n=t(1);n.datepickerLocale(\"sl\",\"sl\",{closeText:\"Zapri\",prevText:\"&#x3C;Prejšnji\",nextText:\"Naslednji&#x3E;\",currentText:\"Trenutni\",monthNames:[\"Januar\",\"Februar\",\"Marec\",\"April\",\"Maj\",\"Junij\",\"Julij\",\"Avgust\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Nedelja\",\"Ponedeljek\",\"Torek\",\"Sreda\",\"Četrtek\",\"Petek\",\"Sobota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Tor\",\"Sre\",\"Čet\",\"Pet\",\"Sob\"],dayNamesMin:[\"Ne\",\"Po\",\"To\",\"Sr\",\"Če\",\"Pe\",\"So\"],weekHeader:\"Teden\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sl\",{buttonText:{month:\"Mesec\",week:\"Teden\",day:\"Dan\",list:\"Dnevni red\"},allDayText:\"Ves dan\",eventLimitText:\"več\",noEventsMessage:\"Ni dogodkov za prikaz\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e+\" \";switch(t){case\"s\":return a||n?\"nekaj sekund\":\"nekaj sekundami\";case\"ss\":return r+=1===e?a?\"sekundo\":\"sekundi\":2===e?a||n?\"sekundi\":\"sekundah\":e<5?a||n?\"sekunde\":\"sekundah\":\"sekund\";case\"m\":return a?\"ena minuta\":\"eno minuto\";case\"mm\":return r+=1===e?a?\"minuta\":\"minuto\":2===e?a||n?\"minuti\":\"minutama\":e<5?a||n?\"minute\":\"minutami\":a||n?\"minut\":\"minutami\";case\"h\":return a?\"ena ura\":\"eno uro\";case\"hh\":return r+=1===e?a?\"ura\":\"uro\":2===e?a||n?\"uri\":\"urama\":e<5?a||n?\"ure\":\"urami\":a||n?\"ur\":\"urami\";case\"d\":return a||n?\"en dan\":\"enim dnem\";case\"dd\":return r+=1===e?a||n?\"dan\":\"dnem\":2===e?a||n?\"dni\":\"dnevoma\":a||n?\"dni\":\"dnevi\";case\"M\":return a||n?\"en mesec\":\"enim mesecem\";case\"MM\":return r+=1===e?a||n?\"mesec\":\"mesecem\":2===e?a||n?\"meseca\":\"mesecema\":e<5?a||n?\"mesece\":\"meseci\":a||n?\"mesecev\":\"meseci\";case\"y\":return a||n?\"eno leto\":\"enim letom\";case\"yy\":return r+=1===e?a||n?\"leto\":\"letom\":2===e?a||n?\"leti\":\"letoma\":e<5?a||n?\"leta\":\"leti\":a||n?\"let\":\"leti\"}}return e.defineLocale(\"sl\",{months:\"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota\".split(\"_\"),weekdaysShort:\"ned._pon._tor._sre._čet._pet._sob.\".split(\"_\"),weekdaysMin:\"ne_po_to_sr_če_pe_so\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danes ob] LT\",nextDay:\"[jutri ob] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v] [nedeljo] [ob] LT\";case 3:return\"[v] [sredo] [ob] LT\";case 6:return\"[v] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[v] dddd [ob] LT\"}},lastDay:\"[včeraj ob] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[prejšnjo] [nedeljo] [ob] LT\";case 3:return\"[prejšnjo] [sredo] [ob] LT\";case 6:return\"[prejšnjo] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[prejšnji] dddd [ob] LT\"}},sameElse:\"L\"},relativeTime:{future:\"čez %s\",past:\"pred %s\",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(188);var n=t(1);n.datepickerLocale(\"sq\",\"sq\",{closeText:\"mbylle\",prevText:\"&#x3C;mbrapa\",nextText:\"Përpara&#x3E;\",currentText:\"sot\",monthNames:[\"Janar\",\"Shkurt\",\"Mars\",\"Prill\",\"Maj\",\"Qershor\",\"Korrik\",\"Gusht\",\"Shtator\",\"Tetor\",\"Nëntor\",\"Dhjetor\"],monthNamesShort:[\"Jan\",\"Shk\",\"Mar\",\"Pri\",\"Maj\",\"Qer\",\"Kor\",\"Gus\",\"Sht\",\"Tet\",\"Nën\",\"Dhj\"],dayNames:[\"E Diel\",\"E Hënë\",\"E Martë\",\"E Mërkurë\",\"E Enjte\",\"E Premte\",\"E Shtune\"],dayNamesShort:[\"Di\",\"Hë\",\"Ma\",\"Më\",\"En\",\"Pr\",\"Sh\"],dayNamesMin:[\"Di\",\"Hë\",\"Ma\",\"Më\",\"En\",\"Pr\",\"Sh\"],weekHeader:\"Ja\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sq\",{buttonText:{month:\"Muaj\",week:\"Javë\",day:\"Ditë\",list:\"Listë\"},allDayHtml:\"Gjithë<br/>ditën\",eventLimitText:function(e){return\"+më tepër \"+e},noEventsMessage:\"Nuk ka evente për të shfaqur\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"sq\",{months:\"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor\".split(\"_\"),monthsShort:\"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj\".split(\"_\"),weekdays:\"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë\".split(\"_\"),weekdaysShort:\"Die_Hën_Mar_Mër_Enj_Pre_Sht\".split(\"_\"),weekdaysMin:\"D_H_Ma_Më_E_P_Sh\".split(\"_\"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return\"M\"===e.charAt(0)},meridiem:function(e,a,t){return e<12?\"PD\":\"MD\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Sot në] LT\",nextDay:\"[Nesër në] LT\",nextWeek:\"dddd [në] LT\",lastDay:\"[Dje në] LT\",lastWeek:\"dddd [e kaluar në] LT\",sameElse:\"L\"},relativeTime:{future:\"në %s\",past:\"%s më parë\",s:\"disa sekonda\",ss:\"%d sekonda\",m:\"një minutë\",mm:\"%d minuta\",h:\"një orë\",hh:\"%d orë\",d:\"një ditë\",dd:\"%d ditë\",M:\"një muaj\",MM:\"%d muaj\",y:\"një vit\",yy:\"%d vite\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(190);var n=t(1);n.datepickerLocale(\"sr-cyrl\",\"sr\",{closeText:\"Затвори\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Данас\",monthNames:[\"Јануар\",\"Фебруар\",\"Март\",\"Април\",\"Мај\",\"Јун\",\"Јул\",\"Август\",\"Септембар\",\"Октобар\",\"Новембар\",\"Децембар\"],monthNamesShort:[\"Јан\",\"Феб\",\"Мар\",\"Апр\",\"Мај\",\"Јун\",\"Јул\",\"Авг\",\"Сеп\",\"Окт\",\"Нов\",\"Дец\"],dayNames:[\"Недеља\",\"Понедељак\",\"Уторак\",\"Среда\",\"Четвртак\",\"Петак\",\"Субота\"],dayNamesShort:[\"Нед\",\"Пон\",\"Уто\",\"Сре\",\"Чет\",\"Пет\",\"Суб\"],dayNamesMin:[\"Не\",\"По\",\"Ут\",\"Ср\",\"Че\",\"Пе\",\"Су\"],weekHeader:\"Сед\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sr-cyrl\",{buttonText:{prev:\"Претходна\",next:\"следећи\",month:\"Месец\",week:\"Недеља\",day:\"Дан\",list:\"Планер\"},allDayText:\"Цео дан\",eventLimitText:function(e){return\"+ још \"+e},noEventsMessage:\"Нема догађаја за приказ\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:[\"секунда\",\"секунде\",\"секунди\"],m:[\"један минут\",\"једне минуте\"],mm:[\"минут\",\"минуте\",\"минута\"],h:[\"један сат\",\"једног сата\"],hh:[\"сат\",\"сата\",\"сати\"],dd:[\"дан\",\"дана\",\"дана\"],MM:[\"месец\",\"месеца\",\"месеци\"],yy:[\"година\",\"године\",\"година\"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+\" \"+a.correctGrammaticalCase(e,r)}};return e.defineLocale(\"sr-cyrl\",{months:\"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар\".split(\"_\"),monthsShort:\"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.\".split(\"_\"),monthsParseExact:!0,weekdays:\"недеља_понедељак_уторак_среда_четвртак_петак_субота\".split(\"_\"),weekdaysShort:\"нед._пон._уто._сре._чет._пет._суб.\".split(\"_\"),weekdaysMin:\"не_по_ут_ср_че_пе_су\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[данас у] LT\",nextDay:\"[сутра у] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[у] [недељу] [у] LT\";case 3:return\"[у] [среду] [у] LT\";case 6:return\"[у] [суботу] [у] LT\";case 1:case 2:case 4:case 5:return\"[у] dddd [у] LT\"}},lastDay:\"[јуче у] LT\",lastWeek:function(){return[\"[прошле] [недеље] [у] LT\",\"[прошлог] [понедељка] [у] LT\",\"[прошлог] [уторка] [у] LT\",\"[прошле] [среде] [у] LT\",\"[прошлог] [четвртка] [у] LT\",\"[прошлог] [петка] [у] LT\",\"[прошле] [суботе] [у] LT\"][this.day()]},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"пре %s\",s:\"неколико секунди\",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:\"дан\",dd:a.translate,M:\"месец\",MM:a.translate,y:\"годину\",yy:a.translate},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(192);var n=t(1);n.datepickerLocale(\"sr\",\"sr-SR\",{closeText:\"Zatvori\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Danas\",monthNames:[\"Januar\",\"Februar\",\"Mart\",\"April\",\"Maj\",\"Jun\",\"Jul\",\"Avgust\",\"Septembar\",\"Oktobar\",\"Novembar\",\"Decembar\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNames:[\"Nedelja\",\"Ponedeljak\",\"Utorak\",\"Sreda\",\"Četvrtak\",\"Petak\",\"Subota\"],dayNamesShort:[\"Ned\",\"Pon\",\"Uto\",\"Sre\",\"Čet\",\"Pet\",\"Sub\"],dayNamesMin:[\"Ne\",\"Po\",\"Ut\",\"Sr\",\"Če\",\"Pe\",\"Su\"],weekHeader:\"Sed\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sr\",{buttonText:{prev:\"Prethodna\",next:\"Sledeći\",month:\"Mеsеc\",week:\"Nеdеlja\",day:\"Dan\",list:\"Planеr\"},allDayText:\"Cеo dan\",eventLimitText:function(e){return\"+ još \"+e},noEventsMessage:\"Nеma događaja za prikaz\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:[\"sekunda\",\"sekunde\",\"sekundi\"],m:[\"jedan minut\",\"jedne minute\"],mm:[\"minut\",\"minute\",\"minuta\"],h:[\"jedan sat\",\"jednog sata\"],hh:[\"sat\",\"sata\",\"sati\"],dd:[\"dan\",\"dana\",\"dana\"],MM:[\"mesec\",\"meseca\",\"meseci\"],yy:[\"godina\",\"godine\",\"godina\"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+\" \"+a.correctGrammaticalCase(e,r)}};return e.defineLocale(\"sr\",{months:\"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sre._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedelju] [u] LT\";case 3:return\"[u] [sredu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[juče u] LT\",lastWeek:function(){return[\"[prošle] [nedelje] [u] LT\",\"[prošlog] [ponedeljka] [u] LT\",\"[prošlog] [utorka] [u] LT\",\"[prošle] [srede] [u] LT\",\"[prošlog] [četvrtka] [u] LT\",\"[prošlog] [petka] [u] LT\",\"[prošle] [subote] [u] LT\"][this.day()]},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pre %s\",s:\"nekoliko sekundi\",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:\"dan\",dd:a.translate,M:\"mesec\",MM:a.translate,y:\"godinu\",yy:a.translate},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(194);var n=t(1);n.datepickerLocale(\"sv\",\"sv\",{closeText:\"Stäng\",prevText:\"&#xAB;Förra\",nextText:\"Nästa&#xBB;\",currentText:\"Idag\",monthNames:[\"Januari\",\"Februari\",\"Mars\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"Augusti\",\"September\",\"Oktober\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],dayNamesShort:[\"Sön\",\"Mån\",\"Tis\",\"Ons\",\"Tor\",\"Fre\",\"Lör\"],dayNames:[\"Söndag\",\"Måndag\",\"Tisdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lördag\"],dayNamesMin:[\"Sö\",\"Må\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lö\"],weekHeader:\"v. \",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"sv\",{buttonText:{month:\"Månad\",week:\"Vecka\",day:\"Dag\",list:\"Program\"},allDayText:\"Heldag\",eventLimitText:\"till\",noEventsMessage:\"Inga händelser att visa\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"sv\",{months:\"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag\".split(\"_\"),weekdaysShort:\"sön_mån_tis_ons_tor_fre_lör\".split(\"_\"),weekdaysMin:\"sö_må_ti_on_to_fr_lö\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D MMMM YYYY [kl.] HH:mm\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Idag] LT\",nextDay:\"[Imorgon] LT\",lastDay:\"[Igår] LT\",nextWeek:\"[På] dddd LT\",lastWeek:\"[I] dddd[s] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"för %s sedan\",s:\"några sekunder\",ss:\"%d sekunder\",m:\"en minut\",mm:\"%d minuter\",h:\"en timme\",hh:\"%d timmar\",d:\"en dag\",dd:\"%d dagar\",M:\"en månad\",MM:\"%d månader\",y:\"ett år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}(e|a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?\"e\":1===a?\"a\":2===a?\"a\":\"e\")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(196);var n=t(1);n.datepickerLocale(\"th\",\"th\",{closeText:\"ปิด\",prevText:\"&#xAB;&#xA0;ย้อน\",nextText:\"ถัดไป&#xA0;&#xBB;\",currentText:\"วันนี้\",monthNames:[\"มกราคม\",\"กุมภาพันธ์\",\"มีนาคม\",\"เมษายน\",\"พฤษภาคม\",\"มิถุนายน\",\"กรกฎาคม\",\"สิงหาคม\",\"กันยายน\",\"ตุลาคม\",\"พฤศจิกายน\",\"ธันวาคม\"],monthNamesShort:[\"ม.ค.\",\"ก.พ.\",\"มี.ค.\",\"เม.ย.\",\"พ.ค.\",\"มิ.ย.\",\"ก.ค.\",\"ส.ค.\",\"ก.ย.\",\"ต.ค.\",\"พ.ย.\",\"ธ.ค.\"],dayNames:[\"อาทิตย์\",\"จันทร์\",\"อังคาร\",\"พุธ\",\"พฤหัสบดี\",\"ศุกร์\",\"เสาร์\"],dayNamesShort:[\"อา.\",\"จ.\",\"อ.\",\"พ.\",\"พฤ.\",\"ศ.\",\"ส.\"],dayNamesMin:[\"อา.\",\"จ.\",\"อ.\",\"พ.\",\"พฤ.\",\"ศ.\",\"ส.\"],weekHeader:\"Wk\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"th\",{buttonText:{month:\"เดือน\",week:\"สัปดาห์\",day:\"วัน\",list:\"แผนงาน\"},allDayText:\"ตลอดวัน\",eventLimitText:\"เพิ่มเติม\",noEventsMessage:\"ไม่มีกิจกรรมที่จะแสดง\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"th\",{months:\"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม\".split(\"_\"),monthsShort:\"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.\".split(\"_\"),monthsParseExact:!0,weekdays:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์\".split(\"_\"),weekdaysShort:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์\".split(\"_\"),weekdaysMin:\"อา._จ._อ._พ._พฤ._ศ._ส.\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY เวลา H:mm\",LLLL:\"วันddddที่ D MMMM YYYY เวลา H:mm\"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return\"หลังเที่ยง\"===e},meridiem:function(e,a,t){return e<12?\"ก่อนเที่ยง\":\"หลังเที่ยง\"},calendar:{sameDay:\"[วันนี้ เวลา] LT\",nextDay:\"[พรุ่งนี้ เวลา] LT\",nextWeek:\"dddd[หน้า เวลา] LT\",lastDay:\"[เมื่อวานนี้ เวลา] LT\",lastWeek:\"[วัน]dddd[ที่แล้ว เวลา] LT\",sameElse:\"L\"},relativeTime:{future:\"อีก %s\",past:\"%sที่แล้ว\",s:\"ไม่กี่วินาที\",ss:\"%d วินาที\",m:\"1 นาที\",mm:\"%d นาที\",h:\"1 ชั่วโมง\",hh:\"%d ชั่วโมง\",d:\"1 วัน\",dd:\"%d วัน\",M:\"1 เดือน\",MM:\"%d เดือน\",y:\"1 ปี\",yy:\"%d ปี\"}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(198);var n=t(1);n.datepickerLocale(\"tr\",\"tr\",{closeText:\"kapat\",prevText:\"&#x3C;geri\",nextText:\"ileri&#x3e\",currentText:\"bugün\",monthNames:[\"Ocak\",\"Şubat\",\"Mart\",\"Nisan\",\"Mayıs\",\"Haziran\",\"Temmuz\",\"Ağustos\",\"Eylül\",\"Ekim\",\"Kasım\",\"Aralık\"],monthNamesShort:[\"Oca\",\"Şub\",\"Mar\",\"Nis\",\"May\",\"Haz\",\"Tem\",\"Ağu\",\"Eyl\",\"Eki\",\"Kas\",\"Ara\"],dayNames:[\"Pazar\",\"Pazartesi\",\"Salı\",\"Çarşamba\",\"Perşembe\",\"Cuma\",\"Cumartesi\"],dayNamesShort:[\"Pz\",\"Pt\",\"Sa\",\"Ça\",\"Pe\",\"Cu\",\"Ct\"],dayNamesMin:[\"Pz\",\"Pt\",\"Sa\",\"Ça\",\"Pe\",\"Cu\",\"Ct\"],weekHeader:\"Hf\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"tr\",{buttonText:{next:\"ileri\",month:\"Ay\",week:\"Hafta\",day:\"Gün\",list:\"Ajanda\"},allDayText:\"Tüm gün\",eventLimitText:\"daha fazla\",noEventsMessage:\"Herhangi bir etkinlik görüntülemek için\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:\"'inci\",5:\"'inci\",8:\"'inci\",70:\"'inci\",80:\"'inci\",2:\"'nci\",7:\"'nci\",20:\"'nci\",50:\"'nci\",3:\"'üncü\",4:\"'üncü\",100:\"'üncü\",6:\"'ncı\",9:\"'uncu\",10:\"'uncu\",30:\"'uncu\",60:\"'ıncı\",90:\"'ıncı\"};return e.defineLocale(\"tr\",{months:\"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık\".split(\"_\"),monthsShort:\"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara\".split(\"_\"),weekdays:\"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi\".split(\"_\"),weekdaysShort:\"Paz_Pts_Sal_Çar_Per_Cum_Cts\".split(\"_\"),weekdaysMin:\"Pz_Pt_Sa_Ça_Pe_Cu_Ct\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[bugün saat] LT\",nextDay:\"[yarın saat] LT\",nextWeek:\"[gelecek] dddd [saat] LT\",lastDay:\"[dün] LT\",lastWeek:\"[geçen] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s sonra\",past:\"%s önce\",s:\"birkaç saniye\",ss:\"%d saniye\",m:\"bir dakika\",mm:\"%d dakika\",h:\"bir saat\",hh:\"%d saat\",d:\"bir gün\",dd:\"%d gün\",M:\"bir ay\",MM:\"%d ay\",y:\"bir yıl\",yy:\"%d yıl\"},ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"Do\":case\"DD\":return e;default:if(0===e)return e+\"'ıncı\";var n=e%10,r=e%100-n,s=e>=100?100:null;return e+(a[n]||a[r]||a[s])}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(200);var n=t(1);n.datepickerLocale(\"uk\",\"uk\",{closeText:\"Закрити\",prevText:\"&#x3C;\",nextText:\"&#x3E;\",currentText:\"Сьогодні\",monthNames:[\"Січень\",\"Лютий\",\"Березень\",\"Квітень\",\"Травень\",\"Червень\",\"Липень\",\"Серпень\",\"Вересень\",\"Жовтень\",\"Листопад\",\"Грудень\"],monthNamesShort:[\"Січ\",\"Лют\",\"Бер\",\"Кві\",\"Тра\",\"Чер\",\"Лип\",\"Сер\",\"Вер\",\"Жов\",\"Лис\",\"Гру\"],dayNames:[\"неділя\",\"понеділок\",\"вівторок\",\"середа\",\"четвер\",\"п’ятниця\",\"субота\"],dayNamesShort:[\"нед\",\"пнд\",\"вів\",\"срд\",\"чтв\",\"птн\",\"сбт\"],dayNamesMin:[\"Нд\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],weekHeader:\"Тиж\",dateFormat:\"dd.mm.yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"uk\",{buttonText:{month:\"Місяць\",week:\"Тиждень\",day:\"День\",list:\"Порядок денний\"},allDayText:\"Увесь день\",eventLimitText:function(e){return\"+ще \"+e+\"...\"},noEventsMessage:\"Немає подій для відображення\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split(\"_\");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?\"секунда_секунди_секунд\":\"секунду_секунди_секунд\",mm:t?\"хвилина_хвилини_хвилин\":\"хвилину_хвилини_хвилин\",hh:t?\"година_години_годин\":\"годину_години_годин\",dd:\"день_дні_днів\",MM:\"місяць_місяці_місяців\",yy:\"рік_роки_років\"};return\"m\"===n?t?\"хвилина\":\"хвилину\":\"h\"===n?t?\"година\":\"годину\":e+\" \"+a(r[n],+e)}function n(e,a){var t={nominative:\"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота\".split(\"_\"),accusative:\"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу\".split(\"_\"),genitive:\"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи\".split(\"_\")};return e?t[/(\\[[ВвУу]\\]) ?dddd/.test(a)?\"accusative\":/\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(a)?\"genitive\":\"nominative\"][e.day()]:t.nominative}function r(e){return function(){return e+\"о\"+(11===this.hours()?\"б\":\"\")+\"] LT\"}}return e.defineLocale(\"uk\",{months:{format:\"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня\".split(\"_\"),standalone:\"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень\".split(\"_\")},monthsShort:\"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд\".split(\"_\"),weekdays:n,weekdaysShort:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY р.\",LLL:\"D MMMM YYYY р., HH:mm\",LLLL:\"dddd, D MMMM YYYY р., HH:mm\"},calendar:{sameDay:r(\"[Сьогодні \"),nextDay:r(\"[Завтра \"),lastDay:r(\"[Вчора \"),nextWeek:r(\"[У] dddd [\"),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return r(\"[Минулої] dddd [\").call(this);case 1:case 2:case 4:return r(\"[Минулого] dddd [\").call(this)}},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"%s тому\",s:\"декілька секунд\",ss:t,m:t,mm:t,h:\"годину\",hh:t,d:\"день\",dd:t,M:\"місяць\",MM:t,y:\"рік\",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?\"ночі\":e<12?\"ранку\":e<17?\"дня\":\"вечора\"},dayOfMonthOrdinalParse:/\\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case\"M\":case\"d\":case\"DDD\":case\"w\":case\"W\":return e+\"-й\"\n;case\"D\":return e+\"-го\";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(202);var n=t(1);n.datepickerLocale(\"vi\",\"vi\",{closeText:\"Đóng\",prevText:\"&#x3C;Trước\",nextText:\"Tiếp&#x3E;\",currentText:\"Hôm nay\",monthNames:[\"Tháng Một\",\"Tháng Hai\",\"Tháng Ba\",\"Tháng Tư\",\"Tháng Năm\",\"Tháng Sáu\",\"Tháng Bảy\",\"Tháng Tám\",\"Tháng Chín\",\"Tháng Mười\",\"Tháng Mười Một\",\"Tháng Mười Hai\"],monthNamesShort:[\"Tháng 1\",\"Tháng 2\",\"Tháng 3\",\"Tháng 4\",\"Tháng 5\",\"Tháng 6\",\"Tháng 7\",\"Tháng 8\",\"Tháng 9\",\"Tháng 10\",\"Tháng 11\",\"Tháng 12\"],dayNames:[\"Chủ Nhật\",\"Thứ Hai\",\"Thứ Ba\",\"Thứ Tư\",\"Thứ Năm\",\"Thứ Sáu\",\"Thứ Bảy\"],dayNamesShort:[\"CN\",\"T2\",\"T3\",\"T4\",\"T5\",\"T6\",\"T7\"],dayNamesMin:[\"CN\",\"T2\",\"T3\",\"T4\",\"T5\",\"T6\",\"T7\"],weekHeader:\"Tu\",dateFormat:\"dd/mm/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),n.locale(\"vi\",{buttonText:{month:\"Tháng\",week:\"Tuần\",day:\"Ngày\",list:\"Lịch biểu\"},allDayText:\"Cả ngày\",eventLimitText:function(e){return\"+ thêm \"+e},noEventsMessage:\"Không có sự kiện để hiển thị\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"vi\",{months:\"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12\".split(\"_\"),monthsShort:\"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12\".split(\"_\"),monthsParseExact:!0,weekdays:\"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy\".split(\"_\"),weekdaysShort:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysMin:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?\"sa\":\"SA\":t?\"ch\":\"CH\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [năm] YYYY\",LLL:\"D MMMM [năm] YYYY HH:mm\",LLLL:\"dddd, D MMMM [năm] YYYY HH:mm\",l:\"DD/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Hôm nay lúc] LT\",nextDay:\"[Ngày mai lúc] LT\",nextWeek:\"dddd [tuần tới lúc] LT\",lastDay:\"[Hôm qua lúc] LT\",lastWeek:\"dddd [tuần rồi lúc] LT\",sameElse:\"L\"},relativeTime:{future:\"%s tới\",past:\"%s trước\",s:\"vài giây\",ss:\"%d giây\",m:\"một phút\",mm:\"%d phút\",h:\"một giờ\",hh:\"%d giờ\",d:\"một ngày\",dd:\"%d ngày\",M:\"một tháng\",MM:\"%d tháng\",y:\"một năm\",yy:\"%d năm\"},dayOfMonthOrdinalParse:/\\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(204);var n=t(1);n.datepickerLocale(\"zh-cn\",\"zh-CN\",{closeText:\"关闭\",prevText:\"&#x3C;上月\",nextText:\"下月&#x3E;\",currentText:\"今天\",monthNames:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],monthNamesShort:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],dayNames:[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"],dayNamesShort:[\"周日\",\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\"],dayNamesMin:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],weekHeader:\"周\",dateFormat:\"yy-mm-dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),n.locale(\"zh-cn\",{buttonText:{month:\"月\",week:\"周\",day:\"日\",list:\"日程\"},allDayText:\"全天\",eventLimitText:function(e){return\"另外 \"+e+\" 个\"},noEventsMessage:\"没有事件显示\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"zh-cn\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah点mm分\",LLLL:\"YYYY年M月D日ddddAh点mm分\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),\"凌晨\"===a||\"早上\"===a||\"上午\"===a?e:\"下午\"===a||\"晚上\"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?\"凌晨\":n<900?\"早上\":n<1130?\"上午\":n<1230?\"中午\":n<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}(日|月|周)/,ordinal:function(e,a){switch(a){case\"d\":case\"D\":case\"DDD\":return e+\"日\";case\"M\":return e+\"月\";case\"w\":case\"W\":return e+\"周\";default:return e}},relativeTime:{future:\"%s内\",past:\"%s前\",s:\"几秒\",ss:\"%d 秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0}),t(206);var n=t(1);n.datepickerLocale(\"zh-tw\",\"zh-TW\",{closeText:\"關閉\",prevText:\"&#x3C;上月\",nextText:\"下月&#x3E;\",currentText:\"今天\",monthNames:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],monthNamesShort:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],dayNames:[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"],dayNamesShort:[\"周日\",\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\"],dayNamesMin:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],weekHeader:\"周\",dateFormat:\"yy/mm/dd\",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:\"年\"}),n.locale(\"zh-tw\",{buttonText:{month:\"月\",week:\"週\",day:\"天\",list:\"活動列表\"},allDayText:\"整天\",eventLimitText:\"顯示更多\",noEventsMessage:\"没有任何活動\"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale(\"zh-tw\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"週日_週一_週二_週三_週四_週五_週六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日 HH:mm\",LLLL:\"YYYY年M月D日dddd HH:mm\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),\"凌晨\"===a||\"早上\"===a||\"上午\"===a?e:\"中午\"===a?e>=11?e:e+12:\"下午\"===a||\"晚上\"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?\"凌晨\":n<900?\"早上\":n<1130?\"上午\":n<1230?\"中午\":n<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case\"d\":case\"D\":case\"DDD\":return e+\"日\";case\"M\":return e+\"月\";case\"w\":case\"W\":return e+\"週\";default:return e}},relativeTime:{future:\"%s內\",past:\"%s前\",s:\"幾秒\",ss:\"%d 秒\",m:\"1 分鐘\",mm:\"%d 分鐘\",h:\"1 小時\",hh:\"%d 小時\",d:\"1 天\",dd:\"%d 天\",M:\"1 個月\",MM:\"%d 個月\",y:\"1 年\",yy:\"%d 年\"}})})},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){t(65),t(67),t(69),t(71),t(73),t(75),t(77),t(79),t(81),t(83),t(85),t(87),t(89),t(91),t(93),t(95),t(97),t(99),t(101),t(103),t(105),t(107),t(109),t(111),t(113),t(115),t(117),t(119),t(121),t(123),t(125),t(127),t(129),t(131),t(133),t(135),t(137),t(139),t(141),t(143),t(145),t(147),t(149),t(151),t(153),t(155),t(157),t(159),t(161),t(163),t(165),t(167),t(169),t(171),t(173),t(175),t(177),t(179),t(181),t(183),t(185),t(187),t(189),t(191),t(193),t(195),t(197),t(199),t(201),t(203),t(205),e.exports=t(435)},function(e,a,t){Object.defineProperty(a,\"__esModule\",{value:!0});var n=t(0),r=t(1);n.locale(\"en\"),r.locale(\"en\"),window.jQuery.datepicker&&window.jQuery.datepicker.setDefaults(window.jQuery.datepicker.regional[\"\"])}])});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/bindings/inputmask.binding.js",
    "content": "/*!\n* bindings/inputmask.binding.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"jquery\", \"../inputmask\", \"../global/document\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"jquery\"), require(\"../inputmask\"), require(\"../global/document\")) : factory(jQuery, window.Inputmask, document);\n}(function($, Inputmask, document) {\n    $(document).ajaxComplete(function(event, xmlHttpRequest, ajaxOptions) {\n        -1 !== $.inArray(\"html\", ajaxOptions.dataTypes) && $(\".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias]\").each(function(ndx, lmnt) {\n            void 0 === lmnt.inputmask && Inputmask().mask(lmnt);\n        });\n    }).ready(function() {\n        $(\".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias]\").each(function(ndx, lmnt) {\n            void 0 === lmnt.inputmask && Inputmask().mask(lmnt);\n        });\n    });\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js",
    "content": "/*!\n* dependencyLibs/inputmask.dependencyLib.jqlite.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"jqlite\", \"../global/window\", \"../global/document]\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"jqlite\"), require(\"../global/window\"), require(\"../global/document\")) : window.dependencyLib = factory(jqlite, window, document);\n}(function($, window, document) {\n    function indexOf(list, elem) {\n        for (var i = 0, len = list.length; i < len; i++) if (list[i] === elem) return i;\n        return -1;\n    }\n    function type(obj) {\n        return null == obj ? obj + \"\" : \"object\" == typeof obj || \"function\" == typeof obj ? class2type[class2type.toString.call(obj)] || \"object\" : typeof obj;\n    }\n    function isWindow(obj) {\n        return null != obj && obj === obj.window;\n    }\n    function isArraylike(obj) {\n        var length = \"length\" in obj && obj.length, ltype = type(obj);\n        return \"function\" !== ltype && !isWindow(obj) && (!(1 !== obj.nodeType || !length) || (\"array\" === ltype || 0 === length || \"number\" == typeof length && length > 0 && length - 1 in obj));\n    }\n    for (var class2type = {}, classTypes = \"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), nameNdx = 0; nameNdx < classTypes.length; nameNdx++) class2type[\"[object \" + classTypes[nameNdx] + \"]\"] = classTypes[nameNdx].toLowerCase();\n    return $.inArray = function(elem, arr, i) {\n        return null == arr ? -1 : indexOf(arr, elem);\n    }, $.isFunction = function(obj) {\n        return \"function\" === type(obj);\n    }, $.isArray = Array.isArray, $.isPlainObject = function(obj) {\n        return \"object\" === type(obj) && !obj.nodeType && !isWindow(obj) && !(obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\"));\n    }, $.extend = function() {\n        var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = !1;\n        for (\"boolean\" == typeof target && (deep = target, target = arguments[i] || {}, \n        i++), \"object\" == typeof target || $.isFunction(target) || (target = {}), i === length && (target = this, \n        i--); i < length; i++) if (null != (options = arguments[i])) for (name in options) src = target[name], \n        target !== (copy = options[name]) && (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, \n        clone = src && $.isArray(src) ? src : []) : clone = src && $.isPlainObject(src) ? src : {}, \n        target[name] = $.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));\n        return target;\n    }, $.each = function(obj, callback) {\n        var i = 0;\n        if (isArraylike(obj)) for (var length = obj.length; i < length && !1 !== callback.call(obj[i], i, obj[i]); i++) ; else for (i in obj) if (!1 === callback.call(obj[i], i, obj[i])) break;\n        return obj;\n    }, $.map = function(elems, callback) {\n        var value, i = 0, length = elems.length, ret = [];\n        if (isArraylike(elems)) for (;i < length; i++) null != (value = callback(elems[i], i)) && ret.push(value); else for (i in elems) null != (value = callback(elems[i], i)) && ret.push(value);\n        return [].concat(ret);\n    }, $.data = function(elem, name, data) {\n        return $(elem).data(name, data);\n    }, $.Event = $.Event || function(event, params) {\n        params = params || {\n            bubbles: !1,\n            cancelable: !1,\n            detail: void 0\n        };\n        var evt = document.createEvent(\"CustomEvent\");\n        return evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail), \n        evt;\n    }, $.Event.prototype = window.Event.prototype, $;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js",
    "content": "/*!\n* dependencyLibs/inputmask.dependencyLib.jquery.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"jquery\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"jquery\")) : window.dependencyLib = factory(jQuery);\n}(function($) {\n    return $;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js",
    "content": "/*!\n* dependencyLibs/inputmask.dependencyLib.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"../global/window\", \"../global/document\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"../global/window\"), require(\"../global/document\")) : window.dependencyLib = factory(window, document);\n}(function(window, document) {\n    function indexOf(list, elem) {\n        for (var i = 0, len = list.length; i < len; i++) if (list[i] === elem) return i;\n        return -1;\n    }\n    function type(obj) {\n        return null == obj ? obj + \"\" : \"object\" == typeof obj || \"function\" == typeof obj ? class2type[class2type.toString.call(obj)] || \"object\" : typeof obj;\n    }\n    function isWindow(obj) {\n        return null != obj && obj === obj.window;\n    }\n    function isArraylike(obj) {\n        var length = \"length\" in obj && obj.length, ltype = type(obj);\n        return \"function\" !== ltype && !isWindow(obj) && (!(1 !== obj.nodeType || !length) || (\"array\" === ltype || 0 === length || \"number\" == typeof length && length > 0 && length - 1 in obj));\n    }\n    function isValidElement(elem) {\n        return elem instanceof Element;\n    }\n    function DependencyLib(elem) {\n        return elem instanceof DependencyLib ? elem : this instanceof DependencyLib ? void (void 0 !== elem && null !== elem && elem !== window && (this[0] = elem.nodeName ? elem : void 0 !== elem[0] && elem[0].nodeName ? elem[0] : document.querySelector(elem), \n        void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new DependencyLib(elem);\n    }\n    for (var class2type = {}, classTypes = \"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), nameNdx = 0; nameNdx < classTypes.length; nameNdx++) class2type[\"[object \" + classTypes[nameNdx] + \"]\"] = classTypes[nameNdx].toLowerCase();\n    return DependencyLib.prototype = {\n        on: function(events, handler) {\n            if (isValidElement(this[0])) for (var eventRegistry = this[0].eventRegistry, elem = this[0], _events = events.split(\" \"), endx = 0; endx < _events.length; endx++) {\n                var nsEvent = _events[endx].split(\".\");\n                !function(ev, namespace) {\n                    elem.addEventListener ? elem.addEventListener(ev, handler, !1) : elem.attachEvent && elem.attachEvent(\"on\" + ev, handler), \n                    eventRegistry[ev] = eventRegistry[ev] || {}, eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [], \n                    eventRegistry[ev][namespace].push(handler);\n                }(nsEvent[0], nsEvent[1] || \"global\");\n            }\n            return this;\n        },\n        off: function(events, handler) {\n            if (isValidElement(this[0])) for (var eventRegistry = this[0].eventRegistry, elem = this[0], _events = events.split(\" \"), endx = 0; endx < _events.length; endx++) for (var nsEvent = _events[endx].split(\".\"), offEvents = function(ev, namespace) {\n                var hndx, hndL, evts = [];\n                if (ev.length > 0) if (void 0 === handler) for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) evts.push({\n                    ev: ev,\n                    namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n                    handler: eventRegistry[ev][namespace][hndx]\n                }); else evts.push({\n                    ev: ev,\n                    namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n                    handler: handler\n                }); else if (namespace.length > 0) for (var evNdx in eventRegistry) for (var nmsp in eventRegistry[evNdx]) if (nmsp === namespace) if (void 0 === handler) for (hndx = 0, \n                hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) evts.push({\n                    ev: evNdx,\n                    namespace: nmsp,\n                    handler: eventRegistry[evNdx][nmsp][hndx]\n                }); else evts.push({\n                    ev: evNdx,\n                    namespace: nmsp,\n                    handler: handler\n                });\n                return evts;\n            }(nsEvent[0], nsEvent[1]), i = 0, offEventsL = offEvents.length; i < offEventsL; i++) !function(ev, namespace, handler) {\n                if (ev in eventRegistry == 1) if (elem.removeEventListener ? elem.removeEventListener(ev, handler, !1) : elem.detachEvent && elem.detachEvent(\"on\" + ev, handler), \n                \"global\" === namespace) for (var nmsp in eventRegistry[ev]) eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1); else eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);\n            }(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);\n            return this;\n        },\n        trigger: function(events) {\n            if (isValidElement(this[0])) for (var eventRegistry = this[0].eventRegistry, elem = this[0], _events = \"string\" == typeof events ? events.split(\" \") : [ events.type ], endx = 0; endx < _events.length; endx++) {\n                var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n                if (void 0 !== document && \"global\" === namespace) {\n                    var evnt, i, params = {\n                        bubbles: !0,\n                        cancelable: !0,\n                        detail: Array.prototype.slice.call(arguments, 1)\n                    };\n                    if (document.createEvent) {\n                        try {\n                            evnt = new CustomEvent(ev, params);\n                        } catch (e) {\n                            (evnt = document.createEvent(\"CustomEvent\")).initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);\n                        }\n                        events.type && DependencyLib.extend(evnt, events), elem.dispatchEvent(evnt);\n                    } else (evnt = document.createEventObject()).eventType = ev, events.type && DependencyLib.extend(evnt, events), \n                    elem.fireEvent(\"on\" + evnt.eventType, evnt);\n                } else if (void 0 !== eventRegistry[ev]) if (arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]), \n                \"global\" === namespace) for (var nmsp in eventRegistry[ev]) for (i = 0; i < eventRegistry[ev][nmsp].length; i++) eventRegistry[ev][nmsp][i].apply(elem, arguments); else for (i = 0; i < eventRegistry[ev][namespace].length; i++) eventRegistry[ev][namespace][i].apply(elem, arguments);\n            }\n            return this;\n        }\n    }, DependencyLib.isFunction = function(obj) {\n        return \"function\" === type(obj);\n    }, DependencyLib.noop = function() {}, DependencyLib.isArray = Array.isArray, DependencyLib.inArray = function(elem, arr, i) {\n        return null == arr ? -1 : indexOf(arr, elem);\n    }, DependencyLib.valHooks = void 0, DependencyLib.isPlainObject = function(obj) {\n        return \"object\" === type(obj) && !obj.nodeType && !isWindow(obj) && !(obj.constructor && !class2type.hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\"));\n    }, DependencyLib.extend = function() {\n        var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = !1;\n        for (\"boolean\" == typeof target && (deep = target, target = arguments[i] || {}, \n        i++), \"object\" == typeof target || DependencyLib.isFunction(target) || (target = {}), \n        i === length && (target = this, i--); i < length; i++) if (null != (options = arguments[i])) for (name in options) src = target[name], \n        target !== (copy = options[name]) && (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, \n        clone = src && DependencyLib.isArray(src) ? src : []) : clone = src && DependencyLib.isPlainObject(src) ? src : {}, \n        target[name] = DependencyLib.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));\n        return target;\n    }, DependencyLib.each = function(obj, callback) {\n        var i = 0;\n        if (isArraylike(obj)) for (var length = obj.length; i < length && !1 !== callback.call(obj[i], i, obj[i]); i++) ; else for (i in obj) if (!1 === callback.call(obj[i], i, obj[i])) break;\n        return obj;\n    }, DependencyLib.map = function(elems, callback) {\n        var value, i = 0, length = elems.length, ret = [];\n        if (isArraylike(elems)) for (;i < length; i++) null != (value = callback(elems[i], i)) && ret.push(value); else for (i in elems) null != (value = callback(elems[i], i)) && ret.push(value);\n        return [].concat(ret);\n    }, DependencyLib.data = function(owner, key, value) {\n        if (void 0 === value) return owner.__data ? owner.__data[key] : null;\n        owner.__data = owner.__data || {}, owner.__data[key] = value;\n    }, \"function\" == typeof window.CustomEvent ? DependencyLib.Event = window.CustomEvent : (DependencyLib.Event = function(event, params) {\n        params = params || {\n            bubbles: !1,\n            cancelable: !1,\n            detail: void 0\n        };\n        var evt = document.createEvent(\"CustomEvent\");\n        return evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail), \n        evt;\n    }, DependencyLib.Event.prototype = window.Event.prototype), DependencyLib;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/global/document.js",
    "content": "/*!\n* global/document.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n\"function\" == typeof define && define.amd ? define(function() {\n    return document;\n}) : \"object\" == typeof exports && (module.exports = document);"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/global/window.js",
    "content": "/*!\n* global/window.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n\"function\" == typeof define && define.amd ? define(function() {\n    return window;\n}) : \"object\" == typeof exports && (module.exports = window);"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/inputmask.date.extensions.js",
    "content": "/*!\n* inputmask.date.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./inputmask\")) : factory(window.dependencyLib || jQuery, window.Inputmask);\n}(function($, Inputmask) {\n    function isLeapYear(year) {\n        return isNaN(year) || 29 === new Date(year, 2, 0).getDate();\n    }\n    return Inputmask.extendAliases({\n        \"dd/mm/yyyy\": {\n            mask: \"1/2/y\",\n            placeholder: \"dd/mm/yyyy\",\n            regex: {\n                val1pre: new RegExp(\"[0-3]\"),\n                val1: new RegExp(\"0[1-9]|[12][0-9]|3[01]\"),\n                val2pre: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[1-9]|[12][0-9]|3[01])\" + escapedSeparator + \"[01])\");\n                },\n                val2: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[1-9]|[12][0-9])\" + escapedSeparator + \"(0[1-9]|1[012]))|(30\" + escapedSeparator + \"(0[13-9]|1[012]))|(31\" + escapedSeparator + \"(0[13578]|1[02]))\");\n                }\n            },\n            leapday: \"29/02/\",\n            separator: \"/\",\n            yearrange: {\n                minyear: 1900,\n                maxyear: 2099\n            },\n            isInYearRange: function(chrs, minyear, maxyear) {\n                if (isNaN(chrs)) return !1;\n                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));\n                return !isNaN(enteredyear) && (minyear <= enteredyear && enteredyear <= maxyear) || !isNaN(enteredyear2) && (minyear <= enteredyear2 && enteredyear2 <= maxyear);\n            },\n            determinebaseyear: function(minyear, maxyear, hint) {\n                var currentyear = new Date().getFullYear();\n                if (minyear > currentyear) return minyear;\n                if (maxyear < currentyear) {\n                    for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxyear < maxYearPrefix + hint; ) maxYearPrefix--;\n                    var maxxYear = maxYearPrefix + maxYearPostfix;\n                    return minyear > maxxYear ? minyear : maxxYear;\n                }\n                if (minyear <= currentyear && currentyear <= maxyear) {\n                    for (var currentYearPrefix = currentyear.toString().slice(0, 2); maxyear < currentYearPrefix + hint; ) currentYearPrefix--;\n                    var currentYearAndHint = currentYearPrefix + hint;\n                    return currentYearAndHint < minyear ? minyear : currentYearAndHint;\n                }\n                return currentyear;\n            },\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), \n                    $input.trigger(\"setvalue\");\n                }\n            },\n            getFrontValue: function(mask, buffer, opts) {\n                for (var start = 0, length = 0, i = 0; i < mask.length && \"2\" !== mask.charAt(i); i++) {\n                    var definition = opts.definitions[mask.charAt(i)];\n                    definition ? (start += length, length = definition.cardinality) : length++;\n                }\n                return buffer.join(\"\").substr(start, length);\n            },\n            postValidation: function(buffer, currentResult, opts) {\n                var dayMonthValue, year, bufferStr = buffer.join(\"\");\n                return 0 === opts.mask.indexOf(\"y\") ? (year = bufferStr.substr(0, 4), dayMonthValue = bufferStr.substring(4, 10)) : (year = bufferStr.substring(6, 10), \n                dayMonthValue = bufferStr.substr(0, 6)), currentResult && (dayMonthValue !== opts.leapday || isLeapYear(year));\n            },\n            definitions: {\n                \"1\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        var isValid = opts.regex.val1.test(chrs);\n                        return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === \"-./\".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test(\"0\" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = \"0\", \n                        {\n                            refreshFromBuffer: {\n                                start: pos - 1,\n                                end: pos\n                            },\n                            pos: pos,\n                            c: chrs.charAt(0)\n                        });\n                    },\n                    cardinality: 2,\n                    prevalidator: [ {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var pchrs = chrs;\n                            isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]);\n                            var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs);\n                            if (isValid && maskset.validPositions[pos] && (opts.regex.val2(opts.separator).test(chrs + maskset.validPositions[pos].input) || (maskset.validPositions[pos].input = \"0\" === chrs ? \"1\" : \"0\")), \n                            !strict && !isValid) {\n                                if (isValid = opts.regex.val1.test(chrs + \"0\")) return maskset.buffer[pos] = chrs, \n                                maskset.buffer[++pos] = \"0\", {\n                                    pos: pos,\n                                    c: \"0\"\n                                };\n                                if (isValid = opts.regex.val1.test(\"0\" + chrs)) return maskset.buffer[pos] = \"0\", \n                                pos++, {\n                                    pos: pos\n                                };\n                            }\n                            return isValid;\n                        },\n                        cardinality: 1\n                    } ]\n                },\n                \"2\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);\n                        -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = \"01\" + opts.separator);\n                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                        return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === \"-./\".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = \"0\", \n                        {\n                            refreshFromBuffer: {\n                                start: pos - 1,\n                                end: pos\n                            },\n                            pos: pos,\n                            c: chrs.charAt(0)\n                        });\n                    },\n                    cardinality: 2,\n                    prevalidator: [ {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]);\n                            var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);\n                            -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = \"01\" + opts.separator);\n                            var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs);\n                            return isValid && maskset.validPositions[pos] && (opts.regex.val2(opts.separator).test(chrs + maskset.validPositions[pos].input) || (maskset.validPositions[pos].input = \"0\" === chrs ? \"1\" : \"0\")), \n                            strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                            pos++, {\n                                pos: pos\n                            });\n                        },\n                        cardinality: 1\n                    } ]\n                },\n                y: {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                    },\n                    cardinality: 4,\n                    prevalidator: [ {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (!strict && !isValid) {\n                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + \"0\").toString().slice(0, 1);\n                                if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), \n                                {\n                                    pos: pos\n                                };\n                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + \"0\").toString().slice(0, 2), \n                                isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), \n                                maskset.buffer[pos++] = yearPrefix.charAt(1), {\n                                    pos: pos\n                                };\n                            }\n                            return isValid;\n                        },\n                        cardinality: 1\n                    }, {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            if (!strict && !isValid) {\n                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);\n                                if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), \n                                {\n                                    pos: pos\n                                };\n                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), \n                                isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), \n                                maskset.buffer[pos++] = yearPrefix.charAt(1), maskset.buffer[pos++] = chrs.charAt(0), \n                                {\n                                    refreshFromBuffer: {\n                                        start: pos - 3,\n                                        end: pos\n                                    },\n                                    pos: pos\n                                };\n                            }\n                            return isValid;\n                        },\n                        cardinality: 2\n                    }, {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        },\n                        cardinality: 3\n                    } ]\n                }\n            },\n            insertMode: !1,\n            autoUnmask: !1\n        },\n        \"mm/dd/yyyy\": {\n            placeholder: \"mm/dd/yyyy\",\n            alias: \"dd/mm/yyyy\",\n            regex: {\n                val2pre: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                },\n                val2: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                },\n                val1pre: new RegExp(\"[01]\"),\n                val1: new RegExp(\"0[1-9]|1[012]\")\n            },\n            leapday: \"02/29/\",\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), \n                    $input.trigger(\"setvalue\");\n                }\n            }\n        },\n        \"yyyy/mm/dd\": {\n            mask: \"y/1/2\",\n            placeholder: \"yyyy/mm/dd\",\n            alias: \"mm/dd/yyyy\",\n            leapday: \"/02/29\",\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), \n                    $input.trigger(\"setvalue\");\n                }\n            }\n        },\n        \"dd.mm.yyyy\": {\n            mask: \"1.2.y\",\n            placeholder: \"dd.mm.yyyy\",\n            leapday: \"29.02.\",\n            separator: \".\",\n            alias: \"dd/mm/yyyy\"\n        },\n        \"dd-mm-yyyy\": {\n            mask: \"1-2-y\",\n            placeholder: \"dd-mm-yyyy\",\n            leapday: \"29-02-\",\n            separator: \"-\",\n            alias: \"dd/mm/yyyy\"\n        },\n        \"mm.dd.yyyy\": {\n            mask: \"1.2.y\",\n            placeholder: \"mm.dd.yyyy\",\n            leapday: \"02.29.\",\n            separator: \".\",\n            alias: \"mm/dd/yyyy\"\n        },\n        \"mm-dd-yyyy\": {\n            mask: \"1-2-y\",\n            placeholder: \"mm-dd-yyyy\",\n            leapday: \"02-29-\",\n            separator: \"-\",\n            alias: \"mm/dd/yyyy\"\n        },\n        \"yyyy.mm.dd\": {\n            mask: \"y.1.2\",\n            placeholder: \"yyyy.mm.dd\",\n            leapday: \".02.29\",\n            separator: \".\",\n            alias: \"yyyy/mm/dd\"\n        },\n        \"yyyy-mm-dd\": {\n            mask: \"y-1-2\",\n            placeholder: \"yyyy-mm-dd\",\n            leapday: \"-02-29\",\n            separator: \"-\",\n            alias: \"yyyy/mm/dd\"\n        },\n        datetime: {\n            mask: \"1/2/y h:s\",\n            placeholder: \"dd/mm/yyyy hh:mm\",\n            alias: \"dd/mm/yyyy\",\n            regex: {\n                hrspre: new RegExp(\"[012]\"),\n                hrs24: new RegExp(\"2[0-4]|1[3-9]\"),\n                hrs: new RegExp(\"[01][0-9]|2[0-4]\"),\n                ampm: new RegExp(\"^[a|p|A|P][m|M]\"),\n                mspre: new RegExp(\"[0-5]\"),\n                ms: new RegExp(\"[0-5][0-9]\")\n            },\n            timeseparator: \":\",\n            hourFormat: \"24\",\n            definitions: {\n                h: {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        if (\"24\" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = \"0\", \n                        maskset.buffer[pos] = \"0\", {\n                            refreshFromBuffer: {\n                                start: pos - 1,\n                                end: pos\n                            },\n                            c: \"0\"\n                        };\n                        var isValid = opts.regex.hrs.test(chrs);\n                        if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== \"-.:\".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test(\"0\" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = \"0\", \n                        maskset.buffer[pos] = chrs.charAt(0), pos++, {\n                            refreshFromBuffer: {\n                                start: pos - 2,\n                                end: pos\n                            },\n                            pos: pos,\n                            c: opts.timeseparator\n                        };\n                        if (isValid && \"24\" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) {\n                            var tmp = parseInt(chrs, 10);\n                            return 24 === tmp ? (maskset.buffer[pos + 5] = \"a\", maskset.buffer[pos + 6] = \"m\") : (maskset.buffer[pos + 5] = \"p\", \n                            maskset.buffer[pos + 6] = \"m\"), (tmp -= 12) < 10 ? (maskset.buffer[pos] = tmp.toString(), \n                            maskset.buffer[pos - 1] = \"0\") : (maskset.buffer[pos] = tmp.toString().charAt(1), \n                            maskset.buffer[pos - 1] = tmp.toString().charAt(0)), {\n                                refreshFromBuffer: {\n                                    start: pos - 1,\n                                    end: pos + 6\n                                },\n                                c: maskset.buffer[pos]\n                            };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 2,\n                    prevalidator: [ {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var isValid = opts.regex.hrspre.test(chrs);\n                            return strict || isValid || !(isValid = opts.regex.hrs.test(\"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                            pos++, {\n                                pos: pos\n                            });\n                        },\n                        cardinality: 1\n                    } ]\n                },\n                s: {\n                    validator: \"[0-5][0-9]\",\n                    cardinality: 2,\n                    prevalidator: [ {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var isValid = opts.regex.mspre.test(chrs);\n                            return strict || isValid || !(isValid = opts.regex.ms.test(\"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                            pos++, {\n                                pos: pos\n                            });\n                        },\n                        cardinality: 1\n                    } ]\n                },\n                t: {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.regex.ampm.test(chrs + \"m\");\n                    },\n                    casing: \"lower\",\n                    cardinality: 1\n                }\n            },\n            insertMode: !1,\n            autoUnmask: !1\n        },\n        datetime12: {\n            mask: \"1/2/y h:s t\\\\m\",\n            placeholder: \"dd/mm/yyyy hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        \"mm/dd/yyyy hh:mm xm\": {\n            mask: \"1/2/y h:s t\\\\m\",\n            placeholder: \"mm/dd/yyyy hh:mm xm\",\n            alias: \"datetime12\",\n            regex: {\n                val2pre: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                },\n                val2: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                },\n                val1pre: new RegExp(\"[01]\"),\n                val1: new RegExp(\"0[1-9]|1[012]\")\n            },\n            leapday: \"02/29/\",\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var $input = $(this);\n                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                    var today = new Date();\n                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), \n                    $input.trigger(\"setvalue\");\n                }\n            }\n        },\n        \"hh:mm t\": {\n            mask: \"h:s t\\\\m\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        \"h:s t\": {\n            mask: \"h:s t\\\\m\",\n            placeholder: \"hh:mm xm\",\n            alias: \"datetime\",\n            hourFormat: \"12\"\n        },\n        \"hh:mm:ss\": {\n            mask: \"h:s:s\",\n            placeholder: \"hh:mm:ss\",\n            alias: \"datetime\",\n            autoUnmask: !1\n        },\n        \"hh:mm\": {\n            mask: \"h:s\",\n            placeholder: \"hh:mm\",\n            alias: \"datetime\",\n            autoUnmask: !1\n        },\n        date: {\n            alias: \"dd/mm/yyyy\"\n        },\n        \"mm/yyyy\": {\n            mask: \"1/y\",\n            placeholder: \"mm/yyyy\",\n            leapday: \"donotuse\",\n            separator: \"/\",\n            alias: \"mm/dd/yyyy\"\n        },\n        shamsi: {\n            regex: {\n                val2pre: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"[0-3])\");\n                },\n                val2: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[1-9]|1[012])\" + escapedSeparator + \"30)|((0[1-6])\" + escapedSeparator + \"31)\");\n                },\n                val1pre: new RegExp(\"[01]\"),\n                val1: new RegExp(\"0[1-9]|1[012]\")\n            },\n            yearrange: {\n                minyear: 1300,\n                maxyear: 1499\n            },\n            mask: \"y/1/2\",\n            leapday: \"/12/30\",\n            placeholder: \"yyyy/mm/dd\",\n            alias: \"mm/dd/yyyy\",\n            clearIncomplete: !0\n        },\n        \"yyyy-mm-dd hh:mm:ss\": {\n            mask: \"y-1-2 h:s:s\",\n            placeholder: \"yyyy-mm-dd hh:mm:ss\",\n            alias: \"datetime\",\n            separator: \"-\",\n            leapday: \"-02-29\",\n            regex: {\n                val2pre: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                },\n                val2: function(separator) {\n                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                    return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                },\n                val1pre: new RegExp(\"[01]\"),\n                val1: new RegExp(\"0[1-9]|1[012]\")\n            },\n            onKeyDown: function(e, buffer, caretPos, opts) {}\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/inputmask.extensions.js",
    "content": "/*!\n* inputmask.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./inputmask\")) : factory(window.dependencyLib || jQuery, window.Inputmask);\n}(function($, Inputmask) {\n    return Inputmask.extendDefinitions({\n        A: {\n            validator: \"[A-Za-zА-яЁёÀ-ÿµ]\",\n            cardinality: 1,\n            casing: \"upper\"\n        },\n        \"&\": {\n            validator: \"[0-9A-Za-zА-яЁёÀ-ÿµ]\",\n            cardinality: 1,\n            casing: \"upper\"\n        },\n        \"#\": {\n            validator: \"[0-9A-Fa-f]\",\n            cardinality: 1,\n            casing: \"upper\"\n        }\n    }), Inputmask.extendAliases({\n        url: {\n            definitions: {\n                i: {\n                    validator: \".\",\n                    cardinality: 1\n                }\n            },\n            mask: \"(\\\\http://)|(\\\\http\\\\s://)|(ftp://)|(ftp\\\\s://)i{+}\",\n            insertMode: !1,\n            autoUnmask: !1,\n            inputmode: \"url\"\n        },\n        ip: {\n            mask: \"i[i[i]].i[i[i]].i[i[i]].i[i[i]]\",\n            definitions: {\n                i: {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return pos - 1 > -1 && \".\" !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, \n                        chrs = pos - 2 > -1 && \".\" !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : \"0\" + chrs) : chrs = \"00\" + chrs, \n                        new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\").test(chrs);\n                    },\n                    cardinality: 1\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return maskedValue;\n            },\n            inputmode: \"numeric\"\n        },\n        email: {\n            mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\n            greedy: !1,\n            onBeforePaste: function(pastedValue, opts) {\n                return (pastedValue = pastedValue.toLowerCase()).replace(\"mailto:\", \"\");\n            },\n            definitions: {\n                \"*\": {\n                    validator: \"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]\",\n                    cardinality: 1,\n                    casing: \"lower\"\n                },\n                \"-\": {\n                    validator: \"[0-9A-Za-z-]\",\n                    cardinality: 1,\n                    casing: \"lower\"\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return maskedValue;\n            },\n            inputmode: \"email\"\n        },\n        mac: {\n            mask: \"##:##:##:##:##:##\"\n        },\n        vin: {\n            mask: \"V{13}9{4}\",\n            definitions: {\n                V: {\n                    validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n                    cardinality: 1,\n                    casing: \"upper\"\n                }\n            },\n            clearIncomplete: !0,\n            autoUnmask: !0\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/inputmask.js",
    "content": "/*!\n* inputmask.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./global/window\", \"./global/document\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./global/window\"), require(\"./global/document\")) : window.Inputmask = factory(window.dependencyLib || jQuery, window, document);\n}(function($, window, document, undefined) {\n    function Inputmask(alias, options, internal) {\n        if (!(this instanceof Inputmask)) return new Inputmask(alias, options, internal);\n        this.el = undefined, this.events = {}, this.maskset = undefined, this.refreshValue = !1, \n        !0 !== internal && ($.isPlainObject(alias) ? options = alias : (options = options || {}).alias = alias, \n        this.opts = $.extend(!0, {}, this.defaults, options), this.noMasksCache = options && options.definitions !== undefined, \n        this.userOptions = options || {}, this.isRTL = this.opts.numericInput, resolveAlias(this.opts.alias, options, this.opts));\n    }\n    function resolveAlias(aliasStr, options, opts) {\n        var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n        return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, undefined, opts), \n        $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), \n        !1);\n    }\n    function generateMaskSet(opts, nocache) {\n        function generateMask(mask, metadata, opts) {\n            var regexMask = !1;\n            if (null !== mask && \"\" !== mask || ((regexMask = null !== opts.regex) ? mask = (mask = opts.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (regexMask = !0, \n            mask = \".*\")), 1 === mask.length && !1 === opts.greedy && 0 !== opts.repeat && (opts.placeholder = \"\"), \n            opts.repeat > 0 || \"*\" === opts.repeat || \"+\" === opts.repeat) {\n                var repeatStart = \"*\" === opts.repeat ? 0 : \"+\" === opts.repeat ? 1 : opts.repeat;\n                mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + \",\" + opts.repeat + opts.quantifiermarker.end;\n            }\n            var masksetDefinition, maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask;\n            return Inputmask.prototype.masksCache[maskdefKey] === undefined || !0 === nocache ? (masksetDefinition = {\n                mask: mask,\n                maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n                validPositions: {},\n                _buffer: undefined,\n                buffer: undefined,\n                tests: {},\n                metadata: metadata,\n                maskLength: undefined\n            }, !0 !== nocache && (Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition, \n            masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]), \n            masksetDefinition;\n        }\n        if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {\n            if (opts.mask.length > 1) {\n                opts.keepStatic = null === opts.keepStatic || opts.keepStatic;\n                var altMask = opts.groupmarker.start;\n                return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n                    altMask.length > 1 && (altMask += opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start), \n                    msk.mask === undefined || $.isFunction(msk.mask) ? altMask += msk : altMask += msk.mask;\n                }), altMask += opts.groupmarker.end, generateMask(altMask, opts.mask, opts);\n            }\n            opts.mask = opts.mask.pop();\n        }\n        return opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask) ? generateMask(opts.mask.mask, opts.mask, opts) : generateMask(opts.mask, opts.mask, opts);\n    }\n    function maskScope(actionObj, maskset, opts) {\n        function getMaskTemplate(baseOnInput, minimalPos, includeMode) {\n            minimalPos = minimalPos || 0;\n            var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition();\n            do {\n                !0 === baseOnInput && getMaskSet().validPositions[pos] ? (test = (testPos = getMaskSet().validPositions[pos]).match, \n                ndxIntlzr = testPos.locator.slice(), maskTemplate.push(!0 === includeMode ? testPos.input : !1 === includeMode ? test.nativeDef : getPlaceholder(pos, test))) : (test = (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1)).match, \n                ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || \"number\" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(!1 === includeMode ? test.nativeDef : getPlaceholder(pos, test))), \n                pos++;\n            } while ((maxLength === undefined || pos < maxLength) && (null !== test.fn || \"\" !== test.def) || minimalPos > pos);\n            return \"\" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), getMaskSet().maskLength = pos + 1, \n            maskTemplate;\n        }\n        function getMaskSet() {\n            return maskset;\n        }\n        function resetMaskSet(soft) {\n            var maskset = getMaskSet();\n            maskset.buffer = undefined, !0 !== soft && (maskset.validPositions = {}, maskset.p = 0);\n        }\n        function getLastValidPosition(closestTo, strict, validPositions) {\n            var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;\n            closestTo === undefined && (closestTo = -1);\n            for (var posNdx in valids) {\n                var psNdx = parseInt(posNdx);\n                valids[psNdx] && (strict || !0 !== valids[psNdx].generatedInput) && (psNdx <= closestTo && (before = psNdx), \n                psNdx >= closestTo && (after = psNdx));\n            }\n            return -1 !== before && closestTo - before > 1 || after < closestTo ? before : after;\n        }\n        function stripValidPositions(start, end, nocheck, strict) {\n            var i, startPos = start, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), needsValidation = !1;\n            for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) getMaskSet().validPositions[i] !== undefined && (!0 !== nocheck && (!getMaskSet().validPositions[i].match.optionality && function(pos) {\n                var posMatch = getMaskSet().validPositions[pos];\n                if (posMatch !== undefined && null === posMatch.match.fn) {\n                    var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1];\n                    return prevMatch !== undefined && nextMatch !== undefined;\n                }\n                return !1;\n            }(i) || !1 === opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), strict, opts)) || delete getMaskSet().validPositions[i]);\n            for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {\n                for (;getMaskSet().validPositions[startPos] !== undefined; ) startPos++;\n                if (i < startPos && (i = startPos + 1), getMaskSet().validPositions[i] === undefined && isMask(i)) i++; else {\n                    var t = getTestTemplate(i);\n                    !1 === needsValidation && positionsClone[startPos] && positionsClone[startPos].match.def === t.match.def ? (getMaskSet().validPositions[startPos] = $.extend(!0, {}, positionsClone[startPos]), \n                    getMaskSet().validPositions[startPos].input = t.input, delete getMaskSet().validPositions[i], \n                    i++) : positionCanMatchDefinition(startPos, t.match.def) ? !1 !== isValid(startPos, t.input || getPlaceholder(i), !0) && (delete getMaskSet().validPositions[i], \n                    i++, needsValidation = !0) : isMask(i) || (i++, startPos--), startPos++;\n                }\n            }\n            resetMaskSet(!0);\n        }\n        function determineTestTemplate(tests, guessNextBest) {\n            for (var testPos, testPositions = tests, lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation].toString().split(\",\") : [], ndx = 0; ndx < testPositions.length && (!((testPos = testPositions[ndx]).match && (opts.greedy && !0 !== testPos.match.optionalQuantifier || (!1 === testPos.match.optionality || !1 === testPos.match.newBlockMarker) && !0 !== testPos.match.optionalQuantifier) && (lvTest.alternation === undefined || lvTest.alternation !== testPos.alternation || testPos.locator[lvTest.alternation] !== undefined && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAltArr))) || !0 === guessNextBest && (null !== testPos.match.fn || /[0-9a-bA-Z]/.test(testPos.match.def))); ndx++) ;\n            return testPos;\n        }\n        function getTestTemplate(pos, ndxIntlzr, tstPs) {\n            return getMaskSet().validPositions[pos] || determineTestTemplate(getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs));\n        }\n        function getTest(pos) {\n            return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos] : getTests(pos)[0];\n        }\n        function positionCanMatchDefinition(pos, def) {\n            for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) {\n                valid = !0;\n                break;\n            }\n            return valid;\n        }\n        function getTests(pos, ndxIntlzr, tstPs) {\n            function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {\n                function handleMatch(match, loopNdx, quantifierRecurse) {\n                    function isFirstMatch(latestMatch, tokenGroup) {\n                        var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);\n                        return firstMatch || $.each(tokenGroup.matches, function(ndx, match) {\n                            if (!0 === match.isQuantifier && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]))) return !1;\n                        }), firstMatch;\n                    }\n                    function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\n                        var bestMatch, indexPos;\n                        if (getMaskSet().validPositions[pos - 1] && targetAlternation && getMaskSet().tests[pos]) for (var vpAlternation = getMaskSet().validPositions[pos - 1].locator, tpAlternation = getMaskSet().tests[pos][0].locator, i = 0; i < targetAlternation; i++) if (vpAlternation[i] !== tpAlternation[i]) return vpAlternation.slice(targetAlternation + 1);\n                        return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {\n                            var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1;\n                            (indexPos === undefined || ndxPos < indexPos) && -1 !== ndxPos && (bestMatch = lmnt, \n                            indexPos = ndxPos);\n                        }), bestMatch ? bestMatch.locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1) : targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined;\n                    }\n                    if (testPos > 1e4) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + getMaskSet().mask;\n                    if (testPos === pos && match.matches === undefined) return matches.push({\n                        match: match,\n                        locator: loopNdx.reverse(),\n                        cd: cacheDependency\n                    }), !0;\n                    if (match.matches !== undefined) {\n                        if (match.isGroup && quantifierRecurse !== match) {\n                            if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0;\n                        } else if (match.isOptional) {\n                            var optionalToken = match;\n                            if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) {\n                                if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0;\n                                insertStop = !0, testPos = pos;\n                            }\n                        } else if (match.isAlternator) {\n                            var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;\n                            if (-1 === altIndex || \"string\" == typeof altIndex) {\n                                var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [];\n                                if (\"string\" == typeof altIndex) altIndexArr = altIndex.split(\",\"); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx);\n                                for (var ndx = 0; ndx < altIndexArr.length; ndx++) {\n                                    if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice(), \n                                    !0 !== (match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match) && match !== undefined && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) {\n                                        var ntndx = $.inArray(match, maskToken.matches) + 1;\n                                        maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse)) && (altIndexArr.push(ntndx.toString()), \n                                        $.each(matches, function(ndx, lmnt) {\n                                            lmnt.alternation = loopNdx.length - 1;\n                                        }));\n                                    }\n                                    maltMatches = matches.slice(), testPos = currentPos, matches = [];\n                                    for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n                                        var altMatch = maltMatches[ndx1], dropMatch = !1;\n                                        altMatch.alternation = altMatch.alternation || loopNdxCnt;\n                                        for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n                                            var altMatch2 = malternateMatches[ndx2];\n                                            if (\"string\" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr)) {\n                                                if (function(source, target) {\n                                                    return source.match.nativeDef === target.match.nativeDef || source.match.def === target.match.nativeDef || source.match.nativeDef === target.match.def;\n                                                }(altMatch, altMatch2)) {\n                                                    dropMatch = !0, altMatch.alternation === altMatch2.alternation && -1 === altMatch2.locator[altMatch2.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch2.alternation] = altMatch2.locator[altMatch2.alternation] + \",\" + altMatch.locator[altMatch.alternation], \n                                                    altMatch2.alternation = altMatch.alternation), altMatch.match.nativeDef === altMatch2.match.def && (altMatch.locator[altMatch.alternation] = altMatch2.locator[altMatch2.alternation], \n                                                    malternateMatches.splice(malternateMatches.indexOf(altMatch2), 1, altMatch));\n                                                    break;\n                                                }\n                                                if (altMatch.match.def === altMatch2.match.def) {\n                                                    dropMatch = !1;\n                                                    break;\n                                                }\n                                                if (function(source, target) {\n                                                    return null === source.match.fn && null !== target.match.fn && target.match.fn.test(source.match.def, getMaskSet(), pos, !1, opts, !1);\n                                                }(altMatch, altMatch2) || function(source, target) {\n                                                    return null !== source.match.fn && null !== target.match.fn && target.match.fn.test(source.match.def.replace(/[\\[\\]]/g, \"\"), getMaskSet(), pos, !1, opts, !1);\n                                                }(altMatch, altMatch2)) {\n                                                    altMatch.alternation === altMatch2.alternation && -1 === altMatch.locator[altMatch.alternation].toString().indexOf(altMatch2.locator[altMatch2.alternation].toString().split(\"\")[0]) && (altMatch.na = altMatch.na || altMatch.locator[altMatch.alternation].toString(), \n                                                    -1 === altMatch.na.indexOf(altMatch.locator[altMatch.alternation].toString().split(\"\")[0]) && (altMatch.na = altMatch.na + \",\" + altMatch.locator[altMatch2.alternation].toString().split(\"\")[0]), \n                                                    dropMatch = !0, altMatch.locator[altMatch.alternation] = altMatch2.locator[altMatch2.alternation].toString().split(\"\")[0] + \",\" + altMatch.locator[altMatch.alternation], \n                                                    malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch));\n                                                    break;\n                                                }\n                                            }\n                                        }\n                                        dropMatch || malternateMatches.push(altMatch);\n                                    }\n                                }\n                                \"string\" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) {\n                                    if (isFinite(ndx)) {\n                                        var alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(\",\");\n                                        lmnt.locator[alternation] = undefined, lmnt.alternation = undefined;\n                                        for (var alndx = 0; alndx < altLocArr.length; alndx++) -1 !== $.inArray(altLocArr[alndx], altIndexArr) && (lmnt.locator[alternation] !== undefined ? (lmnt.locator[alternation] += \",\", \n                                        lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), \n                                        lmnt.alternation = alternation);\n                                        if (lmnt.locator[alternation] !== undefined) return lmnt;\n                                    }\n                                })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0, \n                                match = malternateMatches.length > 0, ndxInitializer = ndxInitializerClone.slice();\n                            } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n                            if (match) return !0;\n                        } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n                            var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n                            if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) {\n                                if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, \n                                isFirstMatch(latestMatch, tokenGroup)) {\n                                    if (qndx > qt.quantifier.min - 1) {\n                                        insertStop = !0, testPos = pos;\n                                        break;\n                                    }\n                                    return !0;\n                                }\n                                return !0;\n                            }\n                        } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0;\n                    } else testPos++;\n                }\n                for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (!0 !== maskToken.matches[tndx].isQuantifier) {\n                    var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n                    if (match && testPos === pos) return match;\n                    if (testPos > pos) break;\n                }\n            }\n            function filterTests(tests) {\n                if (opts.keepStatic && pos > 0 && tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0) && !0 !== tests[0].match.optionality && !0 !== tests[0].match.optionalQuantifier && null === tests[0].match.fn && !/[0-9a-bA-Z]/.test(tests[0].match.def)) {\n                    if (getMaskSet().validPositions[pos - 1] === undefined) return [ determineTestTemplate(tests) ];\n                    if (getMaskSet().validPositions[pos - 1].alternation === tests[0].alternation) return [ determineTestTemplate(tests) ];\n                    if (getMaskSet().validPositions[pos - 1]) return [ determineTestTemplate(tests) ];\n                }\n                return tests;\n            }\n            var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\";\n            if (pos > -1) {\n                if (ndxIntlzr === undefined) {\n                    for (var test, previousPos = pos - 1; (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1; ) previousPos--;\n                    test !== undefined && previousPos > -1 && (ndxInitializer = function(tests) {\n                        var locator = [];\n                        return $.isArray(tests) || (tests = [ tests ]), tests.length > 0 && (tests[0].alternation === undefined ? 0 === (locator = determineTestTemplate(tests.slice()).locator.slice()).length && (locator = tests[0].locator.slice()) : $.each(tests, function(ndx, tst) {\n                            if (\"\" !== tst.def) if (0 === locator.length) locator = tst.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += \",\" + tst.locator[i]);\n                        })), locator;\n                    }(test), cacheDependency = ndxInitializer.join(\"\"), testPos = previousPos);\n                }\n                if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return filterTests(getMaskSet().tests[pos]);\n                for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length && !(resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]) && testPos === pos || testPos > pos); mtndx++) ;\n            }\n            return (0 === matches.length || insertStop) && matches.push({\n                match: {\n                    fn: null,\n                    cardinality: 0,\n                    optionality: !0,\n                    casing: null,\n                    def: \"\",\n                    placeholder: \"\"\n                },\n                locator: [],\n                cd: cacheDependency\n            }), ndxIntlzr !== undefined && getMaskSet().tests[pos] ? filterTests($.extend(!0, [], matches)) : (getMaskSet().tests[pos] = $.extend(!0, [], matches), \n            filterTests(getMaskSet().tests[pos]));\n        }\n        function getBufferTemplate() {\n            return getMaskSet()._buffer === undefined && (getMaskSet()._buffer = getMaskTemplate(!1, 1), \n            getMaskSet().buffer === undefined && (getMaskSet().buffer = getMaskSet()._buffer.slice())), \n            getMaskSet()._buffer;\n        }\n        function getBuffer(noCache) {\n            return getMaskSet().buffer !== undefined && !0 !== noCache || (getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0)), \n            getMaskSet().buffer;\n        }\n        function refreshFromBuffer(start, end, buffer) {\n            var i, p;\n            if (!0 === start) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; i < end; i++) delete getMaskSet().validPositions[i];\n            for (p = start, i = start; i < end; i++) if (resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter) {\n                var valResult = isValid(p, buffer[i], !0, !0);\n                !1 !== valResult && (resetMaskSet(!0), p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1);\n            }\n        }\n        function casing(elem, test, pos) {\n            switch (opts.casing || test.casing) {\n              case \"upper\":\n                elem = elem.toUpperCase();\n                break;\n\n              case \"lower\":\n                elem = elem.toLowerCase();\n                break;\n\n              case \"title\":\n                var posBefore = getMaskSet().validPositions[pos - 1];\n                elem = 0 === pos || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE) ? elem.toUpperCase() : elem.toLowerCase();\n                break;\n\n              default:\n                if ($.isFunction(opts.casing)) {\n                    var args = Array.prototype.slice.call(arguments);\n                    args.push(getMaskSet().validPositions), elem = opts.casing.apply(this, args);\n                }\n            }\n            return elem;\n        }\n        function checkAlternationMatch(altArr1, altArr2, na) {\n            for (var naNdx, altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, naArr = na !== undefined ? na.split(\",\") : [], i = 0; i < naArr.length; i++) -1 !== (naNdx = altArr1.indexOf(naArr[i])) && altArr1.splice(naNdx, 1);\n            for (var alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {\n                isMatch = !0;\n                break;\n            }\n            return isMatch;\n        }\n        function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) {\n            function isSelection(posObj) {\n                var selection = isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end == 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin == 1;\n                return selection && 0 === posObj.begin && posObj.end === getMaskSet().maskLength ? \"full\" : selection;\n            }\n            function _isValid(position, c, strict) {\n                var rslt = !1;\n                return $.each(getTests(position), function(ndx, tst) {\n                    for (var test = tst.match, loopend = c ? 1 : 0, chrs = \"\", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1));\n                    if (c && (chrs += c), getBuffer(!0), !1 !== (rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && \"\" !== test.def && {\n                        c: getPlaceholder(position, test, !0) || test.def,\n                        pos: position\n                    })) {\n                        var elem = rslt.c !== undefined ? rslt.c : c;\n                        elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? getPlaceholder(position, test, !0) || test.def : elem;\n                        var validatedPos = position, possibleModifiedBuffer = getBuffer();\n                        if (rslt.remove !== undefined && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), \n                        $.each(rslt.remove.sort(function(a, b) {\n                            return b - a;\n                        }), function(ndx, lmnt) {\n                            stripValidPositions(lmnt, lmnt + 1, !0);\n                        })), rslt.insert !== undefined && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), \n                        $.each(rslt.insert.sort(function(a, b) {\n                            return a - b;\n                        }), function(ndx, lmnt) {\n                            isValid(lmnt.pos, lmnt.c, !0, fromSetValid);\n                        })), rslt.refreshFromBuffer) {\n                            var refresh = rslt.refreshFromBuffer;\n                            if (refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), \n                            rslt.pos === undefined && rslt.c === undefined) return rslt.pos = getLastValidPosition(), \n                            !1;\n                            if ((validatedPos = rslt.pos !== undefined ? rslt.pos : position) !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), \n                            !1;\n                        } else if (!0 !== rslt && rslt.pos !== undefined && rslt.pos !== position && (validatedPos = rslt.pos, \n                        refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), \n                        !1;\n                        return (!0 === rslt || rslt.pos !== undefined || rslt.c !== undefined) && (ndx > 0 && resetMaskSet(!0), \n                        setValidPosition(validatedPos, $.extend({}, tst, {\n                            input: casing(elem, test, validatedPos)\n                        }), fromSetValid, isSelection(pos)) || (rslt = !1), !1);\n                    }\n                }), rslt;\n            }\n            function setValidPosition(pos, validTest, fromSetValid, isSelection) {\n                if (isSelection || opts.insertMode && getMaskSet().validPositions[pos] !== undefined && fromSetValid === undefined) {\n                    var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, !0);\n                    for (i = pos; i <= lvp; i++) delete getMaskSet().validPositions[i];\n                    getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);\n                    var j, valid = !0, vps = getMaskSet().validPositions, needsValidation = !1, initialLength = getMaskSet().maskLength;\n                    for (i = j = pos; i <= lvp; i++) {\n                        var t = positionsClone[i];\n                        if (t !== undefined) for (var posMatch = j; posMatch < getMaskSet().maskLength && (null === t.match.fn && vps[i] && (!0 === vps[i].match.optionalQuantifier || !0 === vps[i].match.optionality) || null != t.match.fn); ) {\n                            if (posMatch++, !1 === needsValidation && positionsClone[posMatch] && positionsClone[posMatch].match.def === t.match.def) getMaskSet().validPositions[posMatch] = $.extend(!0, {}, positionsClone[posMatch]), \n                            getMaskSet().validPositions[posMatch].input = t.input, fillMissingNonMask(posMatch), \n                            j = posMatch, valid = !0; else if (positionCanMatchDefinition(posMatch, t.match.def)) {\n                                var result = isValid(posMatch, t.input, !0, !0);\n                                valid = !1 !== result, j = result.caret || result.insert ? getLastValidPosition() : posMatch, \n                                needsValidation = !0;\n                            } else if (!(valid = !0 === t.generatedInput) && posMatch >= getMaskSet().maskLength - 1) break;\n                            if (getMaskSet().maskLength < initialLength && (getMaskSet().maskLength = initialLength), \n                            valid) break;\n                        }\n                        if (!valid) break;\n                    }\n                    if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), \n                    resetMaskSet(!0), !1;\n                } else getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);\n                return resetMaskSet(!0), !0;\n            }\n            function fillMissingNonMask(maskPos) {\n                for (var pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ;\n                var testTemplate, testsFromPos;\n                for (pndx++; pndx < maskPos; pndx++) getMaskSet().validPositions[pndx] === undefined && (!1 === opts.jitMasking || opts.jitMasking > pndx) && (\"\" === (testsFromPos = getTests(pndx, getTestTemplate(pndx - 1).locator, pndx - 1).slice())[testsFromPos.length - 1].match.def && testsFromPos.pop(), \n                (testTemplate = determineTestTemplate(testsFromPos)) && (testTemplate.match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && !1 !== (result = _isValid(pndx, getPlaceholder(pndx, testTemplate.match, !0) || (null == testTemplate.match.fn ? testTemplate.match.def : \"\" !== getPlaceholder(pndx) ? getPlaceholder(pndx) : getBuffer()[pndx]), !0)) && (getMaskSet().validPositions[result.pos || pndx].generatedInput = !0));\n            }\n            strict = !0 === strict;\n            var maskPos = pos;\n            pos.begin !== undefined && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin);\n            var result = !0, positionsClone = $.extend(!0, {}, getMaskSet().validPositions);\n            if ($.isFunction(opts.preValidation) && !strict && !0 !== fromSetValid && !0 !== validateOnly && (result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts)), \n            !0 === result) {\n                if (fillMissingNonMask(maskPos), isSelection(pos) && (handleRemove(undefined, Inputmask.keyCode.DELETE, pos, !0, !0), \n                maskPos = getMaskSet().p), maskPos < getMaskSet().maskLength && (maxLength === undefined || maskPos < maxLength) && (result = _isValid(maskPos, c, strict), \n                (!strict || !0 === fromSetValid) && !1 === result && !0 !== validateOnly)) {\n                    var currentPosValid = getMaskSet().validPositions[maskPos];\n                    if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {\n                        if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && !isMask(maskPos, !0)) for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) if (!1 !== (result = _isValid(nPos, c, strict))) {\n                            !function(originalPos, newPos) {\n                                var vp = getMaskSet().validPositions[newPos];\n                                if (vp) for (var targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; ps < newPos; ps++) if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, !0)) {\n                                    var tests = getTests(ps).slice(), bestMatch = determineTestTemplate(tests, !0), equality = -1;\n                                    \"\" === tests[tests.length - 1].match.def && tests.pop(), $.each(tests, function(ndx, tst) {\n                                        for (var i = 0; i < tll; i++) {\n                                            if (tst.locator[i] === undefined || !checkAlternationMatch(tst.locator[i].toString().split(\",\"), targetLocator[i].toString().split(\",\"), tst.na)) {\n                                                var targetAI = targetLocator[i], bestMatchAI = bestMatch.locator[i], tstAI = tst.locator[i];\n                                                targetAI - bestMatchAI > Math.abs(targetAI - tstAI) && (bestMatch = tst);\n                                                break;\n                                            }\n                                            equality < i && (equality = i, bestMatch = tst);\n                                        }\n                                    }), (bestMatch = $.extend({}, bestMatch, {\n                                        input: getPlaceholder(ps, bestMatch.match, !0) || bestMatch.match.def\n                                    })).generatedInput = !0, setValidPosition(ps, bestMatch, !0), getMaskSet().validPositions[newPos] = undefined, \n                                    _isValid(newPos, vp.input, !0);\n                                }\n                            }(maskPos, result.pos !== undefined ? result.pos : nPos), maskPos = nPos;\n                            break;\n                        }\n                    } else result = {\n                        caret: seekNext(maskPos)\n                    };\n                }\n                !1 === result && opts.keepStatic && !strict && !0 !== fromAlternate && (result = function(pos, c, strict) {\n                    var lastAlt, alternation, altPos, prevAltPos, i, validPos, altNdxs, decisionPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), isValidRslt = !1, lAltPos = getLastValidPosition();\n                    for (prevAltPos = getMaskSet().validPositions[lAltPos]; lAltPos >= 0; lAltPos--) if ((altPos = getMaskSet().validPositions[lAltPos]) && altPos.alternation !== undefined) {\n                        if (lastAlt = lAltPos, alternation = getMaskSet().validPositions[lastAlt].alternation, \n                        prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) break;\n                        prevAltPos = altPos;\n                    }\n                    if (alternation !== undefined) {\n                        decisionPos = parseInt(lastAlt);\n                        var decisionTaker = prevAltPos.locator[prevAltPos.alternation || alternation] !== undefined ? prevAltPos.locator[prevAltPos.alternation || alternation] : altNdxs[0];\n                        decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(\",\")[0]);\n                        var possibilityPos = getMaskSet().validPositions[decisionPos], prevPos = getMaskSet().validPositions[decisionPos - 1];\n                        $.each(getTests(decisionPos, prevPos ? prevPos.locator : undefined, decisionPos - 1), function(ndx, test) {\n                            altNdxs = test.locator[alternation] ? test.locator[alternation].toString().split(\",\") : [];\n                            for (var mndx = 0; mndx < altNdxs.length; mndx++) {\n                                var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0, verifyValidInput = !1;\n                                if (decisionTaker < altNdxs[mndx] && (test.na === undefined || -1 === $.inArray(altNdxs[mndx], test.na.split(\",\")) || -1 === $.inArray(decisionTaker.toString(), altNdxs))) {\n                                    getMaskSet().validPositions[decisionPos] = $.extend(!0, {}, test);\n                                    var possibilities = getMaskSet().validPositions[decisionPos].locator;\n                                    for (getMaskSet().validPositions[decisionPos].locator[alternation] = parseInt(altNdxs[mndx]), \n                                    null == test.match.fn ? (possibilityPos.input !== test.match.def && (verifyValidInput = !0, \n                                    !0 !== possibilityPos.generatedInput && validInputs.push(possibilityPos.input)), \n                                    staticInputsBeforePosAlternate++, getMaskSet().validPositions[decisionPos].generatedInput = !/[0-9a-bA-Z]/.test(test.match.def), \n                                    getMaskSet().validPositions[decisionPos].input = test.match.def) : getMaskSet().validPositions[decisionPos].input = possibilityPos.input, \n                                    i = decisionPos + 1; i < getLastValidPosition(undefined, !0) + 1; i++) (validPos = getMaskSet().validPositions[i]) && !0 !== validPos.generatedInput && /[0-9a-bA-Z]/.test(validPos.input) ? validInputs.push(validPos.input) : i < pos && staticInputsBeforePos++, \n                                    delete getMaskSet().validPositions[i];\n                                    for (verifyValidInput && validInputs[0] === test.match.def && validInputs.shift(), \n                                    resetMaskSet(!0), isValidRslt = !0; validInputs.length > 0; ) {\n                                        var input = validInputs.shift();\n                                        if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(undefined, !0) + 1, input, !1, fromSetValid, !0))) break;\n                                    }\n                                    if (isValidRslt) {\n                                        getMaskSet().validPositions[decisionPos].locator = possibilities;\n                                        var targetLvp = getLastValidPosition(pos) + 1;\n                                        for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) ((validPos = getMaskSet().validPositions[i]) === undefined || null == validPos.match.fn) && i < pos + (staticInputsBeforePosAlternate - staticInputsBeforePos) && staticInputsBeforePosAlternate++;\n                                        isValidRslt = isValid((pos += staticInputsBeforePosAlternate - staticInputsBeforePos) > targetLvp ? targetLvp : pos, c, strict, fromSetValid, !0);\n                                    }\n                                    if (isValidRslt) return !1;\n                                    resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone);\n                                }\n                            }\n                        });\n                    }\n                    return isValidRslt;\n                }(maskPos, c, strict)), !0 === result && (result = {\n                    pos: maskPos\n                });\n            }\n            if ($.isFunction(opts.postValidation) && !1 !== result && !strict && !0 !== fromSetValid && !0 !== validateOnly) {\n                var postResult = opts.postValidation(getBuffer(!0), result, opts);\n                if (postResult.refreshFromBuffer && postResult.buffer) {\n                    var refresh = postResult.refreshFromBuffer;\n                    refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, postResult.buffer);\n                }\n                result = !0 === postResult ? result : postResult;\n            }\n            return result && result.pos === undefined && (result.pos = maskPos), !1 !== result && !0 !== validateOnly || (resetMaskSet(!0), \n            getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result;\n        }\n        function isMask(pos, strict) {\n            var test = getTestTemplate(pos).match;\n            if (\"\" === test.def && (test = getTest(pos).match), null != test.fn) return test.fn;\n            if (!0 !== strict && pos > -1) {\n                var tests = getTests(pos);\n                return tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0);\n            }\n            return !1;\n        }\n        function seekNext(pos, newBlock) {\n            var maskL = getMaskSet().maskLength;\n            if (pos >= maskL) return maskL;\n            var position = pos;\n            for (getTests(maskL + 1).length > 1 && (getMaskTemplate(!0, maskL + 1, !0), maskL = getMaskSet().maskLength); ++position < maskL && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position)) || !0 !== newBlock && !isMask(position)); ) ;\n            return position;\n        }\n        function seekPrevious(pos, newBlock) {\n            var tests, position = pos;\n            if (position <= 0) return 0;\n            for (;--position > 0 && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position) && ((tests = getTests(position)).length < 2 || 2 === tests.length && \"\" === tests[1].match.def)); ) ;\n            return position;\n        }\n        function getBufferElement(position) {\n            return getMaskSet().validPositions[position] === undefined ? getPlaceholder(position) : getMaskSet().validPositions[position].input;\n        }\n        function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {\n            if (event && $.isFunction(opts.onBeforeWrite)) {\n                var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n                if (result) {\n                    if (result.refreshFromBuffer) {\n                        var refresh = result.refreshFromBuffer;\n                        refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer || buffer), \n                        buffer = getBuffer(!0);\n                    }\n                    caretPos !== undefined && (caretPos = result.caret !== undefined ? result.caret : caretPos);\n                }\n            }\n            input !== undefined && (input.inputmask._valueSet(buffer.join(\"\")), caretPos === undefined || event !== undefined && \"blur\" === event.type ? renderColorMask(input, caretPos, 0 === buffer.length) : android && event && \"input\" === event.type ? setTimeout(function() {\n                caret(input, caretPos);\n            }, 0) : caret(input, caretPos), !0 === triggerInputEvent && (skipInputEvent = !0, \n            $(input).trigger(\"input\")));\n        }\n        function getPlaceholder(pos, test, returnPL) {\n            if ((test = test || getTest(pos).match).placeholder !== undefined || !0 === returnPL) return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n            if (null === test.fn) {\n                if (pos > -1 && getMaskSet().validPositions[pos] === undefined) {\n                    var prevTest, tests = getTests(pos), staticAlternations = [];\n                    if (tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0)) for (var i = 0; i < tests.length; i++) if (!0 !== tests[i].match.optionality && !0 !== tests[i].match.optionalQuantifier && (null === tests[i].match.fn || prevTest === undefined || !1 !== tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts)) && (staticAlternations.push(tests[i]), \n                    null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations.length > 1 && /[0-9a-bA-Z]/.test(staticAlternations[0].match.def))) return opts.placeholder.charAt(pos % opts.placeholder.length);\n                }\n                return test.def;\n            }\n            return opts.placeholder.charAt(pos % opts.placeholder.length);\n        }\n        function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n            function isTemplateMatch(ndx, charCodes) {\n                return -1 !== getBufferTemplate().slice(ndx, seekNext(ndx)).join(\"\").indexOf(charCodes) && !isMask(ndx) && getTest(ndx).match.nativeDef === charCodes.charAt(charCodes.length - 1);\n            }\n            var inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = undefined;\n            if (resetMaskSet(), strict || !0 === opts.autoUnmask) initialNdx = seekNext(initialNdx); else {\n                var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(\"\"), matches = inputValue.join(\"\").match(new RegExp(\"^\" + Inputmask.escapeRegex(staticInput), \"g\"));\n                matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), \n                initialNdx = seekNext(initialNdx));\n            }\n            if (-1 === initialNdx ? (getMaskSet().p = seekNext(initialNdx), initialNdx = 0) : getMaskSet().p = initialNdx, \n            $.each(inputValue, function(ndx, charCode) {\n                if (charCode !== undefined) if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, !0) && !1 === isValid(ndx, inputValue[ndx], !0, undefined, undefined, !0)) getMaskSet().p++; else {\n                    var keypress = new $.Event(\"_checkval\");\n                    keypress.which = charCode.charCodeAt(0), charCodes += charCode;\n                    var lvp = getLastValidPosition(undefined, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : undefined, lvp);\n                    if (!isTemplateMatch(initialNdx, charCodes) || strict || opts.autoUnmask) {\n                        var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;\n                        result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, pos), \n                        initialNdx = pos + 1, charCodes = \"\";\n                    } else result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1);\n                    if (!1 !== result && !strict && $.isFunction(opts.onBeforeWrite)) {\n                        var origResult = result;\n                        if (result = opts.onBeforeWrite.call(inputmask, keypress, getBuffer(), result.forwardPosition, opts), \n                        (result = $.extend(origResult, result)) && result.refreshFromBuffer) {\n                            var refresh = result.refreshFromBuffer;\n                            refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer), \n                            resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret, result.forwardPosition = result.caret);\n                        }\n                    }\n                }\n            }), writeOut) {\n                var caretPos = undefined;\n                document.activeElement === input && result && (caretPos = opts.numericInput ? seekPrevious(result.forwardPosition) : result.forwardPosition), \n                writeBuffer(input, getBuffer(), caretPos, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && \"input\" === initiatingEvent.type);\n            }\n        }\n        function unmaskedvalue(input) {\n            if (input) {\n                if (input.inputmask === undefined) return input.value;\n                input.inputmask && input.inputmask.refreshValue && EventHandlers.setValueEvent.call(input);\n            }\n            var umValue = [], vps = getMaskSet().validPositions;\n            for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input);\n            var unmaskedValue = 0 === umValue.length ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n            if ($.isFunction(opts.onUnMask)) {\n                var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n                unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n            }\n            return unmaskedValue;\n        }\n        function caret(input, begin, end, notranslate) {\n            function translatePosition(pos) {\n                return !0 === notranslate || !isRTL || \"number\" != typeof pos || opts.greedy && \"\" === opts.placeholder || (pos = getBuffer().join(\"\").length - pos), \n                pos;\n            }\n            var range;\n            if (begin === undefined) return input.setSelectionRange ? (begin = input.selectionStart, \n            end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== input && range.commonAncestorContainer !== input || (begin = range.startOffset, \n            end = range.endOffset) : document.selection && document.selection.createRange && (end = (begin = 0 - (range = document.selection.createRange()).duplicate().moveStart(\"character\", -input.inputmask._valueGet().length)) + range.text.length), \n            {\n                begin: translatePosition(begin),\n                end: translatePosition(end)\n            };\n            if (begin.begin !== undefined && (end = begin.end, begin = begin.begin), \"number\" == typeof begin) {\n                begin = translatePosition(begin), end = \"number\" == typeof (end = translatePosition(end)) ? end : begin;\n                var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n                if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || !1 !== opts.insertMode || begin !== end || end++, \n                input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) {\n                    if (range = document.createRange(), input.firstChild === undefined || null === input.firstChild) {\n                        var textNode = document.createTextNode(\"\");\n                        input.appendChild(textNode);\n                    }\n                    range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), \n                    range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), \n                    range.collapse(!0);\n                    var sel = window.getSelection();\n                    sel.removeAllRanges(), sel.addRange(range);\n                } else input.createTextRange && ((range = input.createTextRange()).collapse(!0), \n                range.moveEnd(\"character\", end), range.moveStart(\"character\", begin), range.select());\n                renderColorMask(input, {\n                    begin: begin,\n                    end: end\n                });\n            }\n        }\n        function determineLastRequiredPosition(returnDefinition) {\n            var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined;\n            for (pos = lvp + 1; pos < buffer.length; pos++) ndxIntlzr = (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1)).locator.slice(), \n            positions[pos] = $.extend(!0, {}, testPos);\n            var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined;\n            for (pos = bl - 1; pos > lvp && (((testPos = positions[pos]).match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && \"\" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;\n            return returnDefinition ? {\n                l: bl,\n                def: positions[bl] ? positions[bl].match : undefined\n            } : bl;\n        }\n        function clearOptionalTail(buffer) {\n            for (var validPos, rl = determineLastRequiredPosition(), bl = buffer.length, lv = getMaskSet().validPositions[getLastValidPosition()]; rl < bl && !isMask(rl, !0) && (validPos = lv !== undefined ? getTestTemplate(rl, lv.locator.slice(\"\"), lv) : getTest(rl)) && !0 !== validPos.match.optionality && (!0 !== validPos.match.optionalQuantifier && !0 !== validPos.match.newBlockMarker || rl + 1 === bl && \"\" === (lv !== undefined ? getTestTemplate(rl + 1, lv.locator.slice(\"\"), lv) : getTest(rl + 1)).match.def); ) rl++;\n            for (;(validPos = getMaskSet().validPositions[rl - 1]) && validPos && validPos.match.optionality && validPos.input === opts.skipOptionalPartCharacter; ) rl--;\n            return buffer.splice(rl), buffer;\n        }\n        function isComplete(buffer) {\n            if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n            if (\"*\" === opts.repeat) return undefined;\n            var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);\n            if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n                complete = !0;\n                for (var i = 0; i <= aml; i++) {\n                    var test = getTestTemplate(i).match;\n                    if (null !== test.fn && getMaskSet().validPositions[i] === undefined && !0 !== test.optionality && !0 !== test.optionalQuantifier || null === test.fn && buffer[i] !== getPlaceholder(i, test)) {\n                        complete = !1;\n                        break;\n                    }\n                }\n            }\n            return complete;\n        }\n        function handleRemove(input, k, pos, strict, fromIsValid) {\n            if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), \n            isRTL)) {\n                var pend = pos.end;\n                pos.end = pos.begin, pos.begin = pend;\n            }\n            k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || !1 === opts.insertMode) ? (pos.begin = seekPrevious(pos.begin), \n            getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator && pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0) && getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint ? pos.end + 1 : seekNext(pos.end) + 1, \n            getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator && pos.end++), \n            stripValidPositions(pos.begin, pos.end, !1, strict), !0 !== strict && function() {\n                if (opts.keepStatic) {\n                    for (var validInputs = [], lastAlt = getLastValidPosition(-1, !0), positionsClone = $.extend(!0, {}, getMaskSet().validPositions), prevAltPos = getMaskSet().validPositions[lastAlt]; lastAlt >= 0; lastAlt--) {\n                        var altPos = getMaskSet().validPositions[lastAlt];\n                        if (altPos) {\n                            if (!0 !== altPos.generatedInput && /[0-9a-bA-Z]/.test(altPos.input) && validInputs.push(altPos.input), \n                            delete getMaskSet().validPositions[lastAlt], altPos.alternation !== undefined && altPos.locator[altPos.alternation] !== prevAltPos.locator[altPos.alternation]) break;\n                            prevAltPos = altPos;\n                        }\n                    }\n                    if (lastAlt > -1) for (getMaskSet().p = seekNext(getLastValidPosition(-1, !0)); validInputs.length > 0; ) {\n                        var keypress = new $.Event(\"keypress\");\n                        keypress.which = validInputs.pop().charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p);\n                    } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone);\n                }\n            }();\n            var lvp = getLastValidPosition(pos.begin, !0);\n            if (lvp < pos.begin) getMaskSet().p = seekNext(lvp); else if (!0 !== strict && (getMaskSet().p = pos.begin, \n            !0 !== fromIsValid)) for (;getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined; ) getMaskSet().p++;\n        }\n        function initializeColorMask(input) {\n            function findCaretPos(clientx) {\n                var caretPos, e = document.createElement(\"span\");\n                for (var style in computedStyle) isNaN(style) && -1 !== style.indexOf(\"font\") && (e.style[style] = computedStyle[style]);\n                e.style.textTransform = computedStyle.textTransform, e.style.letterSpacing = computedStyle.letterSpacing, \n                e.style.position = \"absolute\", e.style.height = \"auto\", e.style.width = \"auto\", \n                e.style.visibility = \"hidden\", e.style.whiteSpace = \"nowrap\", document.body.appendChild(e);\n                var itl, inputText = input.inputmask._valueGet(), previousWidth = 0;\n                for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) {\n                    if (e.innerHTML += inputText.charAt(caretPos) || \"_\", e.offsetWidth >= clientx) {\n                        var offset1 = clientx - previousWidth, offset2 = e.offsetWidth - clientx;\n                        e.innerHTML = inputText.charAt(caretPos), caretPos = (offset1 -= e.offsetWidth / 3) < offset2 ? caretPos - 1 : caretPos;\n                        break;\n                    }\n                    previousWidth = e.offsetWidth;\n                }\n                return document.body.removeChild(e), caretPos;\n            }\n            var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null), template = document.createElement(\"div\");\n            template.style.width = computedStyle.width, template.style.textAlign = computedStyle.textAlign, \n            (colorMask = document.createElement(\"div\")).className = \"im-colormask\", input.parentNode.insertBefore(colorMask, input), \n            input.parentNode.removeChild(input), colorMask.appendChild(template), colorMask.appendChild(input), \n            input.style.left = template.offsetLeft + \"px\", $(input).on(\"click\", function(e) {\n                return caret(input, findCaretPos(e.clientX)), EventHandlers.clickEvent.call(input, [ e ]);\n            }), $(input).on(\"keydown\", function(e) {\n                e.shiftKey || !1 === opts.insertMode || setTimeout(function() {\n                    renderColorMask(input);\n                }, 0);\n            });\n        }\n        function renderColorMask(input, caretPos, clear) {\n            function handleStatic() {\n                isStatic || null !== test.fn && testPos.input !== undefined ? isStatic && (null !== test.fn && testPos.input !== undefined || \"\" === test.def) && (isStatic = !1, \n                maskTemplate += \"</span>\") : (isStatic = !0, maskTemplate += \"<span class='im-static'>\");\n            }\n            function handleCaret(force) {\n                !0 !== force && pos !== caretPos.begin || document.activeElement !== input || (maskTemplate += \"<span class='im-caret' style='border-right-width: 1px;border-right-style: solid;'></span>\");\n            }\n            var test, testPos, ndxIntlzr, maskTemplate = \"\", isStatic = !1, pos = 0;\n            if (colorMask !== undefined) {\n                var buffer = getBuffer();\n                if (caretPos === undefined ? caretPos = caret(input) : caretPos.begin === undefined && (caretPos = {\n                    begin: caretPos,\n                    end: caretPos\n                }), !0 !== clear) {\n                    var lvp = getLastValidPosition();\n                    do {\n                        handleCaret(), getMaskSet().validPositions[pos] ? (testPos = getMaskSet().validPositions[pos], \n                        test = testPos.match, ndxIntlzr = testPos.locator.slice(), handleStatic(), maskTemplate += buffer[pos]) : (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), \n                        test = testPos.match, ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || \"number\" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && (handleStatic(), \n                        maskTemplate += getPlaceholder(pos, test))), pos++;\n                    } while ((maxLength === undefined || pos < maxLength) && (null !== test.fn || \"\" !== test.def) || lvp > pos || isStatic);\n                    -1 === maskTemplate.indexOf(\"im-caret\") && handleCaret(!0), isStatic && handleStatic();\n                }\n                var template = colorMask.getElementsByTagName(\"div\")[0];\n                template.innerHTML = maskTemplate, input.inputmask.positionColorMask(input, template);\n            }\n        }\n        maskset = maskset || this.maskset, opts = opts || this.opts;\n        var undoValue, $el, maxLength, colorMask, inputmask = this, el = this.el, isRTL = this.isRTL, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !1, EventRuler = {\n            on: function(input, eventName, eventHandler) {\n                var ev = function(e) {\n                    if (this.inputmask === undefined && \"FORM\" !== this.nodeName) {\n                        var imOpts = $.data(this, \"_inputmask_opts\");\n                        imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this);\n                    } else {\n                        if (\"setvalue\" === e.type || \"FORM\" === this.nodeName || !(this.disabled || this.readOnly && !(\"keydown\" === e.type && e.ctrlKey && 67 === e.keyCode || !1 === opts.tabThrough && e.keyCode === Inputmask.keyCode.TAB))) {\n                            switch (e.type) {\n                              case \"input\":\n                                if (!0 === skipInputEvent) return skipInputEvent = !1, e.preventDefault();\n                                break;\n\n                              case \"keydown\":\n                                skipKeyPressEvent = !1, skipInputEvent = !1;\n                                break;\n\n                              case \"keypress\":\n                                if (!0 === skipKeyPressEvent) return e.preventDefault();\n                                skipKeyPressEvent = !0;\n                                break;\n\n                              case \"click\":\n                                if (iemobile || iphone) {\n                                    var that = this, args = arguments;\n                                    return setTimeout(function() {\n                                        eventHandler.apply(that, args);\n                                    }, 0), !1;\n                                }\n                            }\n                            var returnVal = eventHandler.apply(this, arguments);\n                            return !1 === returnVal && (e.preventDefault(), e.stopPropagation()), returnVal;\n                        }\n                        e.preventDefault();\n                    }\n                };\n                input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), \n                -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);\n            },\n            off: function(input, event) {\n                if (input.inputmask && input.inputmask.events) {\n                    var events;\n                    event ? (events = [])[event] = input.inputmask.events[event] : events = input.inputmask.events, \n                    $.each(events, function(eventName, evArr) {\n                        for (;evArr.length > 0; ) {\n                            var ev = evArr.pop();\n                            -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);\n                        }\n                        delete input.inputmask.events[eventName];\n                    });\n                }\n            }\n        }, EventHandlers = {\n            keydownEvent: function(e) {\n                var input = this, $input = $(input), k = e.keyCode, pos = caret(input);\n                if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !function(eventName) {\n                    var el = document.createElement(\"input\"), evName = \"on\" + eventName, isSupported = evName in el;\n                    return isSupported || (el.setAttribute(evName, \"return;\"), isSupported = \"function\" == typeof el[evName]), \n                    el = null, isSupported;\n                }(\"cut\")) e.preventDefault(), handleRemove(input, k, pos), writeBuffer(input, getBuffer(!0), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join(\"\")), \n                input.inputmask._valueGet() === getBufferTemplate().join(\"\") ? $input.trigger(\"cleared\") : !0 === isComplete(getBuffer()) && $input.trigger(\"complete\"); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {\n                    e.preventDefault();\n                    var caretPos = seekNext(getLastValidPosition());\n                    opts.insertMode || caretPos !== getMaskSet().maskLength || e.shiftKey || caretPos--, \n                    caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);\n                } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), \n                caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && !0 !== e.altKey ? (checkVal(input, !0, !1, undoValue.split(\"\")), \n                $input.trigger(\"click\")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? !0 === opts.tabThrough && k === Inputmask.keyCode.TAB ? (!0 === e.shiftKey ? (null === getTest(pos.begin).match.fn && (pos.begin = seekNext(pos.begin)), \n                pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), \n                pos.end = seekNext(pos.begin, !0), pos.end < getMaskSet().maskLength && pos.end--), \n                pos.begin < getMaskSet().maskLength && (e.preventDefault(), caret(input, pos.begin, pos.end))) : e.shiftKey || !1 === opts.insertMode && (k === Inputmask.keyCode.RIGHT ? setTimeout(function() {\n                    var caretPos = caret(input);\n                    caret(input, caretPos.begin);\n                }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() {\n                    var caretPos = caret(input);\n                    caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);\n                }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskSet().maskLength ? pos.begin : pos.begin - 1));\n                opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables);\n            },\n            keypressEvent: function(e, checkval, writeOut, strict, ndx) {\n                var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n                if (!(!0 === checkval || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join(\"\") && (undoValue = getBuffer().join(\"\"), \n                setTimeout(function() {\n                    $input.trigger(\"change\");\n                }, 0)), !0;\n                if (k) {\n                    46 === k && !1 === e.shiftKey && \"\" !== opts.radixPoint && (k = opts.radixPoint.charCodeAt(0));\n                    var forwardPosition, pos = checkval ? {\n                        begin: ndx,\n                        end: ndx\n                    } : caret(input), c = String.fromCharCode(k);\n                    getMaskSet().writeOutBuffer = !0;\n                    var valResult = isValid(pos, c, strict);\n                    if (!1 !== valResult && (resetMaskSet(!0), forwardPosition = valResult.caret !== undefined ? valResult.caret : checkval ? valResult.pos + 1 : seekNext(valResult.pos), \n                    getMaskSet().p = forwardPosition), !1 !== writeOut && (setTimeout(function() {\n                        opts.onKeyValidation.call(input, k, valResult, opts);\n                    }, 0), getMaskSet().writeOutBuffer && !1 !== valResult)) {\n                        var buffer = getBuffer();\n                        writeBuffer(input, buffer, opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition, e, !0 !== checkval), \n                        !0 !== checkval && setTimeout(function() {\n                            !0 === isComplete(buffer) && $input.trigger(\"complete\");\n                        }, 0);\n                    }\n                    if (e.preventDefault(), checkval) return !1 !== valResult && (valResult.forwardPosition = forwardPosition), \n                    valResult;\n                }\n            },\n            pasteEvent: function(e) {\n                var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input);\n                isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);\n                var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n                if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\") && (valueBeforeCaret = \"\"), \n                valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\") && (valueAfterCaret = \"\"), \n                isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), \n                window.clipboardData && window.clipboardData.getData) inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret; else {\n                    if (!ev.clipboardData || !ev.clipboardData.getData) return !0;\n                    inputValue = valueBeforeCaret + ev.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n                }\n                var pasteValue = inputValue;\n                if ($.isFunction(opts.onBeforePaste)) {\n                    if (!1 === (pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts))) return e.preventDefault();\n                    pasteValue || (pasteValue = inputValue);\n                }\n                return checkVal(input, !1, !1, isRTL ? pasteValue.split(\"\").reverse() : pasteValue.toString().split(\"\")), \n                writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\")), \n                !0 === isComplete(getBuffer()) && $input.trigger(\"complete\"), e.preventDefault();\n            },\n            inputFallBackEvent: function(e) {\n                var input = this, inputValue = input.inputmask._valueGet();\n                if (getBuffer().join(\"\") !== inputValue) {\n                    var caretPos = caret(input);\n                    if (!1 === function(input, inputValue, caretPos) {\n                        if (\".\" === inputValue.charAt(caretPos.begin - 1) && \"\" !== opts.radixPoint && ((inputValue = inputValue.split(\"\"))[caretPos.begin - 1] = opts.radixPoint.charAt(0), \n                        inputValue = inputValue.join(\"\")), inputValue.charAt(caretPos.begin - 1) === opts.radixPoint && inputValue.length > getBuffer().length) {\n                            var keypress = new $.Event(\"keypress\");\n                            return keypress.which = opts.radixPoint.charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !0, !1, caretPos.begin - 1), \n                            !1;\n                        }\n                    }(input, inputValue, caretPos)) return !1;\n                    if (inputValue = inputValue.replace(new RegExp(\"(\" + Inputmask.escapeRegex(getBufferTemplate().join(\"\")) + \")*\"), \"\"), \n                    !1 === function(input, inputValue, caretPos) {\n                        if (iemobile) {\n                            var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n                            if (1 === inputChar.length) {\n                                var keypress = new $.Event(\"keypress\");\n                                return keypress.which = inputChar.charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), \n                                !1;\n                            }\n                        }\n                    }(input, inputValue, caretPos)) return !1;\n                    caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input));\n                    var buffer = getBuffer().join(\"\"), frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin), backBufferPart = buffer.substr(caretPos.begin), selection = caretPos, entries = \"\", isEntry = !1;\n                    if (frontPart !== frontBufferPart) {\n                        selection.begin = 0;\n                        for (var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) selection.begin++;\n                        isEntry && (entries += frontPart.slice(selection.begin, selection.end));\n                    }\n                    backPart !== backBufferPart && (backPart.length > backBufferPart.length ? isEntry && (selection.end = selection.begin) : backPart.length < backBufferPart.length ? selection.end += backBufferPart.length - backPart.length : backPart.charAt(0) !== backBufferPart.charAt(0) && selection.end++), \n                    writeBuffer(input, getBuffer(), selection), entries.length > 0 ? $.each(entries.split(\"\"), function(ndx, entry) {\n                        var keypress = new $.Event(\"keypress\");\n                        keypress.which = entry.charCodeAt(0), ignorable = !1, EventHandlers.keypressEvent.call(input, keypress);\n                    }) : (selection.begin === selection.end - 1 && caret(input, seekPrevious(selection.begin + 1), selection.end), \n                    e.keyCode = Inputmask.keyCode.DELETE, EventHandlers.keydownEvent.call(input, e)), \n                    e.preventDefault();\n                }\n            },\n            setValueEvent: function(e) {\n                this.inputmask.refreshValue = !1;\n                var input = this, value = input.inputmask._valueGet(!0);\n                $.isFunction(opts.onBeforeMask) && (value = opts.onBeforeMask.call(inputmask, value, opts) || value), \n                value = value.split(\"\"), checkVal(input, !0, !1, isRTL ? value.reverse() : value), \n                undoValue = getBuffer().join(\"\"), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\") && input.inputmask._valueSet(\"\");\n            },\n            focusEvent: function(e) {\n                var input = this, nptValue = input.inputmask._valueGet();\n                opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && \"\" === nptValue) && (input.inputmask._valueGet() !== getBuffer().join(\"\") ? writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : !1 === mouseEnter && caret(input, seekNext(getLastValidPosition()))), \n                !0 === opts.positionCaretOnTab && !1 === mouseEnter && \"\" !== nptValue && (writeBuffer(input, getBuffer(), caret(input)), \n                EventHandlers.clickEvent.apply(input, [ e, !0 ])), undoValue = getBuffer().join(\"\");\n            },\n            mouseleaveEvent: function(e) {\n                var input = this;\n                if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) {\n                    var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet();\n                    nptValue !== input.getAttribute(\"placeholder\") && \"\" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer), \n                    writeBuffer(input, buffer));\n                }\n            },\n            clickEvent: function(e, tabbed) {\n                function doRadixFocus(clickPos) {\n                    if (\"\" !== opts.radixPoint) {\n                        var vps = getMaskSet().validPositions;\n                        if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) {\n                            if (clickPos < seekNext(-1)) return !0;\n                            var radixPos = $.inArray(opts.radixPoint, getBuffer());\n                            if (-1 !== radixPos) {\n                                for (var vp in vps) if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) return !1;\n                                return !0;\n                            }\n                        }\n                    }\n                    return !1;\n                }\n                var input = this;\n                setTimeout(function() {\n                    if (document.activeElement === input) {\n                        var selectedCaret = caret(input);\n                        if (tabbed && (isRTL ? selectedCaret.end = selectedCaret.begin : selectedCaret.begin = selectedCaret.end), \n                        selectedCaret.begin === selectedCaret.end) switch (opts.positionCaretOnClick) {\n                          case \"none\":\n                            break;\n\n                          case \"radixFocus\":\n                            if (doRadixFocus(selectedCaret.begin)) {\n                                var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n                                caret(input, opts.numericInput ? seekNext(radixPos) : radixPos);\n                                break;\n                            }\n\n                          default:\n                            var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);\n                            if (clickPosition < lastPosition) caret(input, isMask(clickPosition, !0) || isMask(clickPosition - 1, !0) ? clickPosition : seekNext(clickPosition)); else {\n                                var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n                                if (\"\" !== placeholder && getBuffer()[lastPosition] !== placeholder && !0 !== tt.match.optionalQuantifier && !0 !== tt.match.newBlockMarker || !isMask(lastPosition, !0) && tt.match.def === placeholder) {\n                                    var newPos = seekNext(lastPosition);\n                                    (clickPosition >= newPos || clickPosition === lastPosition) && (lastPosition = newPos);\n                                }\n                                caret(input, lastPosition);\n                            }\n                        }\n                    }\n                }, 0);\n            },\n            dblclickEvent: function(e) {\n                var input = this;\n                setTimeout(function() {\n                    caret(input, 0, seekNext(getLastValidPosition()));\n                }, 0);\n            },\n            cutEvent: function(e) {\n                var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n                clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\")), \n                document.execCommand && document.execCommand(\"copy\"), handleRemove(input, Inputmask.keyCode.DELETE, pos), \n                writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join(\"\")), \n                input.inputmask._valueGet() === getBufferTemplate().join(\"\") && $input.trigger(\"cleared\");\n            },\n            blurEvent: function(e) {\n                var $input = $(this), input = this;\n                if (input.inputmask) {\n                    var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();\n                    \"\" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer)), \n                    !1 === isComplete(buffer) && (setTimeout(function() {\n                        $input.trigger(\"incomplete\");\n                    }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), \n                    writeBuffer(input, buffer, undefined, e)), undoValue !== getBuffer().join(\"\") && (undoValue = buffer.join(\"\"), \n                    $input.trigger(\"change\"));\n                }\n            },\n            mouseenterEvent: function(e) {\n                var input = this;\n                mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join(\"\") && writeBuffer(input, getBuffer());\n            },\n            submitEvent: function(e) {\n                undoValue !== getBuffer().join(\"\") && $el.trigger(\"change\"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\") && el.inputmask._valueSet(\"\"), \n                opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), \n                setTimeout(function() {\n                    writeBuffer(el, getBuffer());\n                }, 0));\n            },\n            resetEvent: function(e) {\n                el.inputmask.refreshValue = !0, setTimeout(function() {\n                    $el.trigger(\"setvalue\");\n                }, 0);\n            }\n        };\n        Inputmask.prototype.positionColorMask = function(input, template) {\n            input.style.left = template.offsetLeft + \"px\";\n        };\n        var valueBuffer;\n        if (actionObj !== undefined) switch (actionObj.action) {\n          case \"isComplete\":\n            return el = actionObj.el, isComplete(getBuffer());\n\n          case \"unmaskedvalue\":\n            return el !== undefined && actionObj.value === undefined || (valueBuffer = actionObj.value, \n            valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(\"\"), \n            checkVal(undefined, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts)), \n            unmaskedvalue(el);\n\n          case \"mask\":\n            !function(elem) {\n                EventRuler.off(elem);\n                var isSupported = function(input, opts) {\n                    var elementType = input.getAttribute(\"type\"), isSupported = \"INPUT\" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || \"TEXTAREA\" === input.tagName;\n                    if (!isSupported) if (\"INPUT\" === input.tagName) {\n                        var el = document.createElement(\"input\");\n                        el.setAttribute(\"type\", elementType), isSupported = \"text\" === el.type, el = null;\n                    } else isSupported = \"partial\";\n                    return !1 !== isSupported ? function(npt) {\n                        function getter() {\n                            return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || !0 !== opts.nullable ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\" : valueGet.call(this);\n                        }\n                        function setter(value) {\n                            valueSet.call(this, value), this.inputmask && $(this).trigger(\"setvalue\");\n                        }\n                        var valueGet, valueSet;\n                        if (!npt.inputmask.__valueGet) {\n                            if (!0 !== opts.noValuePatching) {\n                                if (Object.getOwnPropertyDescriptor) {\n                                    \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" == typeof \"test\".__proto__ ? function(object) {\n                                        return object.__proto__;\n                                    } : function(object) {\n                                        return object.constructor.prototype;\n                                    });\n                                    var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : undefined;\n                                    valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, \n                                    valueSet = valueProperty.set, Object.defineProperty(npt, \"value\", {\n                                        get: getter,\n                                        set: setter,\n                                        configurable: !0\n                                    })) : \"INPUT\" !== npt.tagName && (valueGet = function() {\n                                        return this.textContent;\n                                    }, valueSet = function(value) {\n                                        this.textContent = value;\n                                    }, Object.defineProperty(npt, \"value\", {\n                                        get: getter,\n                                        set: setter,\n                                        configurable: !0\n                                    }));\n                                } else document.__lookupGetter__ && npt.__lookupGetter__(\"value\") && (valueGet = npt.__lookupGetter__(\"value\"), \n                                valueSet = npt.__lookupSetter__(\"value\"), npt.__defineGetter__(\"value\", getter), \n                                npt.__defineSetter__(\"value\", setter));\n                                npt.inputmask.__valueGet = valueGet, npt.inputmask.__valueSet = valueSet;\n                            }\n                            npt.inputmask._valueGet = function(overruleRTL) {\n                                return isRTL && !0 !== overruleRTL ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n                            }, npt.inputmask._valueSet = function(value, overruleRTL) {\n                                valueSet.call(this.el, null === value || value === undefined ? \"\" : !0 !== overruleRTL && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n                            }, valueGet === undefined && (valueGet = function() {\n                                return this.value;\n                            }, valueSet = function(value) {\n                                this.value = value;\n                            }, function(type) {\n                                if ($.valHooks && ($.valHooks[type] === undefined || !0 !== $.valHooks[type].inputmaskpatch)) {\n                                    var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n                                        return elem.value;\n                                    }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n                                        return elem.value = value, elem;\n                                    };\n                                    $.valHooks[type] = {\n                                        get: function(elem) {\n                                            if (elem.inputmask) {\n                                                if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();\n                                                var result = valhookGet(elem);\n                                                return -1 !== getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) || !0 !== opts.nullable ? result : \"\";\n                                            }\n                                            return valhookGet(elem);\n                                        },\n                                        set: function(elem, value) {\n                                            var result, $elem = $(elem);\n                                            return result = valhookSet(elem, value), elem.inputmask && $elem.trigger(\"setvalue\"), \n                                            result;\n                                        },\n                                        inputmaskpatch: !0\n                                    };\n                                }\n                            }(npt.type), function(npt) {\n                                EventRuler.on(npt, \"mouseenter\", function(event) {\n                                    var $input = $(this);\n                                    this.inputmask._valueGet() !== getBuffer().join(\"\") && $input.trigger(\"setvalue\");\n                                });\n                            }(npt));\n                        }\n                    }(input) : input.inputmask = undefined, isSupported;\n                }(elem, opts);\n                if (!1 !== isSupported && (el = elem, $el = $(el), -1 === (maxLength = el !== undefined ? el.maxLength : undefined) && (maxLength = undefined), \n                !0 === opts.colorMask && initializeColorMask(el), android && (el.hasOwnProperty(\"inputmode\") && (el.inputmode = opts.inputmode, \n                el.setAttribute(\"inputmode\", opts.inputmode)), \"rtfm\" === opts.androidHack && (!0 !== opts.colorMask && initializeColorMask(el), \n                el.type = \"password\")), !0 === isSupported && (EventRuler.on(el, \"submit\", EventHandlers.submitEvent), \n                EventRuler.on(el, \"reset\", EventHandlers.resetEvent), EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent), \n                EventRuler.on(el, \"blur\", EventHandlers.blurEvent), EventRuler.on(el, \"focus\", EventHandlers.focusEvent), \n                EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent), !0 !== opts.colorMask && EventRuler.on(el, \"click\", EventHandlers.clickEvent), \n                EventRuler.on(el, \"dblclick\", EventHandlers.dblclickEvent), EventRuler.on(el, \"paste\", EventHandlers.pasteEvent), \n                EventRuler.on(el, \"dragdrop\", EventHandlers.pasteEvent), EventRuler.on(el, \"drop\", EventHandlers.pasteEvent), \n                EventRuler.on(el, \"cut\", EventHandlers.cutEvent), EventRuler.on(el, \"complete\", opts.oncomplete), \n                EventRuler.on(el, \"incomplete\", opts.onincomplete), EventRuler.on(el, \"cleared\", opts.oncleared), \n                android || !0 === opts.inputEventOnly ? el.removeAttribute(\"maxLength\") : (EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent), \n                EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent)), EventRuler.on(el, \"compositionstart\", $.noop), \n                EventRuler.on(el, \"compositionupdate\", $.noop), EventRuler.on(el, \"compositionend\", $.noop), \n                EventRuler.on(el, \"keyup\", $.noop), EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent), \n                EventRuler.on(el, \"beforeinput\", $.noop)), EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent), \n                undoValue = getBufferTemplate().join(\"\"), \"\" !== el.inputmask._valueGet(!0) || !1 === opts.clearMaskOnLostFocus || document.activeElement === el)) {\n                    var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(!0), opts) || el.inputmask._valueGet(!0) : el.inputmask._valueGet(!0);\n                    \"\" !== initialValue && checkVal(el, !0, !1, isRTL ? initialValue.split(\"\").reverse() : initialValue.split(\"\"));\n                    var buffer = getBuffer().slice();\n                    undoValue = buffer.join(\"\"), !1 === isComplete(buffer) && opts.clearIncomplete && resetMaskSet(), \n                    opts.clearMaskOnLostFocus && document.activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), \n                    writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition()));\n                }\n            }(el);\n            break;\n\n          case \"format\":\n            return valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(\"\"), \n            checkVal(undefined, !0, !1, isRTL ? valueBuffer.reverse() : valueBuffer), actionObj.metadata ? {\n                value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n                metadata: maskScope.call(this, {\n                    action: \"getmetadata\"\n                }, maskset, opts)\n            } : isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n          case \"isValid\":\n            actionObj.value ? (valueBuffer = actionObj.value.split(\"\"), checkVal(undefined, !0, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join(\"\");\n            for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;\n            return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join(\"\");\n\n          case \"getemptymask\":\n            return getBufferTemplate().join(\"\");\n\n          case \"remove\":\n            if (el && el.inputmask) {\n                $el = $(el), el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(!0)), \n                EventRuler.off(el);\n                Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\") && el.inputmask.__valueGet && Object.defineProperty(el, \"value\", {\n                    get: el.inputmask.__valueGet,\n                    set: el.inputmask.__valueSet,\n                    configurable: !0\n                }) : document.__lookupGetter__ && el.__lookupGetter__(\"value\") && el.inputmask.__valueGet && (el.__defineGetter__(\"value\", el.inputmask.__valueGet), \n                el.__defineSetter__(\"value\", el.inputmask.__valueSet)), el.inputmask = undefined;\n            }\n            return el;\n\n          case \"getmetadata\":\n            if ($.isArray(maskset.metadata)) {\n                var maskTarget = getMaskTemplate(!0, 0, !1).join(\"\");\n                return $.each(maskset.metadata, function(ndx, mtdt) {\n                    if (mtdt.mask === maskTarget) return maskTarget = mtdt, !1;\n                }), maskTarget;\n            }\n            return maskset.metadata;\n        }\n    }\n    var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile, android = /android/i.test(ua) && !iemobile;\n    return Inputmask.prototype = {\n        dataAttribute: \"data-inputmask\",\n        defaults: {\n            placeholder: \"_\",\n            optionalmarker: {\n                start: \"[\",\n                end: \"]\"\n            },\n            quantifiermarker: {\n                start: \"{\",\n                end: \"}\"\n            },\n            groupmarker: {\n                start: \"(\",\n                end: \")\"\n            },\n            alternatormarker: \"|\",\n            escapeChar: \"\\\\\",\n            mask: null,\n            regex: null,\n            oncomplete: $.noop,\n            onincomplete: $.noop,\n            oncleared: $.noop,\n            repeat: 0,\n            greedy: !0,\n            autoUnmask: !1,\n            removeMaskOnSubmit: !1,\n            clearMaskOnLostFocus: !0,\n            insertMode: !0,\n            clearIncomplete: !1,\n            alias: null,\n            onKeyDown: $.noop,\n            onBeforeMask: null,\n            onBeforePaste: function(pastedValue, opts) {\n                return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n            },\n            onBeforeWrite: null,\n            onUnMask: null,\n            showMaskOnFocus: !0,\n            showMaskOnHover: !0,\n            onKeyValidation: $.noop,\n            skipOptionalPartCharacter: \" \",\n            numericInput: !1,\n            rightAlign: !1,\n            undoOnEscape: !0,\n            radixPoint: \"\",\n            radixPointDefinitionSymbol: undefined,\n            groupSeparator: \"\",\n            keepStatic: null,\n            positionCaretOnTab: !0,\n            tabThrough: !1,\n            supportsInputType: [ \"text\", \"tel\", \"password\" ],\n            ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n            isComplete: null,\n            canClearPosition: $.noop,\n            preValidation: null,\n            postValidation: null,\n            staticDefinitionSymbol: undefined,\n            jitMasking: !1,\n            nullable: !0,\n            inputEventOnly: !1,\n            noValuePatching: !1,\n            positionCaretOnClick: \"lvp\",\n            casing: null,\n            inputmode: \"verbatim\",\n            colorMask: !1,\n            androidHack: !1,\n            importDataAttributes: !0\n        },\n        definitions: {\n            \"9\": {\n                validator: \"[0-9１-９]\",\n                cardinality: 1,\n                definitionSymbol: \"*\"\n            },\n            a: {\n                validator: \"[A-Za-zА-яЁёÀ-ÿµ]\",\n                cardinality: 1,\n                definitionSymbol: \"*\"\n            },\n            \"*\": {\n                validator: \"[0-9１-９A-Za-zА-яЁёÀ-ÿµ]\",\n                cardinality: 1\n            }\n        },\n        aliases: {},\n        masksCache: {},\n        mask: function(elems) {\n            function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n                function importOption(option, optionData) {\n                    null !== (optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + \"-\" + option)) && (\"string\" == typeof optionData && (0 === option.indexOf(\"on\") ? optionData = window[optionData] : \"false\" === optionData ? optionData = !1 : \"true\" === optionData && (optionData = !0)), \n                    userOptions[option] = optionData);\n                }\n                if (!0 === opts.importDataAttributes) {\n                    var option, dataoptions, optionData, p, attrOptions = npt.getAttribute(dataAttribute);\n                    if (attrOptions && \"\" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"'), \n                    dataoptions = JSON.parse(\"{\" + attrOptions + \"}\")), dataoptions) {\n                        optionData = undefined;\n                        for (p in dataoptions) if (\"alias\" === p.toLowerCase()) {\n                            optionData = dataoptions[p];\n                            break;\n                        }\n                    }\n                    importOption(\"alias\", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts);\n                    for (option in opts) {\n                        if (dataoptions) {\n                            optionData = undefined;\n                            for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) {\n                                optionData = dataoptions[p];\n                                break;\n                            }\n                        }\n                        importOption(option, optionData);\n                    }\n                }\n                return $.extend(!0, opts, userOptions), (\"rtl\" === npt.dir || opts.rightAlign) && (npt.style.textAlign = \"right\"), \n                (\"rtl\" === npt.dir || opts.numericInput) && (npt.dir = \"ltr\", npt.removeAttribute(\"dir\"), \n                opts.isRTL = !0), opts;\n            }\n            var that = this;\n            return \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n            elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n                var scopedOpts = $.extend(!0, {}, that.opts);\n                importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions), that.dataAttribute);\n                var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n                maskset !== undefined && (el.inputmask !== undefined && (el.inputmask.opts.autoUnmask = !0, \n                el.inputmask.remove()), el.inputmask = new Inputmask(undefined, undefined, !0), \n                el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), \n                el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput, el.inputmask.el = el, \n                el.inputmask.maskset = maskset, $.data(el, \"_inputmask_opts\", scopedOpts), maskScope.call(el.inputmask, {\n                    action: \"mask\"\n                }));\n            }), elems && elems[0] ? elems[0].inputmask || this : this;\n        },\n        option: function(options, noremask) {\n            return \"string\" == typeof options ? this.opts[options] : \"object\" == typeof options ? ($.extend(this.userOptions, options), \n            this.el && !0 !== noremask && this.mask(this.el), this) : void 0;\n        },\n        unmaskedvalue: function(value) {\n            return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n            maskScope.call(this, {\n                action: \"unmaskedvalue\",\n                value: value\n            });\n        },\n        remove: function() {\n            return maskScope.call(this, {\n                action: \"remove\"\n            });\n        },\n        getemptymask: function() {\n            return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n            maskScope.call(this, {\n                action: \"getemptymask\"\n            });\n        },\n        hasMaskedValue: function() {\n            return !this.opts.autoUnmask;\n        },\n        isComplete: function() {\n            return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n            maskScope.call(this, {\n                action: \"isComplete\"\n            });\n        },\n        getmetadata: function() {\n            return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n            maskScope.call(this, {\n                action: \"getmetadata\"\n            });\n        },\n        isValid: function(value) {\n            return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n            maskScope.call(this, {\n                action: \"isValid\",\n                value: value\n            });\n        },\n        format: function(value, metadata) {\n            return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n            maskScope.call(this, {\n                action: \"format\",\n                value: value,\n                metadata: metadata\n            });\n        },\n        analyseMask: function(mask, regexMask, opts) {\n            function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n                this.matches = [], this.openGroup = isGroup || !1, this.alternatorGroup = !1, this.isGroup = isGroup || !1, \n                this.isOptional = isOptional || !1, this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, \n                this.quantifier = {\n                    min: 1,\n                    max: 1\n                };\n            }\n            function insertTestDefinition(mtoken, element, position) {\n                position = position !== undefined ? position : mtoken.matches.length;\n                var prevMatch = mtoken.matches[position - 1];\n                if (regexMask) 0 === element.indexOf(\"[\") || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || \".\" === element ? mtoken.matches.splice(position++, 0, {\n                    fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n                    cardinality: 1,\n                    optionality: mtoken.isOptional,\n                    newBlockMarker: prevMatch === undefined || prevMatch.def !== element,\n                    casing: null,\n                    def: element,\n                    placeholder: undefined,\n                    nativeDef: element\n                }) : (escaped && (element = element[element.length - 1]), $.each(element.split(\"\"), function(ndx, lmnt) {\n                    prevMatch = mtoken.matches[position - 1], mtoken.matches.splice(position++, 0, {\n                        fn: null,\n                        cardinality: 0,\n                        optionality: mtoken.isOptional,\n                        newBlockMarker: prevMatch === undefined || prevMatch.def !== lmnt && null !== prevMatch.fn,\n                        casing: null,\n                        def: opts.staticDefinitionSymbol || lmnt,\n                        placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined,\n                        nativeDef: lmnt\n                    });\n                })), escaped = !1; else {\n                    var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element];\n                    if (maskdef && !escaped) {\n                        for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) {\n                            var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality;\n                            mtoken.matches.splice(position++, 0, {\n                                fn: validator ? \"string\" == typeof validator ? new RegExp(validator, opts.casing ? \"i\" : \"\") : new function() {\n                                    this.test = validator;\n                                }() : new RegExp(\".\"),\n                                cardinality: cardinality || 1,\n                                optionality: mtoken.isOptional,\n                                newBlockMarker: prevMatch === undefined || prevMatch.def !== (maskdef.definitionSymbol || element),\n                                casing: maskdef.casing,\n                                def: maskdef.definitionSymbol || element,\n                                placeholder: maskdef.placeholder,\n                                nativeDef: element\n                            }), prevMatch = mtoken.matches[position - 1];\n                        }\n                        mtoken.matches.splice(position++, 0, {\n                            fn: maskdef.validator ? \"string\" == typeof maskdef.validator ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n                                this.test = maskdef.validator;\n                            }() : new RegExp(\".\"),\n                            cardinality: maskdef.cardinality,\n                            optionality: mtoken.isOptional,\n                            newBlockMarker: prevMatch === undefined || prevMatch.def !== (maskdef.definitionSymbol || element),\n                            casing: maskdef.casing,\n                            def: maskdef.definitionSymbol || element,\n                            placeholder: maskdef.placeholder,\n                            nativeDef: element\n                        });\n                    } else mtoken.matches.splice(position++, 0, {\n                        fn: null,\n                        cardinality: 0,\n                        optionality: mtoken.isOptional,\n                        newBlockMarker: prevMatch === undefined || prevMatch.def !== element && null !== prevMatch.fn,\n                        casing: null,\n                        def: opts.staticDefinitionSymbol || element,\n                        placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined,\n                        nativeDef: element\n                    }), escaped = !1;\n                }\n            }\n            function verifyGroupMarker(maskToken) {\n                maskToken && maskToken.matches && $.each(maskToken.matches, function(ndx, token) {\n                    var nextToken = maskToken.matches[ndx + 1];\n                    (nextToken === undefined || nextToken.matches === undefined || !1 === nextToken.isQuantifier) && token && token.isGroup && (token.isGroup = !1, \n                    regexMask || (insertTestDefinition(token, opts.groupmarker.start, 0), !0 !== token.openGroup && insertTestDefinition(token, opts.groupmarker.end))), \n                    verifyGroupMarker(token);\n                });\n            }\n            function defaultCase() {\n                if (openenings.length > 0) {\n                    if (currentOpeningToken = openenings[openenings.length - 1], insertTestDefinition(currentOpeningToken, m), \n                    currentOpeningToken.isAlternator) {\n                        alternator = openenings.pop();\n                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;\n                        openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1]).matches.push(alternator) : currentToken.matches.push(alternator);\n                    }\n                } else insertTestDefinition(currentToken, m);\n            }\n            function reverseTokens(maskToken) {\n                maskToken.matches = maskToken.matches.reverse();\n                for (var match in maskToken.matches) if (maskToken.matches.hasOwnProperty(match)) {\n                    var intMatch = parseInt(match);\n                    if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n                        var qt = maskToken.matches[match];\n                        maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);\n                    }\n                    maskToken.matches[match].matches !== undefined ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = function(st) {\n                        return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), \n                        st;\n                    }(maskToken.matches[match]);\n                }\n                return maskToken;\n            }\n            var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\\{[0-9\\+\\*]+(?:,[0-9\\+\\*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = [];\n            for (regexMask && (opts.optionalmarker.start = undefined, opts.optionalmarker.end = undefined); match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask); ) {\n                if (m = match[0], regexMask) switch (m.charAt(0)) {\n                  case \"?\":\n                    m = \"{0,1}\";\n                    break;\n\n                  case \"+\":\n                  case \"*\":\n                    m = \"{\" + m + \"}\";\n                }\n                if (escaped) defaultCase(); else switch (m.charAt(0)) {\n                  case opts.escapeChar:\n                    escaped = !0, regexMask && defaultCase();\n                    break;\n\n                  case opts.optionalmarker.end:\n                  case opts.groupmarker.end:\n                    if (openingToken = openenings.pop(), openingToken.openGroup = !1, openingToken !== undefined) if (openenings.length > 0) {\n                        if ((currentOpeningToken = openenings[openenings.length - 1]).matches.push(openingToken), \n                        currentOpeningToken.isAlternator) {\n                            alternator = openenings.pop();\n                            for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1, \n                            alternator.matches[mndx].alternatorGroup = !1;\n                            openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1]).matches.push(alternator) : currentToken.matches.push(alternator);\n                        }\n                    } else currentToken.matches.push(openingToken); else defaultCase();\n                    break;\n\n                  case opts.optionalmarker.start:\n                    openenings.push(new MaskToken(!1, !0));\n                    break;\n\n                  case opts.groupmarker.start:\n                    openenings.push(new MaskToken(!0));\n                    break;\n\n                  case opts.quantifiermarker.start:\n                    var quantifier = new MaskToken(!1, !1, !0), mq = (m = m.replace(/[{}]/g, \"\")).split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                    if (\"*\" !== mq1 && \"+\" !== mq1 || (mq0 = \"*\" === mq1 ? 0 : 1), quantifier.quantifier = {\n                        min: mq0,\n                        max: mq1\n                    }, openenings.length > 0) {\n                        var matches = openenings[openenings.length - 1].matches;\n                        (match = matches.pop()).isGroup || ((groupToken = new MaskToken(!0)).matches.push(match), \n                        match = groupToken), matches.push(match), matches.push(quantifier);\n                    } else (match = currentToken.matches.pop()).isGroup || (regexMask && null === match.fn && \".\" === match.def && (match.fn = new RegExp(match.def, opts.casing ? \"i\" : \"\")), \n                    (groupToken = new MaskToken(!0)).matches.push(match), match = groupToken), currentToken.matches.push(match), \n                    currentToken.matches.push(quantifier);\n                    break;\n\n                  case opts.alternatormarker:\n                    if (openenings.length > 0) {\n                        var subToken = (currentOpeningToken = openenings[openenings.length - 1]).matches[currentOpeningToken.matches.length - 1];\n                        lastMatch = currentOpeningToken.openGroup && (subToken.matches === undefined || !1 === subToken.isGroup && !1 === subToken.isAlternator) ? openenings.pop() : currentOpeningToken.matches.pop();\n                    } else lastMatch = currentToken.matches.pop();\n                    if (lastMatch.isAlternator) openenings.push(lastMatch); else if (lastMatch.alternatorGroup ? (alternator = openenings.pop(), \n                    lastMatch.alternatorGroup = !1) : alternator = new MaskToken(!1, !1, !1, !0), alternator.matches.push(lastMatch), \n                    openenings.push(alternator), lastMatch.openGroup) {\n                        lastMatch.openGroup = !1;\n                        var alternatorGroup = new MaskToken(!0);\n                        alternatorGroup.alternatorGroup = !0, openenings.push(alternatorGroup);\n                    }\n                    break;\n\n                  default:\n                    defaultCase();\n                }\n            }\n            for (;openenings.length > 0; ) openingToken = openenings.pop(), currentToken.matches.push(openingToken);\n            return currentToken.matches.length > 0 && (verifyGroupMarker(currentToken), maskTokens.push(currentToken)), \n            (opts.numericInput || opts.isRTL) && reverseTokens(maskTokens[0]), maskTokens;\n        }\n    }, Inputmask.extendDefaults = function(options) {\n        $.extend(!0, Inputmask.prototype.defaults, options);\n    }, Inputmask.extendDefinitions = function(definition) {\n        $.extend(!0, Inputmask.prototype.definitions, definition);\n    }, Inputmask.extendAliases = function(alias) {\n        $.extend(!0, Inputmask.prototype.aliases, alias);\n    }, Inputmask.format = function(value, options, metadata) {\n        return Inputmask(options).format(value, metadata);\n    }, Inputmask.unmask = function(value, options) {\n        return Inputmask(options).unmaskedvalue(value);\n    }, Inputmask.isValid = function(value, options) {\n        return Inputmask(options).isValid(value);\n    }, Inputmask.remove = function(elems) {\n        $.each(elems, function(ndx, el) {\n            el.inputmask && el.inputmask.remove();\n        });\n    }, Inputmask.escapeRegex = function(str) {\n        var specials = [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ];\n        return str.replace(new RegExp(\"(\\\\\" + specials.join(\"|\\\\\") + \")\", \"gim\"), \"\\\\$1\");\n    }, Inputmask.keyCode = {\n        ALT: 18,\n        BACKSPACE: 8,\n        BACKSPACE_SAFARI: 127,\n        CAPS_LOCK: 20,\n        COMMA: 188,\n        COMMAND: 91,\n        COMMAND_LEFT: 91,\n        COMMAND_RIGHT: 93,\n        CONTROL: 17,\n        DELETE: 46,\n        DOWN: 40,\n        END: 35,\n        ENTER: 13,\n        ESCAPE: 27,\n        HOME: 36,\n        INSERT: 45,\n        LEFT: 37,\n        MENU: 93,\n        NUMPAD_ADD: 107,\n        NUMPAD_DECIMAL: 110,\n        NUMPAD_DIVIDE: 111,\n        NUMPAD_ENTER: 108,\n        NUMPAD_MULTIPLY: 106,\n        NUMPAD_SUBTRACT: 109,\n        PAGE_DOWN: 34,\n        PAGE_UP: 33,\n        PERIOD: 190,\n        RIGHT: 39,\n        SHIFT: 16,\n        SPACE: 32,\n        TAB: 9,\n        UP: 38,\n        WINDOWS: 91,\n        X: 88\n    }, Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/inputmask.numeric.extensions.js",
    "content": "/*!\n* inputmask.numeric.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./inputmask\")) : factory(window.dependencyLib || jQuery, window.Inputmask);\n}(function($, Inputmask, undefined) {\n    function autoEscape(txt, opts) {\n        for (var escapedTxt = \"\", i = 0; i < txt.length; i++) Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? escapedTxt += \"\\\\\" + txt.charAt(i) : escapedTxt += txt.charAt(i);\n        return escapedTxt;\n    }\n    return Inputmask.extendAliases({\n        numeric: {\n            mask: function(opts) {\n                if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), \n                opts.repeat = 0, opts.groupSeparator === opts.radixPoint && (\".\" === opts.radixPoint ? opts.groupSeparator = \",\" : \",\" === opts.radixPoint ? opts.groupSeparator = \".\" : opts.groupSeparator = \"\"), \n                \" \" === opts.groupSeparator && (opts.skipOptionalPartCharacter = undefined), opts.autoGroup = opts.autoGroup && \"\" !== opts.groupSeparator, \n                opts.autoGroup && (\"string\" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), \n                isFinite(opts.integerDigits))) {\n                    var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize;\n                    opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), \n                    opts.integerDigits < 1 && (opts.integerDigits = \"*\");\n                }\n                opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), \n                \"radixFocus\" === opts.positionCaretOnClick && \"\" === opts.placeholder && !1 === opts.integerOptional && (opts.positionCaretOnClick = \"lvp\"), \n                opts.definitions[\";\"] = opts.definitions[\"~\"], opts.definitions[\";\"].definitionSymbol = \"~\", \n                !0 === opts.numericInput && (opts.positionCaretOnClick = \"radixFocus\" === opts.positionCaretOnClick ? \"lvp\" : opts.positionCaretOnClick, \n                opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts.decimalProtect = !1);\n                var mask = \"[+]\";\n                if (mask += autoEscape(opts.prefix, opts), !0 === opts.integerOptional ? mask += \"~{1,\" + opts.integerDigits + \"}\" : mask += \"~{\" + opts.integerDigits + \"}\", \n                opts.digits !== undefined) {\n                    opts.radixPointDefinitionSymbol = opts.decimalProtect ? \":\" : opts.radixPoint;\n                    var dq = opts.digits.toString().split(\",\");\n                    isFinite(dq[0] && dq[1] && isFinite(dq[1])) ? mask += opts.radixPointDefinitionSymbol + \";{\" + opts.digits + \"}\" : (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.digitsOptional ? mask += \"[\" + opts.radixPointDefinitionSymbol + \";{1,\" + opts.digits + \"}]\" : mask += opts.radixPointDefinitionSymbol + \";{\" + opts.digits + \"}\");\n                }\n                return mask += autoEscape(opts.suffix, opts), mask += \"[-]\", opts.greedy = !1, mask;\n            },\n            placeholder: \"\",\n            greedy: !1,\n            digits: \"*\",\n            digitsOptional: !0,\n            enforceDigitsOnBlur: !1,\n            radixPoint: \".\",\n            positionCaretOnClick: \"radixFocus\",\n            groupSize: 3,\n            groupSeparator: \"\",\n            autoGroup: !1,\n            allowMinus: !0,\n            negationSymbol: {\n                front: \"-\",\n                back: \"\"\n            },\n            integerDigits: \"+\",\n            integerOptional: !0,\n            prefix: \"\",\n            suffix: \"\",\n            rightAlign: !0,\n            decimalProtect: !0,\n            min: null,\n            max: null,\n            step: 1,\n            insertMode: !0,\n            autoUnmask: !1,\n            unmaskAsNumber: !1,\n            inputmode: \"numeric\",\n            preValidation: function(buffer, pos, c, isSelection, opts) {\n                if (\"-\" === c || c === opts.negationSymbol.front) return !0 === opts.allowMinus && (opts.isNegative = opts.isNegative === undefined || !opts.isNegative, \n                \"\" === buffer.join(\"\") || {\n                    caret: pos,\n                    dopost: !0\n                });\n                if (!1 === isSelection && c === opts.radixPoint && opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {\n                    var radixPos = $.inArray(opts.radixPoint, buffer);\n                    if (-1 !== radixPos) return !0 === opts.numericInput ? pos === radixPos : {\n                        caret: radixPos + 1\n                    };\n                }\n                return !0;\n            },\n            postValidation: function(buffer, currentResult, opts) {\n                var suffix = opts.suffix.split(\"\"), prefix = opts.prefix.split(\"\");\n                if (currentResult.pos === undefined && currentResult.caret !== undefined && !0 !== currentResult.dopost) return currentResult;\n                var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos, maskedValue = buffer.slice();\n                opts.numericInput && (caretPos = maskedValue.length - caretPos - 1, maskedValue = maskedValue.reverse());\n                var charAtPos = maskedValue[caretPos];\n                if (charAtPos === opts.groupSeparator && (charAtPos = maskedValue[caretPos += 1]), \n                caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult;\n                charAtPos !== undefined && charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back && (maskedValue[caretPos] = \"?\", \n                opts.prefix.length > 0 && caretPos >= (!1 === opts.isNegative ? 1 : 0) && caretPos < opts.prefix.length - 1 + (!1 === opts.isNegative ? 1 : 0) ? prefix[caretPos - (!1 === opts.isNegative ? 1 : 0)] = \"?\" : opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (!1 === opts.isNegative ? 1 : 0) && (suffix[caretPos - (maskedValue.length - opts.suffix.length - (!1 === opts.isNegative ? 1 : 0))] = \"?\")), \n                prefix = prefix.join(\"\"), suffix = suffix.join(\"\");\n                var processValue = maskedValue.join(\"\").replace(prefix, \"\");\n                if (processValue = processValue.replace(suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\"), \n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n                isNaN(opts.placeholder) && (processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\")), \n                processValue.length > 1 && 1 !== processValue.indexOf(opts.radixPoint) && (\"0\" === charAtPos && (processValue = processValue.replace(/^\\?/g, \"\")), \n                processValue = processValue.replace(/^0/g, \"\")), processValue.charAt(0) === opts.radixPoint && \"\" !== opts.radixPoint && !0 !== opts.numericInput && (processValue = \"0\" + processValue), \n                \"\" !== processValue) {\n                    if (processValue = processValue.split(\"\"), (!opts.digitsOptional || opts.enforceDigitsOnBlur && \"blur\" === currentResult.event) && isFinite(opts.digits)) {\n                        var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue);\n                        -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1);\n                        for (var i = 1; i <= opts.digits; i++) opts.digitsOptional && (!opts.enforceDigitsOnBlur || \"blur\" !== currentResult.event) || processValue[radixPosition + i] !== undefined && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && maskedValue[rpb + i] !== undefined && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0);\n                    }\n                    if (!0 !== opts.autoGroup || \"\" === opts.groupSeparator || charAtPos === opts.radixPoint && currentResult.pos === undefined && !currentResult.dopost) processValue = processValue.join(\"\"); else {\n                        var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint;\n                        processValue = Inputmask(function(buffer, opts) {\n                            var postMask = \"\";\n                            if (postMask += \"(\" + opts.groupSeparator + \"*{\" + opts.groupSize + \"}){*}\", \"\" !== opts.radixPoint) {\n                                var radixSplit = buffer.join(\"\").split(opts.radixPoint);\n                                radixSplit[1] && (postMask += opts.radixPoint + \"*{\" + radixSplit[1].match(/^\\d*\\??\\d*/)[0].length + \"}\");\n                            }\n                            return postMask;\n                        }(processValue, opts), {\n                            numericInput: !0,\n                            jitMasking: !0,\n                            definitions: {\n                                \"*\": {\n                                    validator: \"[0-9?]\",\n                                    cardinality: 1\n                                }\n                            }\n                        }).format(processValue.join(\"\")), addRadix && (processValue += opts.radixPoint), \n                        processValue.charAt(0) === opts.groupSeparator && processValue.substr(1);\n                    }\n                }\n                if (opts.isNegative && \"blur\" === currentResult.event && (opts.isNegative = \"0\" !== processValue), \n                processValue = prefix + processValue, processValue += suffix, opts.isNegative && (processValue = opts.negationSymbol.front + processValue, \n                processValue += opts.negationSymbol.back), processValue = processValue.split(\"\"), \n                charAtPos !== undefined) if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) (caretPos = $.inArray(\"?\", processValue)) > -1 ? processValue[caretPos] = charAtPos : caretPos = currentResult.caret || 0; else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) {\n                    var newCaretPos = $.inArray(charAtPos, processValue);\n                    -1 !== newCaretPos && (caretPos = newCaretPos);\n                }\n                opts.numericInput && (caretPos = processValue.length - caretPos - 1, processValue = processValue.reverse());\n                var rslt = {\n                    caret: charAtPos === undefined || currentResult.pos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos,\n                    buffer: processValue,\n                    refreshFromBuffer: currentResult.dopost || buffer.join(\"\") !== processValue.join(\"\")\n                };\n                return rslt.refreshFromBuffer ? rslt : currentResult;\n            },\n            onBeforeWrite: function(e, buffer, caretPos, opts) {\n                if (e) switch (e.type) {\n                  case \"keydown\":\n                    return opts.postValidation(buffer, {\n                        caret: caretPos,\n                        dopost: !0\n                    }, opts);\n\n                  case \"blur\":\n                  case \"checkval\":\n                    var unmasked;\n                    if (function(opts) {\n                        opts.parseMinMaxOptions === undefined && (null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                        \",\" === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, \".\")), \n                        opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN, isNaN(opts.min) && (opts.min = Number.MIN_VALUE)), \n                        null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                        \",\" === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, \".\")), \n                        opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN, isNaN(opts.max) && (opts.max = Number.MAX_VALUE)), \n                        opts.parseMinMaxOptions = \"done\");\n                    }(opts), null !== opts.min || null !== opts.max) {\n                        if (unmasked = opts.onUnMask(buffer.join(\"\"), undefined, $.extend({}, opts, {\n                            unmaskAsNumber: !0\n                        })), null !== opts.min && unmasked < opts.min) return opts.isNegative = opts.min < 0, \n                        opts.postValidation(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), {\n                            caret: caretPos,\n                            dopost: !0,\n                            placeholder: \"0\"\n                        }, opts);\n                        if (null !== opts.max && unmasked > opts.max) return opts.isNegative = opts.max < 0, \n                        opts.postValidation(opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"), {\n                            caret: caretPos,\n                            dopost: !0,\n                            placeholder: \"0\"\n                        }, opts);\n                    }\n                    return opts.postValidation(buffer, {\n                        caret: caretPos,\n                        placeholder: \"0\",\n                        event: \"blur\"\n                    }, opts);\n\n                  case \"_checkval\":\n                    return {\n                        caret: caretPos\n                    };\n                }\n            },\n            regex: {\n                integerPart: function(opts, emptyCheck) {\n                    return emptyCheck ? new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\") : new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\\\\d+\");\n                },\n                integerNPart: function(opts) {\n                    return new RegExp(\"[\\\\d\" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + \"]+\");\n                }\n            },\n            definitions: {\n                \"~\": {\n                    validator: function(chrs, maskset, pos, strict, opts, isSelection) {\n                        var isValid = strict ? new RegExp(\"[0-9\" + Inputmask.escapeRegex(opts.groupSeparator) + \"]\").test(chrs) : new RegExp(\"[0-9]\").test(chrs);\n                        if (!0 === isValid) {\n                            if (!0 !== opts.numericInput && maskset.validPositions[pos] !== undefined && \"~\" === maskset.validPositions[pos].match.def && !isSelection) {\n                                var processValue = maskset.buffer.join(\"\"), pvRadixSplit = (processValue = (processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\")).replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\")).split(opts.radixPoint);\n                                pvRadixSplit.length > 1 && (pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0))), \n                                \"0\" === pvRadixSplit[0] && (pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0))), \n                                processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || \"\";\n                                var bufferTemplate = maskset._buffer.join(\"\");\n                                for (processValue === opts.radixPoint && (processValue = bufferTemplate); null === processValue.match(Inputmask.escapeRegex(bufferTemplate) + \"$\"); ) bufferTemplate = bufferTemplate.slice(1);\n                                isValid = (processValue = (processValue = processValue.replace(bufferTemplate, \"\")).split(\"\"))[pos] === undefined ? {\n                                    pos: pos,\n                                    remove: pos\n                                } : {\n                                    pos: pos\n                                };\n                            }\n                        } else strict || chrs !== opts.radixPoint || maskset.validPositions[pos - 1] !== undefined || (maskset.buffer[pos] = \"0\", \n                        isValid = {\n                            pos: pos + 1\n                        });\n                        return isValid;\n                    },\n                    cardinality: 1\n                },\n                \"+\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.allowMinus && (\"-\" === chrs || chrs === opts.negationSymbol.front);\n                    },\n                    cardinality: 1,\n                    placeholder: \"\"\n                },\n                \"-\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.allowMinus && chrs === opts.negationSymbol.back;\n                    },\n                    cardinality: 1,\n                    placeholder: \"\"\n                },\n                \":\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        var radix = \"[\" + Inputmask.escapeRegex(opts.radixPoint) + \"]\", isValid = new RegExp(radix).test(chrs);\n                        return isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = {\n                            caret: pos + 1\n                        }), isValid;\n                    },\n                    cardinality: 1,\n                    placeholder: function(opts) {\n                        return opts.radixPoint;\n                    }\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                if (\"\" === unmaskedValue && !0 === opts.nullable) return unmaskedValue;\n                var processValue = maskedValue.replace(opts.prefix, \"\");\n                return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                \"\" !== opts.placeholder.charAt(0) && (processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\")), \n                opts.unmaskAsNumber ? (\"\" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\")), \n                processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\"), \n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n                Number(processValue)) : processValue;\n            },\n            isComplete: function(buffer, opts) {\n                var maskedValue = buffer.join(\"\");\n                if (buffer.slice().join(\"\") !== maskedValue) return !1;\n                var processValue = maskedValue.replace(opts.prefix, \"\");\n                return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                \",\" === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\")), \n                isFinite(processValue);\n            },\n            onBeforeMask: function(initialValue, opts) {\n                if (opts.isNegative = undefined, initialValue = initialValue.toString().charAt(initialValue.length - 1) === opts.radixPoint ? initialValue.toString().substr(0, initialValue.length - 1) : initialValue.toString(), \n                \"\" !== opts.radixPoint && isFinite(initialValue)) {\n                    var vs = initialValue.split(\".\"), groupSize = \"\" !== opts.groupSeparator ? parseInt(opts.groupSize) : 0;\n                    2 === vs.length && (vs[0].length > groupSize || vs[1].length > groupSize || vs[0].length <= groupSize && vs[1].length < groupSize) && (initialValue = initialValue.replace(\".\", opts.radixPoint));\n                }\n                var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\\./g);\n                if (initialValue = dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\\./g, \"\")).replace(\",\", opts.radixPoint) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, \"\")).replace(\".\", opts.radixPoint) : initialValue.indexOf(\".\") < initialValue.indexOf(\",\") ? initialValue.replace(/\\./g, \"\") : initialValue.replace(/,/g, \"\") : initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                0 === opts.digits && (-1 !== initialValue.indexOf(\".\") ? initialValue = initialValue.substring(0, initialValue.indexOf(\".\")) : -1 !== initialValue.indexOf(\",\") && (initialValue = initialValue.substring(0, initialValue.indexOf(\",\")))), \n                \"\" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) {\n                    var decPart = initialValue.split(opts.radixPoint)[1].match(new RegExp(\"\\\\d*\"))[0];\n                    if (parseInt(opts.digits) < decPart.toString().length) {\n                        var digitsFactor = Math.pow(10, parseInt(opts.digits));\n                        initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\"), \n                        initialValue = (initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor).toString().replace(\".\", opts.radixPoint);\n                    }\n                }\n                return initialValue;\n            },\n            canClearPosition: function(maskset, position, lvp, strict, opts) {\n                var vp = maskset.validPositions[position], canClear = vp.input !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && !1 === opts.decimalProtect || vp.input === opts.radixPoint && maskset.validPositions[position + 1] && null === maskset.validPositions[position + 1].match.fn || isFinite(vp.input) || position === lvp || vp.input === opts.groupSeparator || vp.input === opts.negationSymbol.front || vp.input === opts.negationSymbol.back;\n                return !canClear || \"+\" !== vp.match.nativeDef && \"-\" !== vp.match.nativeDef || (opts.isNegative = !1), \n                canClear;\n            },\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var $input = $(this);\n                if (e.ctrlKey) switch (e.keyCode) {\n                  case Inputmask.keyCode.UP:\n                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger(\"setvalue\");\n                    break;\n\n                  case Inputmask.keyCode.DOWN:\n                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger(\"setvalue\");\n                }\n            }\n        },\n        currency: {\n            prefix: \"$ \",\n            groupSeparator: \",\",\n            alias: \"numeric\",\n            placeholder: \"0\",\n            autoGroup: !0,\n            digits: 2,\n            digitsOptional: !1,\n            clearMaskOnLostFocus: !1\n        },\n        decimal: {\n            alias: \"numeric\"\n        },\n        integer: {\n            alias: \"numeric\",\n            digits: 0,\n            radixPoint: \"\"\n        },\n        percentage: {\n            alias: \"numeric\",\n            digits: 2,\n            digitsOptional: !0,\n            radixPoint: \".\",\n            placeholder: \"0\",\n            autoGroup: !1,\n            min: 0,\n            max: 100,\n            suffix: \" %\",\n            allowMinus: !1\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/inputmask.phone.extensions.js",
    "content": "/*!\n* inputmask.phone.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./inputmask\")) : factory(window.dependencyLib || jQuery, window.Inputmask);\n}(function($, Inputmask) {\n    function maskSort(a, b) {\n        var maska = (a.mask || a).replace(/#/g, \"9\").replace(/\\)/, \"9\").replace(/[+()#-]/g, \"\"), maskb = (b.mask || b).replace(/#/g, \"9\").replace(/\\)/, \"9\").replace(/[+()#-]/g, \"\"), maskas = (a.mask || a).split(\"#\")[0], maskbs = (b.mask || b).split(\"#\")[0];\n        return 0 === maskbs.indexOf(maskas) ? -1 : 0 === maskas.indexOf(maskbs) ? 1 : maska.localeCompare(maskb);\n    }\n    var analyseMaskBase = Inputmask.prototype.analyseMask;\n    return Inputmask.prototype.analyseMask = function(mask, regexMask, opts) {\n        function reduceVariations(masks, previousVariation, previousmaskGroup) {\n            previousVariation = previousVariation || \"\", previousmaskGroup = previousmaskGroup || maskGroups, \n            \"\" !== previousVariation && (previousmaskGroup[previousVariation] = {});\n            for (var variation = \"\", maskGroup = previousmaskGroup[previousVariation] || previousmaskGroup, i = masks.length - 1; i >= 0; i--) maskGroup[variation = (mask = masks[i].mask || masks[i]).substr(0, 1)] = maskGroup[variation] || [], \n            maskGroup[variation].unshift(mask.substr(1)), masks.splice(i, 1);\n            for (var ndx in maskGroup) maskGroup[ndx].length > 500 && reduceVariations(maskGroup[ndx].slice(), ndx, maskGroup);\n        }\n        function rebuild(maskGroup) {\n            var mask = \"\", submasks = [];\n            for (var ndx in maskGroup) $.isArray(maskGroup[ndx]) ? 1 === maskGroup[ndx].length ? submasks.push(ndx + maskGroup[ndx]) : submasks.push(ndx + opts.groupmarker.start + maskGroup[ndx].join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end) : submasks.push(ndx + rebuild(maskGroup[ndx]));\n            return 1 === submasks.length ? mask += submasks[0] : mask += opts.groupmarker.start + submasks.join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end, \n            mask;\n        }\n        var maskGroups = {};\n        return opts.phoneCodes && (opts.phoneCodes && opts.phoneCodes.length > 1e3 && (reduceVariations((mask = mask.substr(1, mask.length - 2)).split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start)), \n        mask = rebuild(maskGroups)), mask = mask.replace(/9/g, \"\\\\9\")), analyseMaskBase.call(this, mask, regexMask, opts);\n    }, Inputmask.extendAliases({\n        abstractphone: {\n            groupmarker: {\n                start: \"<\",\n                end: \">\"\n            },\n            countrycode: \"\",\n            phoneCodes: [],\n            mask: function(opts) {\n                return opts.definitions = {\n                    \"#\": Inputmask.prototype.definitions[9]\n                }, opts.phoneCodes.sort(maskSort);\n            },\n            keepStatic: !0,\n            onBeforeMask: function(value, opts) {\n                var processedValue = value.replace(/^0{1,2}/, \"\").replace(/[\\s]/g, \"\");\n                return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = \"+\" + opts.countrycode + processedValue), \n                processedValue;\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return maskedValue.replace(/[()#-]/g, \"\");\n            },\n            inputmode: \"tel\"\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/inputmask.regex.extensions.js",
    "content": "/*!\n* inputmask.regex.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./inputmask\")) : factory(window.dependencyLib || jQuery, window.Inputmask);\n}(function($, Inputmask) {\n    return Inputmask.extendAliases({\n        Regex: {\n            mask: \"r\",\n            greedy: !1,\n            repeat: \"*\",\n            regex: null,\n            regexTokens: null,\n            tokenizer: /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g,\n            quantifierFilter: /[0-9]+[^,]/,\n            isComplete: function(buffer, opts) {\n                return new RegExp(opts.regex, opts.casing ? \"i\" : \"\").test(buffer.join(\"\"));\n            },\n            definitions: {\n                r: {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        function RegexToken(isGroup, isQuantifier) {\n                            this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, \n                            this.quantifier = {\n                                min: 1,\n                                max: 1\n                            }, this.repeaterPart = void 0;\n                        }\n                        function validateRegexToken(token, fromGroup) {\n                            var isvalid = !1;\n                            fromGroup && (regexPart += \"(\", openGroupCount++);\n                            for (var mndx = 0; mndx < token.matches.length; mndx++) {\n                                var matchToken = token.matches[mndx];\n                                if (!0 === matchToken.isGroup) isvalid = validateRegexToken(matchToken, !0); else if (!0 === matchToken.isQuantifier) {\n                                    var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart;\n                                    if (isNaN(matchToken.quantifier.max)) {\n                                        for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ;\n                                        (isvalid = isvalid || validateRegexToken(matchGroup, !0)) && (matchToken.repeaterPart = regexPart), \n                                        regexPart = regexPartBak + matchToken.quantifier.max;\n                                    } else {\n                                        for (var i = 0, qm = matchToken.quantifier.max - 1; i < qm && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ;\n                                        regexPart = regexPartBak + \"{\" + matchToken.quantifier.min + \",\" + matchToken.quantifier.max + \"}\";\n                                    }\n                                } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else {\n                                    var testExp;\n                                    if (\"[\" == matchToken.charAt(0)) {\n                                        testExp = regexPart, testExp += matchToken;\n                                        for (j = 0; j < openGroupCount; j++) testExp += \")\";\n                                        isvalid = (exp = new RegExp(\"^(\" + testExp + \")$\", opts.casing ? \"i\" : \"\")).test(bufferStr);\n                                    } else for (var l = 0, tl = matchToken.length; l < tl; l++) if (\"\\\\\" !== matchToken.charAt(l)) {\n                                        testExp = regexPart, testExp = (testExp += matchToken.substr(0, l + 1)).replace(/\\|$/, \"\");\n                                        for (var j = 0; j < openGroupCount; j++) testExp += \")\";\n                                        var exp = new RegExp(\"^(\" + testExp + \")$\", opts.casing ? \"i\" : \"\");\n                                        if (isvalid = exp.test(bufferStr)) break;\n                                    }\n                                    regexPart += matchToken;\n                                }\n                                if (isvalid) break;\n                            }\n                            return fromGroup && (regexPart += \")\", openGroupCount--), isvalid;\n                        }\n                        var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = \"\", isValid = !1, openGroupCount = 0;\n                        null === opts.regexTokens && function() {\n                            var match, m, currentToken = new RegexToken(), opengroups = [];\n                            for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch ((m = match[0]).charAt(0)) {\n                              case \"(\":\n                                opengroups.push(new RegexToken(!0));\n                                break;\n\n                              case \")\":\n                                groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken);\n                                break;\n\n                              case \"{\":\n                              case \"+\":\n                              case \"*\":\n                                var quantifierToken = new RegexToken(!1, !0), mq = (m = m.replace(/[{}]/g, \"\")).split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                                if (quantifierToken.quantifier = {\n                                    min: mq0,\n                                    max: mq1\n                                }, opengroups.length > 0) {\n                                    var matches = opengroups[opengroups.length - 1].matches;\n                                    (match = matches.pop()).isGroup || ((groupToken = new RegexToken(!0)).matches.push(match), \n                                    match = groupToken), matches.push(match), matches.push(quantifierToken);\n                                } else (match = currentToken.matches.pop()).isGroup || ((groupToken = new RegexToken(!0)).matches.push(match), \n                                match = groupToken), currentToken.matches.push(match), currentToken.matches.push(quantifierToken);\n                                break;\n\n                              default:\n                                opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m);\n                            }\n                            currentToken.matches.length > 0 && opts.regexTokens.push(currentToken);\n                        }(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join(\"\");\n                        for (var i = 0; i < opts.regexTokens.length; i++) {\n                            var regexToken = opts.regexTokens[i];\n                            if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break;\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1\n                }\n            }\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/jquery.inputmask.js",
    "content": "/*!\n* jquery.inputmask.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"jquery\", \"./inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"jquery\"), require(\"./inputmask\")) : factory(jQuery, window.Inputmask);\n}(function($, Inputmask) {\n    return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) {\n        var nptmask, input = this[0];\n        if (void 0 === options && (options = {}), \"string\" == typeof fn) switch (fn) {\n          case \"unmaskedvalue\":\n            return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();\n\n          case \"remove\":\n            return this.each(function() {\n                this.inputmask && this.inputmask.remove();\n            });\n\n          case \"getemptymask\":\n            return input && input.inputmask ? input.inputmask.getemptymask() : \"\";\n\n          case \"hasMaskedValue\":\n            return !(!input || !input.inputmask) && input.inputmask.hasMaskedValue();\n\n          case \"isComplete\":\n            return !input || !input.inputmask || input.inputmask.isComplete();\n\n          case \"getmetadata\":\n            return input && input.inputmask ? input.inputmask.getmetadata() : void 0;\n\n          case \"setvalue\":\n            $(input).val(options), input && void 0 === input.inputmask && $(input).triggerHandler(\"setvalue\");\n            break;\n\n          case \"option\":\n            if (\"string\" != typeof options) return this.each(function() {\n                if (void 0 !== this.inputmask) return this.inputmask.option(options);\n            });\n            if (input && void 0 !== input.inputmask) return input.inputmask.option(options);\n            break;\n\n          default:\n            return options.alias = fn, nptmask = new Inputmask(options), this.each(function() {\n                nptmask.mask(this);\n            });\n        } else {\n            if (\"object\" == typeof fn) return nptmask = new Inputmask(fn), void 0 === fn.mask && void 0 === fn.alias ? this.each(function() {\n                if (void 0 !== this.inputmask) return this.inputmask.option(fn);\n                nptmask.mask(this);\n            }) : this.each(function() {\n                nptmask.mask(this);\n            });\n            if (void 0 === fn) return this.each(function() {\n                (nptmask = new Inputmask(options)).mask(this);\n            });\n        }\n    }), $.fn.inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/phone-codes/phone-be.js",
    "content": "/*!\n* phone-codes/phone-be.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"../inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"../inputmask\")) : factory(window.Inputmask);\n}(function(Inputmask) {\n    return Inputmask.extendAliases({\n        phonebe: {\n            alias: \"abstractphone\",\n            countrycode: \"32\",\n            phoneCodes: [ {\n                mask: \"+32(53)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Aalst (Alost)\"\n            }, {\n                mask: \"+32(3)###-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Antwerpen (Anvers)\"\n            }, {\n                mask: \"+32(63)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Arlon\"\n            }, {\n                mask: \"+32(67)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Ath\"\n            }, {\n                mask: \"+32(50)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Brugge (Bruges)\"\n            }, {\n                mask: \"+32(2)###-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Brussel/Bruxelles (Brussels)\"\n            }, {\n                mask: \"+32(71)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Charleroi\"\n            }, {\n                mask: \"+32(60)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Chimay\"\n            }, {\n                mask: \"+32(83)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Ciney\"\n            }, {\n                mask: \"+32(52)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Dendermonde\"\n            }, {\n                mask: \"+32(13)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Diest\"\n            }, {\n                mask: \"+32(82)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Dinant\"\n            }, {\n                mask: \"+32(86)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Durbuy\"\n            }, {\n                mask: \"+32(89)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Genk\"\n            }, {\n                mask: \"+32(9)###-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Gent (Gand)\"\n            }, {\n                mask: \"+32(11)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Hasselt\"\n            }, {\n                mask: \"+32(14)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Herentals\"\n            }, {\n                mask: \"+32(85)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Huy (Hoei)\"\n            }, {\n                mask: \"+32(64)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"La Louvière\"\n            }, {\n                mask: \"+32(16)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Leuven (Louvain)\"\n            }, {\n                mask: \"+32(61)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Libramont\"\n            }, {\n                mask: \"+32(4)###-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Liège (Luik)\"\n            }, {\n                mask: \"+32(15)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Mechelen (Malines)\"\n            }, {\n                mask: \"+32(46#)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Mobile Phones\"\n            }, {\n                mask: \"+32(47#)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Mobile Phones\"\n            }, {\n                mask: \"+32(48#)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Mobile Phones\"\n            }, {\n                mask: \"+32(49#)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Mobile Phones\"\n            }, {\n                mask: \"+32(461)8#-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"GSM-R (NMBS)\"\n            }, {\n                mask: \"+32(65)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Mons (Bergen)\"\n            }, {\n                mask: \"+32(81)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Namur (Namen)\"\n            }, {\n                mask: \"+32(58)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Nieuwpoort (Nieuport)\"\n            }, {\n                mask: \"+32(54)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Ninove\"\n            }, {\n                mask: \"+32(67)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Nivelles (Nijvel)\"\n            }, {\n                mask: \"+32(59)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Oostende (Ostende)\"\n            }, {\n                mask: \"+32(51)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Roeselare (Roulers)\"\n            }, {\n                mask: \"+32(55)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Ronse\"\n            }, {\n                mask: \"+32(80)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Stavelot\"\n            }, {\n                mask: \"+32(12)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Tongeren (Tongres)\"\n            }, {\n                mask: \"+32(69)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Tounai\"\n            }, {\n                mask: \"+32(14)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Turnhout\"\n            }, {\n                mask: \"+32(87)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Verviers\"\n            }, {\n                mask: \"+32(58)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Veurne\"\n            }, {\n                mask: \"+32(19)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Wareme\"\n            }, {\n                mask: \"+32(10)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Wavre (Waver)\"\n            }, {\n                mask: \"+32(50)##-##-##\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                city: \"Zeebrugge\"\n            } ]\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/phone-codes/phone-nl.js",
    "content": "/*!\n* phone-codes/phone-nl.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"../inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"../inputmask\")) : factory(window.Inputmask);\n}(function(Inputmask) {\n    return Inputmask.extendAliases({\n        phonenl: {\n            alias: \"abstractphone\",\n            countrycode: \"31\",\n            phoneCodes: [ {\n                mask: \"+31-10-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Rotterdam\"\n            }, {\n                mask: \"+31-111-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zierikzee\"\n            }, {\n                mask: \"+31-113-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Goes\"\n            }, {\n                mask: \"+31-114-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Hulst\"\n            }, {\n                mask: \"+31-115-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Terneuzen\"\n            }, {\n                mask: \"+31-117-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Oostburg\"\n            }, {\n                mask: \"+31-118-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Middelburg\"\n            }, {\n                mask: \"+31-13-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Tilburg\"\n            }, {\n                mask: \"+31-14-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Intern gebruik door KPN\"\n            }, {\n                mask: \"+31-15-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Delft\"\n            }, {\n                mask: \"+31-161-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Rijen\"\n            }, {\n                mask: \"+31-162-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Oosterhout\"\n            }, {\n                mask: \"+31-164-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Bergen op Zoom\"\n            }, {\n                mask: \"+31-165-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Roosendaal\"\n            }, {\n                mask: \"+31-166-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Tholen\"\n            }, {\n                mask: \"+31-167-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Steenbergen\"\n            }, {\n                mask: \"+31-168-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zevenbergen\"\n            }, {\n                mask: \"+31-172-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Alphen aan den Rijn\"\n            }, {\n                mask: \"+31-174-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Naaldwijk\"\n            }, {\n                mask: \"+31-180-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Krimpen aan den IJsel\"\n            }, {\n                mask: \"+31-181-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Spijkenisse\"\n            }, {\n                mask: \"+31-182-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Gouda\"\n            }, {\n                mask: \"+31-183-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Gorinchem\"\n            }, {\n                mask: \"+31-184-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Sliedrecht\"\n            }, {\n                mask: \"+31-186-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Oud-Beijerland\"\n            }, {\n                mask: \"+31-187-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Middelharnis\"\n            }, {\n                mask: \"+31-20-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Amsterdam\"\n            }, {\n                mask: \"+31-222-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Den Burg\"\n            }, {\n                mask: \"+31-223-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Den Helder\"\n            }, {\n                mask: \"+31-224-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Schagen\"\n            }, {\n                mask: \"+31-226-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Noord-Scharwoude\"\n            }, {\n                mask: \"+31-227-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Middenmeer\"\n            }, {\n                mask: \"+31-228-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Enkhuizen\"\n            }, {\n                mask: \"+31-229-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Hoorn\"\n            }, {\n                mask: \"+31-23-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Haarlem\"\n            }, {\n                mask: \"+31-24-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Nijmegen\"\n            }, {\n                mask: \"+31-251-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Beverwijk\"\n            }, {\n                mask: \"+31-252-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Hillegom\"\n            }, {\n                mask: \"+31-255-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"IJmuiden\"\n            }, {\n                mask: \"+31-26-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Arnhem\"\n            }, {\n                mask: \"+31-294-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Weesp\"\n            }, {\n                mask: \"+31-297-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Uithoorn\"\n            }, {\n                mask: \"+31-299-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Purmerend\"\n            }, {\n                mask: \"+31-30-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Utrecht\"\n            }, {\n                mask: \"+31-313-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Dieren\"\n            }, {\n                mask: \"+31-314-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Doetinchem\"\n            }, {\n                mask: \"+31-315-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Terborg\"\n            }, {\n                mask: \"+31-316-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zevenaar\"\n            }, {\n                mask: \"+31-317-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Wageningen\"\n            }, {\n                mask: \"+31-318-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Ede\"\n            }, {\n                mask: \"+31-320-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Lelystad\"\n            }, {\n                mask: \"+31-321-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Dronten\"\n            }, {\n                mask: \"+31-33-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Amersfoort\"\n            }, {\n                mask: \"+31-341-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Harderwijk\"\n            }, {\n                mask: \"+31-342-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Barneveld\"\n            }, {\n                mask: \"+31-343-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Doorn\"\n            }, {\n                mask: \"+31-344-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Tiel\"\n            }, {\n                mask: \"+31-294-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Weesp\"\n            }, {\n                mask: \"+31-297-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Uithoorn\"\n            }, {\n                mask: \"+31-299-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Purmerend\"\n            }, {\n                mask: \"+31-30-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Utrecht\"\n            }, {\n                mask: \"+31-313-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Dieren\"\n            }, {\n                mask: \"+31-314-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Doetinchem\"\n            }, {\n                mask: \"+31-315-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Terborg\"\n            }, {\n                mask: \"+31-316-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zevenaar\"\n            }, {\n                mask: \"+31-317-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Wageningen\"\n            }, {\n                mask: \"+31-318-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Ede\"\n            }, {\n                mask: \"+31-320-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Lelystad\"\n            }, {\n                mask: \"+31-321-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Dronten\"\n            }, {\n                mask: \"+31-33-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Amersfoort\"\n            }, {\n                mask: \"+31-341-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Harderwijk\"\n            }, {\n                mask: \"+31-342-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Barneveld\"\n            }, {\n                mask: \"+31-343-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Doorn\"\n            }, {\n                mask: \"+31-344-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Tiel\"\n            }, {\n                mask: \"+31-345-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Culemborg\"\n            }, {\n                mask: \"+31-346-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Maarssen\"\n            }, {\n                mask: \"+31-347-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Vianen\"\n            }, {\n                mask: \"+31-348-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Woerden\"\n            }, {\n                mask: \"+31-35-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Hilversum\"\n            }, {\n                mask: \"+31-36-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Almere\"\n            }, {\n                mask: \"+31-38-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zwolle\"\n            }, {\n                mask: \"+31-40-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Eindhoven\"\n            }, {\n                mask: \"+31-411-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Boxtel\"\n            }, {\n                mask: \"+31-412-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Oss\"\n            }, {\n                mask: \"+31-413-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Veghel\"\n            }, {\n                mask: \"+31-416-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Waalwijk\"\n            }, {\n                mask: \"+31-418-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zaltbommel\"\n            }, {\n                mask: \"+31-43-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Maastricht\"\n            }, {\n                mask: \"+31-45-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Heerlen\"\n            }, {\n                mask: \"+31-46-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Sittard\"\n            }, {\n                mask: \"+31-475-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Roermond\"\n            }, {\n                mask: \"+31-478-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Venray\"\n            }, {\n                mask: \"+31-481-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Bemmel\"\n            }, {\n                mask: \"+31-485-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Cuijk\"\n            }, {\n                mask: \"+31-486-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Grave\"\n            }, {\n                mask: \"+31-487-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Druten\"\n            }, {\n                mask: \"+31-488-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zetten\"\n            }, {\n                mask: \"+31-492-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Helmond\"\n            }, {\n                mask: \"+31-493-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Deurne\"\n            }, {\n                mask: \"+31-495-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Weert\"\n            }, {\n                mask: \"+31-497-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Eersel\"\n            }, {\n                mask: \"+31-499-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Best\"\n            }, {\n                mask: \"+31-50-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Groningen\"\n            }, {\n                mask: \"+31-511-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Feanw�lden\"\n            }, {\n                mask: \"+31-512-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Drachten\"\n            }, {\n                mask: \"+31-513-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Heerenveen\"\n            }, {\n                mask: \"+31-514-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Balk\"\n            }, {\n                mask: \"+31-515-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Sneek\"\n            }, {\n                mask: \"+31-516-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Oosterwolde\"\n            }, {\n                mask: \"+31-517-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Franeker\"\n            }, {\n                mask: \"+31-518-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"St Annaparochie\"\n            }, {\n                mask: \"+31-519-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Dokkum\"\n            }, {\n                mask: \"+31-521-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Steenwijk\"\n            }, {\n                mask: \"+31-522-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Meppel\"\n            }, {\n                mask: \"+31-523-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Dedemsvaart\"\n            }, {\n                mask: \"+31-524-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Coevorden\"\n            }, {\n                mask: \"+31-525-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Elburg\"\n            }, {\n                mask: \"+31-527-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Emmeloord\"\n            }, {\n                mask: \"+31-528-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Hoogeveen\"\n            }, {\n                mask: \"+31-529-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Ommen\"\n            }, {\n                mask: \"+31-53-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Enschede\"\n            }, {\n                mask: \"+31-541-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Oldenzaal\"\n            }, {\n                mask: \"+31-543-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Winterswijk\"\n            }, {\n                mask: \"+31-544-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Groenlo\"\n            }, {\n                mask: \"+31-545-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Neede\"\n            }, {\n                mask: \"+31-546-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Almelo\"\n            }, {\n                mask: \"+31-547-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Goor\"\n            }, {\n                mask: \"+31-548-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Rijssen\"\n            }, {\n                mask: \"+31-55-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Apeldoorn\"\n            }, {\n                mask: \"+31-561-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Wolvega\"\n            }, {\n                mask: \"+31-562-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"West-Terschelling\"\n            }, {\n                mask: \"+31-566-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Jirnsum\"\n            }, {\n                mask: \"+31-570-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Deventer\"\n            }, {\n                mask: \"+31-571-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Twello\"\n            }, {\n                mask: \"+31-572-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Raalte\"\n            }, {\n                mask: \"+31-573-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Lochem\"\n            }, {\n                mask: \"+31-575-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zutphen\"\n            }, {\n                mask: \"+31-577-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Uddel\"\n            }, {\n                mask: \"+31-578-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Epe\"\n            }, {\n                mask: \"+31-58-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Leeuwarden\"\n            }, {\n                mask: \"+31-591-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Emmen\"\n            }, {\n                mask: \"+31-592-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Assen\"\n            }, {\n                mask: \"+31-593-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Beilen\"\n            }, {\n                mask: \"+31-594-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zuidhorn\"\n            }, {\n                mask: \"+31-595-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Warffum\"\n            }, {\n                mask: \"+31-596-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Appingedam\"\n            }, {\n                mask: \"+31-597-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Winschoten\"\n            }, {\n                mask: \"+31-598-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Hoogezand\"\n            }, {\n                mask: \"+31-599-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Stadskanaal\"\n            }, {\n                mask: \"+31-70-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Den Haag\"\n            }, {\n                mask: \"+31-71-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Leiden\"\n            }, {\n                mask: \"+31-72-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Alkmaar\"\n            }, {\n                mask: \"+31-73-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"'s-Hertogenbosch\"\n            }, {\n                mask: \"+31-74-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Hengelo\"\n            }, {\n                mask: \"+31-75-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zaandam\"\n            }, {\n                mask: \"+31-76-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Breda\"\n            }, {\n                mask: \"+31-77-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Venlo\"\n            }, {\n                mask: \"+31-78-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Dordrecht\"\n            }, {\n                mask: \"+31-79-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Zoetermeer\"\n            }, {\n                mask: \"+31-61-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Mobiele nummers\"\n            }, {\n                mask: \"+31-62-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Mobiele nummers\"\n            }, {\n                mask: \"+31-63-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Mobiele nummers\"\n            }, {\n                mask: \"+31-64-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Mobiele nummers\"\n            }, {\n                mask: \"+31-65-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Mobiele nummers\"\n            }, {\n                mask: \"+31-68-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Mobiele nummers\"\n            }, {\n                mask: \"+31-69-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Mobiele nummers\"\n            }, {\n                mask: \"+31-66-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Semafonie\"\n            }, {\n                mask: \"+31-670-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Videotex\"\n            }, {\n                mask: \"+31-671-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Videotex\"\n            }, {\n                mask: \"+31-672-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Videotex\"\n            }, {\n                mask: \"+31-673-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Videotex\"\n            }, {\n                mask: \"+31-674-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Videotex\"\n            }, {\n                mask: \"+31-675-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Videotex\"\n            }, {\n                mask: \"+31-676-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Inbelnummers van internetproviders\"\n            }, {\n                mask: \"+31-800-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Gratis informatienummers\"\n            }, {\n                mask: \"+31-82-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Virtual Private Network\"\n            }, {\n                mask: \"+31-88-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Bedrijfsnummers\"\n            }, {\n                mask: \"+31-900-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Betaalde informatienummers\"\n            }, {\n                mask: \"+31-906-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Betaalde informatienummers\"\n            }, {\n                mask: \"+31-909-###-###\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Betaalde informatienummers\"\n            }, {\n                mask: \"+31-91-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                city: \"Plaatsonafhankelijk netnummer, geschikt voor beeldtelefonie of lijnen met verhoogde kwaliteit\"\n            } ]\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/phone-codes/phone-ru.js",
    "content": "/*!\n* phone-codes/phone-ru.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"../inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"../inputmask\")) : factory(window.Inputmask);\n}(function(Inputmask) {\n    return Inputmask.extendAliases({\n        phoneru: {\n            alias: \"abstractphone\",\n            countrycode: \"7\",\n            phoneCodes: [ {\n                mask: \"+7(301)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3012)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Улан-Удэ\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30130)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: [ \"Нижнеангарск\", \"Северобайкальск\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Баргузин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Таксимо\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Бичура\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Петропавловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Сосново-Озёрское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Заиграево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Закаменск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Кабанск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Иволгинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Кижинга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Кяхта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Мухоршибирь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Турунтаево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Гусиноозёрск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Тарбагатай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Кырен\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Хоринск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Курумкан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Орлик\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Бурятия\",\n                city: \"Багдарин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(302)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3022)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Чита\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30230)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Красный Чикой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30231)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Акша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30232)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Балей\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30233)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Борзя\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30234)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Карымское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30235)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Кыра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30236)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Петровск-Забайкальский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30237)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Хилок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30238)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Улёты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30239)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Агинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30240)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Александровский Завод\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30241)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Могоча\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30242)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Нерчинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30243)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Приаргунск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Шилка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Краснокаменск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Сретенск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30247)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Газимурский Завод\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30248)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Нерчинский Завод\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30249)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Калга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30251)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Забайкальск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30252)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Нижний Цасучей\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30253)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Оловянная\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30255)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Могойтуй\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30256)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Дульдурга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30257)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Горный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30261)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: [ \"Калар\", \"Чара\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30262)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Первомайский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30264)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Верх-Усугли\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30265)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Чернышевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(30266)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Забайкальский край\",\n                city: \"Шелопугино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(341)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3412)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Ижевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34126)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Завьялово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34130)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Ува\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Каракулино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Киясово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Игра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Шаркан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Малая Пурга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Можга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Глазов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Воткинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Сарапул\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Алнаши\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Дебёсы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Сюмси\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Камбарка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Кизнер\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Вавож\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Яр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Кез\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Селты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Юкаменское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Якшур-Бодья\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Грахово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Красногорское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Удмуртская Республика\",\n                city: \"Балезино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(342)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(342)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Пермь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(342)3##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Пермь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3424)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Березники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34240)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Чердынь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34241)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Чайковский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34243)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Красновишерск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Усолье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Гайны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Юсьва\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34248)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Губаха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34249)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Лысьва\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34250)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Гремячинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34251)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Березовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34252)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Усть-Кишерть\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34253)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Соликамск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34254)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Верещагино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34255)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Кизел\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34256)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Чусовой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34257)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Большая Соснова\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34258)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Орда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34259)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Уинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34260)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Кудымкар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34261)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Чернушка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34262)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Куеда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34263)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Звёздный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34265)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Добрянка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34266)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Октябрьский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34268)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Частые\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34269)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Горнозаводск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34271)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Кунгур\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34272)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Нытва\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34273)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Краснокамск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34274)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Александровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34275)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Суксун\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34276)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Ильинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34277)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Сива\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34278)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Очер\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34279)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Оханск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34291)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Оса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34292)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Барда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34293)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Кочёво\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34294)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Юрла\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34296)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Елово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34297)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Карагай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34298)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пермский край\",\n                city: \"Коса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(343)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(343)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Екатеринбург\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(343)3##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Екатеринбург\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Качканар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34342)2-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Нижняя Тура\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34342)3-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Лесной\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34342)5-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Лесной\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34342)6-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Лесной\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Красноуральск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Кушва\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Верхняя Салда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Алапаевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Таборы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Туринск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3435)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Нижний Тагил\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34350)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Полевской\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Ирбит\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Невьянск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Кировград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34358)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Шаля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34360)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Тавда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Туринская Слобода\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Байкалово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Артемовский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Реж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Асбест\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Тугулым\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34368)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Верхняя Пышма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34369)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Берёзовский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34370)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Новоуральск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34371)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Талица\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34372)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Пышма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34373)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Сухой Лог\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34374)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Сысерть\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34375)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Камышлов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34376)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Богданович\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34377)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Белоярский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34380)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Североуральск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34383)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Карпинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34383)5-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Волчанск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34384)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Краснотурьинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34385)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Серов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34386)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Ивдель\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34387)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Гари\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34388)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Новая Ляля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34389)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Верхотурье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3439)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Первоуральск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3439)3#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Каменск-Уральский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3439)54-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Каменск-Уральский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3439)6#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Первоуральск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34391)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Ачит\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34394)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Красноуфимск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34395)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Арти\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34397)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Ревда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34398)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Свердловская область\",\n                city: \"Нижние Серги\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(345)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3452)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Тюмень\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34531)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Ярково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34533)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Нижняя Тавда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Ялуторовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34537)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Исетское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34539)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Вагай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34541)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Упорово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Заводоуковск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Юргинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Омутинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Аромашево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34546)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Голышманово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34547)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Армизонское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34550)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Большое Сорокино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Ишим\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34553)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Казанское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34554)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Бердюжье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34555)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Сладково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34556)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Абатский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34557)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Викулово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3456)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Тобольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34561)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тюменская область\",\n                city: \"Уват\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(346)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3462)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Сургут\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3463)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Нефтеюганск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34634)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Пыть-Ях\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34638)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Лянтор\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34643)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Мегион\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3466)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Нижневартовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34667)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Когалым\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34668)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Радужный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34669)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Лангепас\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34670)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Белоярский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34672)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Нягань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34673)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Ханты-Мансийск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34674)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Берёзово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34675)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Советский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34676)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Урай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34677)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Кондинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34678)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ханты-Мансийский автономный округ\",\n                city: \"Октябрьское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(347)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(347)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Уфа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3473)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Стерлитамак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34731)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Агидель\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34739)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Стерлибашево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34740)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Красноусольский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34741)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Ермекеево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34742)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Бакалы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34743)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Бижбуляк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34744)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Караидель\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34745)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Толбазы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34746)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Фёдоровка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34747)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Языково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34748)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Верхние Киги\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34749)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Мишкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34750)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Новобелокатай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34751)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Баймак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34752)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Зилаир\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34753)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Старобалтачево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34754)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Раевский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34755)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Старосубхангулово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34756)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Бураево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34757)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Ермолаево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34758)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Акъяр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34759)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Николо-Березовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34760)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Янаул\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34761)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Кумертау\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34762)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Верхнеяркеево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34763)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Салават\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34764)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Мелеуз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34765)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Кармаскалы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34766)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Благовещенск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34767)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Октябрьский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34768)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Давлеканово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34769)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Шаран\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34770)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Большеустьикинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34771)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Аскино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34772)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Аскарово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34773)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Буздяк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34774)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Архангельское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34775)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Сибай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34776)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Красная Горка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34777)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Малояз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34778)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Верхние Татышлы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34779)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Калтасы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34780)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Кушнаренково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34781)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Межгорье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34782)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Туймазы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34783)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Нефтекамск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34784)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Бирск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34785)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Исянгулово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34786)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Белебей\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34787)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Дюртюли\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34788)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Киргиз-Мияки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34789)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Мраково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34791)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Учалы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34792)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Белорецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34794)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Ишимбай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34795)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Иглино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34796)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Чекмагуш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34797)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Чишмы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34798)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Башкортостан\",\n                city: \"Месягутово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(349)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34922)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Салехард\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34932)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Красноселькуп\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34934)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Уренгой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34936)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Губкинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34938)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Муравленко\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3494)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Новый Уренгой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34940)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Тазовский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34948)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Харп\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34949)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Ямбург\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3496)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Ноябрьск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34992)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Лабытнанги\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34993)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Аксарка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34994)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Мужи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34995)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Надым\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34996)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Яр-Сале\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(34997)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ямало-Ненецкий автономный округ\",\n                city: \"Тарко-Сале\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(351)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(351)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Челябинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(351)301-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Челябинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(351)7##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Челябинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(351)90#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"\",\n                operator: \"Ростелеком\",\n                desc: \"мобильные телефоны с зоновыми номерами\"\n            }, {\n                mask: \"+7(3513)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Миасс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3513)5#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Миасс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3513)6#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Златоуст\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3513)7#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Златоуст\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35130)2-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Озёрск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35130)4-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Озёрск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35130)6-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Озёрск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35130)7-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Озёрск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35130)9-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Озёрск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Аргаяш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Карталы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Южноуральск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Еманжелинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Копейск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Агаповка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Бреды\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Варна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Верхнеуральск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Долгодеревенское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Еткуль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Снежинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: [ \"Катав-Ивановск\", \"Юрюзань\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Кунашак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Касли\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Миасское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Кыштым\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Коркино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Карабаш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Куса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Кизильское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Нязепетровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Фершампенуаз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Октябрьское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Аша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35160)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Пласт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Сатка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Троицк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Верхний Уфалей\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Уйское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Увельский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Усть-Катав\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35168)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Чебаркуль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35169)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Чесма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3519)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Магнитогорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35191)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Челябинская область\",\n                city: \"Трёхгорный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(352)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3522)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Курган\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35230)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Частоозерье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35231)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Кетово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35232)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Белозерское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35233)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Варгаши\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35234)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Мокроусово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35235)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Петухово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35236)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Макушино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35237)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Лебяжье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35238)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Половинное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35239)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Глядянское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35240)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Звериноголовское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35241)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Целинное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35242)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Альменево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35243)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Сафакулево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Щучье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Шумиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35247)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Мишкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35248)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Юргамыш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35249)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Куртамыш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35251)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Катайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35252)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Далматово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35253)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Шадринск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35256)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Каргаполье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35257)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курганская область\",\n                city: \"Шатрово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(353)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3532)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Оренбург\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35330)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Октябрьское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35331)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Сакмара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35332)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Тюльган\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35333)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Саракташ\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35334)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Беляевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35335)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Акбулак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35336)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Соль-Илецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35337)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Илек\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35338)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Переволоцкий\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35339)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Новосергиевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Курманаевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Бузулук\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Грачёвка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Плешаново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Сорочинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Ташла\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Первомайский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Тоцкое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35351)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Асекеево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35352)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Бугуруслан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Северное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Абдулино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Матвеевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Пономаревка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35358)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Шарлык\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35359)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Александровка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Кувандык\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Гай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Новоорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Кваркено\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Адамовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35366)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Светлый\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Домбаровский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35368)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Ясный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3537)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Орск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3537)3#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Орск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3537)4#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Орск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3537)6#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Новотроицк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(35379)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Оренбургская область\",\n                city: \"Медногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(381)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3812)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Омск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Азово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Усть-Ишим\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Таврическое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Нововаршавка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Черлак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Тевриз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Калачинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Русская Поляна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Горьковское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Муромцево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Одесское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38160)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Колосовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Называевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Большие Уки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Полтавка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Седельниково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Нижняя Омка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Оконешниково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Крутинка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38168)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Марьяновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38169)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Большеречье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38170)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Кормиловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38171)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Тара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38172)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Павлоградка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38173)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Исилькуль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38174)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Москаленки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38175)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Любинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38176)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Тюкалинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38177)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Шербакуль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38178)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Саргатское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38179)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Омская область\",\n                city: \"Знаменское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(382)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3822)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Томск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3823)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Северск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38241)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Асино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38243)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Зырянское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Кожевниково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Первомайское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Тегульдет\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38247)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Мельниково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38249)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Бакчар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38250)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Кедровый\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38251)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Кривошеино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38252)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Парабель\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38253)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Каргасок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38254)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Колпашево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38255)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Александровское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38256)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Молчаново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38257)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Подгорное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38258)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Белый Яр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38259)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Томская область\",\n                city: \"Стрежевой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(383)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Новосибирск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38340)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Тогучин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Бердск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Искитим\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Черепаново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Сузун\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Маслянино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Мошково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Болотное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38350)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Чулым\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38351)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Коченево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38352)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Колывань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38353)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Баган\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Довольное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Карасук\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Кочки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Краснозерское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38358)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Купино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38359)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Ордынское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38360)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Северное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Барабинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Куйбышев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Здвинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Татарск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Каргат\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38366)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Убинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Чаны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38368)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Чистоозерное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38369)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Венгерово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38371)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Кыштовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38372)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Усть-Тарка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38373)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новосибирская область\",\n                city: \"Обь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(384)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3842)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Кемерово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3843)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Новокузнецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38441)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Яя\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38442)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Промышленная\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38443)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Мариинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38444)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Верх-Чебула\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38445)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Берёзовский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38446)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Крапивинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38447)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Тисуль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38448)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Тайга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38449)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Тяжинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38451)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Юрга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38452)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Белово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38453)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Анжеро-Судженск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38454)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Топки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38455)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Яшкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38456)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Ленинск-Кузнецкий\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38459)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Ижморский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3846)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Прокопьевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38463)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Гурьевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38464)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Киселевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38471)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Осинники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38472)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Калтан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38473)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Таштагол\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38474)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Мыски\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38475)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кемеровская область\",\n                city: \"Междуреченск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(385)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3852)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Барнаул\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38530)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Зональное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38531)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Косиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38532)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Новоалтайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38533)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Солтон\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38534)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Троицкое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Красногорское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38536)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Смоленское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38537)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Алтайское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38538)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Верх-Суетка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38539)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Гальбштадт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3854)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Бийск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38550)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Шипуново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Калманка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38552)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Топчиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38553)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Алейск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38554)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Усть-Чарышская Пристань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38555)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Новичиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38556)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Поспелиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38557)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Рубцовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38558)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Шелаболиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38559)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Староалейское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38560)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Новоегорьевское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38561)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Романово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38562)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Завьялово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38563)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Родино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38564)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Благовещенка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38565)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Волчиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38566)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Кулунда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38567)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Табуны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38568)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Славгород\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38569)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Хабары\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38570)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Михайловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38571)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Быстрый Исток\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38572)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Бурла\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38573)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Петропавловское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38574)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Чарышское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38575)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Краснощеково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38576)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Курья\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38577)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Белокуриха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38578)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Ключи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38579)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Угловское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38580)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Панкрушиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38581)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Павловск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38582)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Ребриха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38583)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Мамонтово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38584)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Камень-на-Оби\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38585)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Баево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38586)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Горняк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38587)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Змеиногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38588)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Тюменцево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38589)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Крутиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38590)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Кытманово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38591)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Тальменка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38592)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Залесово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38593)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Ельцовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38594)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Солонешное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38595)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Заринск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38596)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Целинное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38597)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Тогул\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38598)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Советское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38599)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Алтайский край\",\n                city: \"Усть-Калманка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(388)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3882)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Горно-Алтайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38840)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Чоя\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38841)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Чемал\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38842)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Кош-Агач\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38843)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Турочак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38844)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Майма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38845)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Онгудай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38846)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Акташ\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38847)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Усть-Кан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38848)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Усть-Кокса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(38849)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Алтай\",\n                city: \"Шебалино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(390)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3902)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Абакан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39031)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Черногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39032)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Усть-Абакан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39033)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Сорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39034)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Боград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39035)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Шира\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39036)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Копьёво\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39041)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Белый Яр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39042)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Саяногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39044)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Бея\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39045)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Аскиз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39046)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Таштып\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39047)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хакасия\",\n                city: \"Абаза\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(391)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(391)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Красноярск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Сосновоборск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Минусинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Емельяново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Краснотуранск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Идринское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Курагино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Каратузское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Ермаковское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Шушенское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Партизанское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Мотыгино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Агинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Кодинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Дивногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Лесосибирск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Уяр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Новоселово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Балахта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Шалинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Новобирилюссы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Ачинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Диксон\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Шарыпово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Козулька\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Назарово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Ужур\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Боготол\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Тюхтет\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Большой Улуй\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39160)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Северо-Енисейский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Канск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Богучаны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Абан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Тасеево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Заозерный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Пировское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Дзержинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39168)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Бородино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39169)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Зеленогорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39170)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Тура\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39171)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Нижний Ингаш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39172)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Игарка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39173)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Иланский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39174)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Ирбейское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39175)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Берёзовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39176)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Хатанга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39177)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Ванавара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39178)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Байкит\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39179)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Караул\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3919)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Норильск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3919)4#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Норильск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39190)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Туруханск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39191)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Дудинка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39193)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Снежногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39195)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Енисейск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39196)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Казачинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39197)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Железногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39198)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Большая Мурта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39199)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Красноярский край\",\n                city: \"Сухобузимское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(394)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3942)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Кызыл\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39432)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Сарыг-Сеп\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39433)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Ак-Довурак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39434)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Чадан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39435)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Туран\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39436)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Шагонар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39437)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Бай-Хаак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39438)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Самагалтай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39439)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Эрзин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39441)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Кызыл-Мажалык\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39442)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Тээли\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39444)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Хандагайты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39445)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Суг-Аксы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39450)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Тоора-Хем\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39451)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Тыва\",\n                city: \"Мугур-Аксы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(395)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3952)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Иркутск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3953)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Братск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39530)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Тулун\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Усть-Илимск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39536)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Куйтун\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39537)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Баяндай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39538)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Бохан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39539)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Оса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39540)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Качуг\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39541)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Усть-Ордынский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Байкальск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Усолье-Сибирское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Слюдянка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Усть-Уда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39546)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Черемхово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39548)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Балаганск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39549)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Новонукутский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(3955)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Ангарск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39550)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Шелехов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Жигалово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39552)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Залари\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39553)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Саянск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39554)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Зима\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39557)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Нижнеудинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39558)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Ольхонск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39559)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Еланцы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39560)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Ербогачен\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39561)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Бодайбо\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39562)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Казачинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39563)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Тайшет\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39564)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Кутулик\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39565)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Усть-Кут\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39566)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Железногорск-Илимский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39567)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Чунский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39568)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Киренск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(39569)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Иркутская область\",\n                city: \"Мама\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(401)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4012)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Калининград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Черняховск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Озёрск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Гусев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Нестеров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Балтийск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Зеленоградск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Гурьевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Светлый\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Светлогорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Пионерский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Багратионовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Правдинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Полесск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Гвардейск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Советск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Неман\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Славск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(40164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калининградская область\",\n                city: \"Краснознаменск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(411)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4112)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Якутск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Бердигестях\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Вилюйск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Верхневилюйск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Нюрба\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Сунтар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Мирный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Ленск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Олёкминск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Солнечный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Усть-Мая\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Амга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Майя\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Покровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Алдан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Нерюнгри\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Хонуу\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Чурапча\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Ытык-Кюёль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Хандыга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Усть-Нера\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Зырянка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Среднеколымск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Черский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Чокурдах\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Белая Гора\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41160)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Батагай-Алыта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Борогонцы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Намцы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Сангар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Жиганск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Батагай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Депутатский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Тикси\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41168)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Саскылах\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41169)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Якутия\",\n                city: \"Оленёк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(413)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4132)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Магадан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Ола\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Палатка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Ягодное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Усть-Омчуг\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Сусуман\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Омсукчан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Сеймчан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Магаданская область\",\n                city: \"Эвенск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(415)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4152)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Петропавловск-Камчатский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41531)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Елизово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41532)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Усть-Большерецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41533)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Мильково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41534)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Усть-Камчатск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Вилючинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41536)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Соболево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41537)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Тигиль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41538)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Вилючинск-3\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41539)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Усть-Хайрюзово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41541)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Ключи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Эссо\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Палана\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Тиличики\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Оссора\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41546)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Каменское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41547)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Никольское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41548)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Камчатский край\",\n                city: \"Козыревск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(416)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4162)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: [ \"Благовещенск\", \"Благовещенский район\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41631)2-0#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Ивановский район\",\n                operator: \"Транссвязьтелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41632)3-0#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Октябрьский район\",\n                operator: \"Транссвязьтелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41633)3-0#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Райчихинск\",\n                operator: \"Транссвязьтелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41634)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Бурейский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41637)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Михайловский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41638)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Тамбовский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41639)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Константиновский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41641)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Белогорский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41642)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Серышевский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41643)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Свободненский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41644)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Мазановский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41645)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Ромненский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41646)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Селемджинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41647)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Райчихинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41648)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Архаринский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41649)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Ивановский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41651)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Шимановский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41652)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Октябрьский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41653)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Магдагачинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41654)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Сковородинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41655)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Селемджинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41656)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Тындинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41658)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Зейский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(421)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4212)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Хабаровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Николаевск-на-Амуре\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41636)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Завитинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41636)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Завитинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(41636)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Амурская область\",\n                city: \"Завитинский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Ванино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Советская Гавань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Охотск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Амурск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Чумикан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"им. Полины Осипенко\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Солнечный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Аян\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Чегдомын\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Богородское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Вяземский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Переяславка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Бикин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Троицкое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4217)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Хабаровский край\",\n                city: \"Комсомольск-на-Амуре\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(423)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Владивосток\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42331)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Славянка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42334)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: [ \"Вольно-Надеждинское\", \"Раздольное\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42335)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Большой Камень\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42337)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Артем\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42339)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Фокино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4234)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Уссурийск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Покровка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Пограничный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Михайловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Хороль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Камень-Рыболов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42351)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Черниговка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42352)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Спасск-Дальний\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Кировский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Лесозаводск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Дальнереченск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Лучегорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42359)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Новопокровка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4236)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: [ \"Находка\", \"Порт Восточный\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Арсеньев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Анучино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Партизанск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Владимиро-Александровское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42371)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Яковлевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42372)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Чугуевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42373)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Дальнегорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42374)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Терней\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42375)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Кавалерово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42376)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Ольга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42377)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Приморский край\",\n                city: \"Лазо\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(424)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4242)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Южно-Сахалинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42431)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Поронайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42432)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Углегорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42433)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Холмск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42434)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Александровск-Сахалинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42435)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Корсаков\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42436)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Невельск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42437)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Оха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42441)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Анива\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42442)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Долинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42443)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Макаров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42444)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Ноглики\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42446)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Томари\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42447)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Тымовское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42452)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Смирных\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42453)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Северо-Курильск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42454)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Курильск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42455)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Сахалинская область\",\n                city: \"Южно-Курильск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(426)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Еврейская автономная область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42622)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Еврейская автономная область\",\n                city: \"Биробиджан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42632)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Еврейская автономная область\",\n                city: \"Смидович\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42663)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Еврейская автономная область\",\n                city: \"Ленинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42665)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Еврейская автономная область\",\n                city: \"Амурзет\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42666)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Еврейская автономная область\",\n                city: \"Облучье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(427)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42722)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Анадырь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42732)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Угольные Копи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42733)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Беринговский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42734)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Эгвекинот\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42735)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Провидения\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42736)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Лаврентия\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42737)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Певек\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42738)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Билибино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(42739)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чукотский автономный округ\",\n                city: \"Мыс Шмидта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(471)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4712)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Курск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Курчатов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Глушково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Горшечное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Пристень\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Поныри\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Большое Солдатское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Хомутовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Льгов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Обоянь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Прямицыно\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Суджа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Фатеж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Щигры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Медвенка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Коренево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Железногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Белая\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Дмитриев-Льговский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Золотухино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Рыльск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Тим\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Солнцево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Мантурово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Конышевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Касторное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Кшенский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Курская область\",\n                city: \"Черемисиново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(472)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4722)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Белгород\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47231)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Короча\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47232)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Чернянка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47233)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Новый Оскол\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47234)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Алексеевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47235)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Волоконовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47236)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Валуйки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47237)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Вейделевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47238)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Ровеньки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47241)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Губкин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47242)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Прохоровка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47243)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Ивня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Строитель\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Ракитное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Борисовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47247)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Красногвардейское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47248)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Шебекино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4725)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Старый Оскол\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47261)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Грайворон\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47262)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Красное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47263)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Белгородская область\",\n                city: \"Красная Яруга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(473)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Воронеж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47340)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Рамонь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Новая Усмань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Каширское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Верхняя Хава\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Панино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Эртиль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Анна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Терновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Грибановский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47350)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Бобров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47352)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Таловая\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47353)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Новохоперск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Борисоглебск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Верхний Мамон\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Воробьёвка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Каменка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Бутурлиновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Павловск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Калач\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Нововоронеж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Петропавловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47366)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Богучар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Кантемировка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47370)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Нижнедевицк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47371)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Хохольский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47372)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: [ \"Семилуки\", \"Семилукский район\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47374)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Репьевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47375)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Острогожск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47376)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Поворино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47391)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Лиски\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47394)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Подгоренский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47395)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Ольховатка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47396)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Воронежская область\",\n                city: \"Россошь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(474)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4742)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Липецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47461)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Грязи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47462)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Добринка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47463)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Доброе\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47464)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Лев Толстой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47465)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Данков\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47466)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Лебедянь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47467)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Елец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47468)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Долгоруково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47469)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Красное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47471)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Задонск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47472)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Усмань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47473)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Волово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47474)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Тербуны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47475)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Чаплыгин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47476)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Становое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47477)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Хлевное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47478)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Липецкая область\",\n                city: \"Измалково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(475)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4752)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Тамбов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47531)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Рассказово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47532)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Сосновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47533)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Моршанск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47534)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Бондари\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Жердевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47536)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Дмитриевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47537)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Кирсанов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47541)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Котовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Мордово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Староюрьево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Петровское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Мичуринск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47546)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Мучкапский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47548)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Первомайский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Гавриловка Вторая\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47552)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Знаменка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47553)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Инжавино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47554)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Пичаево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47555)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Ржакса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47556)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Сатинка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47557)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Токарёвка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47558)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Уварово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(47559)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тамбовская область\",\n                city: \"Умёт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(481)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4812)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Смоленск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48130)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Сычевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Вязьма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Велиж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Шумячи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Рославль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Гагарин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Тёмкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Угра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Новодугино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Холм-Жирковский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Хиславичи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Рудня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Сафоново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Ярцево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Дорогобуж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Красный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Ельня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Демидов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Монастырщина\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Починок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Десногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Ершичи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Глинка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Духовщина\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Смоленская область\",\n                city: \"Кардымово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(482)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4822)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Тверь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48230)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Пено\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48231)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Бежецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48232)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Ржев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48233)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Вышний Волочек\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48234)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Кашин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48235)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Осташков\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48236)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Кимры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48237)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Красный Холм\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48238)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Бологое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48239)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Фирово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48242)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Конаково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Рамешки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Сонково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48249)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Калязин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48250)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Белый\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48251)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Торжок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48253)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Максатиха\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48255)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Удомля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48257)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Кувшиново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48258)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Оленино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48261)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Лихославль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48262)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Зубцов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48263)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Старица\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48264)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Весьегонск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48265)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Западная Двина\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48266)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Нелидово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48267)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Андреаполь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48268)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Торопец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48269)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Селижарово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48271)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Лесное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48272)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Сандово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48273)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Жарковский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48274)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Кесова Гора\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48275)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Молоково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48276)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тверская область\",\n                city: \"Спирово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(483)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4832)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: [ \"Брянск\", \"Сельцо\", \"Белые Берега\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48330)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Сураж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48331)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Рогнедино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48332)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Дубровка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48333)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: [ \"Дятьково\", \"Фокино\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48334)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Жуковка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48335)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Карачев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48336)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Клинцы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48338)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Клетня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48339)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Мглин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48340)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Гордеевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Выгоничи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Навля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Новозыбков\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Жирятино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Почеп\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Красная Гора\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Климово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Стародуб\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Погар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48351)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Унеча\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48352)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Трубчевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48353)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Суземка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Локоть\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Комаричи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Севск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48358)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Брянская область\",\n                city: \"Злынка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(484)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4842)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Калуга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48431)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Малоярославец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48432)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Жуков\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48433)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Медынь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48434)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Кондрово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48435)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Таруса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48436)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Юхнов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48437)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Ферзиково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48438)2-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Балабаново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48438)4-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Боровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48438)6-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Балабаново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48439)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Обнинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48441)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Перемышль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48442)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Козельск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48443)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Ульяново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48444)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Людиново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48445)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Жиздра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48446)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Мещовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48447)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Думиничи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48448)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Бабынино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48449)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Износки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48451)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Сухиничи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48452)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Мосальск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48453)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Хвастовичи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48454)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Барятино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48455)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Спас-Деменск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48456)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Киров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48457)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калужская область\",\n                city: \"Бетлица\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(485)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4852)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Ярославль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48531)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Некрасовское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48532)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Углич\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48533)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Тутаев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48534)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Гаврилов Ям\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Переславль-Залесский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48536)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Ростов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48538)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Данилов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48539)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Борисоглебский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Большое Село\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Любим\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Мышкин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Брейтово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48546)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Пошехонье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48547)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Новый Некоуз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48549)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Пречистое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4855)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ярославская область\",\n                city: \"Рыбинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(486)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4862)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: [ \"Орёл\", \"Орловский район\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48640)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Болхов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48642)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Хотынец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48643)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Кромы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48644)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Шаблыкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48645)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Змиевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48646)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Мценск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48647)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Нарышкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48648)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Залегощь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48649)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Дмитровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48661)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"\",\n                operator: \"МТС\",\n                desc: \"мобильные телефоны с зоновыми номерами\"\n            }, {\n                mask: \"+7(48662)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Знаменское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48663)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Красная Заря\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48664)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Покровское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48665)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Сосково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48666)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Тросна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48667)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Корсаково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48672)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Долгое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48673)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Новосиль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48674)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Колпны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48675)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Глазуновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48676)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Верховье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48677)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Ливны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48678)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Хомутово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48679)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Орловская область\",\n                city: \"Малоархангельск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(487)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4872)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Тула\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48731)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Узловая\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48732)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Дубна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48733)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Арсеньево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48734)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Заокский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48735)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Кимовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48736)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Одоев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48741)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Ефремов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48742)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Белев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48743)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Куркино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48744)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Архангельское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48745)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Венев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48746)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Донской\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48751)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Щекино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48752)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Плавск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48753)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Алексин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48754)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Киреевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48755)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Тёплое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48756)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Чернь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48761)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Богородицк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48762)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Новомосковск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48763)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Суворов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48766)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Ясногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48767)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Ленинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(48768)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Тульская область\",\n                city: \"Волово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(491)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4912)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: [ \"Рязань\", \"Солотча\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49130)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Михайлов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Касимов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Ряжск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Сасово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Спасск-Рязанский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Шилово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Рыбное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Чучково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Кадом\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Новомичуринск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Спас-Клепики\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Кораблино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Ермишь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Пителино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Путятино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Шацк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Сараи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Старожилово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Сапожок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Захарово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Ухолово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Пронск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Скопин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Милославское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Рязанская область\",\n                city: \"Александро-Невский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(492)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4922)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Владимир\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49231)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Суздаль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49232)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Ковров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49233)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Вязники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49234)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Муром\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49235)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Судогда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49236)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Красная Горбатка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49237)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Киржач\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49238)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Гороховец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49241)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Гусь-Хрустальный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49242)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Собинка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49243)2-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Петушки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49243)6-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Покров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Александров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Кольчугино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Юрьев-Польский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49247)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Меленки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49248)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Камешково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49254)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Владимирская область\",\n                city: \"Радужный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(493)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4932)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Иваново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49331)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Кинешма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49333)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Заволжск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49334)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Палех\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49336)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Родники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49337)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Юрьевец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49339)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Приволжск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Фурманов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Тейково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Лух\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Пучеж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Пестяки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Южа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Верхний Ландех\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49351)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Шуя\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49352)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Комсомольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49353)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Ильинское-Хованское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Вичуга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Гаврилов Посад\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Савино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ивановская область\",\n                city: \"Лежнево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(494)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(4942)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Кострома\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49430)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Антропово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49431)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Нерехта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49432)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Красное-на-Волге\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49433)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Судиславль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49434)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Сусанино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49435)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Буй\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49436)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Солигалич\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49437)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Галич\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49438)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Островское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49439)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Павино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49440)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Парфеньево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49441)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Чухлома\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49442)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Кадый\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49443)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Кологрив\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49444)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Нея\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49445)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Макарьев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49446)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Мантурово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49447)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Георгиевское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49448)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Поназырево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49449)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Шарья\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49450)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Вохма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49451)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Боговарово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49452)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Пыщуг\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(49453)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Костромская область\",\n                city: \"Волгореченск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)323-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Аэропорт Домодедово\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)323-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Аэропорт Домодедово\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)338-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Мосрентген\",\n                operator: \"МГТС\",\n                desc: \"часть номеров АТС\"\n            }, {\n                mask: \"+7(495)339-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Мосрентген\",\n                operator: \"МГТС\",\n                desc: \"часть номеров АТС\"\n            }, {\n                mask: \"+7(495)355-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Развилка\",\n                operator: \"ОАО «Газпромсвязь»\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)408-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Долгопрудный\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)439-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Московский\",\n                operator: \"ЦентрТелеком\",\n                desc: \"часть номеров АТС\"\n            }, {\n                mask: \"+7(495)50#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Люберцы\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)500-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Мегафон\", \"Центральный Телеграф\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(495)51#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Королёв\", \"Юбилейный\" ],\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)52#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Балашиха\", \"Железнодорожный\", \"Реутов\" ],\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)541-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Видное\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)542-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Мегафон\", \"Центральный Телеграф\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(495)543-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Мегафон\", \"Центральный Телеграф\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(495)544-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Мегафон\", \"Центральный Телеграф\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(495)545-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Мегафон\", \"Центральный Телеграф\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(495)546-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: \"Ростелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)546-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Домодедово\",\n                operator: \"Ростелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)546-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Видное\", \"Развилка\" ],\n                operator: \"Ростелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)546-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Домодедово\",\n                operator: \"Ростелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-0#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Видное\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Видное\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Видное\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Видное\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Поселок совхоза им. Ленина\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Поселок совхоза им. Ленина\", \"Поселок Володарского\", \"Горки Ленинские\" ],\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Поселок Володарского\", \"Горки Ленинские\" ],\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)548-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Видное\",\n                operator: \"ЦентрТелеком\",\n                desc: \"промзона\"\n            }, {\n                mask: \"+7(495)549-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Видное\", \"Московский\", \"пос. Ново-Дрожжино\", \"пос. Измайлово\", \"пос. Булатниково\", \"пос. Дубровский\", \"пос. Института Садоводства\" ],\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)55#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Люберцы\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)552-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Лыткарино\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)555-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Лыткарино\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)56#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Красногорск\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)57#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Королёв\", \"Мытищи\", \"Юбилейный\" ],\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)573-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Химки\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)576-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Долгопрудный\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)577-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Лобня\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)578-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Лобня\", \"Международный аэропорт «Шереметьево»\" ],\n                operator: \"Порт-Телеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)579-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: [ \"Долгопрудный\", \"Лобня\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)58#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Химки\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)585-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Мегафон\", \"Центральный Телеграф\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(495)589-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Мегафон\", \"Центральный Телеграф\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(495)59#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Одинцово\",\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(495)597-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва и ближнее Подмосковье\",\n                city: \"Москва\",\n                operator: [ \"Центральный Телеграф\", \"ЦентрТелеком\" ],\n                desc: \"\"\n            }, {\n                mask: \"+7(496)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)20#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Талдом\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)21#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Дубна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)22#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Дмитров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)24#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Клин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)25#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Щёлковский район\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)26#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Солнечногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)27#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Руза\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)28#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Лотошино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)30#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"ЗАО Калита-Телеком\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)31#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Истра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)34#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Наро-Фоминск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)36#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Волоколамск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)37#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Шаховская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)38#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Можайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)40#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Егорьевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)41#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Орехово-Зуево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)42#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Орехово-Зуево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)43#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Павловский Посад\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)44#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Воскресенск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)45#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Шатура\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)46#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Раменское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)51#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Ногинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)52#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Черноголовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)53#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Пушкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)54#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Сергиев Посад\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)55#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Сергиев Посад\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)56#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Щелково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)57#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Электросталь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)61#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Коломна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)63#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Луховицы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)64#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Ступино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)66#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Зарайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)67#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Серебряные Пруды\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)69#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Кашира\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)70#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Озеры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)72#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Чехов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)73#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Серпухов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)75#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Подольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)76#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Подольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)77#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Серпухов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(496)79#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Московская область\",\n                city: \"Домодедово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(498)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(498)48#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: \"Жуковский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(498)54#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: [ \"Видное\", \"Ленинский район\" ],\n                operator: \"ЦентрТелеком\",\n                desc: \"\"\n            }, {\n                mask: \"+7(498)617-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: [ \"Газопровод\", \"Коммунарка\" ],\n                operator: \"ЗАО «Газтелеком»\",\n                desc: \"Ленинский район\"\n            }, {\n                mask: \"+7(498)657-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: \"Развилка\",\n                operator: \"ООО «Газпром связь»\",\n                desc: \"Ленинский район\"\n            }, {\n                mask: \"+7(498)664-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: \"Железнодорожный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(498)68#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: \"Лобня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(498)713-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: \"Долгопрудный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(498)744-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Лесопарковый защитный пояс Москвы\",\n                city: \"Долгопрудный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(499)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(499)39#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва\",\n                city: \"Москва\",\n                operator: \"МегаФон\",\n                desc: \"\"\n            }, {\n                mask: \"+7(499)50#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва\",\n                city: \"Москва\",\n                operator: \"Центральный Телеграф\",\n                desc: \"\"\n            }, {\n                mask: \"+7(499)755-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Москва\",\n                city: \"Москва\",\n                operator: \"МегаФон\",\n                desc: \"\"\n            }, {\n                mask: \"+7(811)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8112)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Псков\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Гдов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Струги Красные\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Плюсса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Порхов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Дно\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Дедовичи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Красногородск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Опочка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Локня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Себеж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Бежаницы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Пустошка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Новоржев\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Новосокольники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Палкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Пушкинские Горы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Пыталово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Печоры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Кунья\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Усвяты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Невель\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Остров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Псковская область\",\n                city: \"Великие Луки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(812)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Санкт-Петербург\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(813)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Тосно\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Кировск\", \"Шлиссельбург\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Волхов\", \"Новая Ладога\", \"Сясьстрой\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Лодейное Поле\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Подпорожье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81366)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Бокситогорск\", \"Пикалёво\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Тихвин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81368)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Кириши\", \"Будогощь\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81369)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Сосновый Бор\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81370)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Всеволожск\", \"Токсово\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81371)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Гатчина\", \"Вырица\", \"Коммунар\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81372)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Луга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81373)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Волосово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81374)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Сланцы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81375)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Кингисепп\", \"Ивангород\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81376)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Ломоносов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81378)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: [ \"Выборг\", \"Высоцк\", \"Приморск\", \"Светогорск\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81379)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ленинградская область\",\n                city: \"Приозерск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(814)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8142)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Петрозаводск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Сортавала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)3-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Вяртсиля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)3-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Хелюля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)3-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Рускеала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)3-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Пуйккола\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)3-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Хаапалампи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)3-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кааламо\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81430)3-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Заозёрный\", \"Ламберг\", \"Сортавала\", \"Хюмпеля\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Сегежа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)3-0#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кочкома\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)3-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Олений\", \"Пертозеро\", \"Черный Порог\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)3-2#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Валдай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)3-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Волдозеро\", \"Идель\", \"Кяргозеро\", \"Попов Порог\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)3-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Каменный Бор\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)3-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Полга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81431)3-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Надвоицы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81433)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Питкяранта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81433)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Ляскеля\", \"Рауталахти\", \"Харлу\", \"Хийденсельга\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81433)2-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Ряймяля\", \"Салми\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81433)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Импилахти\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81433)2-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Леппясилта\", \"Уукса\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Медвежьегорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)3-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Толвуя\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)3-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Шуньга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)3-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Великая Губа\", \"Великая Нива\", \"Кижи\", \"Космозеро\", \"Ламбасручей\", \"Сенная Губа\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)3-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Кумса\", \"Лавас Губа\", \"Лумбуши\", \"Чебино\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)3-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Волозеро\", \"Габсельга\", \"Сосновка\", \"Челмужи\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)4-2#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Огорелыши\", \"Сергиево\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)4-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Повенец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)4-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Пиндуши\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81434)4-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Паданы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Олонец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)2-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Ильинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Верхний Олонец\", \"Ковера\", \"Речная Сельга\", \"Сяндеба\", \"Тулокса\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)2-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Михайловское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Алексала\", \"Мегрега\", \"Рыпушкалица\", \"Тукса\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)2-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Видлица\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)2-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Коткозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81436)2-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Куйтежа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Беломорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)3-0#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Сумский Посад\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)3-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Золотец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)3-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Колежма\", \"Лапино\", \"Лехта\", \"Маленьга\", \"Новое Машозеро\", \"Нюхча\", \"Тунгуза\", \"Хвойный\", \"Шуерецкое\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)3-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Сосновец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)3-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Лесобиржа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)3-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Вирандозеро\", \"Летнереченский\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81437)3-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Пушной\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Лоухи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кестеньга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)2-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Софпорог\", \"Тунгозеро\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)2-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Пяозерский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)3-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Амбарный\", \"Плотина\", \"Сосновый\", \"Энгозеро\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)4-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Чупа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)4-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Чкаловский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81439)45#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Тэдино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81450)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Лахденпохья\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81450)2-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Ихала\", \"Мийнала\", \"Яккима\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81450)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Куркиёки\", \"Хийтола\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81450)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Элисенваара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кондопога\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кедрозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)3-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Гирвас\", \"Тивдия\", \"Эльмус\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)3-2#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Спасская Губа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)3-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Кивач\", \"Новинка\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)3-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Кяпесельга\", \"Нелгомозеро\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)3-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кончезеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)3-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Берёзовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81451)3-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Суна\", \"Янишполе\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Пудож\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)2-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Бочилово\", \"Каршево\", \"Колово\", \"Колодозеро\", \"Семёново\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Водла\", \"Кубово\", \"Онежский\", \"Рагнукса\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)2-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Кривцы\", \"Приречный\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Авдеево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)2-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Подпорожье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)2-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Шала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81452)2-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Пяльма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81454)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Калевала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81454)5-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кепа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81454)5-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Юшкозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81454)5-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Войница\", \"Куусиниеми\", \"Луусалми\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Муезерский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)2-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Тикша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Реболы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)2-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Ригозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Волома\", \"Пенинга\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)2-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Суккозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)2-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Ледмозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81455)2-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Лендеры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Пряжа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)2-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Вилла Гора\", \"Соддер\", \"Сяпся\", \"Эссойла\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Ведлозеро\", \"Кинелахта\", \"Койвусельга\", \"Колатсельга\", \"Савиново\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)2-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Чална\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Матросы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)2-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Верхние Важины\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)2-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Крошнозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81456)2-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Святозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Суоярви\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)2-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Лахколамби\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)2-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Поросозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)2-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Найстеньярви\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)2-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Вегарус\", \"Суоёки\", \"Тойвола\", \"Хаутоваара\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)2-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Вешкелица\", \"Лоймола\", \"Пийтсиёки\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)2-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Леппясюрья\", \"Райконкоски\", \"Суйстамо\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81457)3-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Леппяниеми\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кемь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Калгалакша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-2#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Панозеро\", \"Поньгома\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-4#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: [ \"Авнепорог\", \"Кривой Порог\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Рабочеостровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-6#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Шомба\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-7#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Кузема\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-8#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Баб-Губа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81458)3-9#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Сокол\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81459)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Костомукша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81459)9-3#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Контокки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81459)9-5#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Карелия\",\n                city: \"Вокнаволок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(815)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8152)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Мурманск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81530)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Снежногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81531)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Кировск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81532)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Полярные Зори\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81533)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Кандалакша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Ковдор\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81536)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Мончегорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81537)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Североморск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81538)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Ловозеро\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81539)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Гаджиево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Полярный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81552)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Оленегорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81553)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Кола\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81554)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: [ \"Заполярный\", \"Никель\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81555)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Апатиты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81556)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Заозерск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81558)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Островной\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81559)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мурманская область\",\n                city: \"Умба\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(816)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8162)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Великий Новгород\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81650)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Парфино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81651)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Демянск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81652)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Старая Русса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81653)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Мошенское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81654)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Холм\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81655)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Сольцы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81656)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Шимск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81657)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Окуловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81658)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Поддорье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81659)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Крестцы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81660)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Малая Вишера\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81661)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Батецкий\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81662)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Волот\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81663)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Марёво\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81664)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Боровичи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81665)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Чудово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81666)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Валдай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81667)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Хвойная\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81668)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Любытино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81669)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Новгородская область\",\n                city: \"Пестово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(817)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8172)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Вологда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81732)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Харовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81733)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Сокол\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81737)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Устюжна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81738)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Великий Устюг\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81739)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Тотьма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81740)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Кичменгский Городок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81741)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Чагода\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81742)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Кадуй\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81743)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Бабаево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81744)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Вожега\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81745)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Село имени Бабушкина\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81746)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Вытегра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81747)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Нюксеница\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81748)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Тарногский Городок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81749)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Шуйское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81751)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Шексна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81752)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Сямжа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81753)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Устье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81754)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Никольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81755)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Грязовец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81756)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Белозерск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81757)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Кириллов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81758)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Липин Бор\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81759)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Верховажье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(818)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Архангельск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81830)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Холмогоры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81831)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Березник\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81832)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Плесецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81833)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Лешуконское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81834)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Мирный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81835)9-0#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Соловецкий\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81836)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Вельск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81837)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Котлас\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81838)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Няндома\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81839)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Онега\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81840)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Красноборск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81841)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Каргополь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81842)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Северодвинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81843)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Ильинско-Подомское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81848)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Мезень\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81850)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Коряжма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81851)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Шенкурск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81852)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Новодвинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81853)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Нарьян-Мар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81854)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Верхняя Тойма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81855)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Октябрьский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81856)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Карпогоры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81858)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Коноша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(81859)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: [ \"Архангельская область\", \"Ненецкий автономный округ\" ],\n                city: \"Яренск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(820)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8202)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Вологодская область\",\n                city: \"Череповец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(821)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8212)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Сыктывкар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82130)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Выльгорт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Визинга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Койгородок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Объячево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Айкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Усогорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Корткерос\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Усть-Кулом\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Троицко-Печорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Емва\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Ижма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Усть-Цильма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Печора\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Усинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Инта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Вуктыл\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Сосногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(82151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Воркута\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8216)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Коми\",\n                city: \"Ухта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(831)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Нижний Новгород\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8313)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Дзержинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83130)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Саров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Дивеево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Володарск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Сокольское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Большое Болдино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83139)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Первомайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Вад\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Балахна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Кстово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Арзамас\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Перевоз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Лысково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Ветлуга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Тоншаево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Шахунья\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Тонкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Урень\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Шаранга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Красные Баки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Ковернино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Варнавино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Бор\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83160)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Чкаловск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Городец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Семёнов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Воскресенское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Воротынец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Спасское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Княгинино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Большое Мурашкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83168)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Дальнее Константиново\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83169)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Заволжье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83170)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Богородск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83171)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: [ \"Павлово\", \"Ворсма\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83172)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Бутурлино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83173)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Вача\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83174)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Сосновское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83175)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Навашино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83176)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Кулебаки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83177)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Выкса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83178)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Вознесенское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83179)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Ардатов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83190)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Шатки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83191)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Сергач\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83192)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Пильна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83193)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Сеченово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83194)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Уразовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83195)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Гагино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83196)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Лукоянов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83197)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Нижегородская область\",\n                city: \"Починки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(833)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8332)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Киров\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83330)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Арбаж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83331)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Афанасьево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83332)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Фаленки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83333)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Богородское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83334)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Вятские Поляны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83335)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Верхошижемье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83336)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Даровской\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83337)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Зуевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83338)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Кильмезь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83339)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Кирс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83340)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Тужа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Кикнур\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Котельнич\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Кумены\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Лебяжье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Ленинское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Луза\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Малмыж\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Мураши\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Нагорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83350)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Нема\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83351)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Подосиновец\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83352)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Омутнинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83353)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Опарино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Оричи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Пижанка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Санчурск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83358)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Свеча\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83359)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Уни\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Кирово-Чепецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Слободской\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Уржум\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Белая Холуница\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Орлов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83366)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Юрья\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Яранск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83368)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Нолинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83369)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Суна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83375)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кировская область\",\n                city: \"Советск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(834)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8342)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Саранск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83431)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Ардатов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83432)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Старое Шайгово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83433)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Кемля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83434)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Атяшево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83436)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Большие Березники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83437)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Чамзинка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83438)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Ромоданово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83439)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Кочкурово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83441)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Лямбирь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83442)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Большое Игнатово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83443)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Краснослободск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83444)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Ельники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83445)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Темников\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83446)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Теньгушево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83447)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Дубенки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83448)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Кадошкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83449)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Инсар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83451)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Рузаевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83453)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Ковылкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83454)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Атюрьево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83456)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Торбеево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83457)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Явас\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83458)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Мордовия\",\n                city: \"Зубова Поляна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(835)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8352)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Чебоксары\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8352)7#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Новочебоксарск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83530)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Красноармейское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83531)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Алатырь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83532)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Батырево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83533)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Канаш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83534)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Козловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83535)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Аликово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83536)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Шумерля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83537)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Вурнары\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83538)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Ибреси\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83539)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Комсомольское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83540)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Кугеси\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83541)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Моргауши\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Мариинский Посад\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Порецкое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Урмары\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Цивильск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83546)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Шемурша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83547)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Ядрин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83548)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Янтиково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83549)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Яльчики\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чувашия\",\n                city: \"Красные Четаи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(836)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8362)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Йошкар-Ола\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83631)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Волжск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83632)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Козьмодемьянск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83633)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Сернур\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83634)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Мари-Турек\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83635)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Морки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83636)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Новый Торъял\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83637)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Куженер\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83638)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Советский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83639)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Параньга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83641)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Оршанка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83643)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Килемары\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83644)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Юрино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(83645)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Марий Эл\",\n                city: \"Звенигово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)22#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"Сухум\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)23#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"Гагра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)24#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"Гудаута\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)25#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"Очамчыра\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)26#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"Ткуарчал\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)27#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"Гулрыпш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(840)28#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Абхазия\",\n                city: \"Гал\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(841)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8412)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Пенза\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Бессоновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Беково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Вадинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Башмаково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Исса\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Русский Камешкир\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Колышлей\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Кондоль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Лопатино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Мокшан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Спасск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Пачелма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Белинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Нижний Ломов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Земетчино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Каменка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Кузнецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Городище\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Шемышейка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Лунино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Малая Сердоба\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Наровчат\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Неверкино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Никольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Сердобск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84168)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Сосновоборск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84169)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Пензенская область\",\n                city: \"Тамала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(842)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8422)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Ульяновск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84230)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Старая Майна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84231)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Чердаклы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84232)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Новая Малыкла\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84233)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Сенгилей\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84234)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Тереньга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84235)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Димитровград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84237)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Кузоватово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84238)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Новоспасское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84239)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Радищево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84240)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Базарный Сызган\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84241)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Инза\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84242)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Сурское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84243)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Вешкайма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Майна\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Большое Нагаткино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Карсун\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84247)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Николаевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84248)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Павловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84249)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Старая Кулатка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84253)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Барыш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84254)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Ишеевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84255)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ульяновская область\",\n                city: \"Новоульяновск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(843)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Казань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Алексеевское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Чистополь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Аксубаево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Нурлат\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84346)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Базарные Матаки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Болгар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Новошешминск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84360)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Тюлячи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Рыбная Слобода\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84362)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Богатые Сабы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Кукмор\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Высокая Гора\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84366)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Арск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Пестрецы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84368)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Балтаси\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84369)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Большая Атня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84370)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Большие Кайбицы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84371)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Зеленодольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84373)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Тетюши\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84374)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Буинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84375)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Старое Дрожжаное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84376)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Апастово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84377)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Камское Устье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84378)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Лаишево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84379)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Верхний Услон\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84396)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Черемшан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(844)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(844)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Волгоград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(844)70#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Волгоград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8443)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Волжский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84442)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Урюпинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84443)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Нехаевская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84444)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Новониколаевский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84445)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Преображенская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84446)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Алексеевская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84447)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Новоаннинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84452)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Елань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84453)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Рудня\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84454)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Жирновск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84455)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Котово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84456)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Ольховка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84457)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Камышин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84458)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Дубовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84461)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Даниловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84462)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Кумылженская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84463)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Михайловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84464)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Серафимович\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84465)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Фролово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84466)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Клетская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84467)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Иловля\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84468)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Городище\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84472)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Калач-на-Дону\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84473)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Суровикино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84474)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Чернышковский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84475)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Октябрьский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84476)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Котельниково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84477)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Светлый Яр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84478)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Ленинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84479)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Средняя Ахтуба\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84492)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Палласовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84493)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Старая Полтавка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84494)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Николаевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84495)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Волгоградская область\",\n                city: \"Быково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(845)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8452)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Саратов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8453)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Балаково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8453)3#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Балаково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8453)4#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Балаково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8453)5#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Энгельс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8453)7#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Энгельс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8453)9#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Энгельс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84540)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Ртищево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Аркадак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Турки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Романовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Балашов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84548)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Самойловка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84549)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Калининск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84550)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Красноармейск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Лысые Горы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84552)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Аткарск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84554)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Екатериновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84555)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Петровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84557)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Новые Бурасы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84558)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Татищево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84560)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Красный Кут\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84561)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Питерка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84562)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Новоузенск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84563)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Дергачи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84564)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Ершов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84565)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Мокроус\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84566)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Степное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84567)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Маркс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84568)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Воскресенское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84573)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Духовницкое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84574)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Пугачёв\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84575)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Перелюб\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84576)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Озинки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84577)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Горный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84578)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Александров Гай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84579)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Ивантеевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84591)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Базарный Карабулак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84592)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Балтай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84593)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Вольск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84595)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Хвалынск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84596)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Саратовская область\",\n                city: \"Ровное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)300-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)302-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)303-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)309-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)31#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)33#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)34#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)37#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(846)9##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Самара\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84630)5-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Волжский Утёс\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84635)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Новокуйбышевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84639)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Чапаевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8464)3#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Сызрань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8464)4#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Сызрань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8464)9#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Сызрань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84646)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Октябрьск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84647)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Приволжье\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84648)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Шигоны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84650)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Кошки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84651)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Челно-Вершины\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84652)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Шентала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84653)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Клявлино\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84654)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Исаклы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84655)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Сергиевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84656)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Похвистнево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84657)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Красный Яр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84658)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Елховка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84660)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Кинель-Черкассы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84661)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Отрадный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84663)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Кинель\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84664)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Камышла\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84666)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Богатое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84667)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Борское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84670)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Нефтегорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84671)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Алексеевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84672)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Большая Черниговка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84673)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Большая Глушица\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84674)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Пестравка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84675)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Красноармейское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84676)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Безенчук\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84677)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Хворостянка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(847)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84722)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Элиста\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84731)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Городовиковск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84732)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Ики-Бурул\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84733)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Лагань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84734)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Малые Дербеты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84735)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Кетченеры\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84736)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Приютное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84741)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Садовое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84742)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Троицкое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84743)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Комсомольский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84744)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Цаган Аман\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84745)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Яшалта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84746)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Яшкуль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84747)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Калмыкия\",\n                city: \"Большой Царын\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(848)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8482)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Тольятти\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(84862)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Самарская область\",\n                city: \"Жигулевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(851)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8512)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Астрахань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Знаменск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Ахтубинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Володарский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Енотаевка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Икряное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Камызяк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Красный Яр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Лиман\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Харабали\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Чёрный Яр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85171)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Нариманов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85172)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Астраханская область\",\n                city: \"Началово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(855)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8552)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Набережные Челны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8553)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Альметьевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85549)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Менделеевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8555)3#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Нижнекамск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8555)4#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Нижнекамск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85551)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Агрыз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85552)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Актаныш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85555)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Мензелинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85556)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Муслюмово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85557)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Елабуга\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85558)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Заинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85559)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Сарманово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85563)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Мамадыш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85569)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Бавлы\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8557)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Набережные Челны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8557)3#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Набережные Челны\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85592)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Азнакаево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85593)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Уруссу\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85594)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Бугульма\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(85595)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Татарстан\",\n                city: \"Лениногорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(861)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Краснодар\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86130)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Тимашёвск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86131)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Крымск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Ейск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86133)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Анапа\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Усть-Лабинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86137)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Армавир\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86138)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Кропоткин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86140)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Успенское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86141)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Геленджик\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Кореновск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Приморско-Ахтарск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86144)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Отрадная\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Ленинградская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Славянск-на-Кубани\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Курганинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Темрюк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86149)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Новопокровская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86150)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Абинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86151)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Старощербиновская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Апшеронск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86153)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Староминская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Белая Глина\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Белореченск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Брюховецкая\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86157)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Выселки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86158)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Тбилисская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86159)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Горячий Ключ\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86160)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Гулькевичи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86161)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Крыловская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86162)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Динская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86163)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Калининская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Каневская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86165)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Полтавская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86166)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Северская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86167)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Туапсе\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86168)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Кущёвская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86169)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Лабинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8617)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Новороссийск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86191)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Павловская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86192)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Мостовской\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86193)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Кавказская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86195)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Новокубанск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86196)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Тихорецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(862)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(862)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: [ \"Аше\", \"Вардане\", \"Головинка\", \"Головинка\", \"Сочи\", \"Хоста\" ],\n                operator: \"\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(862)23#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"\",\n                operator: \"МТС\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(862)24#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Адлер\",\n                operator: \"\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(862)247-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Кудепста\",\n                operator: \"\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(862)252-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: [ \"Дагомыс\", \"Лоо\" ],\n                operator: \"\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(862)27#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"Лазаревское\",\n                operator: \"\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(862)295-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Краснодарский край\",\n                city: \"\",\n                operator: \"МегаФон\",\n                desc: \"агломерация Большой Сочи\"\n            }, {\n                mask: \"+7(863)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(863)2##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Ростов-на-Дону\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(863)3##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Ростов-на-Дону\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8634)3#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Таганрог\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8634)43-1#-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Таганрог\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8634)6#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Таганрог\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86340)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Родионово-Несветайская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Матвеев-Курган\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Азов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Кагальницкая\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86347)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Покровское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86348)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Куйбышево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86349)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Чалтырь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8635)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Новочеркасск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86350)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Аксай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86351)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Усть-Донецкий\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86353)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Вёшенская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86354)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Батайск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86355)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Зверево\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86356)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Семикаракорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86357)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Багаевская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86358)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Весёлый\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86359)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Зерноград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8636)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Шахты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86360)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Каменоломни\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86361)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Гуково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86363)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Советская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86364)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Казанская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86365)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Каменск-Шахтинский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86367)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Красный Сулин\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86368)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Донецк\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86369)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Новошахтинск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86370)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Егорлыкская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86371)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Целина\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86372)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Сальск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86373)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Песчанокопское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86374)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Пролетарск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86375)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Орловский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86376)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Зимовники\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86377)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Дубовское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86378)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Заветное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86379)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Ремонтное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86382)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Боковская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86383)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Белая Калитва\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86384)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Морозовск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86385)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Миллерово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86386)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Тарасовский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86387)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Чертково\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86388)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Кашары\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86389)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Милютинская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8639)2#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Волгодонск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86391)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Цимлянск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86393)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Константиновск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86394)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Романовская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86395)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Большая Мартыновка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86396)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Обливская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86397)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ростовская область\",\n                city: \"Тацинская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(865)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8652)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Ставрополь\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86540)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Грачёвка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86541)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Красногвардейское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86542)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Ипатово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86543)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Левокумское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86544)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Новоалександровск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86545)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Изобильный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86546)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Донское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86547)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Светлоград\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86548)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Новоселицкое\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86549)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Благодарный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86550)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Кочубеевское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86552)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Зеленокумск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86553)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Михайловск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86554)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Невинномысск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86555)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Дивное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86556)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Курсавка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86557)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Александровское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86558)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Нефтекумск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86559)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Буденновск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86560)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Арзгир\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86563)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Степное\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86565)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Летняя Ставка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(866)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8662)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Нальчик\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86630)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Чегем\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86631)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Прохладный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86632)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Терек\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86633)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Майский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86634)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Баксан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86635)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Нарткала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86636)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Кашхатау\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86637)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Залукокоаже\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86638)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Кабардино-Балкария\",\n                city: \"Тырныауз\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(867)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8672)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Владикавказ\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86731)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Алагир\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86732)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Ардон\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86733)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Дигора\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86734)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Чикола\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86735)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Эльхотово\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86736)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Моздок\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86737)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Беслан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86738)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Октябрьское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(86739)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Северная Осетия\",\n                city: \"Архонская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(871)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8712)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Грозный\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87132)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Знаменское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87134)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Ведено\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87135)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Шатой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87136)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Шелковская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87142)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Ачхой-Мартан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87143)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Наурская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87145)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Урус-Мартан\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87146)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Шали\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87147)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Аргун\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87148)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Ножай-Юрт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87152)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Гудермес\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87154)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Серноводск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87155)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Курчалой\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87156)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: [ \"Толстой-Юрт\", \"Старые Атаги\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87164)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Чеченская Республика\",\n                city: \"Итум-Кале\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(872)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8722)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Махачкала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87230)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Сергокала\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87231)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Хасавюрт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87232)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Карабудахкент\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87233)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Хунзах\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87234)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Кизилюрт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87235)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Магарамкент\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87236)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Касумкент\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87237)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Буйнакск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87238)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Маджалис\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87239)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Кизляр\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87240)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Дербент\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87242)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Новолакское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87243)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: [ \"Тпиг\", \"Агул\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87244)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Хив\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87245)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Избербаш\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87246)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Каспийск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87247)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Бабаюрт\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87248)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Новокаякент\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87249)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Хучни\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87252)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Леваши\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87254)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Уркарах\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87255)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Гергебиль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87256)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Терекли-Мектеб\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87257)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Унцукуль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87258)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Гуниб\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87259)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Хебда\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87260)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Акуша\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87261)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Тарумовка\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87262)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Курах\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87263)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Ахты\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87264)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Рутул\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87265)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Тлярата\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87266)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Цуриб\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87267)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Кумух\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87268)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Вачи\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87271)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Ботлих\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87272)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Мехельта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87273)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Агвали\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87274)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Бежта\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87275)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Дагестанские Огни\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87276)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Южно-Сухокумск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87279)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Дагестан\",\n                city: \"Дылым\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(873)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Ингушетия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8732)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Ингушетия\",\n                city: \"Назрань\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87341)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Ингушетия\",\n                city: \"Орджоникидзевская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87342)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Ингушетия\",\n                city: \"Малгобек\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87343)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Ингушетия\",\n                city: \"Джейрах\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87344)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Ингушетия\",\n                city: \"Карабулак\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87345)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Ингушетия\",\n                city: \"Магас\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(877)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8772)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Майкоп\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87770)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Кошехабль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87771)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Тахтамукай\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87772)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Адыгейск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87773)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Хакуринохабль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87777)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Тульский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87778)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Красногвардейское\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87779)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Адыгея\",\n                city: \"Гиагинская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(878)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8782)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Черкесск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87870)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Адыге-Хабль\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87872)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: [ \"Теберда\", \"Домбай\" ],\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87873)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Хабез\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87874)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Кавказский\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87875)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Усть-Джегута\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87876)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Преградная\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87877)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Учкекен\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87878)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Зеленчукская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87879)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Республика Карачаево-Черкесия\",\n                city: \"Карачаевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(879)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87922)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Минеральные Воды\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(8793)##-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Пятигорск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87932)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Железноводск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87934)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Ессентуки\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87935)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Лермонтов\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87937)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Кисловодск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87938)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Новопавловск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87951)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Георгиевск\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87961)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Ессентукская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(87964)#-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                region: \"Ставропольский край\",\n                city: \"Курская\",\n                operator: \"\",\n                desc: \"\"\n            }, {\n                mask: \"+7(9##)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                type: \"mobile\"\n            } ]\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/phone-codes/phone-uk.js",
    "content": "/*!\n* phone-codes/phone-uk.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"../inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"../inputmask\")) : factory(window.Inputmask);\n}(function(Inputmask) {\n    return Inputmask.extendAliases({\n        phoneuk: {\n            alias: \"abstractphone\",\n            countrycode: \"44\",\n            phoneCodes: [ {\n                mask: \"+44(113)-###-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Leeds\"\n            }, {\n                mask: \"+44(114)-###-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Sheffield\"\n            }, {\n                mask: \"+44(115)-###-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Nottingham\"\n            }, {\n                mask: \"+44(116)-###-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Leicester\"\n            }, {\n                mask: \"+44(117)-###-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bristol\"\n            }, {\n                mask: \"+44(118)-###-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Reading\"\n            }, {\n                mask: \"+44(1200)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Clitheroe\"\n            }, {\n                mask: \"+44(1202)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bournemouth\"\n            }, {\n                mask: \"+44(1204)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bolton\"\n            }, {\n                mask: \"+44(1205)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Boston\"\n            }, {\n                mask: \"+44(1206)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Colchester\"\n            }, {\n                mask: \"+44(1207)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Consett\"\n            }, {\n                mask: \"+44(1208)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bodmin\"\n            }, {\n                mask: \"+44(1209)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Redruth\"\n            }, {\n                mask: \"+44(121)-###-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Birmingham\"\n            }, {\n                mask: \"+44(1223)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Cambridge\"\n            }, {\n                mask: \"+44(1224)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Aberdeen\"\n            }, {\n                mask: \"+44(1225)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bath\"\n            }, {\n                mask: \"+44(1226)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Barnsley\"\n            }, {\n                mask: \"+44(1227)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Canterbury\"\n            }, {\n                mask: \"+44(1228)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Carlisle\"\n            }, {\n                mask: \"+44(1229)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Barrow-in-Furness(2,4,5,6,8), Millom(3,7,9)\"\n            }, {\n                mask: \"+44(1233)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ashford (Kent)\"\n            }, {\n                mask: \"+44(1234)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bedford\"\n            }, {\n                mask: \"+44(1235)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Abingdon\"\n            }, {\n                mask: \"+44(1236)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Coatbridge\"\n            }, {\n                mask: \"+44(1237)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bideford\"\n            }, {\n                mask: \"+44(1239)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Cardigan\"\n            }, {\n                mask: \"+44(1241)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Arbroath\"\n            }, {\n                mask: \"+44(1242)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Cheltenham\"\n            }, {\n                mask: \"+44(1243)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chichester\"\n            }, {\n                mask: \"+44(1244)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chester\"\n            }, {\n                mask: \"+44(1245)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chelmsford\"\n            }, {\n                mask: \"+44(1246)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chesterfield\"\n            }, {\n                mask: \"+44(1248)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bangor (Gwynedd)\"\n            }, {\n                mask: \"+44(1249)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chippenham\"\n            }, {\n                mask: \"+44(1250)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Blairgowrie\"\n            }, {\n                mask: \"+44(1252)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Aldershot\"\n            }, {\n                mask: \"+44(1253)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Blackpool\"\n            }, {\n                mask: \"+44(1254)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Blackburn\"\n            }, {\n                mask: \"+44(1255)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Clacton-on-Sea\"\n            }, {\n                mask: \"+44(1256)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Basingstoke\"\n            }, {\n                mask: \"+44(1257)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Coppull\"\n            }, {\n                mask: \"+44(1258)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Blandford\"\n            }, {\n                mask: \"+44(1259)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Alloa\"\n            }, {\n                mask: \"+44(1260)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Congleton\"\n            }, {\n                mask: \"+44(1261)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Banff\"\n            }, {\n                mask: \"+44(1262)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bridlington\"\n            }, {\n                mask: \"+44(1263)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Cromer\"\n            }, {\n                mask: \"+44(1264)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Andover\"\n            }, {\n                mask: \"+44(1267)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Carmarthen\"\n            }, {\n                mask: \"+44(1268)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Basildon\"\n            }, {\n                mask: \"+44(1269)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ammanford\"\n            }, {\n                mask: \"+44(1270)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Crewe\"\n            }, {\n                mask: \"+44(1271)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Barnstaple\"\n            }, {\n                mask: \"+44(1273)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Brighton\"\n            }, {\n                mask: \"+44(1274)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bradford\"\n            }, {\n                mask: \"+44(1275)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Clevedon\"\n            }, {\n                mask: \"+44(1276)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Camberley\"\n            }, {\n                mask: \"+44(1277)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Brentwood\"\n            }, {\n                mask: \"+44(1278)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bridgwater\"\n            }, {\n                mask: \"+44(1279)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bishops Stortford\"\n            }, {\n                mask: \"+44(1280)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Buckingham\"\n            }, {\n                mask: \"+44(1282)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Burnley\"\n            }, {\n                mask: \"+44(1283)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Burton-on-Trent\"\n            }, {\n                mask: \"+44(1284)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bury St Edmunds\"\n            }, {\n                mask: \"+44(1285)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Cirencester\"\n            }, {\n                mask: \"+44(1286)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Caernarfon\"\n            }, {\n                mask: \"+44(1287)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Guisborough\"\n            }, {\n                mask: \"+44(1288)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bude\"\n            }, {\n                mask: \"+44(1289)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Berwick-upon-Tweed\"\n            }, {\n                mask: \"+44(1290)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Cumnock\"\n            }, {\n                mask: \"+44(1291)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chepstow\"\n            }, {\n                mask: \"+44(1292)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ayr\"\n            }, {\n                mask: \"+44(1293)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Crawley\"\n            }, {\n                mask: \"+44(1294)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ardrossan\"\n            }, {\n                mask: \"+44(1295)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Banbury\"\n            }, {\n                mask: \"+44(1296)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Aylesbury\"\n            }, {\n                mask: \"+44(1297)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Axminster\"\n            }, {\n                mask: \"+44(1298)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Buxton\"\n            }, {\n                mask: \"+44(1299)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bewdley\"\n            }, {\n                mask: \"+44(1300)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Cerne Abbas\"\n            }, {\n                mask: \"+44(1301)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Arrochar\"\n            }, {\n                mask: \"+44(1302)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Doncaster\"\n            }, {\n                mask: \"+44(1303)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Folkestone\"\n            }, {\n                mask: \"+44(1304)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dover\"\n            }, {\n                mask: \"+44(1305)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dorchester\"\n            }, {\n                mask: \"+44(1306)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dorking\"\n            }, {\n                mask: \"+44(1307)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Forfar\"\n            }, {\n                mask: \"+44(1308)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bridport\"\n            }, {\n                mask: \"+44(1309)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Forres\"\n            }, {\n                mask: \"+44(131)-###-###\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Edinburgh\"\n            }, {\n                mask: \"+44(1320)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Fort Augustus\"\n            }, {\n                mask: \"+44(1322)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dartford\"\n            }, {\n                mask: \"+44(1323)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Eastbourne\"\n            }, {\n                mask: \"+44(1324)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Falkirk\"\n            }, {\n                mask: \"+44(1325)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Darlington\"\n            }, {\n                mask: \"+44(1326)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Falmouth\"\n            }, {\n                mask: \"+44(1327)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Daventry\"\n            }, {\n                mask: \"+44(1328)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Fakenham\"\n            }, {\n                mask: \"+44(1329)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Fareham\"\n            }, {\n                mask: \"+44(1330)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Banchory\"\n            }, {\n                mask: \"+44(1332)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Derby\"\n            }, {\n                mask: \"+44(1333)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Peat Inn\"\n            }, {\n                mask: \"+44(1334)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"St Andrews\"\n            }, {\n                mask: \"+44(1335)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ashbourne\"\n            }, {\n                mask: \"+44(1337)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ladybank\"\n            }, {\n                mask: \"+44(1339)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Aboyne(2,3,5,8), Ballater(4,6,7,9)\"\n            }, {\n                mask: \"+44(1340)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Craigellachie\"\n            }, {\n                mask: \"+44(1341)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Barmouth\"\n            }, {\n                mask: \"+44(1342)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"East Grinstead\"\n            }, {\n                mask: \"+44(1343)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Elgin\"\n            }, {\n                mask: \"+44(1344)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bracknell\"\n            }, {\n                mask: \"+44(1346)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Fraserburgh\"\n            }, {\n                mask: \"+44(1347)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Easingwold\"\n            }, {\n                mask: \"+44(1348)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Fishguard\"\n            }, {\n                mask: \"+44(1349)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dingwall\"\n            }, {\n                mask: \"+44(1350)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dunkeld\"\n            }, {\n                mask: \"+44(1352)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Mold\"\n            }, {\n                mask: \"+44(1353)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ely\"\n            }, {\n                mask: \"+44(1354)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chatteris\"\n            }, {\n                mask: \"+44(1355)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"East Kilbride\"\n            }, {\n                mask: \"+44(1356)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Brechin\"\n            }, {\n                mask: \"+44(1357)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Strathaven\"\n            }, {\n                mask: \"+44(1358)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ellon\"\n            }, {\n                mask: \"+44(1359)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Pakenham\"\n            }, {\n                mask: \"+44(1360)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Killearn\"\n            }, {\n                mask: \"+44(1361)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Duns\"\n            }, {\n                mask: \"+44(1362)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dereham\"\n            }, {\n                mask: \"+44(1363)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Crediton\"\n            }, {\n                mask: \"+44(1364)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ashburton\"\n            }, {\n                mask: \"+44(1366)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Downham Market\"\n            }, {\n                mask: \"+44(1367)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Faringdon\"\n            }, {\n                mask: \"+44(1368)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dunbar\"\n            }, {\n                mask: \"+44(1369)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dunoon\"\n            }, {\n                mask: \"+44(1371)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Great Dunmow\"\n            }, {\n                mask: \"+44(1372)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Esher\"\n            }, {\n                mask: \"+44(1373)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Frome\"\n            }, {\n                mask: \"+44(1375)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Grays Thurrock\"\n            }, {\n                mask: \"+44(1376)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Braintree\"\n            }, {\n                mask: \"+44(1377)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Driffield\"\n            }, {\n                mask: \"+44(1379)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Diss\"\n            }, {\n                mask: \"+44(1380)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Devizes\"\n            }, {\n                mask: \"+44(1381)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Fortrose\"\n            }, {\n                mask: \"+44(1382)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dundee\"\n            }, {\n                mask: \"+44(1383)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dunfermline\"\n            }, {\n                mask: \"+44(1384)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dudley\"\n            }, {\n                mask: \"+44(1386)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Evesham\"\n            }, {\n                mask: \"+44(1387)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dumfries\"\n            }, {\n                mask: \"+44(13873)-####[#]\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Langholm\"\n            }, {\n                mask: \"+44(1388)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bishop Auckland(3,4,6,7,8,9), Stanhope(2,5)\"\n            }, {\n                mask: \"+44(1389)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dumbarton\"\n            }, {\n                mask: \"+44(1392)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Exeter\"\n            }, {\n                mask: \"+44(1394)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Felixstowe\"\n            }, {\n                mask: \"+44(1395)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Budleigh Salterton\"\n            }, {\n                mask: \"+44(1397)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Fort William\"\n            }, {\n                mask: \"+44(1398)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dulverton\"\n            }, {\n                mask: \"+44(1400)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Honington\"\n            }, {\n                mask: \"+44(1403)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Horsham\"\n            }, {\n                mask: \"+44(1404)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Honiton\"\n            }, {\n                mask: \"+44(1405)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Goole\"\n            }, {\n                mask: \"+44(1406)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Holbeach\"\n            }, {\n                mask: \"+44(1407)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Holyhead\"\n            }, {\n                mask: \"+44(1408)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Golspie\"\n            }, {\n                mask: \"+44(1409)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Holsworthy\"\n            }, {\n                mask: \"+44(141)-###-###\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Glasgow\"\n            }, {\n                mask: \"+44(1420)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Alton\"\n            }, {\n                mask: \"+44(1422)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Halifax\"\n            }, {\n                mask: \"+44(1423)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Boroughbridge(3,4,9), Harrogate(2,5,6,7,8)\"\n            }, {\n                mask: \"+44(1424)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Hastings\"\n            }, {\n                mask: \"+44(1425)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Ringwood\"\n            }, {\n                mask: \"+44(1427)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Gainsborough\"\n            }, {\n                mask: \"+44(1428)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Haslemere\"\n            }, {\n                mask: \"+44(1429)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Hartlepool\"\n            }, {\n                mask: \"+44(1430)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Market Weighton(6,7,8,9), North Cave(2,3,4,5)\"\n            }, {\n                mask: \"+44(1431)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Helmsdale\"\n            }, {\n                mask: \"+44(1432)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Hereford\"\n            }, {\n                mask: \"+44(1433)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Hathersage\"\n            }, {\n                mask: \"+44(1434)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Bellingham(2,4,9), Haltwhistle(3,5), Hexham(6,7,8)\"\n            }, {\n                mask: \"+44(1435)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Heathfield\"\n            }, {\n                mask: \"+44(1436)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Helensburgh\"\n            }, {\n                mask: \"+44(1437)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Clynderwen(2,3,4,5), Haverfordwest(6,7,8,9)\"\n            }, {\n                mask: \"+44(1438)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Stevenage\"\n            }, {\n                mask: \"+44(1439)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Helmsley\"\n            }, {\n                mask: \"+44(1440)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Haverhill\"\n            }, {\n                mask: \"+44(1442)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Hemel Hempstead\"\n            }, {\n                mask: \"+44(1443)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Pontypridd\"\n            }, {\n                mask: \"+44(1444)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Haywards Heath\"\n            }, {\n                mask: \"+44(1445)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Gairloch\"\n            }, {\n                mask: \"+44(1446)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Barry\"\n            }, {\n                mask: \"+44(1449)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Stowmarket\"\n            }, {\n                mask: \"+44(1450)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Hawick\"\n            }, {\n                mask: \"+44(1451)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Stow-on-the-Wold\"\n            }, {\n                mask: \"+44(1452)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Gloucester\"\n            }, {\n                mask: \"+44(1453)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Dursley\"\n            }, {\n                mask: \"+44(1454)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Chipping Sodbury\"\n            }, {\n                mask: \"+44(1455)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Hinckley\"\n            }, {\n                mask: \"+44(1456)-######\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                city: \"Glenurquhart\"\n            } ]\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/inputmask/phone-codes/phone.js",
    "content": "/*!\n* phone-codes/phone.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(factory) {\n    \"function\" == typeof define && define.amd ? define([ \"../inputmask\" ], factory) : \"object\" == typeof exports ? module.exports = factory(require(\"../inputmask\")) : factory(window.Inputmask);\n}(function(Inputmask) {\n    return Inputmask.extendAliases({\n        phone: {\n            alias: \"abstractphone\",\n            phoneCodes: [ {\n                mask: \"+247-####\",\n                cc: \"AC\",\n                cd: \"Ascension\",\n                desc_en: \"\",\n                name_ru: \"Остров Вознесения\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+376-###-###\",\n                cc: \"AD\",\n                cd: \"Andorra\",\n                desc_en: \"\",\n                name_ru: \"Андорра\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+971-5#-###-####\",\n                cc: \"AE\",\n                cd: \"United Arab Emirates\",\n                desc_en: \"mobile\",\n                name_ru: \"Объединенные Арабские Эмираты\",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+971-#-###-####\",\n                cc: \"AE\",\n                cd: \"United Arab Emirates\",\n                desc_en: \"\",\n                name_ru: \"Объединенные Арабские Эмираты\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+93-##-###-####\",\n                cc: \"AF\",\n                cd: \"Afghanistan\",\n                desc_en: \"\",\n                name_ru: \"Афганистан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(268)###-####\",\n                cc: \"AG\",\n                cd: \"Antigua & Barbuda\",\n                desc_en: \"\",\n                name_ru: \"Антигуа и Барбуда\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(264)###-####\",\n                cc: \"AI\",\n                cd: \"Anguilla\",\n                desc_en: \"\",\n                name_ru: \"Ангилья\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+355(###)###-###\",\n                cc: \"AL\",\n                cd: \"Albania\",\n                desc_en: \"\",\n                name_ru: \"Албания\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+374-##-###-###\",\n                cc: \"AM\",\n                cd: \"Armenia\",\n                desc_en: \"\",\n                name_ru: \"Армения\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+599-###-####\",\n                cc: \"AN\",\n                cd: \"Caribbean Netherlands\",\n                desc_en: \"\",\n                name_ru: \"Карибские Нидерланды\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+599-###-####\",\n                cc: \"AN\",\n                cd: \"Netherlands Antilles\",\n                desc_en: \"\",\n                name_ru: \"Нидерландские Антильские острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+599-9###-####\",\n                cc: \"AN\",\n                cd: \"Netherlands Antilles\",\n                desc_en: \"Curacao\",\n                name_ru: \"Нидерландские Антильские острова\",\n                desc_ru: \"Кюрасао\"\n            }, {\n                mask: \"+244(###)###-###\",\n                cc: \"AO\",\n                cd: \"Angola\",\n                desc_en: \"\",\n                name_ru: \"Ангола\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+672-1##-###\",\n                cc: \"AQ\",\n                cd: \"Australian bases in Antarctica\",\n                desc_en: \"\",\n                name_ru: \"Австралийская антарктическая база\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+54(###)###-####\",\n                cc: \"AR\",\n                cd: \"Argentina\",\n                desc_en: \"\",\n                name_ru: \"Аргентина\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(684)###-####\",\n                cc: \"AS\",\n                cd: \"American Samoa\",\n                desc_en: \"\",\n                name_ru: \"Американское Самоа\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+43(###)###-####\",\n                cc: \"AT\",\n                cd: \"Austria\",\n                desc_en: \"\",\n                name_ru: \"Австрия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+61-#-####-####\",\n                cc: \"AU\",\n                cd: \"Australia\",\n                desc_en: \"\",\n                name_ru: \"Австралия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+297-###-####\",\n                cc: \"AW\",\n                cd: \"Aruba\",\n                desc_en: \"\",\n                name_ru: \"Аруба\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+994-##-###-##-##\",\n                cc: \"AZ\",\n                cd: \"Azerbaijan\",\n                desc_en: \"\",\n                name_ru: \"Азербайджан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+387-##-#####\",\n                cc: \"BA\",\n                cd: \"Bosnia and Herzegovina\",\n                desc_en: \"\",\n                name_ru: \"Босния и Герцеговина\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+387-##-####\",\n                cc: \"BA\",\n                cd: \"Bosnia and Herzegovina\",\n                desc_en: \"\",\n                name_ru: \"Босния и Герцеговина\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(246)###-####\",\n                cc: \"BB\",\n                cd: \"Barbados\",\n                desc_en: \"\",\n                name_ru: \"Барбадос\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+880-##-###-###\",\n                cc: \"BD\",\n                cd: \"Bangladesh\",\n                desc_en: \"\",\n                name_ru: \"Бангладеш\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+32(###)###-###\",\n                cc: \"BE\",\n                cd: \"Belgium\",\n                desc_en: \"\",\n                name_ru: \"Бельгия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+226-##-##-####\",\n                cc: \"BF\",\n                cd: \"Burkina Faso\",\n                desc_en: \"\",\n                name_ru: \"Буркина Фасо\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+359(###)###-###\",\n                cc: \"BG\",\n                cd: \"Bulgaria\",\n                desc_en: \"\",\n                name_ru: \"Болгария\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+973-####-####\",\n                cc: \"BH\",\n                cd: \"Bahrain\",\n                desc_en: \"\",\n                name_ru: \"Бахрейн\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+257-##-##-####\",\n                cc: \"BI\",\n                cd: \"Burundi\",\n                desc_en: \"\",\n                name_ru: \"Бурунди\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+229-##-##-####\",\n                cc: \"BJ\",\n                cd: \"Benin\",\n                desc_en: \"\",\n                name_ru: \"Бенин\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(441)###-####\",\n                cc: \"BM\",\n                cd: \"Bermuda\",\n                desc_en: \"\",\n                name_ru: \"Бермудские острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+673-###-####\",\n                cc: \"BN\",\n                cd: \"Brunei Darussalam\",\n                desc_en: \"\",\n                name_ru: \"Бруней-Даруссалам\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+591-#-###-####\",\n                cc: \"BO\",\n                cd: \"Bolivia\",\n                desc_en: \"\",\n                name_ru: \"Боливия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+55-##-####-####\",\n                cc: \"BR\",\n                cd: \"Brazil\",\n                desc_en: \"\",\n                name_ru: \"Бразилия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+55-##-#####-####\",\n                cc: \"BR\",\n                cd: \"Brazil\",\n                desc_en: \"\",\n                name_ru: \"Бразилия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(242)###-####\",\n                cc: \"BS\",\n                cd: \"Bahamas\",\n                desc_en: \"\",\n                name_ru: \"Багамские Острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+975-17-###-###\",\n                cc: \"BT\",\n                cd: \"Bhutan\",\n                desc_en: \"\",\n                name_ru: \"Бутан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+975-#-###-###\",\n                cc: \"BT\",\n                cd: \"Bhutan\",\n                desc_en: \"\",\n                name_ru: \"Бутан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+267-##-###-###\",\n                cc: \"BW\",\n                cd: \"Botswana\",\n                desc_en: \"\",\n                name_ru: \"Ботсвана\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+375(##)###-##-##\",\n                cc: \"BY\",\n                cd: \"Belarus\",\n                desc_en: \"\",\n                name_ru: \"Беларусь (Белоруссия)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+501-###-####\",\n                cc: \"BZ\",\n                cd: \"Belize\",\n                desc_en: \"\",\n                name_ru: \"Белиз\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+243(###)###-###\",\n                cc: \"CD\",\n                cd: \"Dem. Rep. Congo\",\n                desc_en: \"\",\n                name_ru: \"Дем. Респ. Конго (Киншаса)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+236-##-##-####\",\n                cc: \"CF\",\n                cd: \"Central African Republic\",\n                desc_en: \"\",\n                name_ru: \"Центральноафриканская Республика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+242-##-###-####\",\n                cc: \"CG\",\n                cd: \"Congo (Brazzaville)\",\n                desc_en: \"\",\n                name_ru: \"Конго (Браззавиль)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+41-##-###-####\",\n                cc: \"CH\",\n                cd: \"Switzerland\",\n                desc_en: \"\",\n                name_ru: \"Швейцария\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+225-##-###-###\",\n                cc: \"CI\",\n                cd: \"Cote d’Ivoire (Ivory Coast)\",\n                desc_en: \"\",\n                name_ru: \"Кот-д’Ивуар\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+682-##-###\",\n                cc: \"CK\",\n                cd: \"Cook Islands\",\n                desc_en: \"\",\n                name_ru: \"Острова Кука\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+56-#-####-####\",\n                cc: \"CL\",\n                cd: \"Chile\",\n                desc_en: \"\",\n                name_ru: \"Чили\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+237-####-####\",\n                cc: \"CM\",\n                cd: \"Cameroon\",\n                desc_en: \"\",\n                name_ru: \"Камерун\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+86(###)####-####\",\n                cc: \"CN\",\n                cd: \"China (PRC)\",\n                desc_en: \"\",\n                name_ru: \"Китайская Н.Р.\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+86(###)####-###\",\n                cc: \"CN\",\n                cd: \"China (PRC)\",\n                desc_en: \"\",\n                name_ru: \"Китайская Н.Р.\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+86-##-#####-#####\",\n                cc: \"CN\",\n                cd: \"China (PRC)\",\n                desc_en: \"\",\n                name_ru: \"Китайская Н.Р.\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+57(###)###-####\",\n                cc: \"CO\",\n                cd: \"Colombia\",\n                desc_en: \"\",\n                name_ru: \"Колумбия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+506-####-####\",\n                cc: \"CR\",\n                cd: \"Costa Rica\",\n                desc_en: \"\",\n                name_ru: \"Коста-Рика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+53-#-###-####\",\n                cc: \"CU\",\n                cd: \"Cuba\",\n                desc_en: \"\",\n                name_ru: \"Куба\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+238(###)##-##\",\n                cc: \"CV\",\n                cd: \"Cape Verde\",\n                desc_en: \"\",\n                name_ru: \"Кабо-Верде\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+599-###-####\",\n                cc: \"CW\",\n                cd: \"Curacao\",\n                desc_en: \"\",\n                name_ru: \"Кюрасао\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+357-##-###-###\",\n                cc: \"CY\",\n                cd: \"Cyprus\",\n                desc_en: \"\",\n                name_ru: \"Кипр\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+420(###)###-###\",\n                cc: \"CZ\",\n                cd: \"Czech Republic\",\n                desc_en: \"\",\n                name_ru: \"Чехия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+49(####)###-####\",\n                cc: \"DE\",\n                cd: \"Germany\",\n                desc_en: \"\",\n                name_ru: \"Германия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+49(###)###-####\",\n                cc: \"DE\",\n                cd: \"Germany\",\n                desc_en: \"\",\n                name_ru: \"Германия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+49(###)##-####\",\n                cc: \"DE\",\n                cd: \"Germany\",\n                desc_en: \"\",\n                name_ru: \"Германия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+49(###)##-###\",\n                cc: \"DE\",\n                cd: \"Germany\",\n                desc_en: \"\",\n                name_ru: \"Германия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+49(###)##-##\",\n                cc: \"DE\",\n                cd: \"Germany\",\n                desc_en: \"\",\n                name_ru: \"Германия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+49-###-###\",\n                cc: \"DE\",\n                cd: \"Germany\",\n                desc_en: \"\",\n                name_ru: \"Германия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+253-##-##-##-##\",\n                cc: \"DJ\",\n                cd: \"Djibouti\",\n                desc_en: \"\",\n                name_ru: \"Джибути\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+45-##-##-##-##\",\n                cc: \"DK\",\n                cd: \"Denmark\",\n                desc_en: \"\",\n                name_ru: \"Дания\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(767)###-####\",\n                cc: \"DM\",\n                cd: \"Dominica\",\n                desc_en: \"\",\n                name_ru: \"Доминика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(809)###-####\",\n                cc: \"DO\",\n                cd: \"Dominican Republic\",\n                desc_en: \"\",\n                name_ru: \"Доминиканская Республика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(829)###-####\",\n                cc: \"DO\",\n                cd: \"Dominican Republic\",\n                desc_en: \"\",\n                name_ru: \"Доминиканская Республика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(849)###-####\",\n                cc: \"DO\",\n                cd: \"Dominican Republic\",\n                desc_en: \"\",\n                name_ru: \"Доминиканская Республика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+213-##-###-####\",\n                cc: \"DZ\",\n                cd: \"Algeria\",\n                desc_en: \"\",\n                name_ru: \"Алжир\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+593-##-###-####\",\n                cc: \"EC\",\n                cd: \"Ecuador \",\n                desc_en: \"mobile\",\n                name_ru: \"Эквадор \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+593-#-###-####\",\n                cc: \"EC\",\n                cd: \"Ecuador\",\n                desc_en: \"\",\n                name_ru: \"Эквадор\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+372-####-####\",\n                cc: \"EE\",\n                cd: \"Estonia \",\n                desc_en: \"mobile\",\n                name_ru: \"Эстония \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+372-###-####\",\n                cc: \"EE\",\n                cd: \"Estonia\",\n                desc_en: \"\",\n                name_ru: \"Эстония\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+20(###)###-####\",\n                cc: \"EG\",\n                cd: \"Egypt\",\n                desc_en: \"\",\n                name_ru: \"Египет\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+291-#-###-###\",\n                cc: \"ER\",\n                cd: \"Eritrea\",\n                desc_en: \"\",\n                name_ru: \"Эритрея\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+34(###)###-###\",\n                cc: \"ES\",\n                cd: \"Spain\",\n                desc_en: \"\",\n                name_ru: \"Испания\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+251-##-###-####\",\n                cc: \"ET\",\n                cd: \"Ethiopia\",\n                desc_en: \"\",\n                name_ru: \"Эфиопия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+358(###)###-##-##\",\n                cc: \"FI\",\n                cd: \"Finland\",\n                desc_en: \"\",\n                name_ru: \"Финляндия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+679-##-#####\",\n                cc: \"FJ\",\n                cd: \"Fiji\",\n                desc_en: \"\",\n                name_ru: \"Фиджи\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+500-#####\",\n                cc: \"FK\",\n                cd: \"Falkland Islands\",\n                desc_en: \"\",\n                name_ru: \"Фолклендские острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+691-###-####\",\n                cc: \"FM\",\n                cd: \"F.S. Micronesia\",\n                desc_en: \"\",\n                name_ru: \"Ф.Ш. Микронезии\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+298-###-###\",\n                cc: \"FO\",\n                cd: \"Faroe Islands\",\n                desc_en: \"\",\n                name_ru: \"Фарерские острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+262-#####-####\",\n                cc: \"FR\",\n                cd: \"Mayotte\",\n                desc_en: \"\",\n                name_ru: \"Майотта\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+33(###)###-###\",\n                cc: \"FR\",\n                cd: \"France\",\n                desc_en: \"\",\n                name_ru: \"Франция\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+508-##-####\",\n                cc: \"FR\",\n                cd: \"St Pierre & Miquelon\",\n                desc_en: \"\",\n                name_ru: \"Сен-Пьер и Микелон\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+590(###)###-###\",\n                cc: \"FR\",\n                cd: \"Guadeloupe\",\n                desc_en: \"\",\n                name_ru: \"Гваделупа\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+241-#-##-##-##\",\n                cc: \"GA\",\n                cd: \"Gabon\",\n                desc_en: \"\",\n                name_ru: \"Габон\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(473)###-####\",\n                cc: \"GD\",\n                cd: \"Grenada\",\n                desc_en: \"\",\n                name_ru: \"Гренада\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+995(###)###-###\",\n                cc: \"GE\",\n                cd: \"Rep. of Georgia\",\n                desc_en: \"\",\n                name_ru: \"Грузия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+594-#####-####\",\n                cc: \"GF\",\n                cd: \"Guiana (French)\",\n                desc_en: \"\",\n                name_ru: \"Фр. Гвиана\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+233(###)###-###\",\n                cc: \"GH\",\n                cd: \"Ghana\",\n                desc_en: \"\",\n                name_ru: \"Гана\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+350-###-#####\",\n                cc: \"GI\",\n                cd: \"Gibraltar\",\n                desc_en: \"\",\n                name_ru: \"Гибралтар\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+299-##-##-##\",\n                cc: \"GL\",\n                cd: \"Greenland\",\n                desc_en: \"\",\n                name_ru: \"Гренландия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+220(###)##-##\",\n                cc: \"GM\",\n                cd: \"Gambia\",\n                desc_en: \"\",\n                name_ru: \"Гамбия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+224-##-###-###\",\n                cc: \"GN\",\n                cd: \"Guinea\",\n                desc_en: \"\",\n                name_ru: \"Гвинея\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+240-##-###-####\",\n                cc: \"GQ\",\n                cd: \"Equatorial Guinea\",\n                desc_en: \"\",\n                name_ru: \"Экваториальная Гвинея\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+30(###)###-####\",\n                cc: \"GR\",\n                cd: \"Greece\",\n                desc_en: \"\",\n                name_ru: \"Греция\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+502-#-###-####\",\n                cc: \"GT\",\n                cd: \"Guatemala\",\n                desc_en: \"\",\n                name_ru: \"Гватемала\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(671)###-####\",\n                cc: \"GU\",\n                cd: \"Guam\",\n                desc_en: \"\",\n                name_ru: \"Гуам\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+245-#-######\",\n                cc: \"GW\",\n                cd: \"Guinea-Bissau\",\n                desc_en: \"\",\n                name_ru: \"Гвинея-Бисау\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+592-###-####\",\n                cc: \"GY\",\n                cd: \"Guyana\",\n                desc_en: \"\",\n                name_ru: \"Гайана\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+852-####-####\",\n                cc: \"HK\",\n                cd: \"Hong Kong\",\n                desc_en: \"\",\n                name_ru: \"Гонконг\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+504-####-####\",\n                cc: \"HN\",\n                cd: \"Honduras\",\n                desc_en: \"\",\n                name_ru: \"Гондурас\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+385-(##)-###-###\",\n                cc: \"HR\",\n                cd: \"Croatia\",\n                desc_en: \"\",\n                name_ru: \"Хорватия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+385-(##)-###-####\",\n                cc: \"HR\",\n                cd: \"Croatia\",\n                desc_en: \"\",\n                name_ru: \"Хорватия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+385-1-####-###\",\n                cc: \"HR\",\n                cd: \"Croatia\",\n                desc_en: \"\",\n                name_ru: \"Хорватия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+509-##-##-####\",\n                cc: \"HT\",\n                cd: \"Haiti\",\n                desc_en: \"\",\n                name_ru: \"Гаити\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+36(###)###-###\",\n                cc: \"HU\",\n                cd: \"Hungary\",\n                desc_en: \"\",\n                name_ru: \"Венгрия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+62(8##)###-####\",\n                cc: \"ID\",\n                cd: \"Indonesia \",\n                desc_en: \"mobile\",\n                name_ru: \"Индонезия \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+62-##-###-##\",\n                cc: \"ID\",\n                cd: \"Indonesia\",\n                desc_en: \"\",\n                name_ru: \"Индонезия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+62-##-###-###\",\n                cc: \"ID\",\n                cd: \"Indonesia\",\n                desc_en: \"\",\n                name_ru: \"Индонезия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+62-##-###-####\",\n                cc: \"ID\",\n                cd: \"Indonesia\",\n                desc_en: \"\",\n                name_ru: \"Индонезия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+62(8##)###-###\",\n                cc: \"ID\",\n                cd: \"Indonesia \",\n                desc_en: \"mobile\",\n                name_ru: \"Индонезия \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+62(8##)###-##-###\",\n                cc: \"ID\",\n                cd: \"Indonesia \",\n                desc_en: \"mobile\",\n                name_ru: \"Индонезия \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+353(###)###-###\",\n                cc: \"IE\",\n                cd: \"Ireland\",\n                desc_en: \"\",\n                name_ru: \"Ирландия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+972-5#-###-####\",\n                cc: \"IL\",\n                cd: \"Israel \",\n                desc_en: \"mobile\",\n                name_ru: \"Израиль \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+972-#-###-####\",\n                cc: \"IL\",\n                cd: \"Israel\",\n                desc_en: \"\",\n                name_ru: \"Израиль\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+91(####)###-###\",\n                cc: \"IN\",\n                cd: \"India\",\n                desc_en: \"\",\n                name_ru: \"Индия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+246-###-####\",\n                cc: \"IO\",\n                cd: \"Diego Garcia\",\n                desc_en: \"\",\n                name_ru: \"Диего-Гарсия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+964(###)###-####\",\n                cc: \"IQ\",\n                cd: \"Iraq\",\n                desc_en: \"\",\n                name_ru: \"Ирак\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+98(###)###-####\",\n                cc: \"IR\",\n                cd: \"Iran\",\n                desc_en: \"\",\n                name_ru: \"Иран\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+354-###-####\",\n                cc: \"IS\",\n                cd: \"Iceland\",\n                desc_en: \"\",\n                name_ru: \"Исландия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+39(###)####-###\",\n                cc: \"IT\",\n                cd: \"Italy\",\n                desc_en: \"\",\n                name_ru: \"Италия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(876)###-####\",\n                cc: \"JM\",\n                cd: \"Jamaica\",\n                desc_en: \"\",\n                name_ru: \"Ямайка\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+962-#-####-####\",\n                cc: \"JO\",\n                cd: \"Jordan\",\n                desc_en: \"\",\n                name_ru: \"Иордания\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+81-##-####-####\",\n                cc: \"JP\",\n                cd: \"Japan \",\n                desc_en: \"mobile\",\n                name_ru: \"Япония \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+81(###)###-###\",\n                cc: \"JP\",\n                cd: \"Japan\",\n                desc_en: \"\",\n                name_ru: \"Япония\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+254-###-######\",\n                cc: \"KE\",\n                cd: \"Kenya\",\n                desc_en: \"\",\n                name_ru: \"Кения\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+996(###)###-###\",\n                cc: \"KG\",\n                cd: \"Kyrgyzstan\",\n                desc_en: \"\",\n                name_ru: \"Киргизия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+855-##-###-###\",\n                cc: \"KH\",\n                cd: \"Cambodia\",\n                desc_en: \"\",\n                name_ru: \"Камбоджа\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+686-##-###\",\n                cc: \"KI\",\n                cd: \"Kiribati\",\n                desc_en: \"\",\n                name_ru: \"Кирибати\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+269-##-#####\",\n                cc: \"KM\",\n                cd: \"Comoros\",\n                desc_en: \"\",\n                name_ru: \"Коморы\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(869)###-####\",\n                cc: \"KN\",\n                cd: \"Saint Kitts & Nevis\",\n                desc_en: \"\",\n                name_ru: \"Сент-Китс и Невис\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+850-191-###-####\",\n                cc: \"KP\",\n                cd: \"DPR Korea (North) \",\n                desc_en: \"mobile\",\n                name_ru: \"Корейская НДР \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+850-##-###-###\",\n                cc: \"KP\",\n                cd: \"DPR Korea (North)\",\n                desc_en: \"\",\n                name_ru: \"Корейская НДР\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+850-###-####-###\",\n                cc: \"KP\",\n                cd: \"DPR Korea (North)\",\n                desc_en: \"\",\n                name_ru: \"Корейская НДР\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+850-###-###\",\n                cc: \"KP\",\n                cd: \"DPR Korea (North)\",\n                desc_en: \"\",\n                name_ru: \"Корейская НДР\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+850-####-####\",\n                cc: \"KP\",\n                cd: \"DPR Korea (North)\",\n                desc_en: \"\",\n                name_ru: \"Корейская НДР\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+850-####-#############\",\n                cc: \"KP\",\n                cd: \"DPR Korea (North)\",\n                desc_en: \"\",\n                name_ru: \"Корейская НДР\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+82-##-###-####\",\n                cc: \"KR\",\n                cd: \"Korea (South)\",\n                desc_en: \"\",\n                name_ru: \"Респ. Корея\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+965-####-####\",\n                cc: \"KW\",\n                cd: \"Kuwait\",\n                desc_en: \"\",\n                name_ru: \"Кувейт\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(345)###-####\",\n                cc: \"KY\",\n                cd: \"Cayman Islands\",\n                desc_en: \"\",\n                name_ru: \"Каймановы острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+7(6##)###-##-##\",\n                cc: \"KZ\",\n                cd: \"Kazakhstan\",\n                desc_en: \"\",\n                name_ru: \"Казахстан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+7(7##)###-##-##\",\n                cc: \"KZ\",\n                cd: \"Kazakhstan\",\n                desc_en: \"\",\n                name_ru: \"Казахстан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+856(20##)###-###\",\n                cc: \"LA\",\n                cd: \"Laos \",\n                desc_en: \"mobile\",\n                name_ru: \"Лаос \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+856-##-###-###\",\n                cc: \"LA\",\n                cd: \"Laos\",\n                desc_en: \"\",\n                name_ru: \"Лаос\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+961-##-###-###\",\n                cc: \"LB\",\n                cd: \"Lebanon \",\n                desc_en: \"mobile\",\n                name_ru: \"Ливан \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+961-#-###-###\",\n                cc: \"LB\",\n                cd: \"Lebanon\",\n                desc_en: \"\",\n                name_ru: \"Ливан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(758)###-####\",\n                cc: \"LC\",\n                cd: \"Saint Lucia\",\n                desc_en: \"\",\n                name_ru: \"Сент-Люсия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+423(###)###-####\",\n                cc: \"LI\",\n                cd: \"Liechtenstein\",\n                desc_en: \"\",\n                name_ru: \"Лихтенштейн\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+94-##-###-####\",\n                cc: \"LK\",\n                cd: \"Sri Lanka\",\n                desc_en: \"\",\n                name_ru: \"Шри-Ланка\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+231-##-###-###\",\n                cc: \"LR\",\n                cd: \"Liberia\",\n                desc_en: \"\",\n                name_ru: \"Либерия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+266-#-###-####\",\n                cc: \"LS\",\n                cd: \"Lesotho\",\n                desc_en: \"\",\n                name_ru: \"Лесото\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+370(###)##-###\",\n                cc: \"LT\",\n                cd: \"Lithuania\",\n                desc_en: \"\",\n                name_ru: \"Литва\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+352-###-###\",\n                cc: \"LU\",\n                cd: \"Luxembourg\",\n                desc_en: \"\",\n                name_ru: \"Люксембург\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+352-####-###\",\n                cc: \"LU\",\n                cd: \"Luxembourg\",\n                desc_en: \"\",\n                name_ru: \"Люксембург\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+352-#####-###\",\n                cc: \"LU\",\n                cd: \"Luxembourg\",\n                desc_en: \"\",\n                name_ru: \"Люксембург\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+352-######-###\",\n                cc: \"LU\",\n                cd: \"Luxembourg\",\n                desc_en: \"\",\n                name_ru: \"Люксембург\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+371-##-###-###\",\n                cc: \"LV\",\n                cd: \"Latvia\",\n                desc_en: \"\",\n                name_ru: \"Латвия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+218-##-###-###\",\n                cc: \"LY\",\n                cd: \"Libya\",\n                desc_en: \"\",\n                name_ru: \"Ливия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+218-21-###-####\",\n                cc: \"LY\",\n                cd: \"Libya\",\n                desc_en: \"Tripoli\",\n                name_ru: \"Ливия\",\n                desc_ru: \"Триполи\"\n            }, {\n                mask: \"+212-##-####-###\",\n                cc: \"MA\",\n                cd: \"Morocco\",\n                desc_en: \"\",\n                name_ru: \"Марокко\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+377(###)###-###\",\n                cc: \"MC\",\n                cd: \"Monaco\",\n                desc_en: \"\",\n                name_ru: \"Монако\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+377-##-###-###\",\n                cc: \"MC\",\n                cd: \"Monaco\",\n                desc_en: \"\",\n                name_ru: \"Монако\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+373-####-####\",\n                cc: \"MD\",\n                cd: \"Moldova\",\n                desc_en: \"\",\n                name_ru: \"Молдова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+382-##-###-###\",\n                cc: \"ME\",\n                cd: \"Montenegro\",\n                desc_en: \"\",\n                name_ru: \"Черногория\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+261-##-##-#####\",\n                cc: \"MG\",\n                cd: \"Madagascar\",\n                desc_en: \"\",\n                name_ru: \"Мадагаскар\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+692-###-####\",\n                cc: \"MH\",\n                cd: \"Marshall Islands\",\n                desc_en: \"\",\n                name_ru: \"Маршалловы Острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+389-##-###-###\",\n                cc: \"MK\",\n                cd: \"Republic of Macedonia\",\n                desc_en: \"\",\n                name_ru: \"Респ. Македония\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+223-##-##-####\",\n                cc: \"ML\",\n                cd: \"Mali\",\n                desc_en: \"\",\n                name_ru: \"Мали\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+95-##-###-###\",\n                cc: \"MM\",\n                cd: \"Burma (Myanmar)\",\n                desc_en: \"\",\n                name_ru: \"Бирма (Мьянма)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+95-#-###-###\",\n                cc: \"MM\",\n                cd: \"Burma (Myanmar)\",\n                desc_en: \"\",\n                name_ru: \"Бирма (Мьянма)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+95-###-###\",\n                cc: \"MM\",\n                cd: \"Burma (Myanmar)\",\n                desc_en: \"\",\n                name_ru: \"Бирма (Мьянма)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+976-##-##-####\",\n                cc: \"MN\",\n                cd: \"Mongolia\",\n                desc_en: \"\",\n                name_ru: \"Монголия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+853-####-####\",\n                cc: \"MO\",\n                cd: \"Macau\",\n                desc_en: \"\",\n                name_ru: \"Макао\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(670)###-####\",\n                cc: \"MP\",\n                cd: \"Northern Mariana Islands\",\n                desc_en: \"\",\n                name_ru: \"Северные Марианские острова Сайпан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+596(###)##-##-##\",\n                cc: \"MQ\",\n                cd: \"Martinique\",\n                desc_en: \"\",\n                name_ru: \"Мартиника\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+222-##-##-####\",\n                cc: \"MR\",\n                cd: \"Mauritania\",\n                desc_en: \"\",\n                name_ru: \"Мавритания\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(664)###-####\",\n                cc: \"MS\",\n                cd: \"Montserrat\",\n                desc_en: \"\",\n                name_ru: \"Монтсеррат\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+356-####-####\",\n                cc: \"MT\",\n                cd: \"Malta\",\n                desc_en: \"\",\n                name_ru: \"Мальта\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+230-###-####\",\n                cc: \"MU\",\n                cd: \"Mauritius\",\n                desc_en: \"\",\n                name_ru: \"Маврикий\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+960-###-####\",\n                cc: \"MV\",\n                cd: \"Maldives\",\n                desc_en: \"\",\n                name_ru: \"Мальдивские острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+265-1-###-###\",\n                cc: \"MW\",\n                cd: \"Malawi\",\n                desc_en: \"Telecom Ltd\",\n                name_ru: \"Малави\",\n                desc_ru: \"Telecom Ltd\"\n            }, {\n                mask: \"+265-#-####-####\",\n                cc: \"MW\",\n                cd: \"Malawi\",\n                desc_en: \"\",\n                name_ru: \"Малави\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+52(###)###-####\",\n                cc: \"MX\",\n                cd: \"Mexico\",\n                desc_en: \"\",\n                name_ru: \"Мексика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+52-##-##-####\",\n                cc: \"MX\",\n                cd: \"Mexico\",\n                desc_en: \"\",\n                name_ru: \"Мексика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+60-##-###-####\",\n                cc: \"MY\",\n                cd: \"Malaysia \",\n                desc_en: \"mobile\",\n                name_ru: \"Малайзия \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+60-11-####-####\",\n                cc: \"MY\",\n                cd: \"Malaysia \",\n                desc_en: \"mobile\",\n                name_ru: \"Малайзия \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+60(###)###-###\",\n                cc: \"MY\",\n                cd: \"Malaysia\",\n                desc_en: \"\",\n                name_ru: \"Малайзия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+60-##-###-###\",\n                cc: \"MY\",\n                cd: \"Malaysia\",\n                desc_en: \"\",\n                name_ru: \"Малайзия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+60-#-###-###\",\n                cc: \"MY\",\n                cd: \"Malaysia\",\n                desc_en: \"\",\n                name_ru: \"Малайзия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+258-##-###-###\",\n                cc: \"MZ\",\n                cd: \"Mozambique\",\n                desc_en: \"\",\n                name_ru: \"Мозамбик\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+264-##-###-####\",\n                cc: \"NA\",\n                cd: \"Namibia\",\n                desc_en: \"\",\n                name_ru: \"Намибия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+687-##-####\",\n                cc: \"NC\",\n                cd: \"New Caledonia\",\n                desc_en: \"\",\n                name_ru: \"Новая Каледония\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+227-##-##-####\",\n                cc: \"NE\",\n                cd: \"Niger\",\n                desc_en: \"\",\n                name_ru: \"Нигер\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+672-3##-###\",\n                cc: \"NF\",\n                cd: \"Norfolk Island\",\n                desc_en: \"\",\n                name_ru: \"Норфолк (остров)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+234(###)###-####\",\n                cc: \"NG\",\n                cd: \"Nigeria\",\n                desc_en: \"\",\n                name_ru: \"Нигерия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+234-##-###-###\",\n                cc: \"NG\",\n                cd: \"Nigeria\",\n                desc_en: \"\",\n                name_ru: \"Нигерия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+234-##-###-##\",\n                cc: \"NG\",\n                cd: \"Nigeria\",\n                desc_en: \"\",\n                name_ru: \"Нигерия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+234(###)###-####\",\n                cc: \"NG\",\n                cd: \"Nigeria \",\n                desc_en: \"mobile\",\n                name_ru: \"Нигерия \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+505-####-####\",\n                cc: \"NI\",\n                cd: \"Nicaragua\",\n                desc_en: \"\",\n                name_ru: \"Никарагуа\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+31-##-###-####\",\n                cc: \"NL\",\n                cd: \"Netherlands\",\n                desc_en: \"\",\n                name_ru: \"Нидерланды\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+47(###)##-###\",\n                cc: \"NO\",\n                cd: \"Norway\",\n                desc_en: \"\",\n                name_ru: \"Норвегия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+977-##-###-###\",\n                cc: \"NP\",\n                cd: \"Nepal\",\n                desc_en: \"\",\n                name_ru: \"Непал\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+674-###-####\",\n                cc: \"NR\",\n                cd: \"Nauru\",\n                desc_en: \"\",\n                name_ru: \"Науру\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+683-####\",\n                cc: \"NU\",\n                cd: \"Niue\",\n                desc_en: \"\",\n                name_ru: \"Ниуэ\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+64(###)###-###\",\n                cc: \"NZ\",\n                cd: \"New Zealand\",\n                desc_en: \"\",\n                name_ru: \"Новая Зеландия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+64-##-###-###\",\n                cc: \"NZ\",\n                cd: \"New Zealand\",\n                desc_en: \"\",\n                name_ru: \"Новая Зеландия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+64(###)###-####\",\n                cc: \"NZ\",\n                cd: \"New Zealand\",\n                desc_en: \"\",\n                name_ru: \"Новая Зеландия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+968-##-###-###\",\n                cc: \"OM\",\n                cd: \"Oman\",\n                desc_en: \"\",\n                name_ru: \"Оман\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+507-###-####\",\n                cc: \"PA\",\n                cd: \"Panama\",\n                desc_en: \"\",\n                name_ru: \"Панама\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+51(###)###-###\",\n                cc: \"PE\",\n                cd: \"Peru\",\n                desc_en: \"\",\n                name_ru: \"Перу\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+689-##-##-##\",\n                cc: \"PF\",\n                cd: \"French Polynesia\",\n                desc_en: \"\",\n                name_ru: \"Французская Полинезия (Таити)\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+675(###)##-###\",\n                cc: \"PG\",\n                cd: \"Papua New Guinea\",\n                desc_en: \"\",\n                name_ru: \"Папуа-Новая Гвинея\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+63(###)###-####\",\n                cc: \"PH\",\n                cd: \"Philippines\",\n                desc_en: \"\",\n                name_ru: \"Филиппины\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+92(###)###-####\",\n                cc: \"PK\",\n                cd: \"Pakistan\",\n                desc_en: \"\",\n                name_ru: \"Пакистан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+48(###)###-###\",\n                cc: \"PL\",\n                cd: \"Poland\",\n                desc_en: \"\",\n                name_ru: \"Польша\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+970-##-###-####\",\n                cc: \"PS\",\n                cd: \"Palestine\",\n                desc_en: \"\",\n                name_ru: \"Палестина\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+351-##-###-####\",\n                cc: \"PT\",\n                cd: \"Portugal\",\n                desc_en: \"\",\n                name_ru: \"Португалия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+680-###-####\",\n                cc: \"PW\",\n                cd: \"Palau\",\n                desc_en: \"\",\n                name_ru: \"Палау\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+595(###)###-###\",\n                cc: \"PY\",\n                cd: \"Paraguay\",\n                desc_en: \"\",\n                name_ru: \"Парагвай\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+974-####-####\",\n                cc: \"QA\",\n                cd: \"Qatar\",\n                desc_en: \"\",\n                name_ru: \"Катар\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+262-#####-####\",\n                cc: \"RE\",\n                cd: \"Reunion\",\n                desc_en: \"\",\n                name_ru: \"Реюньон\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+40-##-###-####\",\n                cc: \"RO\",\n                cd: \"Romania\",\n                desc_en: \"\",\n                name_ru: \"Румыния\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+381-##-###-####\",\n                cc: \"RS\",\n                cd: \"Serbia\",\n                desc_en: \"\",\n                name_ru: \"Сербия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+7(###)###-##-##\",\n                cc: \"RU\",\n                cd: \"Russia\",\n                desc_en: \"\",\n                name_ru: \"Россия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+250(###)###-###\",\n                cc: \"RW\",\n                cd: \"Rwanda\",\n                desc_en: \"\",\n                name_ru: \"Руанда\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+966-5-####-####\",\n                cc: \"SA\",\n                cd: \"Saudi Arabia \",\n                desc_en: \"mobile\",\n                name_ru: \"Саудовская Аравия \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+966-#-###-####\",\n                cc: \"SA\",\n                cd: \"Saudi Arabia\",\n                desc_en: \"\",\n                name_ru: \"Саудовская Аравия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+677-###-####\",\n                cc: \"SB\",\n                cd: \"Solomon Islands \",\n                desc_en: \"mobile\",\n                name_ru: \"Соломоновы Острова \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+677-#####\",\n                cc: \"SB\",\n                cd: \"Solomon Islands\",\n                desc_en: \"\",\n                name_ru: \"Соломоновы Острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+248-#-###-###\",\n                cc: \"SC\",\n                cd: \"Seychelles\",\n                desc_en: \"\",\n                name_ru: \"Сейшелы\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+249-##-###-####\",\n                cc: \"SD\",\n                cd: \"Sudan\",\n                desc_en: \"\",\n                name_ru: \"Судан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+46-##-###-####\",\n                cc: \"SE\",\n                cd: \"Sweden\",\n                desc_en: \"\",\n                name_ru: \"Швеция\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+65-####-####\",\n                cc: \"SG\",\n                cd: \"Singapore\",\n                desc_en: \"\",\n                name_ru: \"Сингапур\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+290-####\",\n                cc: \"SH\",\n                cd: \"Saint Helena\",\n                desc_en: \"\",\n                name_ru: \"Остров Святой Елены\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+290-####\",\n                cc: \"SH\",\n                cd: \"Tristan da Cunha\",\n                desc_en: \"\",\n                name_ru: \"Тристан-да-Кунья\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+386-##-###-###\",\n                cc: \"SI\",\n                cd: \"Slovenia\",\n                desc_en: \"\",\n                name_ru: \"Словения\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+421(###)###-###\",\n                cc: \"SK\",\n                cd: \"Slovakia\",\n                desc_en: \"\",\n                name_ru: \"Словакия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+232-##-######\",\n                cc: \"SL\",\n                cd: \"Sierra Leone\",\n                desc_en: \"\",\n                name_ru: \"Сьерра-Леоне\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+378-####-######\",\n                cc: \"SM\",\n                cd: \"San Marino\",\n                desc_en: \"\",\n                name_ru: \"Сан-Марино\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+221-##-###-####\",\n                cc: \"SN\",\n                cd: \"Senegal\",\n                desc_en: \"\",\n                name_ru: \"Сенегал\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+252-##-###-###\",\n                cc: \"SO\",\n                cd: \"Somalia\",\n                desc_en: \"\",\n                name_ru: \"Сомали\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+252-#-###-###\",\n                cc: \"SO\",\n                cd: \"Somalia\",\n                desc_en: \"\",\n                name_ru: \"Сомали\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+252-#-###-###\",\n                cc: \"SO\",\n                cd: \"Somalia \",\n                desc_en: \"mobile\",\n                name_ru: \"Сомали \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+597-###-####\",\n                cc: \"SR\",\n                cd: \"Suriname \",\n                desc_en: \"mobile\",\n                name_ru: \"Суринам \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+597-###-###\",\n                cc: \"SR\",\n                cd: \"Suriname\",\n                desc_en: \"\",\n                name_ru: \"Суринам\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+211-##-###-####\",\n                cc: \"SS\",\n                cd: \"South Sudan\",\n                desc_en: \"\",\n                name_ru: \"Южный Судан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+239-##-#####\",\n                cc: \"ST\",\n                cd: \"Sao Tome and Principe\",\n                desc_en: \"\",\n                name_ru: \"Сан-Томе и Принсипи\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+503-##-##-####\",\n                cc: \"SV\",\n                cd: \"El Salvador\",\n                desc_en: \"\",\n                name_ru: \"Сальвадор\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(721)###-####\",\n                cc: \"SX\",\n                cd: \"Sint Maarten\",\n                desc_en: \"\",\n                name_ru: \"Синт-Маартен\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+963-##-####-###\",\n                cc: \"SY\",\n                cd: \"Syrian Arab Republic\",\n                desc_en: \"\",\n                name_ru: \"Сирийская арабская республика\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+268-##-##-####\",\n                cc: \"SZ\",\n                cd: \"Swaziland\",\n                desc_en: \"\",\n                name_ru: \"Свазиленд\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(649)###-####\",\n                cc: \"TC\",\n                cd: \"Turks & Caicos\",\n                desc_en: \"\",\n                name_ru: \"Тёркс и Кайкос\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+235-##-##-##-##\",\n                cc: \"TD\",\n                cd: \"Chad\",\n                desc_en: \"\",\n                name_ru: \"Чад\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+228-##-###-###\",\n                cc: \"TG\",\n                cd: \"Togo\",\n                desc_en: \"\",\n                name_ru: \"Того\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+66-##-###-####\",\n                cc: \"TH\",\n                cd: \"Thailand \",\n                desc_en: \"mobile\",\n                name_ru: \"Таиланд \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+66-##-###-###\",\n                cc: \"TH\",\n                cd: \"Thailand\",\n                desc_en: \"\",\n                name_ru: \"Таиланд\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+992-##-###-####\",\n                cc: \"TJ\",\n                cd: \"Tajikistan\",\n                desc_en: \"\",\n                name_ru: \"Таджикистан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+690-####\",\n                cc: \"TK\",\n                cd: \"Tokelau\",\n                desc_en: \"\",\n                name_ru: \"Токелау\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+670-###-####\",\n                cc: \"TL\",\n                cd: \"East Timor\",\n                desc_en: \"\",\n                name_ru: \"Восточный Тимор\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+670-77#-#####\",\n                cc: \"TL\",\n                cd: \"East Timor\",\n                desc_en: \"Timor Telecom\",\n                name_ru: \"Восточный Тимор\",\n                desc_ru: \"Timor Telecom\"\n            }, {\n                mask: \"+670-78#-#####\",\n                cc: \"TL\",\n                cd: \"East Timor\",\n                desc_en: \"Timor Telecom\",\n                name_ru: \"Восточный Тимор\",\n                desc_ru: \"Timor Telecom\"\n            }, {\n                mask: \"+993-#-###-####\",\n                cc: \"TM\",\n                cd: \"Turkmenistan\",\n                desc_en: \"\",\n                name_ru: \"Туркменистан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+216-##-###-###\",\n                cc: \"TN\",\n                cd: \"Tunisia\",\n                desc_en: \"\",\n                name_ru: \"Тунис\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+676-#####\",\n                cc: \"TO\",\n                cd: \"Tonga\",\n                desc_en: \"\",\n                name_ru: \"Тонга\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+90(###)###-####\",\n                cc: \"TR\",\n                cd: \"Turkey\",\n                desc_en: \"\",\n                name_ru: \"Турция\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(868)###-####\",\n                cc: \"TT\",\n                cd: \"Trinidad & Tobago\",\n                desc_en: \"\",\n                name_ru: \"Тринидад и Тобаго\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+688-90####\",\n                cc: \"TV\",\n                cd: \"Tuvalu \",\n                desc_en: \"mobile\",\n                name_ru: \"Тувалу \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+688-2####\",\n                cc: \"TV\",\n                cd: \"Tuvalu\",\n                desc_en: \"\",\n                name_ru: \"Тувалу\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+886-#-####-####\",\n                cc: \"TW\",\n                cd: \"Taiwan\",\n                desc_en: \"\",\n                name_ru: \"Тайвань\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+886-####-####\",\n                cc: \"TW\",\n                cd: \"Taiwan\",\n                desc_en: \"\",\n                name_ru: \"Тайвань\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+255-##-###-####\",\n                cc: \"TZ\",\n                cd: \"Tanzania\",\n                desc_en: \"\",\n                name_ru: \"Танзания\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+380(##)###-##-##\",\n                cc: \"UA\",\n                cd: \"Ukraine\",\n                desc_en: \"\",\n                name_ru: \"Украина\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+256(###)###-###\",\n                cc: \"UG\",\n                cd: \"Uganda\",\n                desc_en: \"\",\n                name_ru: \"Уганда\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+44-##-####-####\",\n                cc: \"UK\",\n                cd: \"United Kingdom\",\n                desc_en: \"\",\n                name_ru: \"Великобритания\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+598-#-###-##-##\",\n                cc: \"UY\",\n                cd: \"Uruguay\",\n                desc_en: \"\",\n                name_ru: \"Уругвай\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+998-##-###-####\",\n                cc: \"UZ\",\n                cd: \"Uzbekistan\",\n                desc_en: \"\",\n                name_ru: \"Узбекистан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+39-6-698-#####\",\n                cc: \"VA\",\n                cd: \"Vatican City\",\n                desc_en: \"\",\n                name_ru: \"Ватикан\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(784)###-####\",\n                cc: \"VC\",\n                cd: \"Saint Vincent & the Grenadines\",\n                desc_en: \"\",\n                name_ru: \"Сент-Винсент и Гренадины\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+58(###)###-####\",\n                cc: \"VE\",\n                cd: \"Venezuela\",\n                desc_en: \"\",\n                name_ru: \"Венесуэла\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(284)###-####\",\n                cc: \"VG\",\n                cd: \"British Virgin Islands\",\n                desc_en: \"\",\n                name_ru: \"Британские Виргинские острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(340)###-####\",\n                cc: \"VI\",\n                cd: \"US Virgin Islands\",\n                desc_en: \"\",\n                name_ru: \"Американские Виргинские острова\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+84-##-####-###\",\n                cc: \"VN\",\n                cd: \"Vietnam\",\n                desc_en: \"\",\n                name_ru: \"Вьетнам\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+84(###)####-###\",\n                cc: \"VN\",\n                cd: \"Vietnam\",\n                desc_en: \"\",\n                name_ru: \"Вьетнам\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+678-##-#####\",\n                cc: \"VU\",\n                cd: \"Vanuatu \",\n                desc_en: \"mobile\",\n                name_ru: \"Вануату \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+678-#####\",\n                cc: \"VU\",\n                cd: \"Vanuatu\",\n                desc_en: \"\",\n                name_ru: \"Вануату\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+681-##-####\",\n                cc: \"WF\",\n                cd: \"Wallis and Futuna\",\n                desc_en: \"\",\n                name_ru: \"Уоллис и Футуна\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+685-##-####\",\n                cc: \"WS\",\n                cd: \"Samoa\",\n                desc_en: \"\",\n                name_ru: \"Самоа\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+967-###-###-###\",\n                cc: \"YE\",\n                cd: \"Yemen \",\n                desc_en: \"mobile\",\n                name_ru: \"Йемен \",\n                desc_ru: \"мобильные\"\n            }, {\n                mask: \"+967-#-###-###\",\n                cc: \"YE\",\n                cd: \"Yemen\",\n                desc_en: \"\",\n                name_ru: \"Йемен\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+967-##-###-###\",\n                cc: \"YE\",\n                cd: \"Yemen\",\n                desc_en: \"\",\n                name_ru: \"Йемен\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+27-##-###-####\",\n                cc: \"ZA\",\n                cd: \"South Africa\",\n                desc_en: \"\",\n                name_ru: \"Южно-Африканская Респ.\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+260-##-###-####\",\n                cc: \"ZM\",\n                cd: \"Zambia\",\n                desc_en: \"\",\n                name_ru: \"Замбия\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+263-#-######\",\n                cc: \"ZW\",\n                cd: \"Zimbabwe\",\n                desc_en: \"\",\n                name_ru: \"Зимбабве\",\n                desc_ru: \"\"\n            }, {\n                mask: \"+1(###)###-####\",\n                cc: [ \"US\", \"CA\" ],\n                cd: \"USA and Canada\",\n                desc_en: \"\",\n                name_ru: \"США и Канада\",\n                desc_ru: \"\"\n            } ]\n        }\n    }), Inputmask;\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/inputmask/dist/jquery.inputmask.bundle.js",
    "content": "/*!\n* jquery.inputmask.bundle.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2017 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 3.3.11\n*/\n\n!function(modules) {\n    function __webpack_require__(moduleId) {\n        if (installedModules[moduleId]) return installedModules[moduleId].exports;\n        var module = installedModules[moduleId] = {\n            i: moduleId,\n            l: !1,\n            exports: {}\n        };\n        return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n        module.l = !0, module.exports;\n    }\n    var installedModules = {};\n    __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.d = function(exports, name, getter) {\n        __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n            configurable: !1,\n            enumerable: !0,\n            get: getter\n        });\n    }, __webpack_require__.n = function(module) {\n        var getter = module && module.__esModule ? function() {\n            return module.default;\n        } : function() {\n            return module;\n        };\n        return __webpack_require__.d(getter, \"a\", getter), getter;\n    }, __webpack_require__.o = function(object, property) {\n        return Object.prototype.hasOwnProperty.call(object, property);\n    }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 3);\n}([ function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(2) ], void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($) {\n        return $;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__, _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n        return typeof obj;\n    } : function(obj) {\n        return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(10), __webpack_require__(11) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, window, document, undefined) {\n        function Inputmask(alias, options, internal) {\n            if (!(this instanceof Inputmask)) return new Inputmask(alias, options, internal);\n            this.el = undefined, this.events = {}, this.maskset = undefined, this.refreshValue = !1, \n            !0 !== internal && ($.isPlainObject(alias) ? options = alias : (options = options || {}).alias = alias, \n            this.opts = $.extend(!0, {}, this.defaults, options), this.noMasksCache = options && options.definitions !== undefined, \n            this.userOptions = options || {}, this.isRTL = this.opts.numericInput, resolveAlias(this.opts.alias, options, this.opts));\n        }\n        function resolveAlias(aliasStr, options, opts) {\n            var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n            return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, undefined, opts), \n            $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), \n            !1);\n        }\n        function generateMaskSet(opts, nocache) {\n            function generateMask(mask, metadata, opts) {\n                var regexMask = !1;\n                if (null !== mask && \"\" !== mask || ((regexMask = null !== opts.regex) ? mask = (mask = opts.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (regexMask = !0, \n                mask = \".*\")), 1 === mask.length && !1 === opts.greedy && 0 !== opts.repeat && (opts.placeholder = \"\"), \n                opts.repeat > 0 || \"*\" === opts.repeat || \"+\" === opts.repeat) {\n                    var repeatStart = \"*\" === opts.repeat ? 0 : \"+\" === opts.repeat ? 1 : opts.repeat;\n                    mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + \",\" + opts.repeat + opts.quantifiermarker.end;\n                }\n                var masksetDefinition, maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask;\n                return Inputmask.prototype.masksCache[maskdefKey] === undefined || !0 === nocache ? (masksetDefinition = {\n                    mask: mask,\n                    maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n                    validPositions: {},\n                    _buffer: undefined,\n                    buffer: undefined,\n                    tests: {},\n                    metadata: metadata,\n                    maskLength: undefined\n                }, !0 !== nocache && (Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition, \n                masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]), \n                masksetDefinition;\n            }\n            if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {\n                if (opts.mask.length > 1) {\n                    opts.keepStatic = null === opts.keepStatic || opts.keepStatic;\n                    var altMask = opts.groupmarker.start;\n                    return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n                        altMask.length > 1 && (altMask += opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start), \n                        msk.mask === undefined || $.isFunction(msk.mask) ? altMask += msk : altMask += msk.mask;\n                    }), altMask += opts.groupmarker.end, generateMask(altMask, opts.mask, opts);\n                }\n                opts.mask = opts.mask.pop();\n            }\n            return opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask) ? generateMask(opts.mask.mask, opts.mask, opts) : generateMask(opts.mask, opts.mask, opts);\n        }\n        function maskScope(actionObj, maskset, opts) {\n            function getMaskTemplate(baseOnInput, minimalPos, includeMode) {\n                minimalPos = minimalPos || 0;\n                var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition();\n                do {\n                    !0 === baseOnInput && getMaskSet().validPositions[pos] ? (test = (testPos = getMaskSet().validPositions[pos]).match, \n                    ndxIntlzr = testPos.locator.slice(), maskTemplate.push(!0 === includeMode ? testPos.input : !1 === includeMode ? test.nativeDef : getPlaceholder(pos, test))) : (test = (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1)).match, \n                    ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || \"number\" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(!1 === includeMode ? test.nativeDef : getPlaceholder(pos, test))), \n                    pos++;\n                } while ((maxLength === undefined || pos < maxLength) && (null !== test.fn || \"\" !== test.def) || minimalPos > pos);\n                return \"\" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), getMaskSet().maskLength = pos + 1, \n                maskTemplate;\n            }\n            function getMaskSet() {\n                return maskset;\n            }\n            function resetMaskSet(soft) {\n                var maskset = getMaskSet();\n                maskset.buffer = undefined, !0 !== soft && (maskset.validPositions = {}, maskset.p = 0);\n            }\n            function getLastValidPosition(closestTo, strict, validPositions) {\n                var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;\n                closestTo === undefined && (closestTo = -1);\n                for (var posNdx in valids) {\n                    var psNdx = parseInt(posNdx);\n                    valids[psNdx] && (strict || !0 !== valids[psNdx].generatedInput) && (psNdx <= closestTo && (before = psNdx), \n                    psNdx >= closestTo && (after = psNdx));\n                }\n                return -1 !== before && closestTo - before > 1 || after < closestTo ? before : after;\n            }\n            function stripValidPositions(start, end, nocheck, strict) {\n                var i, startPos = start, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), needsValidation = !1;\n                for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) getMaskSet().validPositions[i] !== undefined && (!0 !== nocheck && (!getMaskSet().validPositions[i].match.optionality && function(pos) {\n                    var posMatch = getMaskSet().validPositions[pos];\n                    if (posMatch !== undefined && null === posMatch.match.fn) {\n                        var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1];\n                        return prevMatch !== undefined && nextMatch !== undefined;\n                    }\n                    return !1;\n                }(i) || !1 === opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), strict, opts)) || delete getMaskSet().validPositions[i]);\n                for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {\n                    for (;getMaskSet().validPositions[startPos] !== undefined; ) startPos++;\n                    if (i < startPos && (i = startPos + 1), getMaskSet().validPositions[i] === undefined && isMask(i)) i++; else {\n                        var t = getTestTemplate(i);\n                        !1 === needsValidation && positionsClone[startPos] && positionsClone[startPos].match.def === t.match.def ? (getMaskSet().validPositions[startPos] = $.extend(!0, {}, positionsClone[startPos]), \n                        getMaskSet().validPositions[startPos].input = t.input, delete getMaskSet().validPositions[i], \n                        i++) : positionCanMatchDefinition(startPos, t.match.def) ? !1 !== isValid(startPos, t.input || getPlaceholder(i), !0) && (delete getMaskSet().validPositions[i], \n                        i++, needsValidation = !0) : isMask(i) || (i++, startPos--), startPos++;\n                    }\n                }\n                resetMaskSet(!0);\n            }\n            function determineTestTemplate(tests, guessNextBest) {\n                for (var testPos, testPositions = tests, lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation].toString().split(\",\") : [], ndx = 0; ndx < testPositions.length && (!((testPos = testPositions[ndx]).match && (opts.greedy && !0 !== testPos.match.optionalQuantifier || (!1 === testPos.match.optionality || !1 === testPos.match.newBlockMarker) && !0 !== testPos.match.optionalQuantifier) && (lvTest.alternation === undefined || lvTest.alternation !== testPos.alternation || testPos.locator[lvTest.alternation] !== undefined && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAltArr))) || !0 === guessNextBest && (null !== testPos.match.fn || /[0-9a-bA-Z]/.test(testPos.match.def))); ndx++) ;\n                return testPos;\n            }\n            function getTestTemplate(pos, ndxIntlzr, tstPs) {\n                return getMaskSet().validPositions[pos] || determineTestTemplate(getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs));\n            }\n            function getTest(pos) {\n                return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos] : getTests(pos)[0];\n            }\n            function positionCanMatchDefinition(pos, def) {\n                for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) {\n                    valid = !0;\n                    break;\n                }\n                return valid;\n            }\n            function getTests(pos, ndxIntlzr, tstPs) {\n                function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {\n                    function handleMatch(match, loopNdx, quantifierRecurse) {\n                        function isFirstMatch(latestMatch, tokenGroup) {\n                            var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);\n                            return firstMatch || $.each(tokenGroup.matches, function(ndx, match) {\n                                if (!0 === match.isQuantifier && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]))) return !1;\n                            }), firstMatch;\n                        }\n                        function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\n                            var bestMatch, indexPos;\n                            if (getMaskSet().validPositions[pos - 1] && targetAlternation && getMaskSet().tests[pos]) for (var vpAlternation = getMaskSet().validPositions[pos - 1].locator, tpAlternation = getMaskSet().tests[pos][0].locator, i = 0; i < targetAlternation; i++) if (vpAlternation[i] !== tpAlternation[i]) return vpAlternation.slice(targetAlternation + 1);\n                            return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {\n                                var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1;\n                                (indexPos === undefined || ndxPos < indexPos) && -1 !== ndxPos && (bestMatch = lmnt, \n                                indexPos = ndxPos);\n                            }), bestMatch ? bestMatch.locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1) : targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined;\n                        }\n                        if (testPos > 1e4) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + getMaskSet().mask;\n                        if (testPos === pos && match.matches === undefined) return matches.push({\n                            match: match,\n                            locator: loopNdx.reverse(),\n                            cd: cacheDependency\n                        }), !0;\n                        if (match.matches !== undefined) {\n                            if (match.isGroup && quantifierRecurse !== match) {\n                                if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0;\n                            } else if (match.isOptional) {\n                                var optionalToken = match;\n                                if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) {\n                                    if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0;\n                                    insertStop = !0, testPos = pos;\n                                }\n                            } else if (match.isAlternator) {\n                                var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;\n                                if (-1 === altIndex || \"string\" == typeof altIndex) {\n                                    var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [];\n                                    if (\"string\" == typeof altIndex) altIndexArr = altIndex.split(\",\"); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx);\n                                    for (var ndx = 0; ndx < altIndexArr.length; ndx++) {\n                                        if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice(), \n                                        !0 !== (match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match) && match !== undefined && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) {\n                                            var ntndx = $.inArray(match, maskToken.matches) + 1;\n                                            maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse)) && (altIndexArr.push(ntndx.toString()), \n                                            $.each(matches, function(ndx, lmnt) {\n                                                lmnt.alternation = loopNdx.length - 1;\n                                            }));\n                                        }\n                                        maltMatches = matches.slice(), testPos = currentPos, matches = [];\n                                        for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n                                            var altMatch = maltMatches[ndx1], dropMatch = !1;\n                                            altMatch.alternation = altMatch.alternation || loopNdxCnt;\n                                            for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n                                                var altMatch2 = malternateMatches[ndx2];\n                                                if (\"string\" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr)) {\n                                                    if (function(source, target) {\n                                                        return source.match.nativeDef === target.match.nativeDef || source.match.def === target.match.nativeDef || source.match.nativeDef === target.match.def;\n                                                    }(altMatch, altMatch2)) {\n                                                        dropMatch = !0, altMatch.alternation === altMatch2.alternation && -1 === altMatch2.locator[altMatch2.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch2.alternation] = altMatch2.locator[altMatch2.alternation] + \",\" + altMatch.locator[altMatch.alternation], \n                                                        altMatch2.alternation = altMatch.alternation), altMatch.match.nativeDef === altMatch2.match.def && (altMatch.locator[altMatch.alternation] = altMatch2.locator[altMatch2.alternation], \n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 1, altMatch));\n                                                        break;\n                                                    }\n                                                    if (altMatch.match.def === altMatch2.match.def) {\n                                                        dropMatch = !1;\n                                                        break;\n                                                    }\n                                                    if (function(source, target) {\n                                                        return null === source.match.fn && null !== target.match.fn && target.match.fn.test(source.match.def, getMaskSet(), pos, !1, opts, !1);\n                                                    }(altMatch, altMatch2) || function(source, target) {\n                                                        return null !== source.match.fn && null !== target.match.fn && target.match.fn.test(source.match.def.replace(/[\\[\\]]/g, \"\"), getMaskSet(), pos, !1, opts, !1);\n                                                    }(altMatch, altMatch2)) {\n                                                        altMatch.alternation === altMatch2.alternation && -1 === altMatch.locator[altMatch.alternation].toString().indexOf(altMatch2.locator[altMatch2.alternation].toString().split(\"\")[0]) && (altMatch.na = altMatch.na || altMatch.locator[altMatch.alternation].toString(), \n                                                        -1 === altMatch.na.indexOf(altMatch.locator[altMatch.alternation].toString().split(\"\")[0]) && (altMatch.na = altMatch.na + \",\" + altMatch.locator[altMatch2.alternation].toString().split(\"\")[0]), \n                                                        dropMatch = !0, altMatch.locator[altMatch.alternation] = altMatch2.locator[altMatch2.alternation].toString().split(\"\")[0] + \",\" + altMatch.locator[altMatch.alternation], \n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch));\n                                                        break;\n                                                    }\n                                                }\n                                            }\n                                            dropMatch || malternateMatches.push(altMatch);\n                                        }\n                                    }\n                                    \"string\" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) {\n                                        if (isFinite(ndx)) {\n                                            var alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(\",\");\n                                            lmnt.locator[alternation] = undefined, lmnt.alternation = undefined;\n                                            for (var alndx = 0; alndx < altLocArr.length; alndx++) -1 !== $.inArray(altLocArr[alndx], altIndexArr) && (lmnt.locator[alternation] !== undefined ? (lmnt.locator[alternation] += \",\", \n                                            lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), \n                                            lmnt.alternation = alternation);\n                                            if (lmnt.locator[alternation] !== undefined) return lmnt;\n                                        }\n                                    })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0, \n                                    match = malternateMatches.length > 0, ndxInitializer = ndxInitializerClone.slice();\n                                } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n                                if (match) return !0;\n                            } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n                                var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n                                if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) {\n                                    if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, \n                                    isFirstMatch(latestMatch, tokenGroup)) {\n                                        if (qndx > qt.quantifier.min - 1) {\n                                            insertStop = !0, testPos = pos;\n                                            break;\n                                        }\n                                        return !0;\n                                    }\n                                    return !0;\n                                }\n                            } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0;\n                        } else testPos++;\n                    }\n                    for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (!0 !== maskToken.matches[tndx].isQuantifier) {\n                        var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n                        if (match && testPos === pos) return match;\n                        if (testPos > pos) break;\n                    }\n                }\n                function filterTests(tests) {\n                    if (opts.keepStatic && pos > 0 && tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0) && !0 !== tests[0].match.optionality && !0 !== tests[0].match.optionalQuantifier && null === tests[0].match.fn && !/[0-9a-bA-Z]/.test(tests[0].match.def)) {\n                        if (getMaskSet().validPositions[pos - 1] === undefined) return [ determineTestTemplate(tests) ];\n                        if (getMaskSet().validPositions[pos - 1].alternation === tests[0].alternation) return [ determineTestTemplate(tests) ];\n                        if (getMaskSet().validPositions[pos - 1]) return [ determineTestTemplate(tests) ];\n                    }\n                    return tests;\n                }\n                var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\";\n                if (pos > -1) {\n                    if (ndxIntlzr === undefined) {\n                        for (var test, previousPos = pos - 1; (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1; ) previousPos--;\n                        test !== undefined && previousPos > -1 && (ndxInitializer = function(tests) {\n                            var locator = [];\n                            return $.isArray(tests) || (tests = [ tests ]), tests.length > 0 && (tests[0].alternation === undefined ? 0 === (locator = determineTestTemplate(tests.slice()).locator.slice()).length && (locator = tests[0].locator.slice()) : $.each(tests, function(ndx, tst) {\n                                if (\"\" !== tst.def) if (0 === locator.length) locator = tst.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += \",\" + tst.locator[i]);\n                            })), locator;\n                        }(test), cacheDependency = ndxInitializer.join(\"\"), testPos = previousPos);\n                    }\n                    if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return filterTests(getMaskSet().tests[pos]);\n                    for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length && !(resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]) && testPos === pos || testPos > pos); mtndx++) ;\n                }\n                return (0 === matches.length || insertStop) && matches.push({\n                    match: {\n                        fn: null,\n                        cardinality: 0,\n                        optionality: !0,\n                        casing: null,\n                        def: \"\",\n                        placeholder: \"\"\n                    },\n                    locator: [],\n                    cd: cacheDependency\n                }), ndxIntlzr !== undefined && getMaskSet().tests[pos] ? filterTests($.extend(!0, [], matches)) : (getMaskSet().tests[pos] = $.extend(!0, [], matches), \n                filterTests(getMaskSet().tests[pos]));\n            }\n            function getBufferTemplate() {\n                return getMaskSet()._buffer === undefined && (getMaskSet()._buffer = getMaskTemplate(!1, 1), \n                getMaskSet().buffer === undefined && (getMaskSet().buffer = getMaskSet()._buffer.slice())), \n                getMaskSet()._buffer;\n            }\n            function getBuffer(noCache) {\n                return getMaskSet().buffer !== undefined && !0 !== noCache || (getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0)), \n                getMaskSet().buffer;\n            }\n            function refreshFromBuffer(start, end, buffer) {\n                var i, p;\n                if (!0 === start) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; i < end; i++) delete getMaskSet().validPositions[i];\n                for (p = start, i = start; i < end; i++) if (resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter) {\n                    var valResult = isValid(p, buffer[i], !0, !0);\n                    !1 !== valResult && (resetMaskSet(!0), p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1);\n                }\n            }\n            function casing(elem, test, pos) {\n                switch (opts.casing || test.casing) {\n                  case \"upper\":\n                    elem = elem.toUpperCase();\n                    break;\n\n                  case \"lower\":\n                    elem = elem.toLowerCase();\n                    break;\n\n                  case \"title\":\n                    var posBefore = getMaskSet().validPositions[pos - 1];\n                    elem = 0 === pos || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE) ? elem.toUpperCase() : elem.toLowerCase();\n                    break;\n\n                  default:\n                    if ($.isFunction(opts.casing)) {\n                        var args = Array.prototype.slice.call(arguments);\n                        args.push(getMaskSet().validPositions), elem = opts.casing.apply(this, args);\n                    }\n                }\n                return elem;\n            }\n            function checkAlternationMatch(altArr1, altArr2, na) {\n                for (var naNdx, altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, naArr = na !== undefined ? na.split(\",\") : [], i = 0; i < naArr.length; i++) -1 !== (naNdx = altArr1.indexOf(naArr[i])) && altArr1.splice(naNdx, 1);\n                for (var alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {\n                    isMatch = !0;\n                    break;\n                }\n                return isMatch;\n            }\n            function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) {\n                function isSelection(posObj) {\n                    var selection = isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end == 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin == 1;\n                    return selection && 0 === posObj.begin && posObj.end === getMaskSet().maskLength ? \"full\" : selection;\n                }\n                function _isValid(position, c, strict) {\n                    var rslt = !1;\n                    return $.each(getTests(position), function(ndx, tst) {\n                        for (var test = tst.match, loopend = c ? 1 : 0, chrs = \"\", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1));\n                        if (c && (chrs += c), getBuffer(!0), !1 !== (rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && \"\" !== test.def && {\n                            c: getPlaceholder(position, test, !0) || test.def,\n                            pos: position\n                        })) {\n                            var elem = rslt.c !== undefined ? rslt.c : c;\n                            elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? getPlaceholder(position, test, !0) || test.def : elem;\n                            var validatedPos = position, possibleModifiedBuffer = getBuffer();\n                            if (rslt.remove !== undefined && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), \n                            $.each(rslt.remove.sort(function(a, b) {\n                                return b - a;\n                            }), function(ndx, lmnt) {\n                                stripValidPositions(lmnt, lmnt + 1, !0);\n                            })), rslt.insert !== undefined && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), \n                            $.each(rslt.insert.sort(function(a, b) {\n                                return a - b;\n                            }), function(ndx, lmnt) {\n                                isValid(lmnt.pos, lmnt.c, !0, fromSetValid);\n                            })), rslt.refreshFromBuffer) {\n                                var refresh = rslt.refreshFromBuffer;\n                                if (refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), \n                                rslt.pos === undefined && rslt.c === undefined) return rslt.pos = getLastValidPosition(), \n                                !1;\n                                if ((validatedPos = rslt.pos !== undefined ? rslt.pos : position) !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), \n                                !1;\n                            } else if (!0 !== rslt && rslt.pos !== undefined && rslt.pos !== position && (validatedPos = rslt.pos, \n                            refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), \n                            !1;\n                            return (!0 === rslt || rslt.pos !== undefined || rslt.c !== undefined) && (ndx > 0 && resetMaskSet(!0), \n                            setValidPosition(validatedPos, $.extend({}, tst, {\n                                input: casing(elem, test, validatedPos)\n                            }), fromSetValid, isSelection(pos)) || (rslt = !1), !1);\n                        }\n                    }), rslt;\n                }\n                function setValidPosition(pos, validTest, fromSetValid, isSelection) {\n                    if (isSelection || opts.insertMode && getMaskSet().validPositions[pos] !== undefined && fromSetValid === undefined) {\n                        var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, !0);\n                        for (i = pos; i <= lvp; i++) delete getMaskSet().validPositions[i];\n                        getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);\n                        var j, valid = !0, vps = getMaskSet().validPositions, needsValidation = !1, initialLength = getMaskSet().maskLength;\n                        for (i = j = pos; i <= lvp; i++) {\n                            var t = positionsClone[i];\n                            if (t !== undefined) for (var posMatch = j; posMatch < getMaskSet().maskLength && (null === t.match.fn && vps[i] && (!0 === vps[i].match.optionalQuantifier || !0 === vps[i].match.optionality) || null != t.match.fn); ) {\n                                if (posMatch++, !1 === needsValidation && positionsClone[posMatch] && positionsClone[posMatch].match.def === t.match.def) getMaskSet().validPositions[posMatch] = $.extend(!0, {}, positionsClone[posMatch]), \n                                getMaskSet().validPositions[posMatch].input = t.input, fillMissingNonMask(posMatch), \n                                j = posMatch, valid = !0; else if (positionCanMatchDefinition(posMatch, t.match.def)) {\n                                    var result = isValid(posMatch, t.input, !0, !0);\n                                    valid = !1 !== result, j = result.caret || result.insert ? getLastValidPosition() : posMatch, \n                                    needsValidation = !0;\n                                } else if (!(valid = !0 === t.generatedInput) && posMatch >= getMaskSet().maskLength - 1) break;\n                                if (getMaskSet().maskLength < initialLength && (getMaskSet().maskLength = initialLength), \n                                valid) break;\n                            }\n                            if (!valid) break;\n                        }\n                        if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), \n                        resetMaskSet(!0), !1;\n                    } else getMaskSet().validPositions[pos] = $.extend(!0, {}, validTest);\n                    return resetMaskSet(!0), !0;\n                }\n                function fillMissingNonMask(maskPos) {\n                    for (var pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ;\n                    var testTemplate, testsFromPos;\n                    for (pndx++; pndx < maskPos; pndx++) getMaskSet().validPositions[pndx] === undefined && (!1 === opts.jitMasking || opts.jitMasking > pndx) && (\"\" === (testsFromPos = getTests(pndx, getTestTemplate(pndx - 1).locator, pndx - 1).slice())[testsFromPos.length - 1].match.def && testsFromPos.pop(), \n                    (testTemplate = determineTestTemplate(testsFromPos)) && (testTemplate.match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && !1 !== (result = _isValid(pndx, getPlaceholder(pndx, testTemplate.match, !0) || (null == testTemplate.match.fn ? testTemplate.match.def : \"\" !== getPlaceholder(pndx) ? getPlaceholder(pndx) : getBuffer()[pndx]), !0)) && (getMaskSet().validPositions[result.pos || pndx].generatedInput = !0));\n                }\n                strict = !0 === strict;\n                var maskPos = pos;\n                pos.begin !== undefined && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin);\n                var result = !0, positionsClone = $.extend(!0, {}, getMaskSet().validPositions);\n                if ($.isFunction(opts.preValidation) && !strict && !0 !== fromSetValid && !0 !== validateOnly && (result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts)), \n                !0 === result) {\n                    if (fillMissingNonMask(maskPos), isSelection(pos) && (handleRemove(undefined, Inputmask.keyCode.DELETE, pos, !0, !0), \n                    maskPos = getMaskSet().p), maskPos < getMaskSet().maskLength && (maxLength === undefined || maskPos < maxLength) && (result = _isValid(maskPos, c, strict), \n                    (!strict || !0 === fromSetValid) && !1 === result && !0 !== validateOnly)) {\n                        var currentPosValid = getMaskSet().validPositions[maskPos];\n                        if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {\n                            if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && !isMask(maskPos, !0)) for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) if (!1 !== (result = _isValid(nPos, c, strict))) {\n                                !function(originalPos, newPos) {\n                                    var vp = getMaskSet().validPositions[newPos];\n                                    if (vp) for (var targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; ps < newPos; ps++) if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, !0)) {\n                                        var tests = getTests(ps).slice(), bestMatch = determineTestTemplate(tests, !0), equality = -1;\n                                        \"\" === tests[tests.length - 1].match.def && tests.pop(), $.each(tests, function(ndx, tst) {\n                                            for (var i = 0; i < tll; i++) {\n                                                if (tst.locator[i] === undefined || !checkAlternationMatch(tst.locator[i].toString().split(\",\"), targetLocator[i].toString().split(\",\"), tst.na)) {\n                                                    var targetAI = targetLocator[i], bestMatchAI = bestMatch.locator[i], tstAI = tst.locator[i];\n                                                    targetAI - bestMatchAI > Math.abs(targetAI - tstAI) && (bestMatch = tst);\n                                                    break;\n                                                }\n                                                equality < i && (equality = i, bestMatch = tst);\n                                            }\n                                        }), (bestMatch = $.extend({}, bestMatch, {\n                                            input: getPlaceholder(ps, bestMatch.match, !0) || bestMatch.match.def\n                                        })).generatedInput = !0, setValidPosition(ps, bestMatch, !0), getMaskSet().validPositions[newPos] = undefined, \n                                        _isValid(newPos, vp.input, !0);\n                                    }\n                                }(maskPos, result.pos !== undefined ? result.pos : nPos), maskPos = nPos;\n                                break;\n                            }\n                        } else result = {\n                            caret: seekNext(maskPos)\n                        };\n                    }\n                    !1 === result && opts.keepStatic && !strict && !0 !== fromAlternate && (result = function(pos, c, strict) {\n                        var lastAlt, alternation, altPos, prevAltPos, i, validPos, altNdxs, decisionPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), isValidRslt = !1, lAltPos = getLastValidPosition();\n                        for (prevAltPos = getMaskSet().validPositions[lAltPos]; lAltPos >= 0; lAltPos--) if ((altPos = getMaskSet().validPositions[lAltPos]) && altPos.alternation !== undefined) {\n                            if (lastAlt = lAltPos, alternation = getMaskSet().validPositions[lastAlt].alternation, \n                            prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) break;\n                            prevAltPos = altPos;\n                        }\n                        if (alternation !== undefined) {\n                            decisionPos = parseInt(lastAlt);\n                            var decisionTaker = prevAltPos.locator[prevAltPos.alternation || alternation] !== undefined ? prevAltPos.locator[prevAltPos.alternation || alternation] : altNdxs[0];\n                            decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(\",\")[0]);\n                            var possibilityPos = getMaskSet().validPositions[decisionPos], prevPos = getMaskSet().validPositions[decisionPos - 1];\n                            $.each(getTests(decisionPos, prevPos ? prevPos.locator : undefined, decisionPos - 1), function(ndx, test) {\n                                altNdxs = test.locator[alternation] ? test.locator[alternation].toString().split(\",\") : [];\n                                for (var mndx = 0; mndx < altNdxs.length; mndx++) {\n                                    var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0, verifyValidInput = !1;\n                                    if (decisionTaker < altNdxs[mndx] && (test.na === undefined || -1 === $.inArray(altNdxs[mndx], test.na.split(\",\")) || -1 === $.inArray(decisionTaker.toString(), altNdxs))) {\n                                        getMaskSet().validPositions[decisionPos] = $.extend(!0, {}, test);\n                                        var possibilities = getMaskSet().validPositions[decisionPos].locator;\n                                        for (getMaskSet().validPositions[decisionPos].locator[alternation] = parseInt(altNdxs[mndx]), \n                                        null == test.match.fn ? (possibilityPos.input !== test.match.def && (verifyValidInput = !0, \n                                        !0 !== possibilityPos.generatedInput && validInputs.push(possibilityPos.input)), \n                                        staticInputsBeforePosAlternate++, getMaskSet().validPositions[decisionPos].generatedInput = !/[0-9a-bA-Z]/.test(test.match.def), \n                                        getMaskSet().validPositions[decisionPos].input = test.match.def) : getMaskSet().validPositions[decisionPos].input = possibilityPos.input, \n                                        i = decisionPos + 1; i < getLastValidPosition(undefined, !0) + 1; i++) (validPos = getMaskSet().validPositions[i]) && !0 !== validPos.generatedInput && /[0-9a-bA-Z]/.test(validPos.input) ? validInputs.push(validPos.input) : i < pos && staticInputsBeforePos++, \n                                        delete getMaskSet().validPositions[i];\n                                        for (verifyValidInput && validInputs[0] === test.match.def && validInputs.shift(), \n                                        resetMaskSet(!0), isValidRslt = !0; validInputs.length > 0; ) {\n                                            var input = validInputs.shift();\n                                            if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(undefined, !0) + 1, input, !1, fromSetValid, !0))) break;\n                                        }\n                                        if (isValidRslt) {\n                                            getMaskSet().validPositions[decisionPos].locator = possibilities;\n                                            var targetLvp = getLastValidPosition(pos) + 1;\n                                            for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) ((validPos = getMaskSet().validPositions[i]) === undefined || null == validPos.match.fn) && i < pos + (staticInputsBeforePosAlternate - staticInputsBeforePos) && staticInputsBeforePosAlternate++;\n                                            isValidRslt = isValid((pos += staticInputsBeforePosAlternate - staticInputsBeforePos) > targetLvp ? targetLvp : pos, c, strict, fromSetValid, !0);\n                                        }\n                                        if (isValidRslt) return !1;\n                                        resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone);\n                                    }\n                                }\n                            });\n                        }\n                        return isValidRslt;\n                    }(maskPos, c, strict)), !0 === result && (result = {\n                        pos: maskPos\n                    });\n                }\n                if ($.isFunction(opts.postValidation) && !1 !== result && !strict && !0 !== fromSetValid && !0 !== validateOnly) {\n                    var postResult = opts.postValidation(getBuffer(!0), result, opts);\n                    if (postResult.refreshFromBuffer && postResult.buffer) {\n                        var refresh = postResult.refreshFromBuffer;\n                        refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, postResult.buffer);\n                    }\n                    result = !0 === postResult ? result : postResult;\n                }\n                return result && result.pos === undefined && (result.pos = maskPos), !1 !== result && !0 !== validateOnly || (resetMaskSet(!0), \n                getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result;\n            }\n            function isMask(pos, strict) {\n                var test = getTestTemplate(pos).match;\n                if (\"\" === test.def && (test = getTest(pos).match), null != test.fn) return test.fn;\n                if (!0 !== strict && pos > -1) {\n                    var tests = getTests(pos);\n                    return tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0);\n                }\n                return !1;\n            }\n            function seekNext(pos, newBlock) {\n                var maskL = getMaskSet().maskLength;\n                if (pos >= maskL) return maskL;\n                var position = pos;\n                for (getTests(maskL + 1).length > 1 && (getMaskTemplate(!0, maskL + 1, !0), maskL = getMaskSet().maskLength); ++position < maskL && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position)) || !0 !== newBlock && !isMask(position)); ) ;\n                return position;\n            }\n            function seekPrevious(pos, newBlock) {\n                var tests, position = pos;\n                if (position <= 0) return 0;\n                for (;--position > 0 && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position) && ((tests = getTests(position)).length < 2 || 2 === tests.length && \"\" === tests[1].match.def)); ) ;\n                return position;\n            }\n            function getBufferElement(position) {\n                return getMaskSet().validPositions[position] === undefined ? getPlaceholder(position) : getMaskSet().validPositions[position].input;\n            }\n            function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {\n                if (event && $.isFunction(opts.onBeforeWrite)) {\n                    var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n                    if (result) {\n                        if (result.refreshFromBuffer) {\n                            var refresh = result.refreshFromBuffer;\n                            refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer || buffer), \n                            buffer = getBuffer(!0);\n                        }\n                        caretPos !== undefined && (caretPos = result.caret !== undefined ? result.caret : caretPos);\n                    }\n                }\n                input !== undefined && (input.inputmask._valueSet(buffer.join(\"\")), caretPos === undefined || event !== undefined && \"blur\" === event.type ? renderColorMask(input, caretPos, 0 === buffer.length) : android && event && \"input\" === event.type ? setTimeout(function() {\n                    caret(input, caretPos);\n                }, 0) : caret(input, caretPos), !0 === triggerInputEvent && (skipInputEvent = !0, \n                $(input).trigger(\"input\")));\n            }\n            function getPlaceholder(pos, test, returnPL) {\n                if ((test = test || getTest(pos).match).placeholder !== undefined || !0 === returnPL) return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n                if (null === test.fn) {\n                    if (pos > -1 && getMaskSet().validPositions[pos] === undefined) {\n                        var prevTest, tests = getTests(pos), staticAlternations = [];\n                        if (tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0)) for (var i = 0; i < tests.length; i++) if (!0 !== tests[i].match.optionality && !0 !== tests[i].match.optionalQuantifier && (null === tests[i].match.fn || prevTest === undefined || !1 !== tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts)) && (staticAlternations.push(tests[i]), \n                        null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations.length > 1 && /[0-9a-bA-Z]/.test(staticAlternations[0].match.def))) return opts.placeholder.charAt(pos % opts.placeholder.length);\n                    }\n                    return test.def;\n                }\n                return opts.placeholder.charAt(pos % opts.placeholder.length);\n            }\n            function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n                function isTemplateMatch(ndx, charCodes) {\n                    return -1 !== getBufferTemplate().slice(ndx, seekNext(ndx)).join(\"\").indexOf(charCodes) && !isMask(ndx) && getTest(ndx).match.nativeDef === charCodes.charAt(charCodes.length - 1);\n                }\n                var inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = undefined;\n                if (resetMaskSet(), strict || !0 === opts.autoUnmask) initialNdx = seekNext(initialNdx); else {\n                    var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(\"\"), matches = inputValue.join(\"\").match(new RegExp(\"^\" + Inputmask.escapeRegex(staticInput), \"g\"));\n                    matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), \n                    initialNdx = seekNext(initialNdx));\n                }\n                if (-1 === initialNdx ? (getMaskSet().p = seekNext(initialNdx), initialNdx = 0) : getMaskSet().p = initialNdx, \n                $.each(inputValue, function(ndx, charCode) {\n                    if (charCode !== undefined) if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, !0) && !1 === isValid(ndx, inputValue[ndx], !0, undefined, undefined, !0)) getMaskSet().p++; else {\n                        var keypress = new $.Event(\"_checkval\");\n                        keypress.which = charCode.charCodeAt(0), charCodes += charCode;\n                        var lvp = getLastValidPosition(undefined, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : undefined, lvp);\n                        if (!isTemplateMatch(initialNdx, charCodes) || strict || opts.autoUnmask) {\n                            var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;\n                            result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, pos), \n                            initialNdx = pos + 1, charCodes = \"\";\n                        } else result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1);\n                        if (!1 !== result && !strict && $.isFunction(opts.onBeforeWrite)) {\n                            var origResult = result;\n                            if (result = opts.onBeforeWrite.call(inputmask, keypress, getBuffer(), result.forwardPosition, opts), \n                            (result = $.extend(origResult, result)) && result.refreshFromBuffer) {\n                                var refresh = result.refreshFromBuffer;\n                                refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer), \n                                resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret, result.forwardPosition = result.caret);\n                            }\n                        }\n                    }\n                }), writeOut) {\n                    var caretPos = undefined;\n                    document.activeElement === input && result && (caretPos = opts.numericInput ? seekPrevious(result.forwardPosition) : result.forwardPosition), \n                    writeBuffer(input, getBuffer(), caretPos, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && \"input\" === initiatingEvent.type);\n                }\n            }\n            function unmaskedvalue(input) {\n                if (input) {\n                    if (input.inputmask === undefined) return input.value;\n                    input.inputmask && input.inputmask.refreshValue && EventHandlers.setValueEvent.call(input);\n                }\n                var umValue = [], vps = getMaskSet().validPositions;\n                for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input);\n                var unmaskedValue = 0 === umValue.length ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n                if ($.isFunction(opts.onUnMask)) {\n                    var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n                    unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n                }\n                return unmaskedValue;\n            }\n            function caret(input, begin, end, notranslate) {\n                function translatePosition(pos) {\n                    return !0 === notranslate || !isRTL || \"number\" != typeof pos || opts.greedy && \"\" === opts.placeholder || (pos = getBuffer().join(\"\").length - pos), \n                    pos;\n                }\n                var range;\n                if (begin === undefined) return input.setSelectionRange ? (begin = input.selectionStart, \n                end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== input && range.commonAncestorContainer !== input || (begin = range.startOffset, \n                end = range.endOffset) : document.selection && document.selection.createRange && (end = (begin = 0 - (range = document.selection.createRange()).duplicate().moveStart(\"character\", -input.inputmask._valueGet().length)) + range.text.length), \n                {\n                    begin: translatePosition(begin),\n                    end: translatePosition(end)\n                };\n                if (begin.begin !== undefined && (end = begin.end, begin = begin.begin), \"number\" == typeof begin) {\n                    begin = translatePosition(begin), end = \"number\" == typeof (end = translatePosition(end)) ? end : begin;\n                    var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n                    if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || !1 !== opts.insertMode || begin !== end || end++, \n                    input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) {\n                        if (range = document.createRange(), input.firstChild === undefined || null === input.firstChild) {\n                            var textNode = document.createTextNode(\"\");\n                            input.appendChild(textNode);\n                        }\n                        range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), \n                        range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), \n                        range.collapse(!0);\n                        var sel = window.getSelection();\n                        sel.removeAllRanges(), sel.addRange(range);\n                    } else input.createTextRange && ((range = input.createTextRange()).collapse(!0), \n                    range.moveEnd(\"character\", end), range.moveStart(\"character\", begin), range.select());\n                    renderColorMask(input, {\n                        begin: begin,\n                        end: end\n                    });\n                }\n            }\n            function determineLastRequiredPosition(returnDefinition) {\n                var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined;\n                for (pos = lvp + 1; pos < buffer.length; pos++) ndxIntlzr = (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1)).locator.slice(), \n                positions[pos] = $.extend(!0, {}, testPos);\n                var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined;\n                for (pos = bl - 1; pos > lvp && (((testPos = positions[pos]).match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && \"\" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;\n                return returnDefinition ? {\n                    l: bl,\n                    def: positions[bl] ? positions[bl].match : undefined\n                } : bl;\n            }\n            function clearOptionalTail(buffer) {\n                for (var validPos, rl = determineLastRequiredPosition(), bl = buffer.length, lv = getMaskSet().validPositions[getLastValidPosition()]; rl < bl && !isMask(rl, !0) && (validPos = lv !== undefined ? getTestTemplate(rl, lv.locator.slice(\"\"), lv) : getTest(rl)) && !0 !== validPos.match.optionality && (!0 !== validPos.match.optionalQuantifier && !0 !== validPos.match.newBlockMarker || rl + 1 === bl && \"\" === (lv !== undefined ? getTestTemplate(rl + 1, lv.locator.slice(\"\"), lv) : getTest(rl + 1)).match.def); ) rl++;\n                for (;(validPos = getMaskSet().validPositions[rl - 1]) && validPos && validPos.match.optionality && validPos.input === opts.skipOptionalPartCharacter; ) rl--;\n                return buffer.splice(rl), buffer;\n            }\n            function isComplete(buffer) {\n                if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n                if (\"*\" === opts.repeat) return undefined;\n                var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);\n                if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n                    complete = !0;\n                    for (var i = 0; i <= aml; i++) {\n                        var test = getTestTemplate(i).match;\n                        if (null !== test.fn && getMaskSet().validPositions[i] === undefined && !0 !== test.optionality && !0 !== test.optionalQuantifier || null === test.fn && buffer[i] !== getPlaceholder(i, test)) {\n                            complete = !1;\n                            break;\n                        }\n                    }\n                }\n                return complete;\n            }\n            function handleRemove(input, k, pos, strict, fromIsValid) {\n                if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), \n                isRTL)) {\n                    var pend = pos.end;\n                    pos.end = pos.begin, pos.begin = pend;\n                }\n                k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || !1 === opts.insertMode) ? (pos.begin = seekPrevious(pos.begin), \n                getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator && pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0) && getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint ? pos.end + 1 : seekNext(pos.end) + 1, \n                getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator && pos.end++), \n                stripValidPositions(pos.begin, pos.end, !1, strict), !0 !== strict && function() {\n                    if (opts.keepStatic) {\n                        for (var validInputs = [], lastAlt = getLastValidPosition(-1, !0), positionsClone = $.extend(!0, {}, getMaskSet().validPositions), prevAltPos = getMaskSet().validPositions[lastAlt]; lastAlt >= 0; lastAlt--) {\n                            var altPos = getMaskSet().validPositions[lastAlt];\n                            if (altPos) {\n                                if (!0 !== altPos.generatedInput && /[0-9a-bA-Z]/.test(altPos.input) && validInputs.push(altPos.input), \n                                delete getMaskSet().validPositions[lastAlt], altPos.alternation !== undefined && altPos.locator[altPos.alternation] !== prevAltPos.locator[altPos.alternation]) break;\n                                prevAltPos = altPos;\n                            }\n                        }\n                        if (lastAlt > -1) for (getMaskSet().p = seekNext(getLastValidPosition(-1, !0)); validInputs.length > 0; ) {\n                            var keypress = new $.Event(\"keypress\");\n                            keypress.which = validInputs.pop().charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p);\n                        } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone);\n                    }\n                }();\n                var lvp = getLastValidPosition(pos.begin, !0);\n                if (lvp < pos.begin) getMaskSet().p = seekNext(lvp); else if (!0 !== strict && (getMaskSet().p = pos.begin, \n                !0 !== fromIsValid)) for (;getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined; ) getMaskSet().p++;\n            }\n            function initializeColorMask(input) {\n                function findCaretPos(clientx) {\n                    var caretPos, e = document.createElement(\"span\");\n                    for (var style in computedStyle) isNaN(style) && -1 !== style.indexOf(\"font\") && (e.style[style] = computedStyle[style]);\n                    e.style.textTransform = computedStyle.textTransform, e.style.letterSpacing = computedStyle.letterSpacing, \n                    e.style.position = \"absolute\", e.style.height = \"auto\", e.style.width = \"auto\", \n                    e.style.visibility = \"hidden\", e.style.whiteSpace = \"nowrap\", document.body.appendChild(e);\n                    var itl, inputText = input.inputmask._valueGet(), previousWidth = 0;\n                    for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) {\n                        if (e.innerHTML += inputText.charAt(caretPos) || \"_\", e.offsetWidth >= clientx) {\n                            var offset1 = clientx - previousWidth, offset2 = e.offsetWidth - clientx;\n                            e.innerHTML = inputText.charAt(caretPos), caretPos = (offset1 -= e.offsetWidth / 3) < offset2 ? caretPos - 1 : caretPos;\n                            break;\n                        }\n                        previousWidth = e.offsetWidth;\n                    }\n                    return document.body.removeChild(e), caretPos;\n                }\n                var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null), template = document.createElement(\"div\");\n                template.style.width = computedStyle.width, template.style.textAlign = computedStyle.textAlign, \n                (colorMask = document.createElement(\"div\")).className = \"im-colormask\", input.parentNode.insertBefore(colorMask, input), \n                input.parentNode.removeChild(input), colorMask.appendChild(template), colorMask.appendChild(input), \n                input.style.left = template.offsetLeft + \"px\", $(input).on(\"click\", function(e) {\n                    return caret(input, findCaretPos(e.clientX)), EventHandlers.clickEvent.call(input, [ e ]);\n                }), $(input).on(\"keydown\", function(e) {\n                    e.shiftKey || !1 === opts.insertMode || setTimeout(function() {\n                        renderColorMask(input);\n                    }, 0);\n                });\n            }\n            function renderColorMask(input, caretPos, clear) {\n                function handleStatic() {\n                    isStatic || null !== test.fn && testPos.input !== undefined ? isStatic && (null !== test.fn && testPos.input !== undefined || \"\" === test.def) && (isStatic = !1, \n                    maskTemplate += \"</span>\") : (isStatic = !0, maskTemplate += \"<span class='im-static'>\");\n                }\n                function handleCaret(force) {\n                    !0 !== force && pos !== caretPos.begin || document.activeElement !== input || (maskTemplate += \"<span class='im-caret' style='border-right-width: 1px;border-right-style: solid;'></span>\");\n                }\n                var test, testPos, ndxIntlzr, maskTemplate = \"\", isStatic = !1, pos = 0;\n                if (colorMask !== undefined) {\n                    var buffer = getBuffer();\n                    if (caretPos === undefined ? caretPos = caret(input) : caretPos.begin === undefined && (caretPos = {\n                        begin: caretPos,\n                        end: caretPos\n                    }), !0 !== clear) {\n                        var lvp = getLastValidPosition();\n                        do {\n                            handleCaret(), getMaskSet().validPositions[pos] ? (testPos = getMaskSet().validPositions[pos], \n                            test = testPos.match, ndxIntlzr = testPos.locator.slice(), handleStatic(), maskTemplate += buffer[pos]) : (testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), \n                            test = testPos.match, ndxIntlzr = testPos.locator.slice(), (!1 === opts.jitMasking || pos < lvp || \"number\" == typeof opts.jitMasking && isFinite(opts.jitMasking) && opts.jitMasking > pos) && (handleStatic(), \n                            maskTemplate += getPlaceholder(pos, test))), pos++;\n                        } while ((maxLength === undefined || pos < maxLength) && (null !== test.fn || \"\" !== test.def) || lvp > pos || isStatic);\n                        -1 === maskTemplate.indexOf(\"im-caret\") && handleCaret(!0), isStatic && handleStatic();\n                    }\n                    var template = colorMask.getElementsByTagName(\"div\")[0];\n                    template.innerHTML = maskTemplate, input.inputmask.positionColorMask(input, template);\n                }\n            }\n            maskset = maskset || this.maskset, opts = opts || this.opts;\n            var undoValue, $el, maxLength, colorMask, inputmask = this, el = this.el, isRTL = this.isRTL, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !1, EventRuler = {\n                on: function(input, eventName, eventHandler) {\n                    var ev = function(e) {\n                        if (this.inputmask === undefined && \"FORM\" !== this.nodeName) {\n                            var imOpts = $.data(this, \"_inputmask_opts\");\n                            imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this);\n                        } else {\n                            if (\"setvalue\" === e.type || \"FORM\" === this.nodeName || !(this.disabled || this.readOnly && !(\"keydown\" === e.type && e.ctrlKey && 67 === e.keyCode || !1 === opts.tabThrough && e.keyCode === Inputmask.keyCode.TAB))) {\n                                switch (e.type) {\n                                  case \"input\":\n                                    if (!0 === skipInputEvent) return skipInputEvent = !1, e.preventDefault();\n                                    break;\n\n                                  case \"keydown\":\n                                    skipKeyPressEvent = !1, skipInputEvent = !1;\n                                    break;\n\n                                  case \"keypress\":\n                                    if (!0 === skipKeyPressEvent) return e.preventDefault();\n                                    skipKeyPressEvent = !0;\n                                    break;\n\n                                  case \"click\":\n                                    if (iemobile || iphone) {\n                                        var that = this, args = arguments;\n                                        return setTimeout(function() {\n                                            eventHandler.apply(that, args);\n                                        }, 0), !1;\n                                    }\n                                }\n                                var returnVal = eventHandler.apply(this, arguments);\n                                return !1 === returnVal && (e.preventDefault(), e.stopPropagation()), returnVal;\n                            }\n                            e.preventDefault();\n                        }\n                    };\n                    input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), \n                    -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);\n                },\n                off: function(input, event) {\n                    if (input.inputmask && input.inputmask.events) {\n                        var events;\n                        event ? (events = [])[event] = input.inputmask.events[event] : events = input.inputmask.events, \n                        $.each(events, function(eventName, evArr) {\n                            for (;evArr.length > 0; ) {\n                                var ev = evArr.pop();\n                                -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);\n                            }\n                            delete input.inputmask.events[eventName];\n                        });\n                    }\n                }\n            }, EventHandlers = {\n                keydownEvent: function(e) {\n                    var input = this, $input = $(input), k = e.keyCode, pos = caret(input);\n                    if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !function(eventName) {\n                        var el = document.createElement(\"input\"), evName = \"on\" + eventName, isSupported = evName in el;\n                        return isSupported || (el.setAttribute(evName, \"return;\"), isSupported = \"function\" == typeof el[evName]), \n                        el = null, isSupported;\n                    }(\"cut\")) e.preventDefault(), handleRemove(input, k, pos), writeBuffer(input, getBuffer(!0), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join(\"\")), \n                    input.inputmask._valueGet() === getBufferTemplate().join(\"\") ? $input.trigger(\"cleared\") : !0 === isComplete(getBuffer()) && $input.trigger(\"complete\"); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {\n                        e.preventDefault();\n                        var caretPos = seekNext(getLastValidPosition());\n                        opts.insertMode || caretPos !== getMaskSet().maskLength || e.shiftKey || caretPos--, \n                        caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);\n                    } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), \n                    caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && !0 !== e.altKey ? (checkVal(input, !0, !1, undoValue.split(\"\")), \n                    $input.trigger(\"click\")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? !0 === opts.tabThrough && k === Inputmask.keyCode.TAB ? (!0 === e.shiftKey ? (null === getTest(pos.begin).match.fn && (pos.begin = seekNext(pos.begin)), \n                    pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), \n                    pos.end = seekNext(pos.begin, !0), pos.end < getMaskSet().maskLength && pos.end--), \n                    pos.begin < getMaskSet().maskLength && (e.preventDefault(), caret(input, pos.begin, pos.end))) : e.shiftKey || !1 === opts.insertMode && (k === Inputmask.keyCode.RIGHT ? setTimeout(function() {\n                        var caretPos = caret(input);\n                        caret(input, caretPos.begin);\n                    }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() {\n                        var caretPos = caret(input);\n                        caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);\n                    }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskSet().maskLength ? pos.begin : pos.begin - 1));\n                    opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables);\n                },\n                keypressEvent: function(e, checkval, writeOut, strict, ndx) {\n                    var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n                    if (!(!0 === checkval || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join(\"\") && (undoValue = getBuffer().join(\"\"), \n                    setTimeout(function() {\n                        $input.trigger(\"change\");\n                    }, 0)), !0;\n                    if (k) {\n                        46 === k && !1 === e.shiftKey && \"\" !== opts.radixPoint && (k = opts.radixPoint.charCodeAt(0));\n                        var forwardPosition, pos = checkval ? {\n                            begin: ndx,\n                            end: ndx\n                        } : caret(input), c = String.fromCharCode(k);\n                        getMaskSet().writeOutBuffer = !0;\n                        var valResult = isValid(pos, c, strict);\n                        if (!1 !== valResult && (resetMaskSet(!0), forwardPosition = valResult.caret !== undefined ? valResult.caret : checkval ? valResult.pos + 1 : seekNext(valResult.pos), \n                        getMaskSet().p = forwardPosition), !1 !== writeOut && (setTimeout(function() {\n                            opts.onKeyValidation.call(input, k, valResult, opts);\n                        }, 0), getMaskSet().writeOutBuffer && !1 !== valResult)) {\n                            var buffer = getBuffer();\n                            writeBuffer(input, buffer, opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition, e, !0 !== checkval), \n                            !0 !== checkval && setTimeout(function() {\n                                !0 === isComplete(buffer) && $input.trigger(\"complete\");\n                            }, 0);\n                        }\n                        if (e.preventDefault(), checkval) return !1 !== valResult && (valResult.forwardPosition = forwardPosition), \n                        valResult;\n                    }\n                },\n                pasteEvent: function(e) {\n                    var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input);\n                    isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);\n                    var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n                    if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\") && (valueBeforeCaret = \"\"), \n                    valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\") && (valueAfterCaret = \"\"), \n                    isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), \n                    window.clipboardData && window.clipboardData.getData) inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret; else {\n                        if (!ev.clipboardData || !ev.clipboardData.getData) return !0;\n                        inputValue = valueBeforeCaret + ev.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n                    }\n                    var pasteValue = inputValue;\n                    if ($.isFunction(opts.onBeforePaste)) {\n                        if (!1 === (pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts))) return e.preventDefault();\n                        pasteValue || (pasteValue = inputValue);\n                    }\n                    return checkVal(input, !1, !1, isRTL ? pasteValue.split(\"\").reverse() : pasteValue.toString().split(\"\")), \n                    writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\")), \n                    !0 === isComplete(getBuffer()) && $input.trigger(\"complete\"), e.preventDefault();\n                },\n                inputFallBackEvent: function(e) {\n                    var input = this, inputValue = input.inputmask._valueGet();\n                    if (getBuffer().join(\"\") !== inputValue) {\n                        var caretPos = caret(input);\n                        if (!1 === function(input, inputValue, caretPos) {\n                            if (\".\" === inputValue.charAt(caretPos.begin - 1) && \"\" !== opts.radixPoint && ((inputValue = inputValue.split(\"\"))[caretPos.begin - 1] = opts.radixPoint.charAt(0), \n                            inputValue = inputValue.join(\"\")), inputValue.charAt(caretPos.begin - 1) === opts.radixPoint && inputValue.length > getBuffer().length) {\n                                var keypress = new $.Event(\"keypress\");\n                                return keypress.which = opts.radixPoint.charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !0, !1, caretPos.begin - 1), \n                                !1;\n                            }\n                        }(input, inputValue, caretPos)) return !1;\n                        if (inputValue = inputValue.replace(new RegExp(\"(\" + Inputmask.escapeRegex(getBufferTemplate().join(\"\")) + \")*\"), \"\"), \n                        !1 === function(input, inputValue, caretPos) {\n                            if (iemobile) {\n                                var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n                                if (1 === inputChar.length) {\n                                    var keypress = new $.Event(\"keypress\");\n                                    return keypress.which = inputChar.charCodeAt(0), EventHandlers.keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), \n                                    !1;\n                                }\n                            }\n                        }(input, inputValue, caretPos)) return !1;\n                        caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input));\n                        var buffer = getBuffer().join(\"\"), frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin), backBufferPart = buffer.substr(caretPos.begin), selection = caretPos, entries = \"\", isEntry = !1;\n                        if (frontPart !== frontBufferPart) {\n                            selection.begin = 0;\n                            for (var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) selection.begin++;\n                            isEntry && (entries += frontPart.slice(selection.begin, selection.end));\n                        }\n                        backPart !== backBufferPart && (backPart.length > backBufferPart.length ? isEntry && (selection.end = selection.begin) : backPart.length < backBufferPart.length ? selection.end += backBufferPart.length - backPart.length : backPart.charAt(0) !== backBufferPart.charAt(0) && selection.end++), \n                        writeBuffer(input, getBuffer(), selection), entries.length > 0 ? $.each(entries.split(\"\"), function(ndx, entry) {\n                            var keypress = new $.Event(\"keypress\");\n                            keypress.which = entry.charCodeAt(0), ignorable = !1, EventHandlers.keypressEvent.call(input, keypress);\n                        }) : (selection.begin === selection.end - 1 && caret(input, seekPrevious(selection.begin + 1), selection.end), \n                        e.keyCode = Inputmask.keyCode.DELETE, EventHandlers.keydownEvent.call(input, e)), \n                        e.preventDefault();\n                    }\n                },\n                setValueEvent: function(e) {\n                    this.inputmask.refreshValue = !1;\n                    var input = this, value = input.inputmask._valueGet(!0);\n                    $.isFunction(opts.onBeforeMask) && (value = opts.onBeforeMask.call(inputmask, value, opts) || value), \n                    value = value.split(\"\"), checkVal(input, !0, !1, isRTL ? value.reverse() : value), \n                    undoValue = getBuffer().join(\"\"), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\") && input.inputmask._valueSet(\"\");\n                },\n                focusEvent: function(e) {\n                    var input = this, nptValue = input.inputmask._valueGet();\n                    opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && \"\" === nptValue) && (input.inputmask._valueGet() !== getBuffer().join(\"\") ? writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : !1 === mouseEnter && caret(input, seekNext(getLastValidPosition()))), \n                    !0 === opts.positionCaretOnTab && !1 === mouseEnter && \"\" !== nptValue && (writeBuffer(input, getBuffer(), caret(input)), \n                    EventHandlers.clickEvent.apply(input, [ e, !0 ])), undoValue = getBuffer().join(\"\");\n                },\n                mouseleaveEvent: function(e) {\n                    var input = this;\n                    if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) {\n                        var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet();\n                        nptValue !== input.getAttribute(\"placeholder\") && \"\" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer), \n                        writeBuffer(input, buffer));\n                    }\n                },\n                clickEvent: function(e, tabbed) {\n                    function doRadixFocus(clickPos) {\n                        if (\"\" !== opts.radixPoint) {\n                            var vps = getMaskSet().validPositions;\n                            if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) {\n                                if (clickPos < seekNext(-1)) return !0;\n                                var radixPos = $.inArray(opts.radixPoint, getBuffer());\n                                if (-1 !== radixPos) {\n                                    for (var vp in vps) if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) return !1;\n                                    return !0;\n                                }\n                            }\n                        }\n                        return !1;\n                    }\n                    var input = this;\n                    setTimeout(function() {\n                        if (document.activeElement === input) {\n                            var selectedCaret = caret(input);\n                            if (tabbed && (isRTL ? selectedCaret.end = selectedCaret.begin : selectedCaret.begin = selectedCaret.end), \n                            selectedCaret.begin === selectedCaret.end) switch (opts.positionCaretOnClick) {\n                              case \"none\":\n                                break;\n\n                              case \"radixFocus\":\n                                if (doRadixFocus(selectedCaret.begin)) {\n                                    var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n                                    caret(input, opts.numericInput ? seekNext(radixPos) : radixPos);\n                                    break;\n                                }\n\n                              default:\n                                var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);\n                                if (clickPosition < lastPosition) caret(input, isMask(clickPosition, !0) || isMask(clickPosition - 1, !0) ? clickPosition : seekNext(clickPosition)); else {\n                                    var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n                                    if (\"\" !== placeholder && getBuffer()[lastPosition] !== placeholder && !0 !== tt.match.optionalQuantifier && !0 !== tt.match.newBlockMarker || !isMask(lastPosition, !0) && tt.match.def === placeholder) {\n                                        var newPos = seekNext(lastPosition);\n                                        (clickPosition >= newPos || clickPosition === lastPosition) && (lastPosition = newPos);\n                                    }\n                                    caret(input, lastPosition);\n                                }\n                            }\n                        }\n                    }, 0);\n                },\n                dblclickEvent: function(e) {\n                    var input = this;\n                    setTimeout(function() {\n                        caret(input, 0, seekNext(getLastValidPosition()));\n                    }, 0);\n                },\n                cutEvent: function(e) {\n                    var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n                    clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\")), \n                    document.execCommand && document.execCommand(\"copy\"), handleRemove(input, Inputmask.keyCode.DELETE, pos), \n                    writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join(\"\")), \n                    input.inputmask._valueGet() === getBufferTemplate().join(\"\") && $input.trigger(\"cleared\");\n                },\n                blurEvent: function(e) {\n                    var $input = $(this), input = this;\n                    if (input.inputmask) {\n                        var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();\n                        \"\" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer)), \n                        !1 === isComplete(buffer) && (setTimeout(function() {\n                            $input.trigger(\"incomplete\");\n                        }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), \n                        writeBuffer(input, buffer, undefined, e)), undoValue !== getBuffer().join(\"\") && (undoValue = buffer.join(\"\"), \n                        $input.trigger(\"change\"));\n                    }\n                },\n                mouseenterEvent: function(e) {\n                    var input = this;\n                    mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join(\"\") && writeBuffer(input, getBuffer());\n                },\n                submitEvent: function(e) {\n                    undoValue !== getBuffer().join(\"\") && $el.trigger(\"change\"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\") && el.inputmask._valueSet(\"\"), \n                    opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), \n                    setTimeout(function() {\n                        writeBuffer(el, getBuffer());\n                    }, 0));\n                },\n                resetEvent: function(e) {\n                    el.inputmask.refreshValue = !0, setTimeout(function() {\n                        $el.trigger(\"setvalue\");\n                    }, 0);\n                }\n            };\n            Inputmask.prototype.positionColorMask = function(input, template) {\n                input.style.left = template.offsetLeft + \"px\";\n            };\n            var valueBuffer;\n            if (actionObj !== undefined) switch (actionObj.action) {\n              case \"isComplete\":\n                return el = actionObj.el, isComplete(getBuffer());\n\n              case \"unmaskedvalue\":\n                return el !== undefined && actionObj.value === undefined || (valueBuffer = actionObj.value, \n                valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(\"\"), \n                checkVal(undefined, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts)), \n                unmaskedvalue(el);\n\n              case \"mask\":\n                !function(elem) {\n                    EventRuler.off(elem);\n                    var isSupported = function(input, opts) {\n                        var elementType = input.getAttribute(\"type\"), isSupported = \"INPUT\" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || \"TEXTAREA\" === input.tagName;\n                        if (!isSupported) if (\"INPUT\" === input.tagName) {\n                            var el = document.createElement(\"input\");\n                            el.setAttribute(\"type\", elementType), isSupported = \"text\" === el.type, el = null;\n                        } else isSupported = \"partial\";\n                        return !1 !== isSupported ? function(npt) {\n                            function getter() {\n                                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || !0 !== opts.nullable ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\" : valueGet.call(this);\n                            }\n                            function setter(value) {\n                                valueSet.call(this, value), this.inputmask && $(this).trigger(\"setvalue\");\n                            }\n                            var valueGet, valueSet;\n                            if (!npt.inputmask.__valueGet) {\n                                if (!0 !== opts.noValuePatching) {\n                                    if (Object.getOwnPropertyDescriptor) {\n                                        \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === _typeof(\"test\".__proto__) ? function(object) {\n                                            return object.__proto__;\n                                        } : function(object) {\n                                            return object.constructor.prototype;\n                                        });\n                                        var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : undefined;\n                                        valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, \n                                        valueSet = valueProperty.set, Object.defineProperty(npt, \"value\", {\n                                            get: getter,\n                                            set: setter,\n                                            configurable: !0\n                                        })) : \"INPUT\" !== npt.tagName && (valueGet = function() {\n                                            return this.textContent;\n                                        }, valueSet = function(value) {\n                                            this.textContent = value;\n                                        }, Object.defineProperty(npt, \"value\", {\n                                            get: getter,\n                                            set: setter,\n                                            configurable: !0\n                                        }));\n                                    } else document.__lookupGetter__ && npt.__lookupGetter__(\"value\") && (valueGet = npt.__lookupGetter__(\"value\"), \n                                    valueSet = npt.__lookupSetter__(\"value\"), npt.__defineGetter__(\"value\", getter), \n                                    npt.__defineSetter__(\"value\", setter));\n                                    npt.inputmask.__valueGet = valueGet, npt.inputmask.__valueSet = valueSet;\n                                }\n                                npt.inputmask._valueGet = function(overruleRTL) {\n                                    return isRTL && !0 !== overruleRTL ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n                                }, npt.inputmask._valueSet = function(value, overruleRTL) {\n                                    valueSet.call(this.el, null === value || value === undefined ? \"\" : !0 !== overruleRTL && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n                                }, valueGet === undefined && (valueGet = function() {\n                                    return this.value;\n                                }, valueSet = function(value) {\n                                    this.value = value;\n                                }, function(type) {\n                                    if ($.valHooks && ($.valHooks[type] === undefined || !0 !== $.valHooks[type].inputmaskpatch)) {\n                                        var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n                                            return elem.value;\n                                        }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n                                            return elem.value = value, elem;\n                                        };\n                                        $.valHooks[type] = {\n                                            get: function(elem) {\n                                                if (elem.inputmask) {\n                                                    if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();\n                                                    var result = valhookGet(elem);\n                                                    return -1 !== getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) || !0 !== opts.nullable ? result : \"\";\n                                                }\n                                                return valhookGet(elem);\n                                            },\n                                            set: function(elem, value) {\n                                                var result, $elem = $(elem);\n                                                return result = valhookSet(elem, value), elem.inputmask && $elem.trigger(\"setvalue\"), \n                                                result;\n                                            },\n                                            inputmaskpatch: !0\n                                        };\n                                    }\n                                }(npt.type), function(npt) {\n                                    EventRuler.on(npt, \"mouseenter\", function(event) {\n                                        var $input = $(this);\n                                        this.inputmask._valueGet() !== getBuffer().join(\"\") && $input.trigger(\"setvalue\");\n                                    });\n                                }(npt));\n                            }\n                        }(input) : input.inputmask = undefined, isSupported;\n                    }(elem, opts);\n                    if (!1 !== isSupported && (el = elem, $el = $(el), -1 === (maxLength = el !== undefined ? el.maxLength : undefined) && (maxLength = undefined), \n                    !0 === opts.colorMask && initializeColorMask(el), android && (el.hasOwnProperty(\"inputmode\") && (el.inputmode = opts.inputmode, \n                    el.setAttribute(\"inputmode\", opts.inputmode)), \"rtfm\" === opts.androidHack && (!0 !== opts.colorMask && initializeColorMask(el), \n                    el.type = \"password\")), !0 === isSupported && (EventRuler.on(el, \"submit\", EventHandlers.submitEvent), \n                    EventRuler.on(el, \"reset\", EventHandlers.resetEvent), EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent), \n                    EventRuler.on(el, \"blur\", EventHandlers.blurEvent), EventRuler.on(el, \"focus\", EventHandlers.focusEvent), \n                    EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent), !0 !== opts.colorMask && EventRuler.on(el, \"click\", EventHandlers.clickEvent), \n                    EventRuler.on(el, \"dblclick\", EventHandlers.dblclickEvent), EventRuler.on(el, \"paste\", EventHandlers.pasteEvent), \n                    EventRuler.on(el, \"dragdrop\", EventHandlers.pasteEvent), EventRuler.on(el, \"drop\", EventHandlers.pasteEvent), \n                    EventRuler.on(el, \"cut\", EventHandlers.cutEvent), EventRuler.on(el, \"complete\", opts.oncomplete), \n                    EventRuler.on(el, \"incomplete\", opts.onincomplete), EventRuler.on(el, \"cleared\", opts.oncleared), \n                    android || !0 === opts.inputEventOnly ? el.removeAttribute(\"maxLength\") : (EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent), \n                    EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent)), EventRuler.on(el, \"compositionstart\", $.noop), \n                    EventRuler.on(el, \"compositionupdate\", $.noop), EventRuler.on(el, \"compositionend\", $.noop), \n                    EventRuler.on(el, \"keyup\", $.noop), EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent), \n                    EventRuler.on(el, \"beforeinput\", $.noop)), EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent), \n                    undoValue = getBufferTemplate().join(\"\"), \"\" !== el.inputmask._valueGet(!0) || !1 === opts.clearMaskOnLostFocus || document.activeElement === el)) {\n                        var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(!0), opts) || el.inputmask._valueGet(!0) : el.inputmask._valueGet(!0);\n                        \"\" !== initialValue && checkVal(el, !0, !1, isRTL ? initialValue.split(\"\").reverse() : initialValue.split(\"\"));\n                        var buffer = getBuffer().slice();\n                        undoValue = buffer.join(\"\"), !1 === isComplete(buffer) && opts.clearIncomplete && resetMaskSet(), \n                        opts.clearMaskOnLostFocus && document.activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), \n                        writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition()));\n                    }\n                }(el);\n                break;\n\n              case \"format\":\n                return valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(\"\"), \n                checkVal(undefined, !0, !1, isRTL ? valueBuffer.reverse() : valueBuffer), actionObj.metadata ? {\n                    value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n                    metadata: maskScope.call(this, {\n                        action: \"getmetadata\"\n                    }, maskset, opts)\n                } : isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n              case \"isValid\":\n                actionObj.value ? (valueBuffer = actionObj.value.split(\"\"), checkVal(undefined, !0, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join(\"\");\n                for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;\n                return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join(\"\");\n\n              case \"getemptymask\":\n                return getBufferTemplate().join(\"\");\n\n              case \"remove\":\n                if (el && el.inputmask) {\n                    $el = $(el), el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(!0)), \n                    EventRuler.off(el);\n                    Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\") && el.inputmask.__valueGet && Object.defineProperty(el, \"value\", {\n                        get: el.inputmask.__valueGet,\n                        set: el.inputmask.__valueSet,\n                        configurable: !0\n                    }) : document.__lookupGetter__ && el.__lookupGetter__(\"value\") && el.inputmask.__valueGet && (el.__defineGetter__(\"value\", el.inputmask.__valueGet), \n                    el.__defineSetter__(\"value\", el.inputmask.__valueSet)), el.inputmask = undefined;\n                }\n                return el;\n\n              case \"getmetadata\":\n                if ($.isArray(maskset.metadata)) {\n                    var maskTarget = getMaskTemplate(!0, 0, !1).join(\"\");\n                    return $.each(maskset.metadata, function(ndx, mtdt) {\n                        if (mtdt.mask === maskTarget) return maskTarget = mtdt, !1;\n                    }), maskTarget;\n                }\n                return maskset.metadata;\n            }\n        }\n        var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile, android = /android/i.test(ua) && !iemobile;\n        return Inputmask.prototype = {\n            dataAttribute: \"data-inputmask\",\n            defaults: {\n                placeholder: \"_\",\n                optionalmarker: {\n                    start: \"[\",\n                    end: \"]\"\n                },\n                quantifiermarker: {\n                    start: \"{\",\n                    end: \"}\"\n                },\n                groupmarker: {\n                    start: \"(\",\n                    end: \")\"\n                },\n                alternatormarker: \"|\",\n                escapeChar: \"\\\\\",\n                mask: null,\n                regex: null,\n                oncomplete: $.noop,\n                onincomplete: $.noop,\n                oncleared: $.noop,\n                repeat: 0,\n                greedy: !0,\n                autoUnmask: !1,\n                removeMaskOnSubmit: !1,\n                clearMaskOnLostFocus: !0,\n                insertMode: !0,\n                clearIncomplete: !1,\n                alias: null,\n                onKeyDown: $.noop,\n                onBeforeMask: null,\n                onBeforePaste: function(pastedValue, opts) {\n                    return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n                },\n                onBeforeWrite: null,\n                onUnMask: null,\n                showMaskOnFocus: !0,\n                showMaskOnHover: !0,\n                onKeyValidation: $.noop,\n                skipOptionalPartCharacter: \" \",\n                numericInput: !1,\n                rightAlign: !1,\n                undoOnEscape: !0,\n                radixPoint: \"\",\n                radixPointDefinitionSymbol: undefined,\n                groupSeparator: \"\",\n                keepStatic: null,\n                positionCaretOnTab: !0,\n                tabThrough: !1,\n                supportsInputType: [ \"text\", \"tel\", \"password\" ],\n                ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n                isComplete: null,\n                canClearPosition: $.noop,\n                preValidation: null,\n                postValidation: null,\n                staticDefinitionSymbol: undefined,\n                jitMasking: !1,\n                nullable: !0,\n                inputEventOnly: !1,\n                noValuePatching: !1,\n                positionCaretOnClick: \"lvp\",\n                casing: null,\n                inputmode: \"verbatim\",\n                colorMask: !1,\n                androidHack: !1,\n                importDataAttributes: !0\n            },\n            definitions: {\n                \"9\": {\n                    validator: \"[0-9１-９]\",\n                    cardinality: 1,\n                    definitionSymbol: \"*\"\n                },\n                a: {\n                    validator: \"[A-Za-zА-яЁёÀ-ÿµ]\",\n                    cardinality: 1,\n                    definitionSymbol: \"*\"\n                },\n                \"*\": {\n                    validator: \"[0-9１-９A-Za-zА-яЁёÀ-ÿµ]\",\n                    cardinality: 1\n                }\n            },\n            aliases: {},\n            masksCache: {},\n            mask: function(elems) {\n                function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n                    if (!0 === opts.importDataAttributes) {\n                        var option, dataoptions, optionData, p, importOption = function(option, optionData) {\n                            null !== (optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + \"-\" + option)) && (\"string\" == typeof optionData && (0 === option.indexOf(\"on\") ? optionData = window[optionData] : \"false\" === optionData ? optionData = !1 : \"true\" === optionData && (optionData = !0)), \n                            userOptions[option] = optionData);\n                        }, attrOptions = npt.getAttribute(dataAttribute);\n                        if (attrOptions && \"\" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp(\"'\", \"g\"), '\"'), \n                        dataoptions = JSON.parse(\"{\" + attrOptions + \"}\")), dataoptions) {\n                            optionData = undefined;\n                            for (p in dataoptions) if (\"alias\" === p.toLowerCase()) {\n                                optionData = dataoptions[p];\n                                break;\n                            }\n                        }\n                        importOption(\"alias\", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts);\n                        for (option in opts) {\n                            if (dataoptions) {\n                                optionData = undefined;\n                                for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) {\n                                    optionData = dataoptions[p];\n                                    break;\n                                }\n                            }\n                            importOption(option, optionData);\n                        }\n                    }\n                    return $.extend(!0, opts, userOptions), (\"rtl\" === npt.dir || opts.rightAlign) && (npt.style.textAlign = \"right\"), \n                    (\"rtl\" === npt.dir || opts.numericInput) && (npt.dir = \"ltr\", npt.removeAttribute(\"dir\"), \n                    opts.isRTL = !0), opts;\n                }\n                var that = this;\n                return \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n                elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n                    var scopedOpts = $.extend(!0, {}, that.opts);\n                    importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions), that.dataAttribute);\n                    var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n                    maskset !== undefined && (el.inputmask !== undefined && (el.inputmask.opts.autoUnmask = !0, \n                    el.inputmask.remove()), el.inputmask = new Inputmask(undefined, undefined, !0), \n                    el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), \n                    el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput, el.inputmask.el = el, \n                    el.inputmask.maskset = maskset, $.data(el, \"_inputmask_opts\", scopedOpts), maskScope.call(el.inputmask, {\n                        action: \"mask\"\n                    }));\n                }), elems && elems[0] ? elems[0].inputmask || this : this;\n            },\n            option: function(options, noremask) {\n                return \"string\" == typeof options ? this.opts[options] : \"object\" === (void 0 === options ? \"undefined\" : _typeof(options)) ? ($.extend(this.userOptions, options), \n                this.el && !0 !== noremask && this.mask(this.el), this) : void 0;\n            },\n            unmaskedvalue: function(value) {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"unmaskedvalue\",\n                    value: value\n                });\n            },\n            remove: function() {\n                return maskScope.call(this, {\n                    action: \"remove\"\n                });\n            },\n            getemptymask: function() {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"getemptymask\"\n                });\n            },\n            hasMaskedValue: function() {\n                return !this.opts.autoUnmask;\n            },\n            isComplete: function() {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"isComplete\"\n                });\n            },\n            getmetadata: function() {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"getmetadata\"\n                });\n            },\n            isValid: function(value) {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"isValid\",\n                    value: value\n                });\n            },\n            format: function(value, metadata) {\n                return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n                maskScope.call(this, {\n                    action: \"format\",\n                    value: value,\n                    metadata: metadata\n                });\n            },\n            analyseMask: function(mask, regexMask, opts) {\n                function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n                    this.matches = [], this.openGroup = isGroup || !1, this.alternatorGroup = !1, this.isGroup = isGroup || !1, \n                    this.isOptional = isOptional || !1, this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, \n                    this.quantifier = {\n                        min: 1,\n                        max: 1\n                    };\n                }\n                function insertTestDefinition(mtoken, element, position) {\n                    position = position !== undefined ? position : mtoken.matches.length;\n                    var prevMatch = mtoken.matches[position - 1];\n                    if (regexMask) 0 === element.indexOf(\"[\") || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || \".\" === element ? mtoken.matches.splice(position++, 0, {\n                        fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n                        cardinality: 1,\n                        optionality: mtoken.isOptional,\n                        newBlockMarker: prevMatch === undefined || prevMatch.def !== element,\n                        casing: null,\n                        def: element,\n                        placeholder: undefined,\n                        nativeDef: element\n                    }) : (escaped && (element = element[element.length - 1]), $.each(element.split(\"\"), function(ndx, lmnt) {\n                        prevMatch = mtoken.matches[position - 1], mtoken.matches.splice(position++, 0, {\n                            fn: null,\n                            cardinality: 0,\n                            optionality: mtoken.isOptional,\n                            newBlockMarker: prevMatch === undefined || prevMatch.def !== lmnt && null !== prevMatch.fn,\n                            casing: null,\n                            def: opts.staticDefinitionSymbol || lmnt,\n                            placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined,\n                            nativeDef: lmnt\n                        });\n                    })), escaped = !1; else {\n                        var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element];\n                        if (maskdef && !escaped) {\n                            for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) {\n                                var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality;\n                                mtoken.matches.splice(position++, 0, {\n                                    fn: validator ? \"string\" == typeof validator ? new RegExp(validator, opts.casing ? \"i\" : \"\") : new function() {\n                                        this.test = validator;\n                                    }() : new RegExp(\".\"),\n                                    cardinality: cardinality || 1,\n                                    optionality: mtoken.isOptional,\n                                    newBlockMarker: prevMatch === undefined || prevMatch.def !== (maskdef.definitionSymbol || element),\n                                    casing: maskdef.casing,\n                                    def: maskdef.definitionSymbol || element,\n                                    placeholder: maskdef.placeholder,\n                                    nativeDef: element\n                                }), prevMatch = mtoken.matches[position - 1];\n                            }\n                            mtoken.matches.splice(position++, 0, {\n                                fn: maskdef.validator ? \"string\" == typeof maskdef.validator ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n                                    this.test = maskdef.validator;\n                                }() : new RegExp(\".\"),\n                                cardinality: maskdef.cardinality,\n                                optionality: mtoken.isOptional,\n                                newBlockMarker: prevMatch === undefined || prevMatch.def !== (maskdef.definitionSymbol || element),\n                                casing: maskdef.casing,\n                                def: maskdef.definitionSymbol || element,\n                                placeholder: maskdef.placeholder,\n                                nativeDef: element\n                            });\n                        } else mtoken.matches.splice(position++, 0, {\n                            fn: null,\n                            cardinality: 0,\n                            optionality: mtoken.isOptional,\n                            newBlockMarker: prevMatch === undefined || prevMatch.def !== element && null !== prevMatch.fn,\n                            casing: null,\n                            def: opts.staticDefinitionSymbol || element,\n                            placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined,\n                            nativeDef: element\n                        }), escaped = !1;\n                    }\n                }\n                function verifyGroupMarker(maskToken) {\n                    maskToken && maskToken.matches && $.each(maskToken.matches, function(ndx, token) {\n                        var nextToken = maskToken.matches[ndx + 1];\n                        (nextToken === undefined || nextToken.matches === undefined || !1 === nextToken.isQuantifier) && token && token.isGroup && (token.isGroup = !1, \n                        regexMask || (insertTestDefinition(token, opts.groupmarker.start, 0), !0 !== token.openGroup && insertTestDefinition(token, opts.groupmarker.end))), \n                        verifyGroupMarker(token);\n                    });\n                }\n                function defaultCase() {\n                    if (openenings.length > 0) {\n                        if (currentOpeningToken = openenings[openenings.length - 1], insertTestDefinition(currentOpeningToken, m), \n                        currentOpeningToken.isAlternator) {\n                            alternator = openenings.pop();\n                            for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;\n                            openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1]).matches.push(alternator) : currentToken.matches.push(alternator);\n                        }\n                    } else insertTestDefinition(currentToken, m);\n                }\n                function reverseTokens(maskToken) {\n                    maskToken.matches = maskToken.matches.reverse();\n                    for (var match in maskToken.matches) if (maskToken.matches.hasOwnProperty(match)) {\n                        var intMatch = parseInt(match);\n                        if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n                            var qt = maskToken.matches[match];\n                            maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);\n                        }\n                        maskToken.matches[match].matches !== undefined ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = function(st) {\n                            return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), \n                            st;\n                        }(maskToken.matches[match]);\n                    }\n                    return maskToken;\n                }\n                var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\\{[0-9\\+\\*]+(?:,[0-9\\+\\*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = [];\n                for (regexMask && (opts.optionalmarker.start = undefined, opts.optionalmarker.end = undefined); match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask); ) {\n                    if (m = match[0], regexMask) switch (m.charAt(0)) {\n                      case \"?\":\n                        m = \"{0,1}\";\n                        break;\n\n                      case \"+\":\n                      case \"*\":\n                        m = \"{\" + m + \"}\";\n                    }\n                    if (escaped) defaultCase(); else switch (m.charAt(0)) {\n                      case opts.escapeChar:\n                        escaped = !0, regexMask && defaultCase();\n                        break;\n\n                      case opts.optionalmarker.end:\n                      case opts.groupmarker.end:\n                        if (openingToken = openenings.pop(), openingToken.openGroup = !1, openingToken !== undefined) if (openenings.length > 0) {\n                            if ((currentOpeningToken = openenings[openenings.length - 1]).matches.push(openingToken), \n                            currentOpeningToken.isAlternator) {\n                                alternator = openenings.pop();\n                                for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1, \n                                alternator.matches[mndx].alternatorGroup = !1;\n                                openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1]).matches.push(alternator) : currentToken.matches.push(alternator);\n                            }\n                        } else currentToken.matches.push(openingToken); else defaultCase();\n                        break;\n\n                      case opts.optionalmarker.start:\n                        openenings.push(new MaskToken(!1, !0));\n                        break;\n\n                      case opts.groupmarker.start:\n                        openenings.push(new MaskToken(!0));\n                        break;\n\n                      case opts.quantifiermarker.start:\n                        var quantifier = new MaskToken(!1, !1, !0), mq = (m = m.replace(/[{}]/g, \"\")).split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                        if (\"*\" !== mq1 && \"+\" !== mq1 || (mq0 = \"*\" === mq1 ? 0 : 1), quantifier.quantifier = {\n                            min: mq0,\n                            max: mq1\n                        }, openenings.length > 0) {\n                            var matches = openenings[openenings.length - 1].matches;\n                            (match = matches.pop()).isGroup || ((groupToken = new MaskToken(!0)).matches.push(match), \n                            match = groupToken), matches.push(match), matches.push(quantifier);\n                        } else (match = currentToken.matches.pop()).isGroup || (regexMask && null === match.fn && \".\" === match.def && (match.fn = new RegExp(match.def, opts.casing ? \"i\" : \"\")), \n                        (groupToken = new MaskToken(!0)).matches.push(match), match = groupToken), currentToken.matches.push(match), \n                        currentToken.matches.push(quantifier);\n                        break;\n\n                      case opts.alternatormarker:\n                        if (openenings.length > 0) {\n                            var subToken = (currentOpeningToken = openenings[openenings.length - 1]).matches[currentOpeningToken.matches.length - 1];\n                            lastMatch = currentOpeningToken.openGroup && (subToken.matches === undefined || !1 === subToken.isGroup && !1 === subToken.isAlternator) ? openenings.pop() : currentOpeningToken.matches.pop();\n                        } else lastMatch = currentToken.matches.pop();\n                        if (lastMatch.isAlternator) openenings.push(lastMatch); else if (lastMatch.alternatorGroup ? (alternator = openenings.pop(), \n                        lastMatch.alternatorGroup = !1) : alternator = new MaskToken(!1, !1, !1, !0), alternator.matches.push(lastMatch), \n                        openenings.push(alternator), lastMatch.openGroup) {\n                            lastMatch.openGroup = !1;\n                            var alternatorGroup = new MaskToken(!0);\n                            alternatorGroup.alternatorGroup = !0, openenings.push(alternatorGroup);\n                        }\n                        break;\n\n                      default:\n                        defaultCase();\n                    }\n                }\n                for (;openenings.length > 0; ) openingToken = openenings.pop(), currentToken.matches.push(openingToken);\n                return currentToken.matches.length > 0 && (verifyGroupMarker(currentToken), maskTokens.push(currentToken)), \n                (opts.numericInput || opts.isRTL) && reverseTokens(maskTokens[0]), maskTokens;\n            }\n        }, Inputmask.extendDefaults = function(options) {\n            $.extend(!0, Inputmask.prototype.defaults, options);\n        }, Inputmask.extendDefinitions = function(definition) {\n            $.extend(!0, Inputmask.prototype.definitions, definition);\n        }, Inputmask.extendAliases = function(alias) {\n            $.extend(!0, Inputmask.prototype.aliases, alias);\n        }, Inputmask.format = function(value, options, metadata) {\n            return Inputmask(options).format(value, metadata);\n        }, Inputmask.unmask = function(value, options) {\n            return Inputmask(options).unmaskedvalue(value);\n        }, Inputmask.isValid = function(value, options) {\n            return Inputmask(options).isValid(value);\n        }, Inputmask.remove = function(elems) {\n            $.each(elems, function(ndx, el) {\n                el.inputmask && el.inputmask.remove();\n            });\n        }, Inputmask.escapeRegex = function(str) {\n            var specials = [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ];\n            return str.replace(new RegExp(\"(\\\\\" + specials.join(\"|\\\\\") + \")\", \"gim\"), \"\\\\$1\");\n        }, Inputmask.keyCode = {\n            ALT: 18,\n            BACKSPACE: 8,\n            BACKSPACE_SAFARI: 127,\n            CAPS_LOCK: 20,\n            COMMA: 188,\n            COMMAND: 91,\n            COMMAND_LEFT: 91,\n            COMMAND_RIGHT: 93,\n            CONTROL: 17,\n            DELETE: 46,\n            DOWN: 40,\n            END: 35,\n            ENTER: 13,\n            ESCAPE: 27,\n            HOME: 36,\n            INSERT: 45,\n            LEFT: 37,\n            MENU: 93,\n            NUMPAD_ADD: 107,\n            NUMPAD_DECIMAL: 110,\n            NUMPAD_DIVIDE: 111,\n            NUMPAD_ENTER: 108,\n            NUMPAD_MULTIPLY: 106,\n            NUMPAD_SUBTRACT: 109,\n            PAGE_DOWN: 34,\n            PAGE_UP: 33,\n            PERIOD: 190,\n            RIGHT: 39,\n            SHIFT: 16,\n            SPACE: 32,\n            TAB: 9,\n            UP: 38,\n            WINDOWS: 91,\n            X: 88\n        }, Inputmask;\n    });\n}, function(module, exports) {\n    module.exports = jQuery;\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    function _interopRequireDefault(obj) {\n        return obj && obj.__esModule ? obj : {\n            default: obj\n        };\n    }\n    __webpack_require__(4), __webpack_require__(9), __webpack_require__(12), __webpack_require__(13), \n    __webpack_require__(14), __webpack_require__(15);\n    var _inputmask2 = _interopRequireDefault(__webpack_require__(1)), _inputmask4 = _interopRequireDefault(__webpack_require__(0)), _jquery2 = _interopRequireDefault(__webpack_require__(2));\n    _inputmask4.default === _jquery2.default && __webpack_require__(16), window.Inputmask = _inputmask2.default;\n}, function(module, exports, __webpack_require__) {\n    var content = __webpack_require__(5);\n    \"string\" == typeof content && (content = [ [ module.i, content, \"\" ] ]);\n    var options = {\n        hmr: !0\n    };\n    options.transform = void 0;\n    __webpack_require__(7)(content, options);\n    content.locals && (module.exports = content.locals);\n}, function(module, exports, __webpack_require__) {\n    (module.exports = __webpack_require__(6)(void 0)).push([ module.i, \"span.im-caret {\\r\\n    -webkit-animation: 1s blink step-end infinite;\\r\\n    animation: 1s blink step-end infinite;\\r\\n}\\r\\n\\r\\n@keyframes blink {\\r\\n    from, to {\\r\\n        border-right-color: black;\\r\\n    }\\r\\n    50% {\\r\\n        border-right-color: transparent;\\r\\n    }\\r\\n}\\r\\n\\r\\n@-webkit-keyframes blink {\\r\\n    from, to {\\r\\n        border-right-color: black;\\r\\n    }\\r\\n    50% {\\r\\n        border-right-color: transparent;\\r\\n    }\\r\\n}\\r\\n\\r\\nspan.im-static {\\r\\n    color: grey;\\r\\n}\\r\\n\\r\\ndiv.im-colormask {\\r\\n    display: inline-block;\\r\\n    border-style: inset;\\r\\n    border-width: 2px;\\r\\n    -webkit-appearance: textfield;\\r\\n    -moz-appearance: textfield;\\r\\n    appearance: textfield;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input {\\r\\n    position: absolute;\\r\\n    display: inline-block;\\r\\n    background-color: transparent;\\r\\n    color: transparent;\\r\\n    -webkit-appearance: caret;\\r\\n    -moz-appearance: caret;\\r\\n    appearance: caret;\\r\\n    border-style: none;\\r\\n    left: 0; /*calculated*/\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input:focus {\\r\\n    outline: none;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input::-moz-selection{\\r\\n    background: none;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > input::selection{\\r\\n    background: none;\\r\\n}\\r\\ndiv.im-colormask > input::-moz-selection{\\r\\n    background: none;\\r\\n}\\r\\n\\r\\ndiv.im-colormask > div {\\r\\n    color: black;\\r\\n    display: inline-block;\\r\\n    width: 100px; /*calculated*/\\r\\n}\", \"\" ]);\n}, function(module, exports) {\n    function cssWithMappingToString(item, useSourceMap) {\n        var content = item[1] || \"\", cssMapping = item[3];\n        if (!cssMapping) return content;\n        if (useSourceMap && \"function\" == typeof btoa) {\n            var sourceMapping = toComment(cssMapping), sourceURLs = cssMapping.sources.map(function(source) {\n                return \"/*# sourceURL=\" + cssMapping.sourceRoot + source + \" */\";\n            });\n            return [ content ].concat(sourceURLs).concat([ sourceMapping ]).join(\"\\n\");\n        }\n        return [ content ].join(\"\\n\");\n    }\n    function toComment(sourceMap) {\n        return \"/*# \" + (\"sourceMappingURL=data:application/json;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))))) + \" */\";\n    }\n    module.exports = function(useSourceMap) {\n        var list = [];\n        return list.toString = function() {\n            return this.map(function(item) {\n                var content = cssWithMappingToString(item, useSourceMap);\n                return item[2] ? \"@media \" + item[2] + \"{\" + content + \"}\" : content;\n            }).join(\"\");\n        }, list.i = function(modules, mediaQuery) {\n            \"string\" == typeof modules && (modules = [ [ null, modules, \"\" ] ]);\n            for (var alreadyImportedModules = {}, i = 0; i < this.length; i++) {\n                var id = this[i][0];\n                \"number\" == typeof id && (alreadyImportedModules[id] = !0);\n            }\n            for (i = 0; i < modules.length; i++) {\n                var item = modules[i];\n                \"number\" == typeof item[0] && alreadyImportedModules[item[0]] || (mediaQuery && !item[2] ? item[2] = mediaQuery : mediaQuery && (item[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\"), \n                list.push(item));\n            }\n        }, list;\n    };\n}, function(module, exports, __webpack_require__) {\n    function addStylesToDom(styles, options) {\n        for (var i = 0; i < styles.length; i++) {\n            var item = styles[i], domStyle = stylesInDom[item.id];\n            if (domStyle) {\n                domStyle.refs++;\n                for (j = 0; j < domStyle.parts.length; j++) domStyle.parts[j](item.parts[j]);\n                for (;j < item.parts.length; j++) domStyle.parts.push(addStyle(item.parts[j], options));\n            } else {\n                for (var parts = [], j = 0; j < item.parts.length; j++) parts.push(addStyle(item.parts[j], options));\n                stylesInDom[item.id] = {\n                    id: item.id,\n                    refs: 1,\n                    parts: parts\n                };\n            }\n        }\n    }\n    function listToStyles(list, options) {\n        for (var styles = [], newStyles = {}, i = 0; i < list.length; i++) {\n            var item = list[i], id = options.base ? item[0] + options.base : item[0], part = {\n                css: item[1],\n                media: item[2],\n                sourceMap: item[3]\n            };\n            newStyles[id] ? newStyles[id].parts.push(part) : styles.push(newStyles[id] = {\n                id: id,\n                parts: [ part ]\n            });\n        }\n        return styles;\n    }\n    function insertStyleElement(options, style) {\n        var target = getElement(options.insertInto);\n        if (!target) throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n        var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n        if (\"top\" === options.insertAt) lastStyleElementInsertedAtTop ? lastStyleElementInsertedAtTop.nextSibling ? target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling) : target.appendChild(style) : target.insertBefore(style, target.firstChild), \n        stylesInsertedAtTop.push(style); else if (\"bottom\" === options.insertAt) target.appendChild(style); else {\n            if (\"object\" != typeof options.insertAt || !options.insertAt.before) throw new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n            var nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n            target.insertBefore(style, nextSibling);\n        }\n    }\n    function removeStyleElement(style) {\n        if (null === style.parentNode) return !1;\n        style.parentNode.removeChild(style);\n        var idx = stylesInsertedAtTop.indexOf(style);\n        idx >= 0 && stylesInsertedAtTop.splice(idx, 1);\n    }\n    function createStyleElement(options) {\n        var style = document.createElement(\"style\");\n        return options.attrs.type = \"text/css\", addAttrs(style, options.attrs), insertStyleElement(options, style), \n        style;\n    }\n    function createLinkElement(options) {\n        var link = document.createElement(\"link\");\n        return options.attrs.type = \"text/css\", options.attrs.rel = \"stylesheet\", addAttrs(link, options.attrs), \n        insertStyleElement(options, link), link;\n    }\n    function addAttrs(el, attrs) {\n        Object.keys(attrs).forEach(function(key) {\n            el.setAttribute(key, attrs[key]);\n        });\n    }\n    function addStyle(obj, options) {\n        var style, update, remove, result;\n        if (options.transform && obj.css) {\n            if (!(result = options.transform(obj.css))) return function() {};\n            obj.css = result;\n        }\n        if (options.singleton) {\n            var styleIndex = singletonCounter++;\n            style = singleton || (singleton = createStyleElement(options)), update = applyToSingletonTag.bind(null, style, styleIndex, !1), \n            remove = applyToSingletonTag.bind(null, style, styleIndex, !0);\n        } else obj.sourceMap && \"function\" == typeof URL && \"function\" == typeof URL.createObjectURL && \"function\" == typeof URL.revokeObjectURL && \"function\" == typeof Blob && \"function\" == typeof btoa ? (style = createLinkElement(options), \n        update = updateLink.bind(null, style, options), remove = function() {\n            removeStyleElement(style), style.href && URL.revokeObjectURL(style.href);\n        }) : (style = createStyleElement(options), update = applyToTag.bind(null, style), \n        remove = function() {\n            removeStyleElement(style);\n        });\n        return update(obj), function(newObj) {\n            if (newObj) {\n                if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) return;\n                update(obj = newObj);\n            } else remove();\n        };\n    }\n    function applyToSingletonTag(style, index, remove, obj) {\n        var css = remove ? \"\" : obj.css;\n        if (style.styleSheet) style.styleSheet.cssText = replaceText(index, css); else {\n            var cssNode = document.createTextNode(css), childNodes = style.childNodes;\n            childNodes[index] && style.removeChild(childNodes[index]), childNodes.length ? style.insertBefore(cssNode, childNodes[index]) : style.appendChild(cssNode);\n        }\n    }\n    function applyToTag(style, obj) {\n        var css = obj.css, media = obj.media;\n        if (media && style.setAttribute(\"media\", media), style.styleSheet) style.styleSheet.cssText = css; else {\n            for (;style.firstChild; ) style.removeChild(style.firstChild);\n            style.appendChild(document.createTextNode(css));\n        }\n    }\n    function updateLink(link, options, obj) {\n        var css = obj.css, sourceMap = obj.sourceMap, autoFixUrls = void 0 === options.convertToAbsoluteUrls && sourceMap;\n        (options.convertToAbsoluteUrls || autoFixUrls) && (css = fixUrls(css)), sourceMap && (css += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\");\n        var blob = new Blob([ css ], {\n            type: \"text/css\"\n        }), oldSrc = link.href;\n        link.href = URL.createObjectURL(blob), oldSrc && URL.revokeObjectURL(oldSrc);\n    }\n    var stylesInDom = {}, isOldIE = function(fn) {\n        var memo;\n        return function() {\n            return void 0 === memo && (memo = fn.apply(this, arguments)), memo;\n        };\n    }(function() {\n        return window && document && document.all && !window.atob;\n    }), getElement = function(fn) {\n        var memo = {};\n        return function(selector) {\n            if (void 0 === memo[selector]) {\n                var styleTarget = fn.call(this, selector);\n                if (styleTarget instanceof window.HTMLIFrameElement) try {\n                    styleTarget = styleTarget.contentDocument.head;\n                } catch (e) {\n                    styleTarget = null;\n                }\n                memo[selector] = styleTarget;\n            }\n            return memo[selector];\n        };\n    }(function(target) {\n        return document.querySelector(target);\n    }), singleton = null, singletonCounter = 0, stylesInsertedAtTop = [], fixUrls = __webpack_require__(8);\n    module.exports = function(list, options) {\n        if (\"undefined\" != typeof DEBUG && DEBUG && \"object\" != typeof document) throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n        (options = options || {}).attrs = \"object\" == typeof options.attrs ? options.attrs : {}, \n        options.singleton || (options.singleton = isOldIE()), options.insertInto || (options.insertInto = \"head\"), \n        options.insertAt || (options.insertAt = \"bottom\");\n        var styles = listToStyles(list, options);\n        return addStylesToDom(styles, options), function(newList) {\n            for (var mayRemove = [], i = 0; i < styles.length; i++) {\n                var item = styles[i];\n                (domStyle = stylesInDom[item.id]).refs--, mayRemove.push(domStyle);\n            }\n            newList && addStylesToDom(listToStyles(newList, options), options);\n            for (i = 0; i < mayRemove.length; i++) {\n                var domStyle = mayRemove[i];\n                if (0 === domStyle.refs) {\n                    for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n                    delete stylesInDom[domStyle.id];\n                }\n            }\n        };\n    };\n    var replaceText = function() {\n        var textStore = [];\n        return function(index, replacement) {\n            return textStore[index] = replacement, textStore.filter(Boolean).join(\"\\n\");\n        };\n    }();\n}, function(module, exports) {\n    module.exports = function(css) {\n        var location = \"undefined\" != typeof window && window.location;\n        if (!location) throw new Error(\"fixUrls requires window.location\");\n        if (!css || \"string\" != typeof css) return css;\n        var baseUrl = location.protocol + \"//\" + location.host, currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n        return css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n            var unquotedOrigUrl = origUrl.trim().replace(/^\"(.*)\"$/, function(o, $1) {\n                return $1;\n            }).replace(/^'(.*)'$/, function(o, $1) {\n                return $1;\n            });\n            if (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(unquotedOrigUrl)) return fullMatch;\n            var newUrl;\n            return newUrl = 0 === unquotedOrigUrl.indexOf(\"//\") ? unquotedOrigUrl : 0 === unquotedOrigUrl.indexOf(\"/\") ? baseUrl + unquotedOrigUrl : currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"), \n            \"url(\" + JSON.stringify(newUrl) + \")\";\n        });\n    };\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        function isLeapYear(year) {\n            return isNaN(year) || 29 === new Date(year, 2, 0).getDate();\n        }\n        return Inputmask.extendAliases({\n            \"dd/mm/yyyy\": {\n                mask: \"1/2/y\",\n                placeholder: \"dd/mm/yyyy\",\n                regex: {\n                    val1pre: new RegExp(\"[0-3]\"),\n                    val1: new RegExp(\"0[1-9]|[12][0-9]|3[01]\"),\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|[12][0-9]|3[01])\" + escapedSeparator + \"[01])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|[12][0-9])\" + escapedSeparator + \"(0[1-9]|1[012]))|(30\" + escapedSeparator + \"(0[13-9]|1[012]))|(31\" + escapedSeparator + \"(0[13578]|1[02]))\");\n                    }\n                },\n                leapday: \"29/02/\",\n                separator: \"/\",\n                yearrange: {\n                    minyear: 1900,\n                    maxyear: 2099\n                },\n                isInYearRange: function(chrs, minyear, maxyear) {\n                    if (isNaN(chrs)) return !1;\n                    var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));\n                    return !isNaN(enteredyear) && (minyear <= enteredyear && enteredyear <= maxyear) || !isNaN(enteredyear2) && (minyear <= enteredyear2 && enteredyear2 <= maxyear);\n                },\n                determinebaseyear: function(minyear, maxyear, hint) {\n                    var currentyear = new Date().getFullYear();\n                    if (minyear > currentyear) return minyear;\n                    if (maxyear < currentyear) {\n                        for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxyear < maxYearPrefix + hint; ) maxYearPrefix--;\n                        var maxxYear = maxYearPrefix + maxYearPostfix;\n                        return minyear > maxxYear ? minyear : maxxYear;\n                    }\n                    if (minyear <= currentyear && currentyear <= maxyear) {\n                        for (var currentYearPrefix = currentyear.toString().slice(0, 2); maxyear < currentYearPrefix + hint; ) currentYearPrefix--;\n                        var currentYearAndHint = currentYearPrefix + hint;\n                        return currentYearAndHint < minyear ? minyear : currentYearAndHint;\n                    }\n                    return currentyear;\n                },\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                },\n                getFrontValue: function(mask, buffer, opts) {\n                    for (var start = 0, length = 0, i = 0; i < mask.length && \"2\" !== mask.charAt(i); i++) {\n                        var definition = opts.definitions[mask.charAt(i)];\n                        definition ? (start += length, length = definition.cardinality) : length++;\n                    }\n                    return buffer.join(\"\").substr(start, length);\n                },\n                postValidation: function(buffer, currentResult, opts) {\n                    var dayMonthValue, year, bufferStr = buffer.join(\"\");\n                    return 0 === opts.mask.indexOf(\"y\") ? (year = bufferStr.substr(0, 4), dayMonthValue = bufferStr.substring(4, 10)) : (year = bufferStr.substring(6, 10), \n                    dayMonthValue = bufferStr.substr(0, 6)), currentResult && (dayMonthValue !== opts.leapday || isLeapYear(year));\n                },\n                definitions: {\n                    \"1\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var isValid = opts.regex.val1.test(chrs);\n                            return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === \"-./\".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test(\"0\" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = \"0\", \n                            {\n                                refreshFromBuffer: {\n                                    start: pos - 1,\n                                    end: pos\n                                },\n                                pos: pos,\n                                c: chrs.charAt(0)\n                            });\n                        },\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var pchrs = chrs;\n                                isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]);\n                                var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs);\n                                if (isValid && maskset.validPositions[pos] && (opts.regex.val2(opts.separator).test(chrs + maskset.validPositions[pos].input) || (maskset.validPositions[pos].input = \"0\" === chrs ? \"1\" : \"0\")), \n                                !strict && !isValid) {\n                                    if (isValid = opts.regex.val1.test(chrs + \"0\")) return maskset.buffer[pos] = chrs, \n                                    maskset.buffer[++pos] = \"0\", {\n                                        pos: pos,\n                                        c: \"0\"\n                                    };\n                                    if (isValid = opts.regex.val1.test(\"0\" + chrs)) return maskset.buffer[pos] = \"0\", \n                                    pos++, {\n                                        pos: pos\n                                    };\n                                }\n                                return isValid;\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    \"2\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);\n                            -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = \"01\" + opts.separator);\n                            var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);\n                            return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === \"-./\".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = \"0\", \n                            {\n                                refreshFromBuffer: {\n                                    start: pos - 1,\n                                    end: pos\n                                },\n                                pos: pos,\n                                c: chrs.charAt(0)\n                            });\n                        },\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]);\n                                var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);\n                                -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = \"01\" + opts.separator);\n                                var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs);\n                                return isValid && maskset.validPositions[pos] && (opts.regex.val2(opts.separator).test(chrs + maskset.validPositions[pos].input) || (maskset.validPositions[pos].input = \"0\" === chrs ? \"1\" : \"0\")), \n                                strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + \"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                                pos++, {\n                                    pos: pos\n                                });\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    y: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                        },\n                        cardinality: 4,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                                if (!strict && !isValid) {\n                                    var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + \"0\").toString().slice(0, 1);\n                                    if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), \n                                    {\n                                        pos: pos\n                                    };\n                                    if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + \"0\").toString().slice(0, 2), \n                                    isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), \n                                    maskset.buffer[pos++] = yearPrefix.charAt(1), {\n                                        pos: pos\n                                    };\n                                }\n                                return isValid;\n                            },\n                            cardinality: 1\n                        }, {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                                if (!strict && !isValid) {\n                                    var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);\n                                    if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), \n                                    {\n                                        pos: pos\n                                    };\n                                    if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), \n                                    isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), \n                                    maskset.buffer[pos++] = yearPrefix.charAt(1), maskset.buffer[pos++] = chrs.charAt(0), \n                                    {\n                                        refreshFromBuffer: {\n                                            start: pos - 3,\n                                            end: pos\n                                        },\n                                        pos: pos\n                                    };\n                                }\n                                return isValid;\n                            },\n                            cardinality: 2\n                        }, {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);\n                            },\n                            cardinality: 3\n                        } ]\n                    }\n                },\n                insertMode: !1,\n                autoUnmask: !1\n            },\n            \"mm/dd/yyyy\": {\n                placeholder: \"mm/dd/yyyy\",\n                alias: \"dd/mm/yyyy\",\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                leapday: \"02/29/\",\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            \"yyyy/mm/dd\": {\n                mask: \"y/1/2\",\n                placeholder: \"yyyy/mm/dd\",\n                alias: \"mm/dd/yyyy\",\n                leapday: \"/02/29\",\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            \"dd.mm.yyyy\": {\n                mask: \"1.2.y\",\n                placeholder: \"dd.mm.yyyy\",\n                leapday: \"29.02.\",\n                separator: \".\",\n                alias: \"dd/mm/yyyy\"\n            },\n            \"dd-mm-yyyy\": {\n                mask: \"1-2-y\",\n                placeholder: \"dd-mm-yyyy\",\n                leapday: \"29-02-\",\n                separator: \"-\",\n                alias: \"dd/mm/yyyy\"\n            },\n            \"mm.dd.yyyy\": {\n                mask: \"1.2.y\",\n                placeholder: \"mm.dd.yyyy\",\n                leapday: \"02.29.\",\n                separator: \".\",\n                alias: \"mm/dd/yyyy\"\n            },\n            \"mm-dd-yyyy\": {\n                mask: \"1-2-y\",\n                placeholder: \"mm-dd-yyyy\",\n                leapday: \"02-29-\",\n                separator: \"-\",\n                alias: \"mm/dd/yyyy\"\n            },\n            \"yyyy.mm.dd\": {\n                mask: \"y.1.2\",\n                placeholder: \"yyyy.mm.dd\",\n                leapday: \".02.29\",\n                separator: \".\",\n                alias: \"yyyy/mm/dd\"\n            },\n            \"yyyy-mm-dd\": {\n                mask: \"y-1-2\",\n                placeholder: \"yyyy-mm-dd\",\n                leapday: \"-02-29\",\n                separator: \"-\",\n                alias: \"yyyy/mm/dd\"\n            },\n            datetime: {\n                mask: \"1/2/y h:s\",\n                placeholder: \"dd/mm/yyyy hh:mm\",\n                alias: \"dd/mm/yyyy\",\n                regex: {\n                    hrspre: new RegExp(\"[012]\"),\n                    hrs24: new RegExp(\"2[0-4]|1[3-9]\"),\n                    hrs: new RegExp(\"[01][0-9]|2[0-4]\"),\n                    ampm: new RegExp(\"^[a|p|A|P][m|M]\"),\n                    mspre: new RegExp(\"[0-5]\"),\n                    ms: new RegExp(\"[0-5][0-9]\")\n                },\n                timeseparator: \":\",\n                hourFormat: \"24\",\n                definitions: {\n                    h: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            if (\"24\" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = \"0\", \n                            maskset.buffer[pos] = \"0\", {\n                                refreshFromBuffer: {\n                                    start: pos - 1,\n                                    end: pos\n                                },\n                                c: \"0\"\n                            };\n                            var isValid = opts.regex.hrs.test(chrs);\n                            if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== \"-.:\".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test(\"0\" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = \"0\", \n                            maskset.buffer[pos] = chrs.charAt(0), pos++, {\n                                refreshFromBuffer: {\n                                    start: pos - 2,\n                                    end: pos\n                                },\n                                pos: pos,\n                                c: opts.timeseparator\n                            };\n                            if (isValid && \"24\" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) {\n                                var tmp = parseInt(chrs, 10);\n                                return 24 === tmp ? (maskset.buffer[pos + 5] = \"a\", maskset.buffer[pos + 6] = \"m\") : (maskset.buffer[pos + 5] = \"p\", \n                                maskset.buffer[pos + 6] = \"m\"), (tmp -= 12) < 10 ? (maskset.buffer[pos] = tmp.toString(), \n                                maskset.buffer[pos - 1] = \"0\") : (maskset.buffer[pos] = tmp.toString().charAt(1), \n                                maskset.buffer[pos - 1] = tmp.toString().charAt(0)), {\n                                    refreshFromBuffer: {\n                                        start: pos - 1,\n                                        end: pos + 6\n                                    },\n                                    c: maskset.buffer[pos]\n                                };\n                            }\n                            return isValid;\n                        },\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.regex.hrspre.test(chrs);\n                                return strict || isValid || !(isValid = opts.regex.hrs.test(\"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                                pos++, {\n                                    pos: pos\n                                });\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    s: {\n                        validator: \"[0-5][0-9]\",\n                        cardinality: 2,\n                        prevalidator: [ {\n                            validator: function(chrs, maskset, pos, strict, opts) {\n                                var isValid = opts.regex.mspre.test(chrs);\n                                return strict || isValid || !(isValid = opts.regex.ms.test(\"0\" + chrs)) ? isValid : (maskset.buffer[pos] = \"0\", \n                                pos++, {\n                                    pos: pos\n                                });\n                            },\n                            cardinality: 1\n                        } ]\n                    },\n                    t: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.regex.ampm.test(chrs + \"m\");\n                        },\n                        casing: \"lower\",\n                        cardinality: 1\n                    }\n                },\n                insertMode: !1,\n                autoUnmask: !1\n            },\n            datetime12: {\n                mask: \"1/2/y h:s t\\\\m\",\n                placeholder: \"dd/mm/yyyy hh:mm xm\",\n                alias: \"datetime\",\n                hourFormat: \"12\"\n            },\n            \"mm/dd/yyyy hh:mm xm\": {\n                mask: \"1/2/y h:s t\\\\m\",\n                placeholder: \"mm/dd/yyyy hh:mm xm\",\n                alias: \"datetime12\",\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                leapday: \"02/29/\",\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                        var today = new Date();\n                        $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), \n                        $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            \"hh:mm t\": {\n                mask: \"h:s t\\\\m\",\n                placeholder: \"hh:mm xm\",\n                alias: \"datetime\",\n                hourFormat: \"12\"\n            },\n            \"h:s t\": {\n                mask: \"h:s t\\\\m\",\n                placeholder: \"hh:mm xm\",\n                alias: \"datetime\",\n                hourFormat: \"12\"\n            },\n            \"hh:mm:ss\": {\n                mask: \"h:s:s\",\n                placeholder: \"hh:mm:ss\",\n                alias: \"datetime\",\n                autoUnmask: !1\n            },\n            \"hh:mm\": {\n                mask: \"h:s\",\n                placeholder: \"hh:mm\",\n                alias: \"datetime\",\n                autoUnmask: !1\n            },\n            date: {\n                alias: \"dd/mm/yyyy\"\n            },\n            \"mm/yyyy\": {\n                mask: \"1/y\",\n                placeholder: \"mm/yyyy\",\n                leapday: \"donotuse\",\n                separator: \"/\",\n                alias: \"mm/dd/yyyy\"\n            },\n            shamsi: {\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"[0-3])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[1-9]|1[012])\" + escapedSeparator + \"30)|((0[1-6])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                yearrange: {\n                    minyear: 1300,\n                    maxyear: 1499\n                },\n                mask: \"y/1/2\",\n                leapday: \"/12/30\",\n                placeholder: \"yyyy/mm/dd\",\n                alias: \"mm/dd/yyyy\",\n                clearIncomplete: !0\n            },\n            \"yyyy-mm-dd hh:mm:ss\": {\n                mask: \"y-1-2 h:s:s\",\n                placeholder: \"yyyy-mm-dd hh:mm:ss\",\n                alias: \"datetime\",\n                separator: \"-\",\n                leapday: \"-02-29\",\n                regex: {\n                    val2pre: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[13-9]|1[012])\" + escapedSeparator + \"[0-3])|(02\" + escapedSeparator + \"[0-2])\");\n                    },\n                    val2: function(separator) {\n                        var escapedSeparator = Inputmask.escapeRegex.call(this, separator);\n                        return new RegExp(\"((0[1-9]|1[012])\" + escapedSeparator + \"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])\" + escapedSeparator + \"30)|((0[13578]|1[02])\" + escapedSeparator + \"31)\");\n                    },\n                    val1pre: new RegExp(\"[01]\"),\n                    val1: new RegExp(\"0[1-9]|1[012]\")\n                },\n                onKeyDown: function(e, buffer, caretPos, opts) {}\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n        return window;\n    }.call(exports, __webpack_require__, exports, module)) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n        return document;\n    }.call(exports, __webpack_require__, exports, module)) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        return Inputmask.extendDefinitions({\n            A: {\n                validator: \"[A-Za-zА-яЁёÀ-ÿµ]\",\n                cardinality: 1,\n                casing: \"upper\"\n            },\n            \"&\": {\n                validator: \"[0-9A-Za-zА-яЁёÀ-ÿµ]\",\n                cardinality: 1,\n                casing: \"upper\"\n            },\n            \"#\": {\n                validator: \"[0-9A-Fa-f]\",\n                cardinality: 1,\n                casing: \"upper\"\n            }\n        }), Inputmask.extendAliases({\n            url: {\n                definitions: {\n                    i: {\n                        validator: \".\",\n                        cardinality: 1\n                    }\n                },\n                mask: \"(\\\\http://)|(\\\\http\\\\s://)|(ftp://)|(ftp\\\\s://)i{+}\",\n                insertMode: !1,\n                autoUnmask: !1,\n                inputmode: \"url\"\n            },\n            ip: {\n                mask: \"i[i[i]].i[i[i]].i[i[i]].i[i[i]]\",\n                definitions: {\n                    i: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return pos - 1 > -1 && \".\" !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, \n                            chrs = pos - 2 > -1 && \".\" !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : \"0\" + chrs) : chrs = \"00\" + chrs, \n                            new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\").test(chrs);\n                        },\n                        cardinality: 1\n                    }\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    return maskedValue;\n                },\n                inputmode: \"numeric\"\n            },\n            email: {\n                mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\n                greedy: !1,\n                onBeforePaste: function(pastedValue, opts) {\n                    return (pastedValue = pastedValue.toLowerCase()).replace(\"mailto:\", \"\");\n                },\n                definitions: {\n                    \"*\": {\n                        validator: \"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]\",\n                        cardinality: 1,\n                        casing: \"lower\"\n                    },\n                    \"-\": {\n                        validator: \"[0-9A-Za-z-]\",\n                        cardinality: 1,\n                        casing: \"lower\"\n                    }\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    return maskedValue;\n                },\n                inputmode: \"email\"\n            },\n            mac: {\n                mask: \"##:##:##:##:##:##\"\n            },\n            vin: {\n                mask: \"V{13}9{4}\",\n                definitions: {\n                    V: {\n                        validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n                        cardinality: 1,\n                        casing: \"upper\"\n                    }\n                },\n                clearIncomplete: !0,\n                autoUnmask: !0\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask, undefined) {\n        function autoEscape(txt, opts) {\n            for (var escapedTxt = \"\", i = 0; i < txt.length; i++) Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? escapedTxt += \"\\\\\" + txt.charAt(i) : escapedTxt += txt.charAt(i);\n            return escapedTxt;\n        }\n        return Inputmask.extendAliases({\n            numeric: {\n                mask: function(opts) {\n                    if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), \n                    opts.repeat = 0, opts.groupSeparator === opts.radixPoint && (\".\" === opts.radixPoint ? opts.groupSeparator = \",\" : \",\" === opts.radixPoint ? opts.groupSeparator = \".\" : opts.groupSeparator = \"\"), \n                    \" \" === opts.groupSeparator && (opts.skipOptionalPartCharacter = undefined), opts.autoGroup = opts.autoGroup && \"\" !== opts.groupSeparator, \n                    opts.autoGroup && (\"string\" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), \n                    isFinite(opts.integerDigits))) {\n                        var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize;\n                        opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), \n                        opts.integerDigits < 1 && (opts.integerDigits = \"*\");\n                    }\n                    opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), \n                    \"radixFocus\" === opts.positionCaretOnClick && \"\" === opts.placeholder && !1 === opts.integerOptional && (opts.positionCaretOnClick = \"lvp\"), \n                    opts.definitions[\";\"] = opts.definitions[\"~\"], opts.definitions[\";\"].definitionSymbol = \"~\", \n                    !0 === opts.numericInput && (opts.positionCaretOnClick = \"radixFocus\" === opts.positionCaretOnClick ? \"lvp\" : opts.positionCaretOnClick, \n                    opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts.decimalProtect = !1);\n                    var mask = \"[+]\";\n                    if (mask += autoEscape(opts.prefix, opts), !0 === opts.integerOptional ? mask += \"~{1,\" + opts.integerDigits + \"}\" : mask += \"~{\" + opts.integerDigits + \"}\", \n                    opts.digits !== undefined) {\n                        opts.radixPointDefinitionSymbol = opts.decimalProtect ? \":\" : opts.radixPoint;\n                        var dq = opts.digits.toString().split(\",\");\n                        isFinite(dq[0] && dq[1] && isFinite(dq[1])) ? mask += opts.radixPointDefinitionSymbol + \";{\" + opts.digits + \"}\" : (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.digitsOptional ? mask += \"[\" + opts.radixPointDefinitionSymbol + \";{1,\" + opts.digits + \"}]\" : mask += opts.radixPointDefinitionSymbol + \";{\" + opts.digits + \"}\");\n                    }\n                    return mask += autoEscape(opts.suffix, opts), mask += \"[-]\", opts.greedy = !1, mask;\n                },\n                placeholder: \"\",\n                greedy: !1,\n                digits: \"*\",\n                digitsOptional: !0,\n                enforceDigitsOnBlur: !1,\n                radixPoint: \".\",\n                positionCaretOnClick: \"radixFocus\",\n                groupSize: 3,\n                groupSeparator: \"\",\n                autoGroup: !1,\n                allowMinus: !0,\n                negationSymbol: {\n                    front: \"-\",\n                    back: \"\"\n                },\n                integerDigits: \"+\",\n                integerOptional: !0,\n                prefix: \"\",\n                suffix: \"\",\n                rightAlign: !0,\n                decimalProtect: !0,\n                min: null,\n                max: null,\n                step: 1,\n                insertMode: !0,\n                autoUnmask: !1,\n                unmaskAsNumber: !1,\n                inputmode: \"numeric\",\n                preValidation: function(buffer, pos, c, isSelection, opts) {\n                    if (\"-\" === c || c === opts.negationSymbol.front) return !0 === opts.allowMinus && (opts.isNegative = opts.isNegative === undefined || !opts.isNegative, \n                    \"\" === buffer.join(\"\") || {\n                        caret: pos,\n                        dopost: !0\n                    });\n                    if (!1 === isSelection && c === opts.radixPoint && opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {\n                        var radixPos = $.inArray(opts.radixPoint, buffer);\n                        if (-1 !== radixPos) return !0 === opts.numericInput ? pos === radixPos : {\n                            caret: radixPos + 1\n                        };\n                    }\n                    return !0;\n                },\n                postValidation: function(buffer, currentResult, opts) {\n                    var suffix = opts.suffix.split(\"\"), prefix = opts.prefix.split(\"\");\n                    if (currentResult.pos === undefined && currentResult.caret !== undefined && !0 !== currentResult.dopost) return currentResult;\n                    var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos, maskedValue = buffer.slice();\n                    opts.numericInput && (caretPos = maskedValue.length - caretPos - 1, maskedValue = maskedValue.reverse());\n                    var charAtPos = maskedValue[caretPos];\n                    if (charAtPos === opts.groupSeparator && (charAtPos = maskedValue[caretPos += 1]), \n                    caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult;\n                    charAtPos !== undefined && charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back && (maskedValue[caretPos] = \"?\", \n                    opts.prefix.length > 0 && caretPos >= (!1 === opts.isNegative ? 1 : 0) && caretPos < opts.prefix.length - 1 + (!1 === opts.isNegative ? 1 : 0) ? prefix[caretPos - (!1 === opts.isNegative ? 1 : 0)] = \"?\" : opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (!1 === opts.isNegative ? 1 : 0) && (suffix[caretPos - (maskedValue.length - opts.suffix.length - (!1 === opts.isNegative ? 1 : 0))] = \"?\")), \n                    prefix = prefix.join(\"\"), suffix = suffix.join(\"\");\n                    var processValue = maskedValue.join(\"\").replace(prefix, \"\");\n                    if (processValue = processValue.replace(suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\"), \n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n                    isNaN(opts.placeholder) && (processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\")), \n                    processValue.length > 1 && 1 !== processValue.indexOf(opts.radixPoint) && (\"0\" === charAtPos && (processValue = processValue.replace(/^\\?/g, \"\")), \n                    processValue = processValue.replace(/^0/g, \"\")), processValue.charAt(0) === opts.radixPoint && \"\" !== opts.radixPoint && !0 !== opts.numericInput && (processValue = \"0\" + processValue), \n                    \"\" !== processValue) {\n                        if (processValue = processValue.split(\"\"), (!opts.digitsOptional || opts.enforceDigitsOnBlur && \"blur\" === currentResult.event) && isFinite(opts.digits)) {\n                            var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue);\n                            -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1);\n                            for (var i = 1; i <= opts.digits; i++) opts.digitsOptional && (!opts.enforceDigitsOnBlur || \"blur\" !== currentResult.event) || processValue[radixPosition + i] !== undefined && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && maskedValue[rpb + i] !== undefined && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0);\n                        }\n                        if (!0 !== opts.autoGroup || \"\" === opts.groupSeparator || charAtPos === opts.radixPoint && currentResult.pos === undefined && !currentResult.dopost) processValue = processValue.join(\"\"); else {\n                            var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint;\n                            processValue = Inputmask(function(buffer, opts) {\n                                var postMask = \"\";\n                                if (postMask += \"(\" + opts.groupSeparator + \"*{\" + opts.groupSize + \"}){*}\", \"\" !== opts.radixPoint) {\n                                    var radixSplit = buffer.join(\"\").split(opts.radixPoint);\n                                    radixSplit[1] && (postMask += opts.radixPoint + \"*{\" + radixSplit[1].match(/^\\d*\\??\\d*/)[0].length + \"}\");\n                                }\n                                return postMask;\n                            }(processValue, opts), {\n                                numericInput: !0,\n                                jitMasking: !0,\n                                definitions: {\n                                    \"*\": {\n                                        validator: \"[0-9?]\",\n                                        cardinality: 1\n                                    }\n                                }\n                            }).format(processValue.join(\"\")), addRadix && (processValue += opts.radixPoint), \n                            processValue.charAt(0) === opts.groupSeparator && processValue.substr(1);\n                        }\n                    }\n                    if (opts.isNegative && \"blur\" === currentResult.event && (opts.isNegative = \"0\" !== processValue), \n                    processValue = prefix + processValue, processValue += suffix, opts.isNegative && (processValue = opts.negationSymbol.front + processValue, \n                    processValue += opts.negationSymbol.back), processValue = processValue.split(\"\"), \n                    charAtPos !== undefined) if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) (caretPos = $.inArray(\"?\", processValue)) > -1 ? processValue[caretPos] = charAtPos : caretPos = currentResult.caret || 0; else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) {\n                        var newCaretPos = $.inArray(charAtPos, processValue);\n                        -1 !== newCaretPos && (caretPos = newCaretPos);\n                    }\n                    opts.numericInput && (caretPos = processValue.length - caretPos - 1, processValue = processValue.reverse());\n                    var rslt = {\n                        caret: charAtPos === undefined || currentResult.pos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos,\n                        buffer: processValue,\n                        refreshFromBuffer: currentResult.dopost || buffer.join(\"\") !== processValue.join(\"\")\n                    };\n                    return rslt.refreshFromBuffer ? rslt : currentResult;\n                },\n                onBeforeWrite: function(e, buffer, caretPos, opts) {\n                    if (e) switch (e.type) {\n                      case \"keydown\":\n                        return opts.postValidation(buffer, {\n                            caret: caretPos,\n                            dopost: !0\n                        }, opts);\n\n                      case \"blur\":\n                      case \"checkval\":\n                        var unmasked;\n                        if (function(opts) {\n                            opts.parseMinMaxOptions === undefined && (null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                            \",\" === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, \".\")), \n                            opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN, isNaN(opts.min) && (opts.min = Number.MIN_VALUE)), \n                            null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                            \",\" === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, \".\")), \n                            opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN, isNaN(opts.max) && (opts.max = Number.MAX_VALUE)), \n                            opts.parseMinMaxOptions = \"done\");\n                        }(opts), null !== opts.min || null !== opts.max) {\n                            if (unmasked = opts.onUnMask(buffer.join(\"\"), undefined, $.extend({}, opts, {\n                                unmaskAsNumber: !0\n                            })), null !== opts.min && unmasked < opts.min) return opts.isNegative = opts.min < 0, \n                            opts.postValidation(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), {\n                                caret: caretPos,\n                                dopost: !0,\n                                placeholder: \"0\"\n                            }, opts);\n                            if (null !== opts.max && unmasked > opts.max) return opts.isNegative = opts.max < 0, \n                            opts.postValidation(opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"), {\n                                caret: caretPos,\n                                dopost: !0,\n                                placeholder: \"0\"\n                            }, opts);\n                        }\n                        return opts.postValidation(buffer, {\n                            caret: caretPos,\n                            placeholder: \"0\",\n                            event: \"blur\"\n                        }, opts);\n\n                      case \"_checkval\":\n                        return {\n                            caret: caretPos\n                        };\n                    }\n                },\n                regex: {\n                    integerPart: function(opts, emptyCheck) {\n                        return emptyCheck ? new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\") : new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\\\\d+\");\n                    },\n                    integerNPart: function(opts) {\n                        return new RegExp(\"[\\\\d\" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + \"]+\");\n                    }\n                },\n                definitions: {\n                    \"~\": {\n                        validator: function(chrs, maskset, pos, strict, opts, isSelection) {\n                            var isValid = strict ? new RegExp(\"[0-9\" + Inputmask.escapeRegex(opts.groupSeparator) + \"]\").test(chrs) : new RegExp(\"[0-9]\").test(chrs);\n                            if (!0 === isValid) {\n                                if (!0 !== opts.numericInput && maskset.validPositions[pos] !== undefined && \"~\" === maskset.validPositions[pos].match.def && !isSelection) {\n                                    var processValue = maskset.buffer.join(\"\"), pvRadixSplit = (processValue = (processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\")).replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\")).split(opts.radixPoint);\n                                    pvRadixSplit.length > 1 && (pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0))), \n                                    \"0\" === pvRadixSplit[0] && (pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0))), \n                                    processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || \"\";\n                                    var bufferTemplate = maskset._buffer.join(\"\");\n                                    for (processValue === opts.radixPoint && (processValue = bufferTemplate); null === processValue.match(Inputmask.escapeRegex(bufferTemplate) + \"$\"); ) bufferTemplate = bufferTemplate.slice(1);\n                                    isValid = (processValue = (processValue = processValue.replace(bufferTemplate, \"\")).split(\"\"))[pos] === undefined ? {\n                                        pos: pos,\n                                        remove: pos\n                                    } : {\n                                        pos: pos\n                                    };\n                                }\n                            } else strict || chrs !== opts.radixPoint || maskset.validPositions[pos - 1] !== undefined || (maskset.buffer[pos] = \"0\", \n                            isValid = {\n                                pos: pos + 1\n                            });\n                            return isValid;\n                        },\n                        cardinality: 1\n                    },\n                    \"+\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.allowMinus && (\"-\" === chrs || chrs === opts.negationSymbol.front);\n                        },\n                        cardinality: 1,\n                        placeholder: \"\"\n                    },\n                    \"-\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            return opts.allowMinus && chrs === opts.negationSymbol.back;\n                        },\n                        cardinality: 1,\n                        placeholder: \"\"\n                    },\n                    \":\": {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            var radix = \"[\" + Inputmask.escapeRegex(opts.radixPoint) + \"]\", isValid = new RegExp(radix).test(chrs);\n                            return isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = {\n                                caret: pos + 1\n                            }), isValid;\n                        },\n                        cardinality: 1,\n                        placeholder: function(opts) {\n                            return opts.radixPoint;\n                        }\n                    }\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    if (\"\" === unmaskedValue && !0 === opts.nullable) return unmaskedValue;\n                    var processValue = maskedValue.replace(opts.prefix, \"\");\n                    return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    \"\" !== opts.placeholder.charAt(0) && (processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\")), \n                    opts.unmaskAsNumber ? (\"\" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\")), \n                    processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\"), \n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n                    Number(processValue)) : processValue;\n                },\n                isComplete: function(buffer, opts) {\n                    var maskedValue = buffer.join(\"\");\n                    if (buffer.slice().join(\"\") !== maskedValue) return !1;\n                    var processValue = maskedValue.replace(opts.prefix, \"\");\n                    return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    \",\" === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\")), \n                    isFinite(processValue);\n                },\n                onBeforeMask: function(initialValue, opts) {\n                    if (opts.isNegative = undefined, initialValue = initialValue.toString().charAt(initialValue.length - 1) === opts.radixPoint ? initialValue.toString().substr(0, initialValue.length - 1) : initialValue.toString(), \n                    \"\" !== opts.radixPoint && isFinite(initialValue)) {\n                        var vs = initialValue.split(\".\"), groupSize = \"\" !== opts.groupSeparator ? parseInt(opts.groupSize) : 0;\n                        2 === vs.length && (vs[0].length > groupSize || vs[1].length > groupSize || vs[0].length <= groupSize && vs[1].length < groupSize) && (initialValue = initialValue.replace(\".\", opts.radixPoint));\n                    }\n                    var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\\./g);\n                    if (initialValue = dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\\./g, \"\")).replace(\",\", opts.radixPoint) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, \"\")).replace(\".\", opts.radixPoint) : initialValue.indexOf(\".\") < initialValue.indexOf(\",\") ? initialValue.replace(/\\./g, \"\") : initialValue.replace(/,/g, \"\") : initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n                    0 === opts.digits && (-1 !== initialValue.indexOf(\".\") ? initialValue = initialValue.substring(0, initialValue.indexOf(\".\")) : -1 !== initialValue.indexOf(\",\") && (initialValue = initialValue.substring(0, initialValue.indexOf(\",\")))), \n                    \"\" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) {\n                        var decPart = initialValue.split(opts.radixPoint)[1].match(new RegExp(\"\\\\d*\"))[0];\n                        if (parseInt(opts.digits) < decPart.toString().length) {\n                            var digitsFactor = Math.pow(10, parseInt(opts.digits));\n                            initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\"), \n                            initialValue = (initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor).toString().replace(\".\", opts.radixPoint);\n                        }\n                    }\n                    return initialValue;\n                },\n                canClearPosition: function(maskset, position, lvp, strict, opts) {\n                    var vp = maskset.validPositions[position], canClear = vp.input !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && !1 === opts.decimalProtect || vp.input === opts.radixPoint && maskset.validPositions[position + 1] && null === maskset.validPositions[position + 1].match.fn || isFinite(vp.input) || position === lvp || vp.input === opts.groupSeparator || vp.input === opts.negationSymbol.front || vp.input === opts.negationSymbol.back;\n                    return !canClear || \"+\" !== vp.match.nativeDef && \"-\" !== vp.match.nativeDef || (opts.isNegative = !1), \n                    canClear;\n                },\n                onKeyDown: function(e, buffer, caretPos, opts) {\n                    var $input = $(this);\n                    if (e.ctrlKey) switch (e.keyCode) {\n                      case Inputmask.keyCode.UP:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger(\"setvalue\");\n                        break;\n\n                      case Inputmask.keyCode.DOWN:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger(\"setvalue\");\n                    }\n                }\n            },\n            currency: {\n                prefix: \"$ \",\n                groupSeparator: \",\",\n                alias: \"numeric\",\n                placeholder: \"0\",\n                autoGroup: !0,\n                digits: 2,\n                digitsOptional: !1,\n                clearMaskOnLostFocus: !1\n            },\n            decimal: {\n                alias: \"numeric\"\n            },\n            integer: {\n                alias: \"numeric\",\n                digits: 0,\n                radixPoint: \"\"\n            },\n            percentage: {\n                alias: \"numeric\",\n                digits: 2,\n                digitsOptional: !0,\n                radixPoint: \".\",\n                placeholder: \"0\",\n                autoGroup: !1,\n                min: 0,\n                max: 100,\n                suffix: \" %\",\n                allowMinus: !1\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        function maskSort(a, b) {\n            var maska = (a.mask || a).replace(/#/g, \"9\").replace(/\\)/, \"9\").replace(/[+()#-]/g, \"\"), maskb = (b.mask || b).replace(/#/g, \"9\").replace(/\\)/, \"9\").replace(/[+()#-]/g, \"\"), maskas = (a.mask || a).split(\"#\")[0], maskbs = (b.mask || b).split(\"#\")[0];\n            return 0 === maskbs.indexOf(maskas) ? -1 : 0 === maskas.indexOf(maskbs) ? 1 : maska.localeCompare(maskb);\n        }\n        var analyseMaskBase = Inputmask.prototype.analyseMask;\n        return Inputmask.prototype.analyseMask = function(mask, regexMask, opts) {\n            function reduceVariations(masks, previousVariation, previousmaskGroup) {\n                previousVariation = previousVariation || \"\", previousmaskGroup = previousmaskGroup || maskGroups, \n                \"\" !== previousVariation && (previousmaskGroup[previousVariation] = {});\n                for (var variation = \"\", maskGroup = previousmaskGroup[previousVariation] || previousmaskGroup, i = masks.length - 1; i >= 0; i--) maskGroup[variation = (mask = masks[i].mask || masks[i]).substr(0, 1)] = maskGroup[variation] || [], \n                maskGroup[variation].unshift(mask.substr(1)), masks.splice(i, 1);\n                for (var ndx in maskGroup) maskGroup[ndx].length > 500 && reduceVariations(maskGroup[ndx].slice(), ndx, maskGroup);\n            }\n            function rebuild(maskGroup) {\n                var mask = \"\", submasks = [];\n                for (var ndx in maskGroup) $.isArray(maskGroup[ndx]) ? 1 === maskGroup[ndx].length ? submasks.push(ndx + maskGroup[ndx]) : submasks.push(ndx + opts.groupmarker.start + maskGroup[ndx].join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end) : submasks.push(ndx + rebuild(maskGroup[ndx]));\n                return 1 === submasks.length ? mask += submasks[0] : mask += opts.groupmarker.start + submasks.join(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start) + opts.groupmarker.end, \n                mask;\n            }\n            var maskGroups = {};\n            return opts.phoneCodes && (opts.phoneCodes && opts.phoneCodes.length > 1e3 && (reduceVariations((mask = mask.substr(1, mask.length - 2)).split(opts.groupmarker.end + opts.alternatormarker + opts.groupmarker.start)), \n            mask = rebuild(maskGroups)), mask = mask.replace(/9/g, \"\\\\9\")), analyseMaskBase.call(this, mask, regexMask, opts);\n        }, Inputmask.extendAliases({\n            abstractphone: {\n                groupmarker: {\n                    start: \"<\",\n                    end: \">\"\n                },\n                countrycode: \"\",\n                phoneCodes: [],\n                mask: function(opts) {\n                    return opts.definitions = {\n                        \"#\": Inputmask.prototype.definitions[9]\n                    }, opts.phoneCodes.sort(maskSort);\n                },\n                keepStatic: !0,\n                onBeforeMask: function(value, opts) {\n                    var processedValue = value.replace(/^0{1,2}/, \"\").replace(/[\\s]/g, \"\");\n                    return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = \"+\" + opts.countrycode + processedValue), \n                    processedValue;\n                },\n                onUnMask: function(maskedValue, unmaskedValue, opts) {\n                    return maskedValue.replace(/[()#-]/g, \"\");\n                },\n                inputmode: \"tel\"\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n    \"function\" == typeof Symbol && Symbol.iterator;\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(0), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        return Inputmask.extendAliases({\n            Regex: {\n                mask: \"r\",\n                greedy: !1,\n                repeat: \"*\",\n                regex: null,\n                regexTokens: null,\n                tokenizer: /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g,\n                quantifierFilter: /[0-9]+[^,]/,\n                isComplete: function(buffer, opts) {\n                    return new RegExp(opts.regex, opts.casing ? \"i\" : \"\").test(buffer.join(\"\"));\n                },\n                definitions: {\n                    r: {\n                        validator: function(chrs, maskset, pos, strict, opts) {\n                            function RegexToken(isGroup, isQuantifier) {\n                                this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, \n                                this.quantifier = {\n                                    min: 1,\n                                    max: 1\n                                }, this.repeaterPart = void 0;\n                            }\n                            function validateRegexToken(token, fromGroup) {\n                                var isvalid = !1;\n                                fromGroup && (regexPart += \"(\", openGroupCount++);\n                                for (var mndx = 0; mndx < token.matches.length; mndx++) {\n                                    var matchToken = token.matches[mndx];\n                                    if (!0 === matchToken.isGroup) isvalid = validateRegexToken(matchToken, !0); else if (!0 === matchToken.isQuantifier) {\n                                        var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart;\n                                        if (isNaN(matchToken.quantifier.max)) {\n                                            for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ;\n                                            (isvalid = isvalid || validateRegexToken(matchGroup, !0)) && (matchToken.repeaterPart = regexPart), \n                                            regexPart = regexPartBak + matchToken.quantifier.max;\n                                        } else {\n                                            for (var i = 0, qm = matchToken.quantifier.max - 1; i < qm && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ;\n                                            regexPart = regexPartBak + \"{\" + matchToken.quantifier.min + \",\" + matchToken.quantifier.max + \"}\";\n                                        }\n                                    } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else {\n                                        var testExp;\n                                        if (\"[\" == matchToken.charAt(0)) {\n                                            testExp = regexPart, testExp += matchToken;\n                                            for (j = 0; j < openGroupCount; j++) testExp += \")\";\n                                            isvalid = (exp = new RegExp(\"^(\" + testExp + \")$\", opts.casing ? \"i\" : \"\")).test(bufferStr);\n                                        } else for (var l = 0, tl = matchToken.length; l < tl; l++) if (\"\\\\\" !== matchToken.charAt(l)) {\n                                            testExp = regexPart, testExp = (testExp += matchToken.substr(0, l + 1)).replace(/\\|$/, \"\");\n                                            for (var j = 0; j < openGroupCount; j++) testExp += \")\";\n                                            var exp = new RegExp(\"^(\" + testExp + \")$\", opts.casing ? \"i\" : \"\");\n                                            if (isvalid = exp.test(bufferStr)) break;\n                                        }\n                                        regexPart += matchToken;\n                                    }\n                                    if (isvalid) break;\n                                }\n                                return fromGroup && (regexPart += \")\", openGroupCount--), isvalid;\n                            }\n                            var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = \"\", isValid = !1, openGroupCount = 0;\n                            null === opts.regexTokens && function() {\n                                var match, m, currentToken = new RegexToken(), opengroups = [];\n                                for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch ((m = match[0]).charAt(0)) {\n                                  case \"(\":\n                                    opengroups.push(new RegexToken(!0));\n                                    break;\n\n                                  case \")\":\n                                    groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken);\n                                    break;\n\n                                  case \"{\":\n                                  case \"+\":\n                                  case \"*\":\n                                    var quantifierToken = new RegexToken(!1, !0), mq = (m = m.replace(/[{}]/g, \"\")).split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                                    if (quantifierToken.quantifier = {\n                                        min: mq0,\n                                        max: mq1\n                                    }, opengroups.length > 0) {\n                                        var matches = opengroups[opengroups.length - 1].matches;\n                                        (match = matches.pop()).isGroup || ((groupToken = new RegexToken(!0)).matches.push(match), \n                                        match = groupToken), matches.push(match), matches.push(quantifierToken);\n                                    } else (match = currentToken.matches.pop()).isGroup || ((groupToken = new RegexToken(!0)).matches.push(match), \n                                    match = groupToken), currentToken.matches.push(match), currentToken.matches.push(quantifierToken);\n                                    break;\n\n                                  default:\n                                    opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m);\n                                }\n                                currentToken.matches.length > 0 && opts.regexTokens.push(currentToken);\n                            }(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join(\"\");\n                            for (var i = 0; i < opts.regexTokens.length; i++) {\n                                var regexToken = opts.regexTokens[i];\n                                if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break;\n                            }\n                            return isValid;\n                        },\n                        cardinality: 1\n                    }\n                }\n            }\n        }), Inputmask;\n    });\n}, function(module, exports, __webpack_require__) {\n    \"use strict\";\n    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__, _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n        return typeof obj;\n    } : function(obj) {\n        return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    !function(factory) {\n        __WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(2), __webpack_require__(1) ], \n        void 0 !== (__WEBPACK_AMD_DEFINE_RESULT__ = \"function\" == typeof (__WEBPACK_AMD_DEFINE_FACTORY__ = factory) ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__) && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n    }(function($, Inputmask) {\n        return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) {\n            var nptmask, input = this[0];\n            if (void 0 === options && (options = {}), \"string\" == typeof fn) switch (fn) {\n              case \"unmaskedvalue\":\n                return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();\n\n              case \"remove\":\n                return this.each(function() {\n                    this.inputmask && this.inputmask.remove();\n                });\n\n              case \"getemptymask\":\n                return input && input.inputmask ? input.inputmask.getemptymask() : \"\";\n\n              case \"hasMaskedValue\":\n                return !(!input || !input.inputmask) && input.inputmask.hasMaskedValue();\n\n              case \"isComplete\":\n                return !input || !input.inputmask || input.inputmask.isComplete();\n\n              case \"getmetadata\":\n                return input && input.inputmask ? input.inputmask.getmetadata() : void 0;\n\n              case \"setvalue\":\n                $(input).val(options), input && void 0 === input.inputmask && $(input).triggerHandler(\"setvalue\");\n                break;\n\n              case \"option\":\n                if (\"string\" != typeof options) return this.each(function() {\n                    if (void 0 !== this.inputmask) return this.inputmask.option(options);\n                });\n                if (input && void 0 !== input.inputmask) return input.inputmask.option(options);\n                break;\n\n              default:\n                return options.alias = fn, nptmask = new Inputmask(options), this.each(function() {\n                    nptmask.mask(this);\n                });\n            } else {\n                if (\"object\" == (void 0 === fn ? \"undefined\" : _typeof(fn))) return nptmask = new Inputmask(fn), \n                void 0 === fn.mask && void 0 === fn.alias ? this.each(function() {\n                    if (void 0 !== this.inputmask) return this.inputmask.option(fn);\n                    nptmask.mask(this);\n                }) : this.each(function() {\n                    nptmask.mask(this);\n                });\n                if (void 0 === fn) return this.each(function() {\n                    (nptmask = new Inputmask(options)).mask(this);\n                });\n            }\n        }), $.fn.inputmask;\n    });\n} ]);"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery/dist/core.js",
    "content": "/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\ndefine( [\n\t\"./var/arr\",\n\t\"./var/document\",\n\t\"./var/getProto\",\n\t\"./var/slice\",\n\t\"./var/concat\",\n\t\"./var/push\",\n\t\"./var/indexOf\",\n\t\"./var/class2type\",\n\t\"./var/toString\",\n\t\"./var/hasOwn\",\n\t\"./var/fnToString\",\n\t\"./var/ObjectFunctionString\",\n\t\"./var/support\",\n\t\"./var/isFunction\",\n\t\"./var/isWindow\",\n\t\"./core/DOMEval\",\n\t\"./core/toType\"\n], function( arr, document, getProto, slice, concat, push, indexOf,\n\tclass2type, toString, hasOwn, fnToString, ObjectFunctionString,\n\tsupport, isFunction, isWindow, DOMEval, toType ) {\n\n\"use strict\";\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\nreturn jQuery;\n} );\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/LICENSE",
    "content": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\n  This version of the GNU Lesser General Public License incorporates\nthe terms and conditions of version 3 of the GNU General Public\nLicense, supplemented by the additional permissions listed below.\n\n  0. Additional Definitions.\n\n  As used herein, \"this License\" refers to version 3 of the GNU Lesser\nGeneral Public License, and the \"GNU GPL\" refers to version 3 of the GNU\nGeneral Public License.\n\n  \"The Library\" refers to a covered work governed by this License,\nother than an Application or a Combined Work as defined below.\n\n  An \"Application\" is any work that makes use of an interface provided\nby the Library, but which is not otherwise based on the Library.\nDefining a subclass of a class defined by the Library is deemed a mode\nof using an interface provided by the Library.\n\n  A \"Combined Work\" is a work produced by combining or linking an\nApplication with the Library.  The particular version of the Library\nwith which the Combined Work was made is also called the \"Linked\nVersion\".\n\n  The \"Minimal Corresponding Source\" for a Combined Work means the\nCorresponding Source for the Combined Work, excluding any source code\nfor portions of the Combined Work that, considered in isolation, are\nbased on the Application, and not on the Linked Version.\n\n  The \"Corresponding Application Code\" for a Combined Work means the\nobject code and/or source code for the Application, including any data\nand utility programs needed for reproducing the Combined Work from the\nApplication, but excluding the System Libraries of the Combined Work.\n\n  1. Exception to Section 3 of the GNU GPL.\n\n  You may convey a covered work under sections 3 and 4 of this License\nwithout being bound by section 3 of the GNU GPL.\n\n  2. Conveying Modified Versions.\n\n  If you modify a copy of the Library, and, in your modifications, a\nfacility refers to a function or data to be supplied by an Application\nthat uses the facility (other than as an argument passed when the\nfacility is invoked), then you may convey a copy of the modified\nversion:\n\n   a) under this License, provided that you make a good faith effort to\n   ensure that, in the event an Application does not supply the\n   function or data, the facility still operates, and performs\n   whatever part of its purpose remains meaningful, or\n\n   b) under the GNU GPL, with none of the additional permissions of\n   this License applicable to that copy.\n\n  3. Object Code Incorporating Material from Library Header Files.\n\n  The object code form of an Application may incorporate material from\na header file that is part of the Library.  You may convey such object\ncode under terms of your choice, provided that, if the incorporated\nmaterial is not limited to numerical parameters, data structure\nlayouts and accessors, or small macros, inline functions and templates\n(ten or fewer lines in length), you do both of the following:\n\n   a) Give prominent notice with each copy of the object code that the\n   Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the object code with a copy of the GNU GPL and this license\n   document.\n\n  4. Combined Works.\n\n  You may convey a Combined Work under terms of your choice that,\ntaken together, effectively do not restrict modification of the\nportions of the Library contained in the Combined Work and reverse\nengineering for debugging such modifications, if you also do each of\nthe following:\n\n   a) Give prominent notice with each copy of the Combined Work that\n   the Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the Combined Work with a copy of the GNU GPL and this license\n   document.\n\n   c) For a Combined Work that displays copyright notices during\n   execution, include the copyright notice for the Library among\n   these notices, as well as a reference directing the user to the\n   copies of the GNU GPL and this license document.\n\n   d) Do one of the following:\n\n       0) Convey the Minimal Corresponding Source under the terms of this\n       License, and the Corresponding Application Code in a form\n       suitable for, and under terms that permit, the user to\n       recombine or relink the Application with a modified version of\n       the Linked Version to produce a modified Combined Work, in the\n       manner specified by section 6 of the GNU GPL for conveying\n       Corresponding Source.\n\n       1) Use a suitable shared library mechanism for linking with the\n       Library.  A suitable mechanism is one that (a) uses at run time\n       a copy of the Library already present on the user's computer\n       system, and (b) will operate properly with a modified version\n       of the Library that is interface-compatible with the Linked\n       Version.\n\n   e) Provide Installation Information, but only if you would otherwise\n   be required to provide such information under section 6 of the\n   GNU GPL, and only to the extent that such information is\n   necessary to install and execute a modified version of the\n   Combined Work produced by recombining or relinking the\n   Application with a modified version of the Linked Version. (If\n   you use option 4d0, the Installation Information must accompany\n   the Minimal Corresponding Source and Corresponding Application\n   Code. If you use option 4d1, you must provide the Installation\n   Information in the manner specified by section 6 of the GNU GPL\n   for conveying Corresponding Source.)\n\n  5. Combined Libraries.\n\n  You may place library facilities that are a work based on the\nLibrary side by side in a single library together with other library\nfacilities that are not Applications and are not covered by this\nLicense, and convey such a combined library under terms of your\nchoice, if you do both of the following:\n\n   a) Accompany the combined library with a copy of the same work based\n   on the Library, uncombined with any other library facilities,\n   conveyed under the terms of this License.\n\n   b) Give prominent notice with the combined library that part of it\n   is a work based on the Library, and explaining where to find the\n   accompanying uncombined form of the same work.\n\n  6. Revised Versions of the GNU Lesser General Public License.\n\n  The Free Software Foundation may publish revised and/or new versions\nof the GNU Lesser General Public License from time to time. Such new\nversions will be similar in spirit to the present version, but may\ndiffer in detail to address new problems or concerns.\n\n  Each version is given a distinguishing version number. If the\nLibrary as you received it specifies that a certain numbered version\nof the GNU Lesser General Public License \"or any later version\"\napplies to it, you have the option of following the terms and\nconditions either of that published version or of any later version\npublished by the Free Software Foundation. If the Library as you\nreceived it does not specify a version number of the GNU Lesser\nGeneral Public License, you may choose any version of the GNU Lesser\nGeneral Public License ever published by the Free Software Foundation.\n\n  If the Library as you received it specifies that a proxy can decide\nwhether future versions of the GNU Lesser General Public License shall\napply, that proxy's public statement of acceptance of any version is\npermanent authorization for you to choose that version for the\nLibrary.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/README.md",
    "content": "# [jQuery asColor](https://github.com/amazingSurge/jquery-asColor) ![bower][bower-image] [![NPM version][npm-image]][npm-url] [![Dependency Status][daviddm-image]][daviddm-url] [![prs-welcome]](#contributing)\n\n> A jquery plugin used to parse css color string and convent it to other color formats. It support rgb, rgba, hex, hsl, hsla.\n\n## Table of contents\n- [Main files](#main-files)\n- [Quick start](#quick-start)\n- [Requirements](#requirements)\n- [Usage](#usage)\n- [Examples](#examples)\n- [Options](#options)\n- [Methods](#methods)\n- [No conflict](#no-conflict)\n- [Browser support](#browser-support)\n- [Contributing](#contributing)\n- [Development](#development)\n- [Changelog](#changelog)\n- [Copyright and license](#copyright-and-license)\n\n## Main files\n```\ndist/\n├── jquery-asColor.js\n├── jquery-asColor.es.js\n└── jquery-asColor.min.js\n```\n\n## Quick start\nSeveral quick start options are available:\n#### Download the latest build\n\n * [Development](https://raw.githubusercontent.com/amazingSurge/jquery-asColor/master/dist/jquery-asColor.js) - unminified\n * [Production](https://raw.githubusercontent.com/amazingSurge/jquery-asColor/master/dist/jquery-asColor.min.js) - minified\n\n#### Install From Bower\n```sh\nbower install jquery-asColor --save\n```\n\n#### Install From Npm\n```sh\nnpm install jquery-asColor --save\n```\n\n#### Install From Yarn\n```sh\nyarn add jquery-asColor\n```\n\n#### Build From Source\nIf you want build from source:\n\n```sh\ngit clone git@github.com:amazingSurge/jquery-asColor.git\ncd jquery-asColor\nnpm install\nnpm install -g gulp-cli babel-cli\ngulp build\n```\n\nDone!\n\n## Requirements\n`jquery-asColor` requires the latest version of [`jQuery`](https://jquery.com/download/).\n\n## Usage\n#### Including files:\n\n```html\n<script src=\"/path/to/jquery.js\"></script>\n<script src=\"/path/to/jquery-asColor.js\"></script>\n```\n\n#### Initialization\nAll you need to do is call the plugin on the element:\n\n```javascript\njQuery(function($) {\n  var color = $.asColor('rgba(255, 255, 255, 1)', {\n    format: 'rgba',\n    shortenHex: false,\n    hexUseName: false,\n    reduceAlpha: false,\n    nameDegradation: 'HEX',\n    invalidValue: '',\n    zeroAlphaAsTransparent: true\n  });\n  var string = color.toString(), // rgba(255, 255, 255, 1)\n    hex = color.toHEX(), // #ffffff\n    rgb = color.toRGB(), // rgb(255, 255, 255)\n    hsl = color.toHSL(), // hsl(0, 0%, 100%)\n    hsla = color.toHSLA(), // hsla(0, 0%, 100%, 1)\n    name = color.toNAME(); // white\n\n  color.val('#000');\n  color.format('hsla');\n  color.alpha(0.5);\n  var value = color.val(); // hsla(0, 0%, 0%, 0.5)\n});\n```\n\n## Examples\nThere are some example usages that you can look at to get started. They can be found in the\n[examples folder](https://github.com/amazingSurge/jquery-asColor/tree/master/examples).\n\n## Options\n`jquery-asColor` can accept an options object to alter the way it behaves. You can see the default options by call `$.asColor.setDefaults()`. The structure of an options object is as follows:\n\n```\n{\n  format: false,\n  shortenHex: false,\n  hexUseName: false,\n  reduceAlpha: false,\n  alphaConvert: { // or false will disable convert\n    'RGB': 'RGBA',\n    'HSL': 'HSLA',\n    'HEX': 'RGBA',\n    'NAMESPACE': 'RGBA',\n  },\n  nameDegradation: 'HEX',\n  invalidValue: '',\n  zeroAlphaAsTransparent: true\n}\n```\n\n## Methods\nMethods are called on asColor instances through the asColor method itself.\nYou can also save the instances to variable for further use.\n\n#### toString()\nReturn the color string.\n```javascript\ncolor.toString();\n```\n\n#### format()\nGet the color format or set the color format.\n```javascript\ncolor.format();\ncolor.format('rgb');\n```\n\n#### val()\nSet or get the color value.\n```javascript\n// get the val\ncolor.val();\n\n// set the val\ncolor.val('rgb(66, 50, 50)');\n```\n\n#### set()\nSet the color.\n```javascript\ncolor.set({\n  r: 255,\n  g: 255,\n  b: 255,\n  a: 0.5\n});\n```\n\n#### get()\nGet the color.\n```javascript\nvar rgb = color.get();\n```\n\n#### alpha()\nGet alpha.\n```javascript\nvar alpha = color.alpha();\n```\n\n#### isValid()\nCheck color is valid.\n```javascript\ncolor.isValid();\n```\n\n#### toRGB()\nConvent to rgb color.\n```javascript\ncolor.toRGB();\n```\n\n#### toRGBA()\nConvent to rgba color.\n```javascript\ncolor.toRGBA();\n```\n\n#### toHEX()\nConvent to hex color.\n```javascript\ncolor.toHEX();\n```\n\n#### toHSL()\nConvent to hsl color.\n```javascript\ncolor.toHSL();\n```\n\n#### toHSLA()\nConvent to hsla color.\n```javascript\ncolor.toHSLA();\n```\n\n## No conflict\nIf you have to use other plugin with the same namespace, just call the `$.asColor.noConflict` method to revert to it.\n\n```html\n<script src=\"other-plugin.js\"></script>\n<script src=\"jquery-asColor.js\"></script>\n<script>\n  $.asColor.noConflict();\n  // Code that uses other plugin's \"$().asColor\" can follow here.\n</script>\n```\n\n## Browser support\n\nTested on all major browsers.\n\n| <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/safari/safari_32x32.png\" alt=\"Safari\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/chrome/chrome_32x32.png\" alt=\"Chrome\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/firefox/firefox_32x32.png\" alt=\"Firefox\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/edge/edge_32x32.png\" alt=\"Edge\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/internet-explorer/internet-explorer_32x32.png\" alt=\"IE\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/opera/opera_32x32.png\" alt=\"Opera\"> |\n|:--:|:--:|:--:|:--:|:--:|:--:|\n| Latest ✓ | Latest ✓ | Latest ✓ | Latest ✓ | 9-11 ✓ | Latest ✓ |\n\nAs a jQuery plugin, you also need to see the [jQuery Browser Support](http://jquery.com/browser-support/).\n\n## Contributing\nAnyone and everyone is welcome to contribute. Please take a moment to\nreview the [guidelines for contributing](CONTRIBUTING.md). Make sure you're using the latest version of `jquery-asColor` before submitting an issue. There are several ways to help out:\n\n* [Bug reports](CONTRIBUTING.md#bug-reports)\n* [Feature requests](CONTRIBUTING.md#feature-requests)\n* [Pull requests](CONTRIBUTING.md#pull-requests)\n* Write test cases for open bug issues\n* Contribute to the documentation\n\n## Development\n`jquery-asColor` is built modularly and uses Gulp as a build system to build its distributable files. To install the necessary dependencies for the build system, please run:\n\n```sh\nnpm install -g gulp\nnpm install -g babel-cli\nnpm install\n```\n\nThen you can generate new distributable files from the sources, using:\n```\ngulp build\n```\n\nMore gulp tasks can be found [here](CONTRIBUTING.md#available-tasks).\n\n## Changelog\nTo see the list of recent changes, see [Releases section](https://github.com/amazingSurge/jquery-asColor/releases).\n\n## Copyright and license\nCopyright (C) 2016 amazingSurge.\n\nLicensed under [the LGPL license](LICENSE).\n\n[⬆ back to top](#table-of-contents)\n\n[bower-image]: https://img.shields.io/bower/v/jquery-asColor.svg?style=flat\n[bower-link]: https://david-dm.org/amazingSurge/jquery-asColor/dev-status.svg\n[npm-image]: https://badge.fury.io/js/jquery-asColor.svg?style=flat\n[npm-url]: https://npmjs.org/package/jquery-asColor\n[license]: https://img.shields.io/npm/l/jquery-asColor.svg?style=flat\n[prs-welcome]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg\n[daviddm-image]: https://david-dm.org/amazingSurge/jquery-asColor.svg?style=flat\n[daviddm-url]: https://david-dm.org/amazingSurge/jquery-asColor"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/dist/jquery-asColor.es.js",
    "content": "/**\n* jQuery asColor v0.3.6\n* https://github.com/amazingSurge/asColor\n*\n* Copyright (c) amazingSurge\n* Released under the LGPL-3.0 license\n*/\nimport $ from 'jquery';\n\nvar DEFAULTS = {\n  format: false,\n  shortenHex: false,\n  hexUseName: false,\n  reduceAlpha: false,\n  alphaConvert: { // or false will disable convert\n    'RGB': 'RGBA',\n    'HSL': 'HSLA',\n    'HEX': 'RGBA',\n    'NAMESPACE': 'RGBA',\n  },\n  nameDegradation: 'HEX',\n  invalidValue: '',\n  zeroAlphaAsTransparent: true\n};\n\nfunction expandHex(hex) {\n  if (hex.indexOf('#') === 0) {\n    hex = hex.substr(1);\n  }\n  if (!hex) {\n    return null;\n  }\n  if (hex.length === 3) {\n    hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n  }\n  return hex.length === 6 ? `#${hex}` : null;\n}\n\nfunction shrinkHex(hex) {\n  if (hex.indexOf('#') === 0) {\n    hex = hex.substr(1);\n  }\n  if (hex.length === 6 && hex[0] === hex[1] && hex[2] === hex[3] && hex[4] === hex[5]) {\n    hex = hex[0] + hex[2] + hex[4];\n  }\n  return `#${hex}`;\n}\n\nfunction parseIntFromHex(val) {\n  return parseInt(val, 16);\n}\n\nfunction isPercentage(n) {\n  return typeof n === 'string' && n.indexOf('%') === n.length - 1;\n}\n\nfunction conventPercentageToRgb(n) {\n  return parseInt(Math.round(n.slice(0, -1) * 2.55), 10);\n}\n\nfunction convertPercentageToFloat(n) {\n  return parseFloat(n.slice(0, -1) / 100, 10);\n}\n\nfunction flip(o) {\n  const flipped = {};\n  for (const i in o) {\n    if (o.hasOwnProperty(i)) {\n      flipped[o[i]] = i;\n    }\n  }\n  return flipped;\n}\n\nvar NAMES = {\n  aliceblue: 'f0f8ff',\n  antiquewhite: 'faebd7',\n  aqua: '0ff',\n  aquamarine: '7fffd4',\n  azure: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '000',\n  blanchedalmond: 'ffebcd',\n  blue: '00f',\n  blueviolet: '8a2be2',\n  brown: 'a52a2a',\n  burlywood: 'deb887',\n  burntsienna: 'ea7e5d',\n  cadetblue: '5f9ea0',\n  chartreuse: '7fff00',\n  chocolate: 'd2691e',\n  coral: 'ff7f50',\n  cornflowerblue: '6495ed',\n  cornsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: '0ff',\n  darkblue: '00008b',\n  darkcyan: '008b8b',\n  darkgoldenrod: 'b8860b',\n  darkgray: 'a9a9a9',\n  darkgreen: '006400',\n  darkgrey: 'a9a9a9',\n  darkkhaki: 'bdb76b',\n  darkmagenta: '8b008b',\n  darkolivegreen: '556b2f',\n  darkorange: 'ff8c00',\n  darkorchid: '9932cc',\n  darkred: '8b0000',\n  darksalmon: 'e9967a',\n  darkseagreen: '8fbc8f',\n  darkslateblue: '483d8b',\n  darkslategray: '2f4f4f',\n  darkslategrey: '2f4f4f',\n  darkturquoise: '00ced1',\n  darkviolet: '9400d3',\n  deeppink: 'ff1493',\n  deepskyblue: '00bfff',\n  dimgray: '696969',\n  dimgrey: '696969',\n  dodgerblue: '1e90ff',\n  firebrick: 'b22222',\n  floralwhite: 'fffaf0',\n  forestgreen: '228b22',\n  fuchsia: 'f0f',\n  gainsboro: 'dcdcdc',\n  ghostwhite: 'f8f8ff',\n  gold: 'ffd700',\n  goldenrod: 'daa520',\n  gray: '808080',\n  green: '008000',\n  greenyellow: 'adff2f',\n  grey: '808080',\n  honeydew: 'f0fff0',\n  hotpink: 'ff69b4',\n  indianred: 'cd5c5c',\n  indigo: '4b0082',\n  ivory: 'fffff0',\n  khaki: 'f0e68c',\n  lavender: 'e6e6fa',\n  lavenderblush: 'fff0f5',\n  lawngreen: '7cfc00',\n  lemonchiffon: 'fffacd',\n  lightblue: 'add8e6',\n  lightcoral: 'f08080',\n  lightcyan: 'e0ffff',\n  lightgoldenrodyellow: 'fafad2',\n  lightgray: 'd3d3d3',\n  lightgreen: '90ee90',\n  lightgrey: 'd3d3d3',\n  lightpink: 'ffb6c1',\n  lightsalmon: 'ffa07a',\n  lightseagreen: '20b2aa',\n  lightskyblue: '87cefa',\n  lightslategray: '789',\n  lightslategrey: '789',\n  lightsteelblue: 'b0c4de',\n  lightyellow: 'ffffe0',\n  lime: '0f0',\n  limegreen: '32cd32',\n  linen: 'faf0e6',\n  magenta: 'f0f',\n  maroon: '800000',\n  mediumaquamarine: '66cdaa',\n  mediumblue: '0000cd',\n  mediumorchid: 'ba55d3',\n  mediumpurple: '9370db',\n  mediumseagreen: '3cb371',\n  mediumslateblue: '7b68ee',\n  mediumspringgreen: '00fa9a',\n  mediumturquoise: '48d1cc',\n  mediumvioletred: 'c71585',\n  midnightblue: '191970',\n  mintcream: 'f5fffa',\n  mistyrose: 'ffe4e1',\n  moccasin: 'ffe4b5',\n  navajowhite: 'ffdead',\n  navy: '000080',\n  oldlace: 'fdf5e6',\n  olive: '808000',\n  olivedrab: '6b8e23',\n  orange: 'ffa500',\n  orangered: 'ff4500',\n  orchid: 'da70d6',\n  palegoldenrod: 'eee8aa',\n  palegreen: '98fb98',\n  paleturquoise: 'afeeee',\n  palevioletred: 'db7093',\n  papayawhip: 'ffefd5',\n  peachpuff: 'ffdab9',\n  peru: 'cd853f',\n  pink: 'ffc0cb',\n  plum: 'dda0dd',\n  powderblue: 'b0e0e6',\n  purple: '800080',\n  red: 'f00',\n  rosybrown: 'bc8f8f',\n  royalblue: '4169e1',\n  saddlebrown: '8b4513',\n  salmon: 'fa8072',\n  sandybrown: 'f4a460',\n  seagreen: '2e8b57',\n  seashell: 'fff5ee',\n  sienna: 'a0522d',\n  silver: 'c0c0c0',\n  skyblue: '87ceeb',\n  slateblue: '6a5acd',\n  slategray: '708090',\n  slategrey: '708090',\n  snow: 'fffafa',\n  springgreen: '00ff7f',\n  steelblue: '4682b4',\n  tan: 'd2b48c',\n  teal: '008080',\n  thistle: 'd8bfd8',\n  tomato: 'ff6347',\n  turquoise: '40e0d0',\n  violet: 'ee82ee',\n  wheat: 'f5deb3',\n  white: 'fff',\n  whitesmoke: 'f5f5f5',\n  yellow: 'ff0',\n  yellowgreen: '9acd32'\n};\n\n/* eslint no-bitwise: \"off\" */\nconst hexNames = flip(NAMES);\n\nvar Converter = {\n  HSLtoRGB: function(hsl) {\n    const h = hsl.h / 360;\n    const s = hsl.s;\n    const l = hsl.l;\n    let m1;\n    let m2;\n    let rgb;\n    if (l <= 0.5) {\n      m2 = l * (s + 1);\n    } else {\n      m2 = l + s - (l * s);\n    }\n    m1 = l * 2 - m2;\n    rgb = {\n      r: this.hueToRGB(m1, m2, h + 1 / 3),\n      g: this.hueToRGB(m1, m2, h),\n      b: this.hueToRGB(m1, m2, h - 1 / 3)\n    };\n    if (typeof hsl.a !== 'undefined') {\n      rgb.a = hsl.a;\n    }\n    if (hsl.l === 0) {\n      rgb.h = hsl.h;\n    }\n    if (hsl.l === 1) {\n      rgb.h = hsl.h;\n    }\n    return rgb;\n  },\n\n  hueToRGB: function(m1, m2, h) {\n    let v;\n    if (h < 0) {\n      h += 1;\n    } else if (h > 1) {\n      h -= 1;\n    }\n    if ((h * 6) < 1) {\n      v = m1 + (m2 - m1) * h * 6;\n    } else if ((h * 2) < 1) {\n      v = m2;\n    } else if ((h * 3) < 2) {\n      v = m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    } else {\n      v = m1;\n    }\n    return Math.round(v * 255);\n  },\n\n  RGBtoHSL: function(rgb) {\n    const r = rgb.r / 255;\n    const g = rgb.g / 255;\n    const b = rgb.b / 255;\n    const min = Math.min(r, g, b);\n    const max = Math.max(r, g, b);\n    const diff = max - min;\n    const add = max + min;\n    const l = add * 0.5;\n    let h;\n    let s;\n\n    if (min === max) {\n      h = 0;\n    } else if (r === max) {\n      h = (60 * (g - b) / diff) + 360;\n    } else if (g === max) {\n      h = (60 * (b - r) / diff) + 120;\n    } else {\n      h = (60 * (r - g) / diff) + 240;\n    }\n    if (diff === 0) {\n      s = 0;\n    } else if (l <= 0.5) {\n      s = diff / add;\n    } else {\n      s = diff / (2 - add);\n    }\n\n    return {\n      h: Math.round(h) % 360,\n      s,\n      l\n    };\n  },\n\n  RGBtoHEX: function(rgb) {\n    let hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n\n    $.each(hex, (nr, val) => {\n      if (val.length === 1) {\n        hex[nr] = `0${val}`;\n      }\n    });\n    return `#${hex.join('')}`;\n  },\n\n  HSLtoHEX: function(hsl) {\n    const rgb = this.HSLtoRGB(hsl);\n    return this.RGBtoHEX(rgb);\n  },\n\n  HSVtoHEX: function(hsv) {\n    const rgb = this.HSVtoRGB(hsv);\n    return this.RGBtoHEX(rgb);\n  },\n\n  RGBtoHSV: function(rgb) {\n    const r = rgb.r / 255;\n    const g = rgb.g / 255;\n    const b = rgb.b / 255;\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    let h;\n    let s;\n    const v = max;\n    const diff = max - min;\n    s = (max === 0) ? 0 : diff / max;\n    if (max === min) {\n      h = 0;\n    } else {\n      switch (max) {\n        case r: {\n          h = (g - b) / diff + (g < b ? 6 : 0);\n          break;\n        }\n        case g: {\n          h = (b - r) / diff + 2;\n          break;\n        }\n        case b: {\n          h = (r - g) / diff + 4;\n          break;\n        }\n        default: {\n          break;\n        }\n      }\n      h /= 6;\n    }\n\n    return {\n      h: Math.round(h * 360),\n      s,\n      v\n    };\n  },\n\n  HSVtoRGB: function(hsv) {\n    let r;\n    let g;\n    let b;\n    let h = (hsv.h % 360) / 60;\n    const s = hsv.s;\n    const v = hsv.v;\n    const c = v * s;\n    const x = c * (1 - Math.abs(h % 2 - 1));\n\n    r = g = b = v - c;\n    h = ~~h;\n\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\n    let rgb = {\n      r: Math.round(r * 255),\n      g: Math.round(g * 255),\n      b: Math.round(b * 255)\n    };\n\n    if (typeof hsv.a !== 'undefined') {\n      rgb.a = hsv.a;\n    }\n\n    if (hsv.v === 0) {\n      rgb.h = hsv.h;\n    }\n\n    if (hsv.v === 1 && hsv.s === 0) {\n      rgb.h = hsv.h;\n    }\n\n    return rgb;\n  },\n\n  HEXtoRGB: function(hex) {\n    if (hex.length === 4) {\n      hex = expandHex(hex);\n    }\n    return {\n      r: parseIntFromHex(hex.substr(1, 2)),\n      g: parseIntFromHex(hex.substr(3, 2)),\n      b: parseIntFromHex(hex.substr(5, 2))\n    };\n  },\n\n  isNAME: function(string) {\n    if (NAMES.hasOwnProperty(string)) {\n      return true;\n    }\n    return false;\n  },\n\n  NAMEtoHEX: function(name) {\n    if (NAMES.hasOwnProperty(name)) {\n      return `#${NAMES[name]}`;\n    }\n    return null;\n  },\n\n  NAMEtoRGB: function(name) {\n    const hex = this.NAMEtoHEX(name);\n\n    if (hex) {\n      return this.HEXtoRGB(hex);\n    }\n    return null;\n  },\n\n  hasNAME: function(rgb) {\n    let hex = this.RGBtoHEX(rgb);\n\n    hex = shrinkHex(hex);\n\n    if (hex.indexOf('#') === 0) {\n      hex = hex.substr(1);\n    }\n\n    if (hexNames.hasOwnProperty(hex)) {\n      return hexNames[hex];\n    }\n    return false;\n  },\n\n  RGBtoNAME: function(rgb) {\n    const hasName = this.hasNAME(rgb);\n    if (hasName) {\n      return hasName;\n    }\n\n    return null;\n  }\n};\n\nconst CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\nconst CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\nconst CSS_UNIT = `(?:${CSS_NUMBER})|(?:${CSS_INTEGER})`;\n\nconst PERMISSIVE_MATCH3 = `[\\\\s|\\\\(]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})\\\\s*\\\\)`;\nconst PERMISSIVE_MATCH4 = `[\\\\s|\\\\(]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})\\\\s*\\\\)`;\n\nconst ColorStrings = {\n  RGB: {\n    match: new RegExp(`^rgb${PERMISSIVE_MATCH3}$`, 'i'),\n    parse: function(result) {\n      return {\n        r: isPercentage(result[1]) ? conventPercentageToRgb(result[1]) : parseInt(result[1], 10),\n        g: isPercentage(result[2]) ? conventPercentageToRgb(result[2]) : parseInt(result[2], 10),\n        b: isPercentage(result[3]) ? conventPercentageToRgb(result[3]) : parseInt(result[3], 10),\n        a: 1\n      };\n    },\n    to: function(color) {\n      return `rgb(${color.r}, ${color.g}, ${color.b})`;\n    }\n  },\n  RGBA: {\n    match: new RegExp(`^rgba${PERMISSIVE_MATCH4}$`, 'i'),\n    parse: function(result) {\n      return {\n        r: isPercentage(result[1]) ? conventPercentageToRgb(result[1]) : parseInt(result[1], 10),\n        g: isPercentage(result[2]) ? conventPercentageToRgb(result[2]) : parseInt(result[2], 10),\n        b: isPercentage(result[3]) ? conventPercentageToRgb(result[3]) : parseInt(result[3], 10),\n        a: isPercentage(result[4]) ? convertPercentageToFloat(result[4]) : parseFloat(result[4], 10)\n      };\n    },\n    to: function(color) {\n      return `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`;\n    }\n  },\n  HSL: {\n    match: new RegExp(`^hsl${PERMISSIVE_MATCH3}$`, 'i'),\n    parse: function(result) {\n      const hsl = {\n        h: ((result[1] % 360) + 360) % 360,\n        s: isPercentage(result[2]) ? convertPercentageToFloat(result[2]) : parseFloat(result[2], 10),\n        l: isPercentage(result[3]) ? convertPercentageToFloat(result[3]) : parseFloat(result[3], 10),\n        a: 1\n      };\n\n      return Converter.HSLtoRGB(hsl);\n    },\n    to: function(color) {\n      const hsl = Converter.RGBtoHSL(color);\n      return `hsl(${parseInt(hsl.h, 10)}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%)`;\n    }\n  },\n  HSLA: {\n    match: new RegExp(`^hsla${PERMISSIVE_MATCH4}$`, 'i'),\n    parse: function(result) {\n      const hsla = {\n        h: ((result[1] % 360) + 360) % 360,\n        s: isPercentage(result[2]) ? convertPercentageToFloat(result[2]) : parseFloat(result[2], 10),\n        l: isPercentage(result[3]) ? convertPercentageToFloat(result[3]) : parseFloat(result[3], 10),\n        a: isPercentage(result[4]) ? convertPercentageToFloat(result[4]) : parseFloat(result[4], 10)\n      };\n\n      return Converter.HSLtoRGB(hsla);\n    },\n    to: function(color) {\n      const hsl = Converter.RGBtoHSL(color);\n      return `hsla(${parseInt(hsl.h, 10)}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%, ${color.a})`;\n    }\n  },\n  HEX: {\n    match: /^#([a-f0-9]{6}|[a-f0-9]{3})$/i,\n    parse: function(result) {\n      const hex = result[0];\n      const rgb = Converter.HEXtoRGB(hex);\n      return {\n        r: rgb.r,\n        g: rgb.g,\n        b: rgb.b,\n        a: 1\n      };\n    },\n    to: function(color, instance) {\n      let hex = Converter.RGBtoHEX(color);\n\n      if (instance) {\n        if (instance.options.hexUseName) {\n          const hasName = Converter.hasNAME(color);\n          if (hasName) {\n            return hasName;\n          }\n        }\n        if (instance.options.shortenHex) {\n          hex = shrinkHex(hex);\n        }\n      }\n      return `${hex}`;\n    }\n  },\n  TRANSPARENT: {\n    match: /^transparent$/i,\n    parse: function() {\n      return {\n        r: 0,\n        g: 0,\n        b: 0,\n        a: 0\n      };\n    },\n    to: function() {\n      return 'transparent';\n    }\n  },\n  NAME: {\n    match: /^\\w+$/i,\n    parse: function(result) {\n      const rgb = Converter.NAMEtoRGB(result[0]);\n      if(rgb) {\n        return {\n          r: rgb.r,\n          g: rgb.g,\n          b: rgb.b,\n          a: 1\n        };\n      }\n\n      return null;\n    },\n    to: function(color, instance) {\n      let name = Converter.RGBtoNAME(color);\n\n      if(name) {\n        return name;\n      }\n\n      return ColorStrings[instance.options.nameDegradation.toUpperCase()].to(color);\n    }\n  }\n};\n\n/* eslint no-extend-native: \"off\" */\nif (!String.prototype.includes) {\n  String.prototype.includes = function(search, start) {\n    'use strict';\n    if (typeof start !== 'number') {\n      start = 0;\n    }\n\n    if (start + search.length > this.length) {\n      return false;\n    }\n    return this.indexOf(search, start) !== -1;\n  };\n}\n\nclass AsColor {\n  constructor(string, options) {\n    if (typeof string === 'object' && typeof options === 'undefined') {\n      options = string;\n      string = undefined;\n    }\n    if(typeof options === 'string'){\n      options = {\n        format: options\n      };\n    }\n    this.options = $.extend(true, {}, DEFAULTS, options);\n    this.value = {\n      r: 0,\n      g: 0,\n      b: 0,\n      h: 0,\n      s: 0,\n      v: 0,\n      a: 1\n    };\n    this._format = false;\n    this._matchFormat = 'HEX';\n    this._valid = true;\n\n    this.init(string);\n  }\n\n  init(string) {\n    this.format(this.options.format);\n    this.fromString(string);\n    return this;\n  }\n\n  isValid() {\n    return this._valid;\n  }\n\n  val(value) {\n    if (typeof value === 'undefined') {\n      return this.toString();\n    }\n    this.fromString(value);\n    return this;\n  }\n\n  alpha(value) {\n    if (typeof value === 'undefined' || isNaN(value)) {\n      return this.value.a;\n    }\n\n    value = parseFloat(value);\n\n    if (value > 1) {\n      value = 1;\n    } else if (value < 0) {\n      value = 0;\n    }\n    this.value.a = value;\n    return this;\n  }\n\n  matchString(string) {\n    return AsColor.matchString(string);\n  }\n\n  fromString(string, updateFormat) {\n    if (typeof string === 'string') {\n      string = $.trim(string);\n      let matched = null;\n      let rgb;\n      this._valid = false;\n      for (let i in ColorStrings) {\n        if ((matched = ColorStrings[i].match.exec(string)) !== null) {\n          rgb = ColorStrings[i].parse(matched);\n\n          if (rgb) {\n            this.set(rgb);\n            if(i === 'TRANSPARENT'){\n              i = 'HEX';\n            }\n            this._matchFormat = i;\n            if (updateFormat === true) {\n              this.format(i);\n            }\n            break;\n          }\n        }\n      }\n    } else if (typeof string === 'object') {\n      this.set(string);\n    }\n    return this;\n  }\n\n  format(format) {\n    if (typeof format === 'string' && (format = format.toUpperCase()) && typeof ColorStrings[format] !== 'undefined') {\n      if (format !== 'TRANSPARENT') {\n        this._format = format;\n      } else {\n        this._format = 'HEX';\n      }\n    } else if(format === false) {\n      this._format = false;\n    }\n    if(this._format === false){\n      return this._matchFormat;\n    }\n    return this._format;\n  }\n\n  toRGBA() {\n    return ColorStrings.RGBA.to(this.value, this);\n  }\n\n  toRGB() {\n    return ColorStrings.RGB.to(this.value, this);\n  }\n\n  toHSLA() {\n    return ColorStrings.HSLA.to(this.value, this);\n  }\n\n  toHSL() {\n    return ColorStrings.HSL.to(this.value, this);\n  }\n\n  toHEX() {\n    return ColorStrings.HEX.to(this.value, this);\n  }\n\n  toNAME() {\n    return ColorStrings.NAME.to(this.value, this);\n  }\n\n  to(format) {\n    if (typeof format === 'string' && (format = format.toUpperCase()) && typeof ColorStrings[format] !== 'undefined') {\n      return ColorStrings[format].to(this.value, this);\n    }\n    return this.toString();\n  }\n\n  toString() {\n    let value = this.value;\n    if (!this._valid) {\n      value = this.options.invalidValue;\n\n      if (typeof value === 'string') {\n        return value;\n      }\n    }\n\n    if (value.a === 0 && this.options.zeroAlphaAsTransparent) {\n      return ColorStrings.TRANSPARENT.to(value, this);\n    }\n\n    let format;\n    if(this._format === false){\n      format = this._matchFormat;\n    } else {\n      format = this._format;\n    }\n\n    if (this.options.reduceAlpha && value.a === 1) {\n      switch (format) {\n        case 'RGBA':\n          format = 'RGB';\n          break;\n        case 'HSLA':\n          format = 'HSL';\n          break;\n        default:\n          break;\n      }\n    }\n\n    if (value.a !== 1 && format!=='RGBA' && format !=='HSLA' && this.options.alphaConvert){\n      if(typeof this.options.alphaConvert === 'string'){\n        format = this.options.alphaConvert;\n      }\n      if(typeof this.options.alphaConvert[format] !== 'undefined'){\n        format = this.options.alphaConvert[format];\n      }\n    }\n    return ColorStrings[format].to(value, this);\n  }\n\n  get() {\n    return this.value;\n  }\n\n  set(color) {\n    this._valid = true;\n    let fromRgb = 0;\n    let fromHsv = 0;\n    let hsv;\n    let rgb;\n\n    for (const i in color) {\n      if ('hsv'.includes(i)) {\n        fromHsv++;\n        this.value[i] = color[i];\n      } else if ('rgb'.includes(i)) {\n        fromRgb++;\n        this.value[i] = color[i];\n      } else if (i === 'a') {\n        this.value.a = color.a;\n      }\n    }\n    if (fromRgb > fromHsv) {\n      hsv = Converter.RGBtoHSV(this.value);\n      if (this.value.r === 0 && this.value.g === 0 && this.value.b === 0) {\n        // this.value.h = color.h;\n      } else {\n        this.value.h = hsv.h;\n      }\n\n      this.value.s = hsv.s;\n      this.value.v = hsv.v;\n    } else if (fromHsv > fromRgb) {\n      rgb = Converter.HSVtoRGB(this.value);\n      this.value.r = rgb.r;\n      this.value.g = rgb.g;\n      this.value.b = rgb.b;\n    }\n    return this;\n  }\n\n  static matchString(string) {\n    if (typeof string === 'string') {\n      string = $.trim(string);\n      let matched = null;\n      let rgb;\n      for (const i in ColorStrings) {\n        if ((matched = ColorStrings[i].match.exec(string)) !== null) {\n          rgb = ColorStrings[i].parse(matched);\n\n          if (rgb) {\n            return true;\n          }\n        }\n      }\n    }\n    return false;\n  }\n\n  static setDefaults(options) {\n    $.extend(true, DEFAULTS, $.isPlainObject(options) && options);\n  }\n}\n\nvar info = {\n  version:'0.3.6'\n};\n\nconst OtherAsColor = $.asColor;\n\nconst jQueryAsColor = function(...args) {\n  return new AsColor(...args);\n};\n\n$.asColor = jQueryAsColor;\n$.asColor.Constructor = AsColor;\n\n$.extend($.asColor, {\n  matchString: AsColor.matchString,\n  setDefaults: AsColor.setDefaults,\n  noConflict: function() {\n    $.asColor = OtherAsColor;\n    return jQueryAsColor;\n  }\n}, Converter, info);\n\nvar main = $.asColor;\n\nexport default main;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/dist/jquery-asColor.js",
    "content": "/**\n* jQuery asColor v0.3.6\n* https://github.com/amazingSurge/asColor\n*\n* Copyright (c) amazingSurge\n* Released under the LGPL-3.0 license\n*/\n(function(global, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define('AsColor', ['exports', 'jquery'], factory);\n  } else if (typeof exports !== 'undefined') {\n    factory(exports, require('jquery'));\n  } else {\n    var mod = {\n      exports: {}\n    };\n    factory(mod.exports, global.jQuery);\n    global.AsColor = mod.exports;\n  }\n})(this, function(exports, _jquery) {\n  'use strict';\n\n  Object.defineProperty(exports, '__esModule', {\n    value: true\n  });\n\n  var _jquery2 = _interopRequireDefault(_jquery);\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule\n      ? obj\n      : {\n          default: obj\n        };\n  }\n\n  var _typeof =\n    typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n      ? function(obj) {\n          return typeof obj;\n        }\n      : function(obj) {\n          return obj &&\n          typeof Symbol === 'function' &&\n          obj.constructor === Symbol &&\n          obj !== Symbol.prototype\n            ? 'symbol'\n            : typeof obj;\n        };\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError('Cannot call a class as a function');\n    }\n  }\n\n  var _createClass = (function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if ('value' in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  })();\n\n  var DEFAULTS = {\n    format: false,\n    shortenHex: false,\n    hexUseName: false,\n    reduceAlpha: false,\n    alphaConvert: {\n      // or false will disable convert\n      RGB: 'RGBA',\n      HSL: 'HSLA',\n      HEX: 'RGBA',\n      NAMESPACE: 'RGBA'\n    },\n    nameDegradation: 'HEX',\n    invalidValue: '',\n    zeroAlphaAsTransparent: true\n  };\n\n  function expandHex(hex) {\n    if (hex.indexOf('#') === 0) {\n      hex = hex.substr(1);\n    }\n    if (!hex) {\n      return null;\n    }\n    if (hex.length === 3) {\n      hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n    }\n    return hex.length === 6 ? '#' + hex : null;\n  }\n\n  function shrinkHex(hex) {\n    if (hex.indexOf('#') === 0) {\n      hex = hex.substr(1);\n    }\n    if (\n      hex.length === 6 &&\n      hex[0] === hex[1] &&\n      hex[2] === hex[3] &&\n      hex[4] === hex[5]\n    ) {\n      hex = hex[0] + hex[2] + hex[4];\n    }\n    return '#' + hex;\n  }\n\n  function parseIntFromHex(val) {\n    return parseInt(val, 16);\n  }\n\n  function isPercentage(n) {\n    return typeof n === 'string' && n.indexOf('%') === n.length - 1;\n  }\n\n  function conventPercentageToRgb(n) {\n    return parseInt(Math.round(n.slice(0, -1) * 2.55), 10);\n  }\n\n  function convertPercentageToFloat(n) {\n    return parseFloat(n.slice(0, -1) / 100, 10);\n  }\n\n  function flip(o) {\n    var flipped = {};\n    for (var i in o) {\n      if (o.hasOwnProperty(i)) {\n        flipped[o[i]] = i;\n      }\n    }\n    return flipped;\n  }\n\n  var NAMES = {\n    aliceblue: 'f0f8ff',\n    antiquewhite: 'faebd7',\n    aqua: '0ff',\n    aquamarine: '7fffd4',\n    azure: 'f0ffff',\n    beige: 'f5f5dc',\n    bisque: 'ffe4c4',\n    black: '000',\n    blanchedalmond: 'ffebcd',\n    blue: '00f',\n    blueviolet: '8a2be2',\n    brown: 'a52a2a',\n    burlywood: 'deb887',\n    burntsienna: 'ea7e5d',\n    cadetblue: '5f9ea0',\n    chartreuse: '7fff00',\n    chocolate: 'd2691e',\n    coral: 'ff7f50',\n    cornflowerblue: '6495ed',\n    cornsilk: 'fff8dc',\n    crimson: 'dc143c',\n    cyan: '0ff',\n    darkblue: '00008b',\n    darkcyan: '008b8b',\n    darkgoldenrod: 'b8860b',\n    darkgray: 'a9a9a9',\n    darkgreen: '006400',\n    darkgrey: 'a9a9a9',\n    darkkhaki: 'bdb76b',\n    darkmagenta: '8b008b',\n    darkolivegreen: '556b2f',\n    darkorange: 'ff8c00',\n    darkorchid: '9932cc',\n    darkred: '8b0000',\n    darksalmon: 'e9967a',\n    darkseagreen: '8fbc8f',\n    darkslateblue: '483d8b',\n    darkslategray: '2f4f4f',\n    darkslategrey: '2f4f4f',\n    darkturquoise: '00ced1',\n    darkviolet: '9400d3',\n    deeppink: 'ff1493',\n    deepskyblue: '00bfff',\n    dimgray: '696969',\n    dimgrey: '696969',\n    dodgerblue: '1e90ff',\n    firebrick: 'b22222',\n    floralwhite: 'fffaf0',\n    forestgreen: '228b22',\n    fuchsia: 'f0f',\n    gainsboro: 'dcdcdc',\n    ghostwhite: 'f8f8ff',\n    gold: 'ffd700',\n    goldenrod: 'daa520',\n    gray: '808080',\n    green: '008000',\n    greenyellow: 'adff2f',\n    grey: '808080',\n    honeydew: 'f0fff0',\n    hotpink: 'ff69b4',\n    indianred: 'cd5c5c',\n    indigo: '4b0082',\n    ivory: 'fffff0',\n    khaki: 'f0e68c',\n    lavender: 'e6e6fa',\n    lavenderblush: 'fff0f5',\n    lawngreen: '7cfc00',\n    lemonchiffon: 'fffacd',\n    lightblue: 'add8e6',\n    lightcoral: 'f08080',\n    lightcyan: 'e0ffff',\n    lightgoldenrodyellow: 'fafad2',\n    lightgray: 'd3d3d3',\n    lightgreen: '90ee90',\n    lightgrey: 'd3d3d3',\n    lightpink: 'ffb6c1',\n    lightsalmon: 'ffa07a',\n    lightseagreen: '20b2aa',\n    lightskyblue: '87cefa',\n    lightslategray: '789',\n    lightslategrey: '789',\n    lightsteelblue: 'b0c4de',\n    lightyellow: 'ffffe0',\n    lime: '0f0',\n    limegreen: '32cd32',\n    linen: 'faf0e6',\n    magenta: 'f0f',\n    maroon: '800000',\n    mediumaquamarine: '66cdaa',\n    mediumblue: '0000cd',\n    mediumorchid: 'ba55d3',\n    mediumpurple: '9370db',\n    mediumseagreen: '3cb371',\n    mediumslateblue: '7b68ee',\n    mediumspringgreen: '00fa9a',\n    mediumturquoise: '48d1cc',\n    mediumvioletred: 'c71585',\n    midnightblue: '191970',\n    mintcream: 'f5fffa',\n    mistyrose: 'ffe4e1',\n    moccasin: 'ffe4b5',\n    navajowhite: 'ffdead',\n    navy: '000080',\n    oldlace: 'fdf5e6',\n    olive: '808000',\n    olivedrab: '6b8e23',\n    orange: 'ffa500',\n    orangered: 'ff4500',\n    orchid: 'da70d6',\n    palegoldenrod: 'eee8aa',\n    palegreen: '98fb98',\n    paleturquoise: 'afeeee',\n    palevioletred: 'db7093',\n    papayawhip: 'ffefd5',\n    peachpuff: 'ffdab9',\n    peru: 'cd853f',\n    pink: 'ffc0cb',\n    plum: 'dda0dd',\n    powderblue: 'b0e0e6',\n    purple: '800080',\n    red: 'f00',\n    rosybrown: 'bc8f8f',\n    royalblue: '4169e1',\n    saddlebrown: '8b4513',\n    salmon: 'fa8072',\n    sandybrown: 'f4a460',\n    seagreen: '2e8b57',\n    seashell: 'fff5ee',\n    sienna: 'a0522d',\n    silver: 'c0c0c0',\n    skyblue: '87ceeb',\n    slateblue: '6a5acd',\n    slategray: '708090',\n    slategrey: '708090',\n    snow: 'fffafa',\n    springgreen: '00ff7f',\n    steelblue: '4682b4',\n    tan: 'd2b48c',\n    teal: '008080',\n    thistle: 'd8bfd8',\n    tomato: 'ff6347',\n    turquoise: '40e0d0',\n    violet: 'ee82ee',\n    wheat: 'f5deb3',\n    white: 'fff',\n    whitesmoke: 'f5f5f5',\n    yellow: 'ff0',\n    yellowgreen: '9acd32'\n  };\n\n  /* eslint no-bitwise: \"off\" */\n  var hexNames = flip(NAMES);\n\n  var Converter = {\n    HSLtoRGB: function HSLtoRGB(hsl) {\n      var h = hsl.h / 360;\n      var s = hsl.s;\n      var l = hsl.l;\n      var m1 = void 0;\n      var m2 = void 0;\n      var rgb = void 0;\n      if (l <= 0.5) {\n        m2 = l * (s + 1);\n      } else {\n        m2 = l + s - l * s;\n      }\n      m1 = l * 2 - m2;\n      rgb = {\n        r: this.hueToRGB(m1, m2, h + 1 / 3),\n        g: this.hueToRGB(m1, m2, h),\n        b: this.hueToRGB(m1, m2, h - 1 / 3)\n      };\n      if (typeof hsl.a !== 'undefined') {\n        rgb.a = hsl.a;\n      }\n      if (hsl.l === 0) {\n        rgb.h = hsl.h;\n      }\n      if (hsl.l === 1) {\n        rgb.h = hsl.h;\n      }\n      return rgb;\n    },\n\n    hueToRGB: function hueToRGB(m1, m2, h) {\n      var v = void 0;\n      if (h < 0) {\n        h += 1;\n      } else if (h > 1) {\n        h -= 1;\n      }\n      if (h * 6 < 1) {\n        v = m1 + (m2 - m1) * h * 6;\n      } else if (h * 2 < 1) {\n        v = m2;\n      } else if (h * 3 < 2) {\n        v = m1 + (m2 - m1) * (2 / 3 - h) * 6;\n      } else {\n        v = m1;\n      }\n      return Math.round(v * 255);\n    },\n\n    RGBtoHSL: function RGBtoHSL(rgb) {\n      var r = rgb.r / 255;\n      var g = rgb.g / 255;\n      var b = rgb.b / 255;\n      var min = Math.min(r, g, b);\n      var max = Math.max(r, g, b);\n      var diff = max - min;\n      var add = max + min;\n      var l = add * 0.5;\n      var h = void 0;\n      var s = void 0;\n\n      if (min === max) {\n        h = 0;\n      } else if (r === max) {\n        h = 60 * (g - b) / diff + 360;\n      } else if (g === max) {\n        h = 60 * (b - r) / diff + 120;\n      } else {\n        h = 60 * (r - g) / diff + 240;\n      }\n      if (diff === 0) {\n        s = 0;\n      } else if (l <= 0.5) {\n        s = diff / add;\n      } else {\n        s = diff / (2 - add);\n      }\n\n      return {\n        h: Math.round(h) % 360,\n        s: s,\n        l: l\n      };\n    },\n\n    RGBtoHEX: function RGBtoHEX(rgb) {\n      var hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n\n      _jquery2.default.each(hex, function(nr, val) {\n        if (val.length === 1) {\n          hex[nr] = '0' + val;\n        }\n      });\n      return '#' + hex.join('');\n    },\n\n    HSLtoHEX: function HSLtoHEX(hsl) {\n      var rgb = this.HSLtoRGB(hsl);\n      return this.RGBtoHEX(rgb);\n    },\n\n    HSVtoHEX: function HSVtoHEX(hsv) {\n      var rgb = this.HSVtoRGB(hsv);\n      return this.RGBtoHEX(rgb);\n    },\n\n    RGBtoHSV: function RGBtoHSV(rgb) {\n      var r = rgb.r / 255;\n      var g = rgb.g / 255;\n      var b = rgb.b / 255;\n      var max = Math.max(r, g, b);\n      var min = Math.min(r, g, b);\n      var h = void 0;\n      var s = void 0;\n      var v = max;\n      var diff = max - min;\n      s = max === 0 ? 0 : diff / max;\n      if (max === min) {\n        h = 0;\n      } else {\n        switch (max) {\n          case r: {\n            h = (g - b) / diff + (g < b ? 6 : 0);\n            break;\n          }\n          case g: {\n            h = (b - r) / diff + 2;\n            break;\n          }\n          case b: {\n            h = (r - g) / diff + 4;\n            break;\n          }\n          default: {\n            break;\n          }\n        }\n        h /= 6;\n      }\n\n      return {\n        h: Math.round(h * 360),\n        s: s,\n        v: v\n      };\n    },\n\n    HSVtoRGB: function HSVtoRGB(hsv) {\n      var r = void 0;\n      var g = void 0;\n      var b = void 0;\n      var h = (hsv.h % 360) / 60;\n      var s = hsv.s;\n      var v = hsv.v;\n      var c = v * s;\n      var x = c * (1 - Math.abs(h % 2 - 1));\n\n      r = g = b = v - c;\n      h = ~~h;\n\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\n      var rgb = {\n        r: Math.round(r * 255),\n        g: Math.round(g * 255),\n        b: Math.round(b * 255)\n      };\n\n      if (typeof hsv.a !== 'undefined') {\n        rgb.a = hsv.a;\n      }\n\n      if (hsv.v === 0) {\n        rgb.h = hsv.h;\n      }\n\n      if (hsv.v === 1 && hsv.s === 0) {\n        rgb.h = hsv.h;\n      }\n\n      return rgb;\n    },\n\n    HEXtoRGB: function HEXtoRGB(hex) {\n      if (hex.length === 4) {\n        hex = expandHex(hex);\n      }\n      return {\n        r: parseIntFromHex(hex.substr(1, 2)),\n        g: parseIntFromHex(hex.substr(3, 2)),\n        b: parseIntFromHex(hex.substr(5, 2))\n      };\n    },\n\n    isNAME: function isNAME(string) {\n      if (NAMES.hasOwnProperty(string)) {\n        return true;\n      }\n      return false;\n    },\n\n    NAMEtoHEX: function NAMEtoHEX(name) {\n      if (NAMES.hasOwnProperty(name)) {\n        return '#' + NAMES[name];\n      }\n      return null;\n    },\n\n    NAMEtoRGB: function NAMEtoRGB(name) {\n      var hex = this.NAMEtoHEX(name);\n\n      if (hex) {\n        return this.HEXtoRGB(hex);\n      }\n      return null;\n    },\n\n    hasNAME: function hasNAME(rgb) {\n      var hex = this.RGBtoHEX(rgb);\n\n      hex = shrinkHex(hex);\n\n      if (hex.indexOf('#') === 0) {\n        hex = hex.substr(1);\n      }\n\n      if (hexNames.hasOwnProperty(hex)) {\n        return hexNames[hex];\n      }\n      return false;\n    },\n\n    RGBtoNAME: function RGBtoNAME(rgb) {\n      var hasName = this.hasNAME(rgb);\n      if (hasName) {\n        return hasName;\n      }\n\n      return null;\n    }\n  };\n\n  var CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n  var CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n  var CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\n\n  var PERMISSIVE_MATCH3 =\n    '[\\\\s|\\\\(]+(' +\n    CSS_UNIT +\n    ')[,|\\\\s]+(' +\n    CSS_UNIT +\n    ')[,|\\\\s]+(' +\n    CSS_UNIT +\n    ')\\\\s*\\\\)';\n  var PERMISSIVE_MATCH4 =\n    '[\\\\s|\\\\(]+(' +\n    CSS_UNIT +\n    ')[,|\\\\s]+(' +\n    CSS_UNIT +\n    ')[,|\\\\s]+(' +\n    CSS_UNIT +\n    ')[,|\\\\s]+(' +\n    CSS_UNIT +\n    ')\\\\s*\\\\)';\n\n  var ColorStrings = {\n    RGB: {\n      match: new RegExp('^rgb' + PERMISSIVE_MATCH3 + '$', 'i'),\n      parse: function parse(result) {\n        return {\n          r: isPercentage(result[1])\n            ? conventPercentageToRgb(result[1])\n            : parseInt(result[1], 10),\n          g: isPercentage(result[2])\n            ? conventPercentageToRgb(result[2])\n            : parseInt(result[2], 10),\n          b: isPercentage(result[3])\n            ? conventPercentageToRgb(result[3])\n            : parseInt(result[3], 10),\n          a: 1\n        };\n      },\n      to: function to(color) {\n        return 'rgb(' + color.r + ', ' + color.g + ', ' + color.b + ')';\n      }\n    },\n    RGBA: {\n      match: new RegExp('^rgba' + PERMISSIVE_MATCH4 + '$', 'i'),\n      parse: function parse(result) {\n        return {\n          r: isPercentage(result[1])\n            ? conventPercentageToRgb(result[1])\n            : parseInt(result[1], 10),\n          g: isPercentage(result[2])\n            ? conventPercentageToRgb(result[2])\n            : parseInt(result[2], 10),\n          b: isPercentage(result[3])\n            ? conventPercentageToRgb(result[3])\n            : parseInt(result[3], 10),\n          a: isPercentage(result[4])\n            ? convertPercentageToFloat(result[4])\n            : parseFloat(result[4], 10)\n        };\n      },\n      to: function to(color) {\n        return (\n          'rgba(' +\n          color.r +\n          ', ' +\n          color.g +\n          ', ' +\n          color.b +\n          ', ' +\n          color.a +\n          ')'\n        );\n      }\n    },\n    HSL: {\n      match: new RegExp('^hsl' + PERMISSIVE_MATCH3 + '$', 'i'),\n      parse: function parse(result) {\n        var hsl = {\n          h: (result[1] % 360 + 360) % 360,\n          s: isPercentage(result[2])\n            ? convertPercentageToFloat(result[2])\n            : parseFloat(result[2], 10),\n          l: isPercentage(result[3])\n            ? convertPercentageToFloat(result[3])\n            : parseFloat(result[3], 10),\n          a: 1\n        };\n\n        return Converter.HSLtoRGB(hsl);\n      },\n      to: function to(color) {\n        var hsl = Converter.RGBtoHSL(color);\n        return (\n          'hsl(' +\n          parseInt(hsl.h, 10) +\n          ', ' +\n          Math.round(hsl.s * 100) +\n          '%, ' +\n          Math.round(hsl.l * 100) +\n          '%)'\n        );\n      }\n    },\n    HSLA: {\n      match: new RegExp('^hsla' + PERMISSIVE_MATCH4 + '$', 'i'),\n      parse: function parse(result) {\n        var hsla = {\n          h: (result[1] % 360 + 360) % 360,\n          s: isPercentage(result[2])\n            ? convertPercentageToFloat(result[2])\n            : parseFloat(result[2], 10),\n          l: isPercentage(result[3])\n            ? convertPercentageToFloat(result[3])\n            : parseFloat(result[3], 10),\n          a: isPercentage(result[4])\n            ? convertPercentageToFloat(result[4])\n            : parseFloat(result[4], 10)\n        };\n\n        return Converter.HSLtoRGB(hsla);\n      },\n      to: function to(color) {\n        var hsl = Converter.RGBtoHSL(color);\n        return (\n          'hsla(' +\n          parseInt(hsl.h, 10) +\n          ', ' +\n          Math.round(hsl.s * 100) +\n          '%, ' +\n          Math.round(hsl.l * 100) +\n          '%, ' +\n          color.a +\n          ')'\n        );\n      }\n    },\n    HEX: {\n      match: /^#([a-f0-9]{6}|[a-f0-9]{3})$/i,\n      parse: function parse(result) {\n        var hex = result[0];\n        var rgb = Converter.HEXtoRGB(hex);\n        return {\n          r: rgb.r,\n          g: rgb.g,\n          b: rgb.b,\n          a: 1\n        };\n      },\n      to: function to(color, instance) {\n        var hex = Converter.RGBtoHEX(color);\n\n        if (instance) {\n          if (instance.options.hexUseName) {\n            var hasName = Converter.hasNAME(color);\n            if (hasName) {\n              return hasName;\n            }\n          }\n          if (instance.options.shortenHex) {\n            hex = shrinkHex(hex);\n          }\n        }\n        return '' + hex;\n      }\n    },\n    TRANSPARENT: {\n      match: /^transparent$/i,\n      parse: function parse() {\n        return {\n          r: 0,\n          g: 0,\n          b: 0,\n          a: 0\n        };\n      },\n      to: function to() {\n        return 'transparent';\n      }\n    },\n    NAME: {\n      match: /^\\w+$/i,\n      parse: function parse(result) {\n        var rgb = Converter.NAMEtoRGB(result[0]);\n        if (rgb) {\n          return {\n            r: rgb.r,\n            g: rgb.g,\n            b: rgb.b,\n            a: 1\n          };\n        }\n\n        return null;\n      },\n      to: function to(color, instance) {\n        var name = Converter.RGBtoNAME(color);\n\n        if (name) {\n          return name;\n        }\n\n        return ColorStrings[instance.options.nameDegradation.toUpperCase()].to(\n          color\n        );\n      }\n    }\n  };\n\n  /* eslint no-extend-native: \"off\" */\n  if (!String.prototype.includes) {\n    String.prototype.includes = function(search, start) {\n      'use strict';\n\n      if (typeof start !== 'number') {\n        start = 0;\n      }\n\n      if (start + search.length > this.length) {\n        return false;\n      }\n      return this.indexOf(search, start) !== -1;\n    };\n  }\n\n  var AsColor = (function() {\n    function AsColor(string, options) {\n      _classCallCheck(this, AsColor);\n\n      if (\n        (typeof string === 'undefined' ? 'undefined' : _typeof(string)) ===\n          'object' &&\n        typeof options === 'undefined'\n      ) {\n        options = string;\n        string = undefined;\n      }\n      if (typeof options === 'string') {\n        options = {\n          format: options\n        };\n      }\n      this.options = _jquery2.default.extend(true, {}, DEFAULTS, options);\n      this.value = {\n        r: 0,\n        g: 0,\n        b: 0,\n        h: 0,\n        s: 0,\n        v: 0,\n        a: 1\n      };\n      this._format = false;\n      this._matchFormat = 'HEX';\n      this._valid = true;\n\n      this.init(string);\n    }\n\n    _createClass(\n      AsColor,\n      [\n        {\n          key: 'init',\n          value: function init(string) {\n            this.format(this.options.format);\n            this.fromString(string);\n            return this;\n          }\n        },\n        {\n          key: 'isValid',\n          value: function isValid() {\n            return this._valid;\n          }\n        },\n        {\n          key: 'val',\n          value: function val(value) {\n            if (typeof value === 'undefined') {\n              return this.toString();\n            }\n            this.fromString(value);\n            return this;\n          }\n        },\n        {\n          key: 'alpha',\n          value: function alpha(value) {\n            if (typeof value === 'undefined' || isNaN(value)) {\n              return this.value.a;\n            }\n\n            value = parseFloat(value);\n\n            if (value > 1) {\n              value = 1;\n            } else if (value < 0) {\n              value = 0;\n            }\n            this.value.a = value;\n            return this;\n          }\n        },\n        {\n          key: 'matchString',\n          value: function matchString(string) {\n            return AsColor.matchString(string);\n          }\n        },\n        {\n          key: 'fromString',\n          value: function fromString(string, updateFormat) {\n            if (typeof string === 'string') {\n              string = _jquery2.default.trim(string);\n              var matched = null;\n              var rgb = void 0;\n              this._valid = false;\n              for (var i in ColorStrings) {\n                if ((matched = ColorStrings[i].match.exec(string)) !== null) {\n                  rgb = ColorStrings[i].parse(matched);\n\n                  if (rgb) {\n                    this.set(rgb);\n                    if (i === 'TRANSPARENT') {\n                      i = 'HEX';\n                    }\n                    this._matchFormat = i;\n                    if (updateFormat === true) {\n                      this.format(i);\n                    }\n                    break;\n                  }\n                }\n              }\n            } else if (\n              (typeof string === 'undefined'\n                ? 'undefined'\n                : _typeof(string)) === 'object'\n            ) {\n              this.set(string);\n            }\n            return this;\n          }\n        },\n        {\n          key: 'format',\n          value: function format(_format) {\n            if (\n              typeof _format === 'string' &&\n              (_format = _format.toUpperCase()) &&\n              typeof ColorStrings[_format] !== 'undefined'\n            ) {\n              if (_format !== 'TRANSPARENT') {\n                this._format = _format;\n              } else {\n                this._format = 'HEX';\n              }\n            } else if (_format === false) {\n              this._format = false;\n            }\n            if (this._format === false) {\n              return this._matchFormat;\n            }\n            return this._format;\n          }\n        },\n        {\n          key: 'toRGBA',\n          value: function toRGBA() {\n            return ColorStrings.RGBA.to(this.value, this);\n          }\n        },\n        {\n          key: 'toRGB',\n          value: function toRGB() {\n            return ColorStrings.RGB.to(this.value, this);\n          }\n        },\n        {\n          key: 'toHSLA',\n          value: function toHSLA() {\n            return ColorStrings.HSLA.to(this.value, this);\n          }\n        },\n        {\n          key: 'toHSL',\n          value: function toHSL() {\n            return ColorStrings.HSL.to(this.value, this);\n          }\n        },\n        {\n          key: 'toHEX',\n          value: function toHEX() {\n            return ColorStrings.HEX.to(this.value, this);\n          }\n        },\n        {\n          key: 'toNAME',\n          value: function toNAME() {\n            return ColorStrings.NAME.to(this.value, this);\n          }\n        },\n        {\n          key: 'to',\n          value: function to(format) {\n            if (\n              typeof format === 'string' &&\n              (format = format.toUpperCase()) &&\n              typeof ColorStrings[format] !== 'undefined'\n            ) {\n              return ColorStrings[format].to(this.value, this);\n            }\n            return this.toString();\n          }\n        },\n        {\n          key: 'toString',\n          value: function toString() {\n            var value = this.value;\n            if (!this._valid) {\n              value = this.options.invalidValue;\n\n              if (typeof value === 'string') {\n                return value;\n              }\n            }\n\n            if (value.a === 0 && this.options.zeroAlphaAsTransparent) {\n              return ColorStrings.TRANSPARENT.to(value, this);\n            }\n\n            var format = void 0;\n            if (this._format === false) {\n              format = this._matchFormat;\n            } else {\n              format = this._format;\n            }\n\n            if (this.options.reduceAlpha && value.a === 1) {\n              switch (format) {\n                case 'RGBA':\n                  format = 'RGB';\n                  break;\n                case 'HSLA':\n                  format = 'HSL';\n                  break;\n                default:\n                  break;\n              }\n            }\n\n            if (\n              value.a !== 1 &&\n              format !== 'RGBA' &&\n              format !== 'HSLA' &&\n              this.options.alphaConvert\n            ) {\n              if (typeof this.options.alphaConvert === 'string') {\n                format = this.options.alphaConvert;\n              }\n              if (typeof this.options.alphaConvert[format] !== 'undefined') {\n                format = this.options.alphaConvert[format];\n              }\n            }\n            return ColorStrings[format].to(value, this);\n          }\n        },\n        {\n          key: 'get',\n          value: function get() {\n            return this.value;\n          }\n        },\n        {\n          key: 'set',\n          value: function set(color) {\n            this._valid = true;\n            var fromRgb = 0;\n            var fromHsv = 0;\n            var hsv = void 0;\n            var rgb = void 0;\n\n            for (var i in color) {\n              if ('hsv'.includes(i)) {\n                fromHsv++;\n                this.value[i] = color[i];\n              } else if ('rgb'.includes(i)) {\n                fromRgb++;\n                this.value[i] = color[i];\n              } else if (i === 'a') {\n                this.value.a = color.a;\n              }\n            }\n            if (fromRgb > fromHsv) {\n              hsv = Converter.RGBtoHSV(this.value);\n              if (\n                this.value.r === 0 &&\n                this.value.g === 0 &&\n                this.value.b === 0\n              ) {\n                // this.value.h = color.h;\n              } else {\n                this.value.h = hsv.h;\n              }\n\n              this.value.s = hsv.s;\n              this.value.v = hsv.v;\n            } else if (fromHsv > fromRgb) {\n              rgb = Converter.HSVtoRGB(this.value);\n              this.value.r = rgb.r;\n              this.value.g = rgb.g;\n              this.value.b = rgb.b;\n            }\n            return this;\n          }\n        }\n      ],\n      [\n        {\n          key: 'matchString',\n          value: function matchString(string) {\n            if (typeof string === 'string') {\n              string = _jquery2.default.trim(string);\n              var matched = null;\n              var rgb = void 0;\n              for (var i in ColorStrings) {\n                if ((matched = ColorStrings[i].match.exec(string)) !== null) {\n                  rgb = ColorStrings[i].parse(matched);\n\n                  if (rgb) {\n                    return true;\n                  }\n                }\n              }\n            }\n            return false;\n          }\n        },\n        {\n          key: 'setDefaults',\n          value: function setDefaults(options) {\n            _jquery2.default.extend(\n              true,\n              DEFAULTS,\n              _jquery2.default.isPlainObject(options) && options\n            );\n          }\n        }\n      ]\n    );\n\n    return AsColor;\n  })();\n\n  var info = {\n    version: '0.3.6'\n  };\n\n  var OtherAsColor = _jquery2.default.asColor;\n\n  var jQueryAsColor = function jQueryAsColor() {\n    for (\n      var _len = arguments.length, args = Array(_len), _key = 0;\n      _key < _len;\n      _key++\n    ) {\n      args[_key] = arguments[_key];\n    }\n\n    return new (Function.prototype.bind.apply(AsColor, [null].concat(args)))();\n  };\n\n  _jquery2.default.asColor = jQueryAsColor;\n  _jquery2.default.asColor.Constructor = AsColor;\n\n  _jquery2.default.extend(\n    _jquery2.default.asColor,\n    {\n      matchString: AsColor.matchString,\n      setDefaults: AsColor.setDefaults,\n      noConflict: function noConflict() {\n        _jquery2.default.asColor = OtherAsColor;\n        return jQueryAsColor;\n      }\n    },\n    Converter,\n    info\n  );\n\n  var main = _jquery2.default.asColor;\n\n  exports.default = main;\n});\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/package.json",
    "content": "{\n  \"_from\": \"jquery-asColor@^0.3.4\",\n  \"_id\": \"jquery-asColor@0.3.6\",\n  \"_inBundle\": false,\n  \"_integrity\": \"sha512-HrEBRdd/pKnagwPfDSUlrIZCZMINgs0ahbHU7/D6ibWmLddJNelqMcBCZ/I50JQ3oBst5U53yMHctAaC/AORNw==\",\n  \"_location\": \"/jquery-asColor\",\n  \"_phantomChildren\": {},\n  \"_requested\": {\n    \"type\": \"range\",\n    \"registry\": true,\n    \"raw\": \"jquery-asColor@^0.3.4\",\n    \"name\": \"jquery-asColor\",\n    \"escapedName\": \"jquery-asColor\",\n    \"rawSpec\": \"^0.3.4\",\n    \"saveSpec\": null,\n    \"fetchSpec\": \"^0.3.4\"\n  },\n  \"_requiredBy\": [\n    \"/jquery-asColorPicker\",\n    \"/jquery-asGradient\"\n  ],\n  \"_resolved\": \"https://registry.npmjs.org/jquery-asColor/-/jquery-asColor-0.3.6.tgz\",\n  \"_shasum\": \"425fb2d66949f55e3d84582a03643c625187cbec\",\n  \"_spec\": \"jquery-asColor@^0.3.4\",\n  \"_where\": \"D:\\\\themeforest\\\\adminX\\\\adminX\\\\node_modules\\\\jquery-asColorPicker\",\n  \"author\": {\n    \"name\": \"amazingSurge\",\n    \"email\": \"amazingSurge@gmail.com\",\n    \"url\": \"amazingSurge.com\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/amazingSurge/jquery-asColorasColor/issues\"\n  },\n  \"bundleDependencies\": false,\n  \"dependencies\": {\n    \"jquery\": \"^3.1.1\"\n  },\n  \"deprecated\": false,\n  \"description\": \"A jquery plugin used to parse css color string and convent it to other color formats. It support rgb, rgba, hex, hsl, hsla.\",\n  \"devDependencies\": {\n    \"babel-core\": \"*\",\n    \"babel-eslint\": \"*\",\n    \"babel-istanbul\": \"*\",\n    \"babel-plugin-transform-es2015-modules-umd\": \"*\",\n    \"babel-preset-es2015\": \"*\",\n    \"babel-preset-es2015-rollup\": \"*\",\n    \"babelify\": \"*\",\n    \"browserify\": \"*\",\n    \"browserify-babel-istanbul\": \"*\",\n    \"chai\": \"*\",\n    \"del\": \"*\",\n    \"graceful-fs\": \"*\",\n    \"gulp\": \"github:gulpjs/gulp#4.0\",\n    \"gulp-autoprefixer\": \"*\",\n    \"gulp-babel\": \"*\",\n    \"gulp-changed\": \"*\",\n    \"gulp-eslint\": \"*\",\n    \"gulp-extname\": \"*\",\n    \"gulp-filter\": \"*\",\n    \"gulp-header\": \"*\",\n    \"gulp-iconfont-css\": \"*\",\n    \"gulp-if\": \"*\",\n    \"gulp-nf-prettier\": \"*\",\n    \"gulp-notify\": \"*\",\n    \"gulp-plumber\": \"*\",\n    \"gulp-rename\": \"*\",\n    \"gulp-replace\": \"*\",\n    \"gulp-rollup\": \"*\",\n    \"gulp-size\": \"*\",\n    \"gulp-sourcemaps\": \"*\",\n    \"gulp-uglify\": \"*\",\n    \"gulp-util\": \"*\",\n    \"gulp-zip\": \"*\",\n    \"inquirer\": \"*\",\n    \"isparta\": \"*\",\n    \"karma\": \"*\",\n    \"karma-babel-preprocessor\": \"*\",\n    \"karma-browserify\": \"*\",\n    \"karma-chrome-launcher\": \"*\",\n    \"karma-coverage\": \"*\",\n    \"karma-firefox-launcher\": \"*\",\n    \"karma-mocha\": \"*\",\n    \"karma-mocha-reporter\": \"*\",\n    \"karma-phantomjs-launcher\": \"*\",\n    \"karma-sinon-chai\": \"*\",\n    \"merge-stream\": \"*\",\n    \"mkdirp\": \"*\",\n    \"mocha\": \"*\",\n    \"node-notifier\": \"*\",\n    \"path-exists\": \"*\",\n    \"phantomjs-prebuilt\": \"*\",\n    \"prettier\": \"*\",\n    \"release-it\": \"*\",\n    \"rollup-plugin-babel\": \"*\",\n    \"semver\": \"*\",\n    \"sinon\": \"*\",\n    \"sinon-chai\": \"*\",\n    \"through2\": \"*\",\n    \"yargs\": \"*\"\n  },\n  \"engines\": {\n    \"node\": \">= 6.2.2\",\n    \"npm\": \">= 3\"\n  },\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"homepage\": \"https://github.com/amazingSurge/asColor\",\n  \"keywords\": [\n    \"jquery\",\n    \"jquery-plugin\",\n    \"ecosystem:jquery\",\n    \"ui\",\n    \"es6\"\n  ],\n  \"license\": \"LGPL-3.0\",\n  \"licenses\": [\n    {\n      \"type\": \"LGPL-3.0\",\n      \"url\": \"https://github.com/amazingSurge/jquery-asColor/blob/master/LICENSE\"\n    }\n  ],\n  \"main\": \"dist/jquery-asColor.js\",\n  \"module\": \"dist/jquery-asColor.es.js\",\n  \"name\": \"jquery-asColor\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+ssh://git@github.com/amazingSurge/jquery-asColor.git\"\n  },\n  \"scripts\": {\n    \"build\": \"npm run prestart && gulp build\",\n    \"deploy\": \"gulp deploy\",\n    \"deploy:prepare\": \"gulp deploy:prepare\",\n    \"prestart\": \"npm install\",\n    \"release\": \"gulp release\",\n    \"start\": \"gulp serve\",\n    \"test\": \"gulp test\"\n  },\n  \"title\": \"jQuery asColor\",\n  \"version\": \"0.3.6\"\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/asColor.js",
    "content": "import $ from 'jquery';\nimport DEFAULTS from './defaults';\nimport ColorStrings from './colorStrings';\nimport Converter from './converter';\n\n/* eslint no-extend-native: \"off\" */\nif (!String.prototype.includes) {\n  String.prototype.includes = function(search, start) {\n    'use strict';\n    if (typeof start !== 'number') {\n      start = 0;\n    }\n\n    if (start + search.length > this.length) {\n      return false;\n    }\n    return this.indexOf(search, start) !== -1;\n  };\n}\n\nclass AsColor {\n  constructor(string, options) {\n    if (typeof string === 'object' && typeof options === 'undefined') {\n      options = string;\n      string = undefined;\n    }\n    if(typeof options === 'string'){\n      options = {\n        format: options\n      };\n    }\n    this.options = $.extend(true, {}, DEFAULTS, options);\n    this.value = {\n      r: 0,\n      g: 0,\n      b: 0,\n      h: 0,\n      s: 0,\n      v: 0,\n      a: 1\n    };\n    this._format = false;\n    this._matchFormat = 'HEX';\n    this._valid = true;\n\n    this.init(string);\n  }\n\n  init(string) {\n    this.format(this.options.format);\n    this.fromString(string);\n    return this;\n  }\n\n  isValid() {\n    return this._valid;\n  }\n\n  val(value) {\n    if (typeof value === 'undefined') {\n      return this.toString();\n    }\n    this.fromString(value);\n    return this;\n  }\n\n  alpha(value) {\n    if (typeof value === 'undefined' || isNaN(value)) {\n      return this.value.a;\n    }\n\n    value = parseFloat(value);\n\n    if (value > 1) {\n      value = 1;\n    } else if (value < 0) {\n      value = 0;\n    }\n    this.value.a = value;\n    return this;\n  }\n\n  matchString(string) {\n    return AsColor.matchString(string);\n  }\n\n  fromString(string, updateFormat) {\n    if (typeof string === 'string') {\n      string = $.trim(string);\n      let matched = null;\n      let rgb;\n      this._valid = false;\n      for (let i in ColorStrings) {\n        if ((matched = ColorStrings[i].match.exec(string)) !== null) {\n          rgb = ColorStrings[i].parse(matched);\n\n          if (rgb) {\n            this.set(rgb);\n            if(i === 'TRANSPARENT'){\n              i = 'HEX';\n            }\n            this._matchFormat = i;\n            if (updateFormat === true) {\n              this.format(i);\n            }\n            break;\n          }\n        }\n      }\n    } else if (typeof string === 'object') {\n      this.set(string);\n    }\n    return this;\n  }\n\n  format(format) {\n    if (typeof format === 'string' && (format = format.toUpperCase()) && typeof ColorStrings[format] !== 'undefined') {\n      if (format !== 'TRANSPARENT') {\n        this._format = format;\n      } else {\n        this._format = 'HEX';\n      }\n    } else if(format === false) {\n      this._format = false;\n    }\n    if(this._format === false){\n      return this._matchFormat;\n    }\n    return this._format;\n  }\n\n  toRGBA() {\n    return ColorStrings.RGBA.to(this.value, this);\n  }\n\n  toRGB() {\n    return ColorStrings.RGB.to(this.value, this);\n  }\n\n  toHSLA() {\n    return ColorStrings.HSLA.to(this.value, this);\n  }\n\n  toHSL() {\n    return ColorStrings.HSL.to(this.value, this);\n  }\n\n  toHEX() {\n    return ColorStrings.HEX.to(this.value, this);\n  }\n\n  toNAME() {\n    return ColorStrings.NAME.to(this.value, this);\n  }\n\n  to(format) {\n    if (typeof format === 'string' && (format = format.toUpperCase()) && typeof ColorStrings[format] !== 'undefined') {\n      return ColorStrings[format].to(this.value, this);\n    }\n    return this.toString();\n  }\n\n  toString() {\n    let value = this.value;\n    if (!this._valid) {\n      value = this.options.invalidValue;\n\n      if (typeof value === 'string') {\n        return value;\n      }\n    }\n\n    if (value.a === 0 && this.options.zeroAlphaAsTransparent) {\n      return ColorStrings.TRANSPARENT.to(value, this);\n    }\n\n    let format;\n    if(this._format === false){\n      format = this._matchFormat;\n    } else {\n      format = this._format;\n    }\n\n    if (this.options.reduceAlpha && value.a === 1) {\n      switch (format) {\n        case 'RGBA':\n          format = 'RGB';\n          break;\n        case 'HSLA':\n          format = 'HSL';\n          break;\n        default:\n          break;\n      }\n    }\n\n    if (value.a !== 1 && format!=='RGBA' && format !=='HSLA' && this.options.alphaConvert){\n      if(typeof this.options.alphaConvert === 'string'){\n        format = this.options.alphaConvert;\n      }\n      if(typeof this.options.alphaConvert[format] !== 'undefined'){\n        format = this.options.alphaConvert[format];\n      }\n    }\n    return ColorStrings[format].to(value, this);\n  }\n\n  get() {\n    return this.value;\n  }\n\n  set(color) {\n    this._valid = true;\n    let fromRgb = 0;\n    let fromHsv = 0;\n    let hsv;\n    let rgb;\n\n    for (const i in color) {\n      if ('hsv'.includes(i)) {\n        fromHsv++;\n        this.value[i] = color[i];\n      } else if ('rgb'.includes(i)) {\n        fromRgb++;\n        this.value[i] = color[i];\n      } else if (i === 'a') {\n        this.value.a = color.a;\n      }\n    }\n    if (fromRgb > fromHsv) {\n      hsv = Converter.RGBtoHSV(this.value);\n      if (this.value.r === 0 && this.value.g === 0 && this.value.b === 0) {\n        // this.value.h = color.h;\n      } else {\n        this.value.h = hsv.h;\n      }\n\n      this.value.s = hsv.s;\n      this.value.v = hsv.v;\n    } else if (fromHsv > fromRgb) {\n      rgb = Converter.HSVtoRGB(this.value);\n      this.value.r = rgb.r;\n      this.value.g = rgb.g;\n      this.value.b = rgb.b;\n    }\n    return this;\n  }\n\n  static matchString(string) {\n    if (typeof string === 'string') {\n      string = $.trim(string);\n      let matched = null;\n      let rgb;\n      for (const i in ColorStrings) {\n        if ((matched = ColorStrings[i].match.exec(string)) !== null) {\n          rgb = ColorStrings[i].parse(matched);\n\n          if (rgb) {\n            return true;\n          }\n        }\n      }\n    }\n    return false;\n  }\n\n  static setDefaults(options) {\n    $.extend(true, DEFAULTS, $.isPlainObject(options) && options);\n  }\n}\n\n\nexport default AsColor;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/colorStrings.js",
    "content": "import * as util from './util';\nimport Converter from './converter';\n\nconst CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\nconst CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\nconst CSS_UNIT = `(?:${CSS_NUMBER})|(?:${CSS_INTEGER})`;\n\nconst PERMISSIVE_MATCH3 = `[\\\\s|\\\\(]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})\\\\s*\\\\)`;\nconst PERMISSIVE_MATCH4 = `[\\\\s|\\\\(]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})[,|\\\\s]+(${CSS_UNIT})\\\\s*\\\\)`;\n\nconst ColorStrings = {\n  RGB: {\n    match: new RegExp(`^rgb${PERMISSIVE_MATCH3}$`, 'i'),\n    parse: function(result) {\n      return {\n        r: util.isPercentage(result[1]) ? util.conventPercentageToRgb(result[1]) : parseInt(result[1], 10),\n        g: util.isPercentage(result[2]) ? util.conventPercentageToRgb(result[2]) : parseInt(result[2], 10),\n        b: util.isPercentage(result[3]) ? util.conventPercentageToRgb(result[3]) : parseInt(result[3], 10),\n        a: 1\n      };\n    },\n    to: function(color) {\n      return `rgb(${color.r}, ${color.g}, ${color.b})`;\n    }\n  },\n  RGBA: {\n    match: new RegExp(`^rgba${PERMISSIVE_MATCH4}$`, 'i'),\n    parse: function(result) {\n      return {\n        r: util.isPercentage(result[1]) ? util.conventPercentageToRgb(result[1]) : parseInt(result[1], 10),\n        g: util.isPercentage(result[2]) ? util.conventPercentageToRgb(result[2]) : parseInt(result[2], 10),\n        b: util.isPercentage(result[3]) ? util.conventPercentageToRgb(result[3]) : parseInt(result[3], 10),\n        a: util.isPercentage(result[4]) ? util.convertPercentageToFloat(result[4]) : parseFloat(result[4], 10)\n      };\n    },\n    to: function(color) {\n      return `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`;\n    }\n  },\n  HSL: {\n    match: new RegExp(`^hsl${PERMISSIVE_MATCH3}$`, 'i'),\n    parse: function(result) {\n      const hsl = {\n        h: ((result[1] % 360) + 360) % 360,\n        s: util.isPercentage(result[2]) ? util.convertPercentageToFloat(result[2]) : parseFloat(result[2], 10),\n        l: util.isPercentage(result[3]) ? util.convertPercentageToFloat(result[3]) : parseFloat(result[3], 10),\n        a: 1\n      };\n\n      return Converter.HSLtoRGB(hsl);\n    },\n    to: function(color) {\n      const hsl = Converter.RGBtoHSL(color);\n      return `hsl(${parseInt(hsl.h, 10)}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%)`;\n    }\n  },\n  HSLA: {\n    match: new RegExp(`^hsla${PERMISSIVE_MATCH4}$`, 'i'),\n    parse: function(result) {\n      const hsla = {\n        h: ((result[1] % 360) + 360) % 360,\n        s: util.isPercentage(result[2]) ? util.convertPercentageToFloat(result[2]) : parseFloat(result[2], 10),\n        l: util.isPercentage(result[3]) ? util.convertPercentageToFloat(result[3]) : parseFloat(result[3], 10),\n        a: util.isPercentage(result[4]) ? util.convertPercentageToFloat(result[4]) : parseFloat(result[4], 10)\n      };\n\n      return Converter.HSLtoRGB(hsla);\n    },\n    to: function(color) {\n      const hsl = Converter.RGBtoHSL(color);\n      return `hsla(${parseInt(hsl.h, 10)}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%, ${color.a})`;\n    }\n  },\n  HEX: {\n    match: /^#([a-f0-9]{6}|[a-f0-9]{3})$/i,\n    parse: function(result) {\n      const hex = result[0];\n      const rgb = Converter.HEXtoRGB(hex);\n      return {\n        r: rgb.r,\n        g: rgb.g,\n        b: rgb.b,\n        a: 1\n      };\n    },\n    to: function(color, instance) {\n      let hex = Converter.RGBtoHEX(color);\n\n      if (instance) {\n        if (instance.options.hexUseName) {\n          const hasName = Converter.hasNAME(color);\n          if (hasName) {\n            return hasName;\n          }\n        }\n        if (instance.options.shortenHex) {\n          hex = util.shrinkHex(hex);\n        }\n      }\n      return `${hex}`;\n    }\n  },\n  TRANSPARENT: {\n    match: /^transparent$/i,\n    parse: function() {\n      return {\n        r: 0,\n        g: 0,\n        b: 0,\n        a: 0\n      };\n    },\n    to: function() {\n      return 'transparent';\n    }\n  },\n  NAME: {\n    match: /^\\w+$/i,\n    parse: function(result) {\n      const rgb = Converter.NAMEtoRGB(result[0]);\n      if(rgb) {\n        return {\n          r: rgb.r,\n          g: rgb.g,\n          b: rgb.b,\n          a: 1\n        };\n      }\n\n      return null;\n    },\n    to: function(color, instance) {\n      let name = Converter.RGBtoNAME(color);\n\n      if(name) {\n        return name;\n      }\n\n      return ColorStrings[instance.options.nameDegradation.toUpperCase()].to(color);\n    }\n  }\n};\n\nexport default ColorStrings;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/converter.js",
    "content": "/* eslint no-bitwise: \"off\" */\nimport NAMES from './names';\nimport * as util from './util';\nimport $ from 'jquery';\n\nconst hexNames = util.flip(NAMES);\n\nexport default {\n  HSLtoRGB: function(hsl) {\n    const h = hsl.h / 360;\n    const s = hsl.s;\n    const l = hsl.l;\n    let m1;\n    let m2;\n    let rgb;\n    if (l <= 0.5) {\n      m2 = l * (s + 1);\n    } else {\n      m2 = l + s - (l * s);\n    }\n    m1 = l * 2 - m2;\n    rgb = {\n      r: this.hueToRGB(m1, m2, h + 1 / 3),\n      g: this.hueToRGB(m1, m2, h),\n      b: this.hueToRGB(m1, m2, h - 1 / 3)\n    };\n    if (typeof hsl.a !== 'undefined') {\n      rgb.a = hsl.a;\n    }\n    if (hsl.l === 0) {\n      rgb.h = hsl.h;\n    }\n    if (hsl.l === 1) {\n      rgb.h = hsl.h;\n    }\n    return rgb;\n  },\n\n  hueToRGB: function(m1, m2, h) {\n    let v;\n    if (h < 0) {\n      h += 1;\n    } else if (h > 1) {\n      h -= 1;\n    }\n    if ((h * 6) < 1) {\n      v = m1 + (m2 - m1) * h * 6;\n    } else if ((h * 2) < 1) {\n      v = m2;\n    } else if ((h * 3) < 2) {\n      v = m1 + (m2 - m1) * (2 / 3 - h) * 6;\n    } else {\n      v = m1;\n    }\n    return Math.round(v * 255);\n  },\n\n  RGBtoHSL: function(rgb) {\n    const r = rgb.r / 255;\n    const g = rgb.g / 255;\n    const b = rgb.b / 255;\n    const min = Math.min(r, g, b);\n    const max = Math.max(r, g, b);\n    const diff = max - min;\n    const add = max + min;\n    const l = add * 0.5;\n    let h;\n    let s;\n\n    if (min === max) {\n      h = 0;\n    } else if (r === max) {\n      h = (60 * (g - b) / diff) + 360;\n    } else if (g === max) {\n      h = (60 * (b - r) / diff) + 120;\n    } else {\n      h = (60 * (r - g) / diff) + 240;\n    }\n    if (diff === 0) {\n      s = 0;\n    } else if (l <= 0.5) {\n      s = diff / add;\n    } else {\n      s = diff / (2 - add);\n    }\n\n    return {\n      h: Math.round(h) % 360,\n      s,\n      l\n    };\n  },\n\n  RGBtoHEX: function(rgb) {\n    let hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n\n    $.each(hex, (nr, val) => {\n      if (val.length === 1) {\n        hex[nr] = `0${val}`;\n      }\n    });\n    return `#${hex.join('')}`;\n  },\n\n  HSLtoHEX: function(hsl) {\n    const rgb = this.HSLtoRGB(hsl);\n    return this.RGBtoHEX(rgb);\n  },\n\n  HSVtoHEX: function(hsv) {\n    const rgb = this.HSVtoRGB(hsv);\n    return this.RGBtoHEX(rgb);\n  },\n\n  RGBtoHSV: function(rgb) {\n    const r = rgb.r / 255;\n    const g = rgb.g / 255;\n    const b = rgb.b / 255;\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    let h;\n    let s;\n    const v = max;\n    const diff = max - min;\n    s = (max === 0) ? 0 : diff / max;\n    if (max === min) {\n      h = 0;\n    } else {\n      switch (max) {\n        case r: {\n          h = (g - b) / diff + (g < b ? 6 : 0);\n          break;\n        }\n        case g: {\n          h = (b - r) / diff + 2;\n          break;\n        }\n        case b: {\n          h = (r - g) / diff + 4;\n          break;\n        }\n        default: {\n          break;\n        }\n      }\n      h /= 6;\n    }\n\n    return {\n      h: Math.round(h * 360),\n      s,\n      v\n    };\n  },\n\n  HSVtoRGB: function(hsv) {\n    let r;\n    let g;\n    let b;\n    let h = (hsv.h % 360) / 60;\n    const s = hsv.s;\n    const v = hsv.v;\n    const c = v * s;\n    const x = c * (1 - Math.abs(h % 2 - 1));\n\n    r = g = b = v - c;\n    h = ~~h;\n\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\n    let rgb = {\n      r: Math.round(r * 255),\n      g: Math.round(g * 255),\n      b: Math.round(b * 255)\n    };\n\n    if (typeof hsv.a !== 'undefined') {\n      rgb.a = hsv.a;\n    }\n\n    if (hsv.v === 0) {\n      rgb.h = hsv.h;\n    }\n\n    if (hsv.v === 1 && hsv.s === 0) {\n      rgb.h = hsv.h;\n    }\n\n    return rgb;\n  },\n\n  HEXtoRGB: function(hex) {\n    if (hex.length === 4) {\n      hex = util.expandHex(hex);\n    }\n    return {\n      r: util.parseIntFromHex(hex.substr(1, 2)),\n      g: util.parseIntFromHex(hex.substr(3, 2)),\n      b: util.parseIntFromHex(hex.substr(5, 2))\n    };\n  },\n\n  isNAME: function(string) {\n    if (NAMES.hasOwnProperty(string)) {\n      return true;\n    }\n    return false;\n  },\n\n  NAMEtoHEX: function(name) {\n    if (NAMES.hasOwnProperty(name)) {\n      return `#${NAMES[name]}`;\n    }\n    return null;\n  },\n\n  NAMEtoRGB: function(name) {\n    const hex = this.NAMEtoHEX(name);\n\n    if (hex) {\n      return this.HEXtoRGB(hex);\n    }\n    return null;\n  },\n\n  hasNAME: function(rgb) {\n    let hex = this.RGBtoHEX(rgb);\n\n    hex = util.shrinkHex(hex);\n\n    if (hex.indexOf('#') === 0) {\n      hex = hex.substr(1);\n    }\n\n    if (hexNames.hasOwnProperty(hex)) {\n      return hexNames[hex];\n    }\n    return false;\n  },\n\n  RGBtoNAME: function(rgb) {\n    const hasName = this.hasNAME(rgb);\n    if (hasName) {\n      return hasName;\n    }\n\n    return null;\n  }\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/defaults.js",
    "content": "export default {\n  format: false,\n  shortenHex: false,\n  hexUseName: false,\n  reduceAlpha: false,\n  alphaConvert: { // or false will disable convert\n    'RGB': 'RGBA',\n    'HSL': 'HSLA',\n    'HEX': 'RGBA',\n    'NAMESPACE': 'RGBA',\n  },\n  nameDegradation: 'HEX',\n  invalidValue: '',\n  zeroAlphaAsTransparent: true\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/info.js",
    "content": "export default {\n  version:'0.3.6'\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/main.js",
    "content": "import $ from 'jquery';\nimport AsColor from './asColor';\nimport info from './info';\nimport Converter from './converter';\n\nconst OtherAsColor = $.asColor;\n\nconst jQueryAsColor = function(...args) {\n  return new AsColor(...args);\n}\n\n$.asColor = jQueryAsColor;\n$.asColor.Constructor = AsColor;\n\n$.extend($.asColor, {\n  matchString: AsColor.matchString,\n  setDefaults: AsColor.setDefaults,\n  noConflict: function() {\n    $.asColor = OtherAsColor;\n    return jQueryAsColor;\n  }\n}, Converter, info);\n\nexport default $.asColor;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/names.js",
    "content": "export default {\n  aliceblue: 'f0f8ff',\n  antiquewhite: 'faebd7',\n  aqua: '0ff',\n  aquamarine: '7fffd4',\n  azure: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '000',\n  blanchedalmond: 'ffebcd',\n  blue: '00f',\n  blueviolet: '8a2be2',\n  brown: 'a52a2a',\n  burlywood: 'deb887',\n  burntsienna: 'ea7e5d',\n  cadetblue: '5f9ea0',\n  chartreuse: '7fff00',\n  chocolate: 'd2691e',\n  coral: 'ff7f50',\n  cornflowerblue: '6495ed',\n  cornsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: '0ff',\n  darkblue: '00008b',\n  darkcyan: '008b8b',\n  darkgoldenrod: 'b8860b',\n  darkgray: 'a9a9a9',\n  darkgreen: '006400',\n  darkgrey: 'a9a9a9',\n  darkkhaki: 'bdb76b',\n  darkmagenta: '8b008b',\n  darkolivegreen: '556b2f',\n  darkorange: 'ff8c00',\n  darkorchid: '9932cc',\n  darkred: '8b0000',\n  darksalmon: 'e9967a',\n  darkseagreen: '8fbc8f',\n  darkslateblue: '483d8b',\n  darkslategray: '2f4f4f',\n  darkslategrey: '2f4f4f',\n  darkturquoise: '00ced1',\n  darkviolet: '9400d3',\n  deeppink: 'ff1493',\n  deepskyblue: '00bfff',\n  dimgray: '696969',\n  dimgrey: '696969',\n  dodgerblue: '1e90ff',\n  firebrick: 'b22222',\n  floralwhite: 'fffaf0',\n  forestgreen: '228b22',\n  fuchsia: 'f0f',\n  gainsboro: 'dcdcdc',\n  ghostwhite: 'f8f8ff',\n  gold: 'ffd700',\n  goldenrod: 'daa520',\n  gray: '808080',\n  green: '008000',\n  greenyellow: 'adff2f',\n  grey: '808080',\n  honeydew: 'f0fff0',\n  hotpink: 'ff69b4',\n  indianred: 'cd5c5c',\n  indigo: '4b0082',\n  ivory: 'fffff0',\n  khaki: 'f0e68c',\n  lavender: 'e6e6fa',\n  lavenderblush: 'fff0f5',\n  lawngreen: '7cfc00',\n  lemonchiffon: 'fffacd',\n  lightblue: 'add8e6',\n  lightcoral: 'f08080',\n  lightcyan: 'e0ffff',\n  lightgoldenrodyellow: 'fafad2',\n  lightgray: 'd3d3d3',\n  lightgreen: '90ee90',\n  lightgrey: 'd3d3d3',\n  lightpink: 'ffb6c1',\n  lightsalmon: 'ffa07a',\n  lightseagreen: '20b2aa',\n  lightskyblue: '87cefa',\n  lightslategray: '789',\n  lightslategrey: '789',\n  lightsteelblue: 'b0c4de',\n  lightyellow: 'ffffe0',\n  lime: '0f0',\n  limegreen: '32cd32',\n  linen: 'faf0e6',\n  magenta: 'f0f',\n  maroon: '800000',\n  mediumaquamarine: '66cdaa',\n  mediumblue: '0000cd',\n  mediumorchid: 'ba55d3',\n  mediumpurple: '9370db',\n  mediumseagreen: '3cb371',\n  mediumslateblue: '7b68ee',\n  mediumspringgreen: '00fa9a',\n  mediumturquoise: '48d1cc',\n  mediumvioletred: 'c71585',\n  midnightblue: '191970',\n  mintcream: 'f5fffa',\n  mistyrose: 'ffe4e1',\n  moccasin: 'ffe4b5',\n  navajowhite: 'ffdead',\n  navy: '000080',\n  oldlace: 'fdf5e6',\n  olive: '808000',\n  olivedrab: '6b8e23',\n  orange: 'ffa500',\n  orangered: 'ff4500',\n  orchid: 'da70d6',\n  palegoldenrod: 'eee8aa',\n  palegreen: '98fb98',\n  paleturquoise: 'afeeee',\n  palevioletred: 'db7093',\n  papayawhip: 'ffefd5',\n  peachpuff: 'ffdab9',\n  peru: 'cd853f',\n  pink: 'ffc0cb',\n  plum: 'dda0dd',\n  powderblue: 'b0e0e6',\n  purple: '800080',\n  red: 'f00',\n  rosybrown: 'bc8f8f',\n  royalblue: '4169e1',\n  saddlebrown: '8b4513',\n  salmon: 'fa8072',\n  sandybrown: 'f4a460',\n  seagreen: '2e8b57',\n  seashell: 'fff5ee',\n  sienna: 'a0522d',\n  silver: 'c0c0c0',\n  skyblue: '87ceeb',\n  slateblue: '6a5acd',\n  slategray: '708090',\n  slategrey: '708090',\n  snow: 'fffafa',\n  springgreen: '00ff7f',\n  steelblue: '4682b4',\n  tan: 'd2b48c',\n  teal: '008080',\n  thistle: 'd8bfd8',\n  tomato: 'ff6347',\n  turquoise: '40e0d0',\n  violet: 'ee82ee',\n  wheat: 'f5deb3',\n  white: 'fff',\n  whitesmoke: 'f5f5f5',\n  yellow: 'ff0',\n  yellowgreen: '9acd32'\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColor/src/util.js",
    "content": "export function expandHex(hex) {\n  if (hex.indexOf('#') === 0) {\n    hex = hex.substr(1);\n  }\n  if (!hex) {\n    return null;\n  }\n  if (hex.length === 3) {\n    hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n  }\n  return hex.length === 6 ? `#${hex}` : null;\n}\n\nexport function shrinkHex(hex) {\n  if (hex.indexOf('#') === 0) {\n    hex = hex.substr(1);\n  }\n  if (hex.length === 6 && hex[0] === hex[1] && hex[2] === hex[3] && hex[4] === hex[5]) {\n    hex = hex[0] + hex[2] + hex[4];\n  }\n  return `#${hex}`;\n}\n\nexport function parseIntFromHex(val) {\n  return parseInt(val, 16);\n}\n\nexport function isPercentage(n) {\n  return typeof n === 'string' && n.indexOf('%') === n.length - 1;\n}\n\nexport function conventPercentageToRgb(n) {\n  return parseInt(Math.round(n.slice(0, -1) * 2.55), 10);\n}\n\nexport function convertPercentageToFloat(n) {\n  return parseFloat(n.slice(0, -1) / 100, 10);\n}\n\nexport function flip(o) {\n  const flipped = {};\n  for (const i in o) {\n    if (o.hasOwnProperty(i)) {\n      flipped[o[i]] = i;\n    }\n  }\n  return flipped;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asColorPicker/dist/jquery-asColorPicker.es.js",
    "content": "/**\n* asColorPicker v0.4.4\n* https://github.com/amazingSurge/jquery-asColorPicker\n*\n* Copyright (c) amazingSurge\n* Released under the LGPL-3.0 license\n*/\nimport $$1 from 'jquery';\nimport AsColor from 'jquery-asColor';\nimport AsGradient from 'jquery-asGradient';\n\nvar DEFAULTS = {\n  namespace: 'asColorPicker',\n  readonly: false,\n  skin: null,\n  lang: 'en',\n  hideInput: false,\n  hideFireChange: true,\n  keyboard: false,\n  color: {\n    format: false,\n    alphaConvert: { // or false will disable convert\n      'RGB': 'RGBA',\n      'HSL': 'HSLA',\n      'HEX': 'RGBA',\n      'NAMESPACE': 'RGBA',\n    },\n    shortenHex: false,\n    hexUseName: false,\n    reduceAlpha: true,\n    nameDegradation: 'HEX',\n    invalidValue: '',\n    zeroAlphaAsTransparent: true\n  },\n  mode: 'simple',\n  onInit: null,\n  onReady: null,\n  onChange: null,\n  onClose: null,\n  onOpen: null,\n  onApply: null\n};\n\nvar MODES = {\n  'simple': {\n    trigger: true,\n    clear: true,\n    saturation: true,\n    hue: true,\n    alpha: true\n  },\n  'palettes': {\n    trigger: true,\n    clear: true,\n    palettes: true\n  },\n  'complex': {\n    trigger: true,\n    clear: true,\n    preview: true,\n    palettes: true,\n    saturation: true,\n    hue: true,\n    alpha: true,\n    hex: true,\n    buttons: true\n  },\n  'gradient': {\n    trigger: true,\n    clear: true,\n    preview: true,\n    palettes: true,\n    saturation: true,\n    hue: true,\n    alpha: true,\n    hex: true,\n    gradient: true\n  }\n};\n\n// alpha\nvar alpha = {\n  size: 150,\n\n  defaults: {\n    direction: 'vertical', // horizontal\n    template(namespace) {\n      return `<div class=\"${namespace}-alpha ${namespace}-alpha-${this.direction}\"><i></i></div>`;\n    }\n  },\n\n  data: {},\n\n  init: function(api, options) {\n    const that = this;\n\n    this.options = $.extend(this.defaults, options);\n    that.direction = this.options.direction;\n    this.api = api;\n\n    this.$alpha = $(this.options.template.call(that, api.namespace)).appendTo(api.$dropdown);\n    this.$handle = this.$alpha.find('i');\n\n    api.$element.on('asColorPicker::firstOpen', () => {\n      // init variable\n      if (that.direction === 'vertical') {\n        that.size = that.$alpha.height();\n      } else {\n        that.size = that.$alpha.width();\n      }\n      that.step = that.size / 360;\n\n      // bind events\n      that.bindEvents();\n      that.keyboard();\n    });\n\n    api.$element.on('asColorPicker::update asColorPicker::setup', (e, api, color) => {\n      that.update(color);\n    });\n  },\n\n  bindEvents: function() {\n    const that = this;\n    this.$alpha.on(this.api.eventName('mousedown'), e => {\n      const rightclick = (e.which) ? (e.which === 3) : (e.button === 2);\n      if (rightclick) {\n        return false;\n      }\n      $.proxy(that.mousedown, that)(e);\n    });\n  },\n\n  mousedown: function(e) {\n    const offset = this.$alpha.offset();\n    if (this.direction === 'vertical') {\n      this.data.startY = e.pageY;\n      this.data.top = e.pageY - offset.top;\n      this.move(this.data.top);\n    } else {\n      this.data.startX = e.pageX;\n      this.data.left = e.pageX - offset.left;\n      this.move(this.data.left);\n    }\n\n    this.mousemove = function(e) {\n      let position;\n      if (this.direction === 'vertical') {\n        position = this.data.top + (e.pageY || this.data.startY) - this.data.startY;\n      } else {\n        position = this.data.left + (e.pageX || this.data.startX) - this.data.startX;\n      }\n\n      this.move(position);\n      return false;\n    };\n\n    this.mouseup = function() {\n      $(document).off({\n        mousemove: this.mousemove,\n        mouseup: this.mouseup\n      });\n      if (this.direction === 'vertical') {\n        this.data.top = this.data.cach;\n      } else {\n        this.data.left = this.data.cach;\n      }\n\n      return false;\n    };\n\n    $(document).on({\n      mousemove: $.proxy(this.mousemove, this),\n      mouseup: $.proxy(this.mouseup, this)\n    });\n    return false;\n  },\n\n  move: function(position, alpha, update) {\n    position = Math.max(0, Math.min(this.size, position));\n    this.data.cach = position;\n    if (typeof alpha === 'undefined') {\n      alpha = 1 - (position / this.size);\n    }\n    alpha = Math.max(0, Math.min(1, alpha));\n    if (this.direction === 'vertical') {\n      this.$handle.css({\n        top: position\n      });\n    } else {\n      this.$handle.css({\n        left: position\n      });\n    }\n\n    if (update !== false) {\n      this.api.set({\n        a: Math.round(alpha * 100) / 100\n      });\n    }\n  },\n\n  moveLeft: function() {\n    const step = this.step;\n    const data = this.data;\n    data.left = Math.max(0, Math.min(this.width, data.left - step));\n    this.move(data.left);\n  },\n\n  moveRight: function() {\n    const step = this.step;\n    const data = this.data;\n    data.left = Math.max(0, Math.min(this.width, data.left + step));\n    this.move(data.left);\n  },\n\n  moveUp: function() {\n    const step = this.step;\n    const data = this.data;\n    data.top = Math.max(0, Math.min(this.width, data.top - step));\n    this.move(data.top);\n  },\n\n  moveDown: function() {\n    const step = this.step;\n    const data = this.data;\n    data.top = Math.max(0, Math.min(this.width, data.top + step));\n    this.move(data.top);\n  },\n\n  keyboard: function() {\n    let keyboard;\n    const that = this;\n    if (this.api._keyboard) {\n      keyboard = $.extend(true, {}, this.api._keyboard);\n    } else {\n      return false;\n    }\n\n    this.$alpha.attr('tabindex', '0').on('focus', function() {\n      if (this.direction === 'vertical') {\n        keyboard.attach({\n          up() {\n            that.moveUp();\n          },\n          down() {\n            that.moveDown();\n          }\n        });\n      } else {\n        keyboard.attach({\n          left() {\n            that.moveLeft();\n          },\n          right() {\n            that.moveRight();\n          }\n        });\n      }\n      return false;\n    }).on('blur', () => {\n      keyboard.detach();\n    });\n  },\n\n  update: function(color) {\n    const position = this.size * (1 - color.value.a);\n    this.$alpha.css('backgroundColor', color.toHEX());\n\n    this.move(position, color.value.a, false);\n  },\n\n  destroy: function() {\n    $(document).off({\n      mousemove: this.mousemove,\n      mouseup: this.mouseup\n    });\n  }\n};\n\n// hex\nvar hex = {\n  init: function(api) {\n    const template = `<input type=\"text\" class=\"${api.namespace}-hex\" />`;\n    this.$hex = $(template).appendTo(api.$dropdown);\n\n    this.$hex.on('change', function() {\n      api.set(this.value);\n    });\n\n    const that = this;\n    api.$element.on('asColorPicker::update asColorPicker::setup', (e, api, color) => {\n      that.update(color);\n    });\n  },\n\n  update: function(color) {\n    this.$hex.val(color.toHEX());\n  }\n};\n\n// hue\nvar hue = {\n  size: 150,\n\n  defaults: {\n    direction: 'vertical', // horizontal\n    template() {\n      const namespace = this.api.namespace;\n      return `<div class=\"${namespace}-hue ${namespace}-hue-${this.direction}\"><i></i></div>`;\n    }\n  },\n\n  data: {},\n\n  init: function(api, options) {\n    const that = this;\n\n    this.options = $.extend(this.defaults, options);\n    this.direction = this.options.direction;\n    this.api = api;\n\n    this.$hue = $(this.options.template.call(that)).appendTo(api.$dropdown);\n    this.$handle = this.$hue.find('i');\n\n    api.$element.on('asColorPicker::firstOpen', () => {\n      // init variable\n      if (that.direction === 'vertical') {\n        that.size = that.$hue.height();\n      } else {\n        that.size = that.$hue.width();\n      }\n      that.step = that.size / 360;\n\n      // bind events\n      that.bindEvents(api);\n      that.keyboard(api);\n    });\n\n    api.$element.on('asColorPicker::update asColorPicker::setup', (e, api, color) => {\n      that.update(color);\n    });\n  },\n\n  bindEvents: function() {\n    const that = this;\n    this.$hue.on(this.api.eventName('mousedown'), e => {\n      const rightclick = (e.which) ? (e.which === 3) : (e.button === 2);\n      if (rightclick) {\n        return false;\n      }\n      $.proxy(that.mousedown, that)(e);\n    });\n  },\n\n  mousedown: function(e) {\n    const offset = this.$hue.offset();\n    if (this.direction === 'vertical') {\n      this.data.startY = e.pageY;\n      this.data.top = e.pageY - offset.top;\n      this.move(this.data.top);\n    } else {\n      this.data.startX = e.pageX;\n      this.data.left = e.pageX - offset.left;\n      this.move(this.data.left);\n    }\n\n    this.mousemove = function(e) {\n      let position;\n      if (this.direction === 'vertical') {\n        position = this.data.top + (e.pageY || this.data.startY) - this.data.startY;\n      } else {\n        position = this.data.left + (e.pageX || this.data.startX) - this.data.startX;\n      }\n\n      this.move(position);\n      return false;\n    };\n\n    this.mouseup = function() {\n      $(document).off({\n        mousemove: this.mousemove,\n        mouseup: this.mouseup\n      });\n      if (this.direction === 'vertical') {\n        this.data.top = this.data.cach;\n      } else {\n        this.data.left = this.data.cach;\n      }\n\n      return false;\n    };\n\n    $(document).on({\n      mousemove: $.proxy(this.mousemove, this),\n      mouseup: $.proxy(this.mouseup, this)\n    });\n\n    return false;\n  },\n\n  move: function(position, hub, update) {\n    position = Math.max(0, Math.min(this.size, position));\n    this.data.cach = position;\n    if (typeof hub === 'undefined') {\n      hub = (1 - position / this.size) * 360;\n    }\n    hub = Math.max(0, Math.min(360, hub));\n    if (this.direction === 'vertical') {\n      this.$handle.css({\n        top: position\n      });\n    } else {\n      this.$handle.css({\n        left: position\n      });\n    }\n    if (update !== false) {\n      this.api.set({\n        h: hub\n      });\n    }\n  },\n\n  moveLeft: function() {\n    const step = this.step;\n    const data = this.data;\n    data.left = Math.max(0, Math.min(this.width, data.left - step));\n    this.move(data.left);\n  },\n\n  moveRight: function() {\n    const step = this.step;\n    const data = this.data;\n    data.left = Math.max(0, Math.min(this.width, data.left + step));\n    this.move(data.left);\n  },\n\n  moveUp: function() {\n    const step = this.step;\n    const data = this.data;\n    data.top = Math.max(0, Math.min(this.width, data.top - step));\n    this.move(data.top);\n  },\n\n  moveDown: function() {\n    const step = this.step;\n    const data = this.data;\n    data.top = Math.max(0, Math.min(this.width, data.top + step));\n    this.move(data.top);\n  },\n\n  keyboard: function() {\n    let keyboard;\n    const that = this;\n    if (this.api._keyboard) {\n      keyboard = $.extend(true, {}, this.api._keyboard);\n    } else {\n      return false;\n    }\n\n    this.$hue.attr('tabindex', '0').on('focus', function() {\n      if (this.direction === 'vertical') {\n        keyboard.attach({\n          up() {\n            that.moveUp();\n          },\n          down() {\n            that.moveDown();\n          }\n        });\n      } else {\n        keyboard.attach({\n          left() {\n            that.moveLeft();\n          },\n          right() {\n            that.moveRight();\n          }\n        });\n      }\n      return false;\n    }).on('blur', () => {\n      keyboard.detach();\n    });\n  },\n\n  update: function(color) {\n    const position = (color.value.h === 0) ? 0 : this.size * (1 - color.value.h / 360);\n    this.move(position, color.value.h, false);\n  },\n\n  destroy: function() {\n    $(document).off({\n      mousemove: this.mousemove,\n      mouseup: this.mouseup\n    });\n  }\n};\n\n// saturation\nvar saturation = {\n  defaults: {\n    template(namespace) {\n      return `<div class=\"${namespace}-saturation\"><i><b></b></i></div>`;\n    }\n  },\n\n  width: 0,\n  height: 0,\n  size: 6,\n  data: {},\n\n  init: function(api, options) {\n    const that = this;\n    this.options = $.extend(this.defaults, options);\n    this.api = api;\n\n    //build element and add component to picker\n    this.$saturation = $(this.options.template.call(that, api.namespace)).appendTo(api.$dropdown);\n    this.$handle = this.$saturation.find('i');\n\n    api.$element.on('asColorPicker::firstOpen', () => {\n      // init variable\n      that.width = that.$saturation.width();\n      that.height = that.$saturation.height();\n      that.step = {\n        left: that.width / 20,\n        top: that.height / 20\n      };\n      that.size = that.$handle.width() / 2;\n\n      // bind events\n      that.bindEvents();\n      that.keyboard(api);\n    });\n\n    api.$element.on('asColorPicker::update asColorPicker::setup', (e, api, color) => {\n      that.update(color);\n    });\n  },\n\n  bindEvents: function() {\n    const that = this;\n\n    this.$saturation.on(this.api.eventName('mousedown'), e => {\n      const rightclick = (e.which) ? (e.which === 3) : (e.button === 2);\n      if (rightclick) {\n        return false;\n      }\n      that.mousedown(e);\n    });\n  },\n\n  mousedown: function(e) {\n    const offset = this.$saturation.offset();\n\n    this.data.startY = e.pageY;\n    this.data.startX = e.pageX;\n    this.data.top = e.pageY - offset.top;\n    this.data.left = e.pageX - offset.left;\n    this.data.cach = {};\n\n    this.move(this.data.left, this.data.top);\n\n    this.mousemove = function(e) {\n      const x = this.data.left + (e.pageX || this.data.startX) - this.data.startX;\n      const y = this.data.top + (e.pageY || this.data.startY) - this.data.startY;\n      this.move(x, y);\n      return false;\n    };\n\n    this.mouseup = function() {\n      $(document).off({\n        mousemove: this.mousemove,\n        mouseup: this.mouseup\n      });\n      this.data.left = this.data.cach.left;\n      this.data.top = this.data.cach.top;\n\n      return false;\n    };\n\n    $(document).on({\n      mousemove: $.proxy(this.mousemove, this),\n      mouseup: $.proxy(this.mouseup, this)\n    });\n\n    return false;\n  },\n\n  move: function(x, y, update) {\n    y = Math.max(0, Math.min(this.height, y));\n    x = Math.max(0, Math.min(this.width, x));\n\n    if (this.data.cach === undefined) {\n      this.data.cach = {};\n    }\n    this.data.cach.left = x;\n    this.data.cach.top = y;\n\n    this.$handle.css({\n      top: y - this.size,\n      left: x - this.size\n    });\n\n    if (update !== false) {\n      this.api.set({\n        s: x / this.width,\n        v: 1 - (y / this.height)\n      });\n    }\n  },\n\n  update: function(color) {\n    if (color.value.h === undefined) {\n      color.value.h = 0;\n    }\n    this.$saturation.css('backgroundColor', AsColor.HSLtoHEX({\n      h: color.value.h,\n      s: 1,\n      l: 0.5\n    }));\n\n    const x = color.value.s * this.width;\n    const y = (1 - color.value.v) * this.height;\n\n    this.move(x, y, false);\n  },\n\n  moveLeft: function() {\n    const step = this.step.left;\n    const data = this.data;\n    data.left = Math.max(0, Math.min(this.width, data.left - step));\n    this.move(data.left, data.top);\n  },\n\n  moveRight: function() {\n    const step = this.step.left;\n    const data = this.data;\n    data.left = Math.max(0, Math.min(this.width, data.left + step));\n    this.move(data.left, data.top);\n  },\n\n  moveUp: function() {\n    const step = this.step.top;\n    const data = this.data;\n    data.top = Math.max(0, Math.min(this.width, data.top - step));\n    this.move(data.left, data.top);\n  },\n\n  moveDown: function() {\n    const step = this.step.top;\n    const data = this.data;\n    data.top = Math.max(0, Math.min(this.width, data.top + step));\n    this.move(data.left, data.top);\n  },\n\n  keyboard: function() {\n    let keyboard;\n    const that = this;\n    if (this.api._keyboard) {\n      keyboard = $.extend(true, {}, this.api._keyboard);\n    } else {\n      return false;\n    }\n\n    this.$saturation.attr('tabindex', '0').on('focus', () => {\n      keyboard.attach({\n        left() {\n          that.moveLeft();\n        },\n        right() {\n          that.moveRight();\n        },\n        up() {\n          that.moveUp();\n        },\n        down() {\n          that.moveDown();\n        }\n      });\n      return false;\n    }).on('blur', () => {\n      keyboard.detach();\n    });\n  },\n\n  destroy: function() {\n    $(document).off({\n      mousemove: this.mousemove,\n      mouseup: this.mouseup\n    });\n  }\n};\n\n// buttons\nvar buttons = {\n  defaults: {\n    apply: false,\n    cancel: true,\n    applyText: null,\n    cancelText: null,\n    template(namespace) {\n      return `<div class=\"${namespace}-buttons\"></div>`;\n    },\n    applyTemplate(namespace) {\n      return `<a href=\"#\" alt=\"${this.options.applyText}\" class=\"${namespace}-buttons-apply\">${this.options.applyText}</a>`;\n    },\n    cancelTemplate(namespace) {\n      return `<a href=\"#\" alt=\"${this.options.cancelText}\" class=\"${namespace}-buttons-apply\">${this.options.cancelText}</a>`;\n    }\n  },\n\n  init: function(api, options) {\n    const that = this;\n\n    this.options = $.extend(this.defaults, {\n      applyText: api.getString('applyText', 'apply'),\n      cancelText: api.getString('cancelText', 'cancel')\n    }, options);\n    this.$buttons = $(this.options.template.call(this, api.namespace)).appendTo(api.$dropdown);\n\n    api.$element.on('asColorPicker::firstOpen', () => {\n      if (that.options.apply) {\n        that.$apply = $(that.options.applyTemplate.call(that, api.namespace)).appendTo(that.$buttons).on('click', () => {\n          api.apply();\n          return false;\n        });\n      }\n\n      if (that.options.cancel) {\n        that.$cancel = $(that.options.cancelTemplate.call(that, api.namespace)).appendTo(that.$buttons).on('click', () => {\n          api.cancel();\n          return false;\n        });\n      }\n    });\n  }\n};\n\n// trigger\nvar trigger = {\n  defaults: {\n    template(namespace) {\n      return `<div class=\"${namespace}-trigger\"><span></span></div>`;\n    }\n  },\n\n  init: function(api, options) {\n    this.options = $.extend(this.defaults, options);\n    api.$trigger = $(this.options.template.call(this, api.namespace));\n    this.$triggerInner = api.$trigger.children('span');\n\n    api.$trigger.insertAfter(api.$element);\n    api.$trigger.on('click', () => {\n      if (!api.opened) {\n        api.open();\n      } else {\n        api.close();\n      }\n      return false;\n    });\n    const that = this;\n    api.$element.on('asColorPicker::update', (e, api, color, gradient) => {\n      if (typeof gradient === 'undefined') {\n        gradient = false;\n      }\n      that.update(color, gradient);\n    });\n\n    this.update(api.color);\n  },\n\n  update: function(color, gradient) {\n    if (gradient) {\n      this.$triggerInner.css('background', gradient.toString(true));\n    } else {\n      this.$triggerInner.css('background', color.toRGBA());\n    }\n  },\n\n  destroy: function(api) {\n    api.$trigger.remove();\n  }\n};\n\n// clear\nvar clear = {\n  defaults: {\n    template(namespace) {\n      return `<a href=\"#\" class=\"${namespace}-clear\"></a>`;\n    }\n  },\n\n  init: function(api, options) {\n    if (api.options.hideInput) {\n      return;\n    }\n    this.options = $.extend(this.defaults, options);\n    this.$clear = $(this.options.template.call(this, api.namespace)).insertAfter(api.$element);\n\n    this.$clear.on('click', () => {\n      api.clear();\n      return false;\n    });\n  }\n};\n\n// info\nvar info = {\n  color: ['white', 'black', 'transparent'],\n\n  init: function(api) {\n    const template = `<ul class=\"${api.namespace}-info\"><li><label>R:<input type=\"text\" data-type=\"r\"/></label></li><li><label>G:<input type=\"text\" data-type=\"g\"/></label></li><li><label>B:<input type=\"text\" data-type=\"b\"/></label></li><li><label>A:<input type=\"text\" data-type=\"a\"/></label></li></ul>`;\n    this.$info = $(template).appendTo(api.$dropdown);\n    this.$r = this.$info.find('[data-type=\"r\"]');\n    this.$g = this.$info.find('[data-type=\"g\"]');\n    this.$b = this.$info.find('[data-type=\"b\"]');\n    this.$a = this.$info.find('[data-type=\"a\"]');\n\n    this.$info.on(api.eventName('keyup update change'), 'input', function(e) {\n      let val;\n      const type = $(e.target).data('type');\n      switch (type) {\n        case 'r':\n        case 'g':\n        case 'b':\n          val = parseInt(this.value, 10);\n          if (val > 255) {\n            val = 255;\n          } else if (val < 0) {\n            val = 0;\n          }\n          break;\n        case 'a':\n          val = parseFloat(this.value, 10);\n          if (val > 1) {\n            val = 1;\n          } else if (val < 0) {\n            val = 0;\n          }\n          break;\n        default:\n          break;\n      }\n      if (isNaN(val)) {\n        val = 0;\n      }\n      const color = {};\n      color[type] = val;\n      api.set(color);\n    });\n\n    const that = this;\n    api.$element.on('asColorPicker::update asColorPicker::setup', (e, color) => {\n      that.update(color);\n    });\n  },\n\n  update: function(color) {\n    this.$r.val(color.value.r);\n    this.$g.val(color.value.g);\n    this.$b.val(color.value.b);\n    this.$a.val(color.value.a);\n  }\n};\n\n// palettes\nfunction noop() {\n  return;\n}\nif (!window.localStorage) {\n  window.localStorage = noop;\n}\n\nvar palettes = {\n  defaults: {\n    template(namespace) {\n      return `<ul class=\"${namespace}-palettes\"></ul>`;\n    },\n    item(namespace, color) {\n      return `<li data-color=\"${color}\"><span style=\"background-color:${color}\" /></li>`;\n    },\n    colors: ['white', 'black', 'red', 'blue', 'yellow'],\n    max: 10,\n    localStorage: true\n  },\n\n  init: function(api, options) {\n    const that = this;\n    let colors;\n    const asColor = AsColor();\n\n    this.options = $.extend(true, {}, this.defaults, options);\n    this.colors = [];\n    let localKey;\n\n    if (this.options.localStorage) {\n      localKey = `${api.namespace}_palettes_${api.id}`;\n      colors = this.getLocal(localKey);\n      if (!colors) {\n        colors = this.options.colors;\n        this.setLocal(localKey, colors);\n      }\n    } else {\n      colors = this.options.colors;\n    }\n\n    for (const i in colors) {\n      if(Object.hasOwnProperty.call(colors, i)){\n        this.colors.push(asColor.val(colors[i]).toRGBA());\n      }\n    }\n\n    let list = '';\n    $.each(this.colors, (i, color) => {\n      list += that.options.item(api.namespace, color);\n    });\n\n    this.$palettes = $(this.options.template.call(this, api.namespace)).html(list).appendTo(api.$dropdown);\n\n    this.$palettes.on(api.eventName('click'), 'li', function(e) {\n      const color = $(this).data('color');\n      api.set(color);\n\n      e.preventDefault();\n      e.stopPropagation();\n    });\n\n    api.$element.on('asColorPicker::apply', (e, api, color) => {\n      if (typeof color.toRGBA !== 'function') {\n        color = color.get().color;\n      }\n\n      const rgba = color.toRGBA();\n      if ($.inArray(rgba, that.colors) === -1) {\n        if (that.colors.length >= that.options.max) {\n          that.colors.shift();\n          that.$palettes.find('li').eq(0).remove();\n        }\n\n        that.colors.push(rgba);\n\n        that.$palettes.append(that.options.item(api.namespace, color));\n\n        if (that.options.localStorage) {\n          that.setLocal(localKey, that.colors);\n        }\n      }\n    });\n  },\n\n  setLocal: function(key, value) {\n    const jsonValue = JSON.stringify(value);\n\n    localStorage[key] = jsonValue;\n  },\n\n  getLocal: function(key) {\n    const value = localStorage[key];\n\n    return value ? JSON.parse(value) : value;\n  }\n};\n\n// preview\nvar preview = {\n  defaults: {\n    template(namespace) {\n      return `<ul class=\"${namespace}-preview\"><li class=\"${namespace}-preview-current\"><span /></li><li class=\"${namespace}-preview-previous\"><span /></li></ul>`;\n    }\n  },\n\n  init: function(api, options) {\n    const that = this;\n    this.options = $.extend(this.defaults, options);\n    this.$preview = $(this.options.template.call(that, api.namespace)).appendTo(api.$dropdown);\n    this.$current = this.$preview.find(`.${api.namespace}-preview-current span`);\n    this.$previous = this.$preview.find(`.${api.namespace}-preview-previous span`);\n\n    api.$element.on('asColorPicker::firstOpen', () => {\n      that.$previous.on('click', function() {\n        api.set($(this).data('color'));\n        return false;\n      });\n    });\n\n    api.$element.on('asColorPicker::setup', (e, api, color) => {\n      that.updateCurrent(color);\n      that.updatePreview(color);\n    });\n    api.$element.on('asColorPicker::update', (e, api, color) => {\n      that.updateCurrent(color);\n    });\n  },\n\n  updateCurrent: function(color) {\n    this.$current.css('backgroundColor', color.toRGBA());\n  },\n\n  updatePreview: function(color) {\n    this.$previous.css('backgroundColor', color.toRGBA());\n    this.$previous.data('color', {\n      r: color.value.r,\n      g: color.value.g,\n      b: color.value.b,\n      a: color.value.a\n    });\n  }\n};\n\n// gradient\nfunction conventToPercentage(n) {\n  if (n < 0) {\n    n = 0;\n  } else if (n > 1) {\n    n = 1;\n  }\n  return `${n * 100}%`;\n}\n\nvar Gradient = function(api, options) {\n  this.api = api;\n  this.options = options;\n  this.classes = {\n    enable: `${api.namespace}-gradient_enable`,\n    marker: `${api.namespace}-gradient-marker`,\n    active: `${api.namespace}-gradient-marker_active`,\n    focus: `${api.namespace}-gradient_focus`\n  };\n  this.isEnabled = false;\n  this.initialized = false;\n  this.current = null;\n  this.value = AsGradient(this.options.settings);\n  this.$doc = $(document);\n\n  const that = this;\n  $.extend(that, {\n    init() {\n      that.$wrap = $(that.options.template.call(that)).appendTo(api.$dropdown);\n\n      that.$gradient = that.$wrap.filter(`.${api.namespace}-gradient`);\n\n      this.angle.init();\n      this.preview.init();\n      this.markers.init();\n      this.wheel.init();\n\n      this.bind();\n\n      if (that.options.switchable === false || this.value.matchString(api.element.value)) {\n        that.enable();\n      }\n      this.initialized = true;\n    },\n    bind() {\n      const namespace = api.namespace;\n\n      that.$gradient.on('update', () => {\n        const current = that.value.getById(that.current);\n\n        if (current) {\n          api._trigger('update', current.color, that.value);\n        }\n\n        if (api.element.value !== that.value.toString()) {\n          api._updateInput();\n        }\n      });\n\n      // that.$gradient.on('add', function(e, data) {\n      //   if (data.stop) {\n      //     that.active(data.stop.id);\n      //     api._trigger('update', data.stop.color, that.value);\n      //     api._updateInput();\n      //   }\n      // });\n\n      if (that.options.switchable) {\n        that.$wrap.on('click', `.${namespace}-gradient-switch`, () => {\n          if (that.isEnabled) {\n            that.disable();\n          } else {\n            that.enable();\n          }\n\n          return false;\n        });\n      }\n\n      that.$wrap.on('click', `.${namespace}-gradient-cancel`, () => {\n        if (that.options.switchable === false || AsGradient.matchString(api.originValue)) {\n          that.overrideCore();\n        }\n\n        api.cancel();\n\n        return false;\n      });\n    },\n    overrideCore() {\n      api.set = value => {\n        if (value !== '') {\n          api.isEmpty = false;\n        } else {\n          api.isEmpty = true;\n        }\n        if (typeof value === 'string') {\n          if (that.options.switchable === false || AsGradient.matchString(value)) {\n            if (that.isEnabled) {\n              that.val(value);\n              api.color = that.value;\n              that.$gradient.trigger('update', that.value.value);\n            } else {\n              that.enable(value);\n            }\n          } else {\n            that.disable();\n            api.val(value);\n          }\n        } else {\n          const current = that.value.getById(that.current);\n\n          if (current) {\n            current.color.val(value);\n            api._trigger('update', current.color, that.value);\n          }\n\n          that.$gradient.trigger('update', {\n            id: that.current,\n            stop: current\n          });\n        }\n      };\n\n      api._setup = () => {\n        const current = that.value.getById(that.current);\n\n        api._trigger('setup', current.color);\n      };\n    },\n    revertCore() {\n      api.set = $.proxy(api._set, api);\n      api._setup = () => {\n        api._trigger('setup', api.color);\n      };\n    },\n    preview: {\n      init() {\n        that.$preview = that.$gradient.find(`.${api.namespace}-gradient-preview`);\n\n        that.$gradient.on('add del update empty', () => {\n          this.render();\n        });\n      },\n      render() {\n        that.$preview.css({\n          'background-image': that.value.toStringWithAngle('to right', true),\n        });\n        that.$preview.css({\n          'background-image': that.value.toStringWithAngle('to right'),\n        });\n      }\n    },\n    markers: {\n      width: 160,\n      init() {\n        that.$markers = that.$gradient.find(`.${api.namespace}-gradient-markers`).attr('tabindex', 0);\n\n        that.$gradient.on('add', (e, data) => {\n          this.add(data.stop);\n        });\n\n        that.$gradient.on('active', (e, data) => {\n          this.active(data.id);\n        });\n\n        that.$gradient.on('del', (e, data) => {\n          this.del(data.id);\n        });\n\n        that.$gradient.on('update', (e, data) => {\n          if (data.stop) {\n            this.update(data.stop.id, data.stop.color);\n          }\n        });\n\n        that.$gradient.on('empty', () => {\n          this.empty();\n        });\n\n        that.$markers.on(that.api.eventName('mousedown'), e => {\n          const rightclick = (e.which) ? (e.which === 3) : (e.button === 2);\n          if (rightclick) {\n            return false;\n          }\n\n          const position = parseFloat((e.pageX - that.$markers.offset().left) / that.markers.width, 10);\n          that.add('#fff', position);\n          return false;\n        });\n\n        /* eslint consistent-this: \"off\" */\n        let self = this;\n        that.$markers.on(that.api.eventName('mousedown'), 'li', function(e) {\n          const rightclick = (e.which) ? (e.which === 3) : (e.button === 2);\n          if (rightclick) {\n            return false;\n          }\n          self.mousedown(this, e);\n          return false;\n        });\n\n        that.$doc.on(that.api.eventName('keydown'), e => {\n          if (that.api.opened && that.$markers.is(`.${that.classes.focus}`)) {\n\n            const key = e.keyCode || e.which;\n            if (key === 46 || key === 8) {\n              if (that.value.length <= 2) {\n                return false;\n              }\n\n              that.del(that.current);\n\n              return false;\n            }\n          }\n        });\n\n        that.$markers.on(that.api.eventName('focus'), () => {\n          that.$markers.addClass(that.classes.focus);\n        }).on(that.api.eventName('blur'), () => {\n          that.$markers.removeClass(that.classes.focus);\n        });\n\n        that.$markers.on(that.api.eventName('click'), 'li', function() {\n          const id = $(this).data('id');\n          that.active(id);\n        });\n      },\n      getMarker(id) {\n        return that.$markers.find(`[data-id=\"${id}\"]`);\n      },\n      update(id, color) {\n        const $marker = this.getMarker(id);\n        $marker.find('span').css('background-color', color.toHEX());\n        $marker.find('i').css('background-color', color.toHEX());\n      },\n      add(stop) {\n        $(`<li data-id=\"${stop.id}\" style=\"left:${conventToPercentage(stop.position)}\" class=\"${that.classes.marker}\"><span style=\"background-color: ${stop.color.toHEX()}\"></span><i style=\"background-color: ${stop.color.toHEX()}\"></i></li>`).appendTo(that.$markers);\n      },\n      empty() {\n        that.$markers.html('');\n      },\n      del(id) {\n        const $marker = this.getMarker(id);\n        let $to = $marker.prev();\n        if ($to.length === 0) {\n          $to = $marker.next();\n        }\n\n        that.active($to.data('id'));\n        $marker.remove();\n      },\n      active(id) {\n        that.$markers.children().removeClass(that.classes.active);\n\n        const $marker = this.getMarker(id);\n        $marker.addClass(that.classes.active);\n\n        that.$markers.focus();\n        // that.api._trigger('apply', that.value.getById(id).color);\n      },\n      mousedown(marker, e) {\n        const self = this;\n        /* eslint consistent-this: \"off\" */\n        const id = $(marker).data('id');\n        const first = $(marker).position().left;\n        const start = e.pageX;\n        let end;\n\n        this.mousemove = function(e) {\n          end = e.pageX || start;\n          const position = (first + end - start) / this.width;\n          self.move(marker, position, id);\n          return false;\n        };\n\n        this.mouseup = function() {\n          $(document).off({\n            mousemove: this.mousemove,\n            mouseup: this.mouseup\n          });\n\n          return false;\n        };\n\n        that.$doc.on({\n          mousemove: $.proxy(this.mousemove, this),\n          mouseup: $.proxy(this.mouseup, this)\n        });\n        that.active(id);\n        return false;\n      },\n      move(marker, position, id) {\n        that.api.isEmpty = false;\n        position = Math.max(0, Math.min(1, position));\n        $(marker).css({\n          left: conventToPercentage(position)\n        });\n        if (!id) {\n          id = $(marker).data('id');\n        }\n\n        that.value.getById(id).setPosition(position);\n\n        that.$gradient.trigger('update', {\n          id: $(marker).data('id'),\n          position\n        });\n      },\n    },\n    wheel: {\n      init() {\n        that.$wheel = that.$gradient.find(`.${api.namespace}-gradient-wheel`);\n        that.$pointer = that.$wheel.find('i');\n\n        that.$gradient.on('update', (e, data) => {\n          if (typeof data.angle !== 'undefined') {\n            this.position(data.angle);\n          }\n        });\n\n        that.$wheel.on(that.api.eventName('mousedown'), e => {\n          const rightclick = (e.which) ? (e.which === 3) : (e.button === 2);\n          if (rightclick) {\n            return false;\n          }\n          this.mousedown(e, that);\n          return false;\n        });\n      },\n      mousedown(e, that) {\n        const offset = that.$wheel.offset();\n        const r = that.$wheel.width() / 2;\n        const startX = offset.left + r;\n        const startY = offset.top + r;\n        const $doc = that.$doc;\n\n        this.r = r;\n\n        this.wheelMove = e => {\n          const x = e.pageX - startX;\n          const y = startY - e.pageY;\n\n          const position = this.getPosition(x, y);\n          const angle = this.calAngle(position.x, position.y);\n          that.api.isEmpty = false;\n          that.setAngle(angle);\n        };\n        this.wheelMouseup = function() {\n          $doc.off({\n            mousemove: this.wheelMove,\n            mouseup: this.wheelMouseup\n          });\n          return false;\n        };\n        $doc.on({\n          mousemove: $.proxy(this.wheelMove, this),\n          mouseup: $.proxy(this.wheelMouseup, this)\n        });\n\n        this.wheelMove(e);\n      },\n      getPosition(a, b) {\n        const r = this.r;\n        const x = a / Math.sqrt(a * a + b * b) * r;\n        const y = b / Math.sqrt(a * a + b * b) * r;\n        return {\n          x,\n          y\n        };\n      },\n      calAngle(x, y) {\n        const deg = Math.round(Math.atan(Math.abs(x / y)) * (180 / Math.PI));\n        if (x < 0 && y > 0) {\n          return 360 - deg;\n        }\n        if (x < 0 && y <= 0) {\n          return deg + 180;\n        }\n        if (x >= 0 && y <= 0) {\n          return 180 - deg;\n        }\n        if (x >= 0 && y > 0) {\n          return deg;\n        }\n      },\n      set(value) {\n        that.value.angle(value);\n        that.$gradient.trigger('update', {\n          angle: value\n        });\n      },\n      position(angle) {\n        const r = this.r || that.$wheel.width() / 2;\n        const pos = this.calPointer(angle, r);\n        that.$pointer.css({\n          left: pos.x,\n          top: pos.y\n        });\n      },\n      calPointer(angle, r) {\n        const x = Math.sin(angle * Math.PI / 180) * r;\n        const y = Math.cos(angle * Math.PI / 180) * r;\n        return {\n          x: r + x,\n          y: r - y\n        };\n      }\n    },\n    angle: {\n      init() {\n        that.$angle = that.$gradient.find(`.${api.namespace}-gradient-angle`);\n\n        that.$angle.on(that.api.eventName('blur'), function() {\n          that.setAngle(this.value);\n          return false;\n        }).on(that.api.eventName('keydown'), function(e) {\n          const key = e.keyCode || e.which;\n          if (key === 13) {\n            that.api.isEmpty = false;\n            $(this).blur();\n            return false;\n          }\n        });\n\n        that.$gradient.on('update', (e, data) => {\n          if (typeof data.angle !== 'undefined') {\n            that.$angle.val(data.angle);\n          }\n        });\n      },\n      set(value) {\n        that.value.angle(value);\n        that.$gradient.trigger('update', {\n          angle: value\n        });\n      }\n    }\n  });\n\n  this.init();\n};\n\nGradient.prototype = {\n  constructor: Gradient,\n\n  enable(value) {\n    if (this.isEnabled === true) {\n      return;\n    }\n    this.isEnabled = true;\n    this.overrideCore();\n\n\n\n    this.$gradient.addClass(this.classes.enable);\n    this.markers.width = this.$markers.width();\n\n    if (typeof value === 'undefined') {\n      value = this.api.element.value;\n    }\n\n    if (value !== '') {\n      this.api.isEmpty = false;\n    } else {\n      this.api.isEmpty = true;\n    }\n\n    if (!AsGradient.matchString(value) && this._last) {\n      this.value = this._last;\n    } else {\n      this.val(value);\n    }\n    this.api.color = this.value;\n\n    this.$gradient.trigger('update', this.value.value);\n\n    if (this.api.opened) {\n      this.api.position();\n    }\n  },\n  val(string) {\n    if (string !== '' && this.value.toString() === string) {\n      return;\n    }\n    this.empty();\n    this.value.val(string);\n    this.value.reorder();\n\n    if (this.value.length < 2) {\n      let fill = string;\n\n      if (!AsColor.matchString(string)) {\n        fill = 'rgba(0,0,0,1)';\n      }\n\n      if (this.value.length === 0) {\n        this.value.append(fill, 0);\n      }\n      if (this.value.length === 1) {\n        this.value.append(fill, 1);\n      }\n    }\n\n    let stop;\n    for (let i = 0; i < this.value.length; i++) {\n      stop = this.value.get(i);\n      if (stop) {\n        this.$gradient.trigger('add', {\n          stop\n        });\n      }\n    }\n\n    this.active(stop.id);\n  },\n  disable() {\n    if (this.isEnabled === false) {\n      return;\n    }\n    this.isEnabled = false;\n    this.revertCore();\n\n    this.$gradient.removeClass(this.classes.enable);\n    this._last = this.value;\n    this.api.color = this.api.color.getCurrent().color;\n    this.api.set(this.api.color.value);\n\n    if (this.api.opened) {\n      this.api.position();\n    }\n  },\n  active(id) {\n    if (this.current !== id) {\n      this.current = id;\n      this.value.setCurrentById(id);\n\n      this.$gradient.trigger('active', {\n        id\n      });\n    }\n  },\n  empty() {\n    this.value.empty();\n    this.$gradient.trigger('empty');\n  },\n  add(color, position) {\n    const stop = this.value.insert(color, position);\n    this.api.isEmpty = false;\n    this.value.reorder();\n\n    this.$gradient.trigger('add', {\n      stop\n    });\n\n    this.active(stop.id);\n\n    this.$gradient.trigger('update', {\n      stop\n    });\n    return stop;\n  },\n  del(id) {\n    if (this.value.length <= 2) {\n      return;\n    }\n    this.value.removeById(id);\n    this.value.reorder();\n    this.$gradient.trigger('del', {\n      id\n    });\n\n    this.$gradient.trigger('update', {});\n  },\n  setAngle(value) {\n    this.value.angle(value);\n    this.$gradient.trigger('update', {\n      angle: value\n    });\n  }\n};\n\n\nvar gradient = {\n  defaults: {\n    switchable: true,\n    switchText: 'Gradient',\n    cancelText: 'Cancel',\n    settings: {\n      forceStandard: true,\n      angleUseKeyword: true,\n      emptyString: '',\n      degradationFormat: false,\n      cleanPosition: false,\n      color: {\n        format: 'rgb' // rgb, rgba, hsl, hsla, hex\n      }\n    },\n    template() {\n      const namespace = this.api.namespace;\n      let control = `<div class=\"${namespace}-gradient-control\">`;\n      if (this.options.switchable) {\n        control += `<a href=\"#\" class=\"${namespace}-gradient-switch\">${this.options.switchText}</a>`;\n      }\n      control += `<a href=\"#\" class=\"${namespace}-gradient-cancel\">${this.options.cancelText}</a></div>`;\n\n      return `${control}<div class=\"${namespace}-gradient\"><div class=\"${namespace}-gradient-preview\"><ul class=\"${namespace}-gradient-markers\"></ul></div><div class=\"${namespace}-gradient-wheel\"><i></i></div><input class=\"${namespace}-gradient-angle\" type=\"text\" value=\"\" size=\"3\" /></div>`;\n    }\n  },\n\n  init: function(api, options) {\n    const that = this;\n\n    api.$element.on('asColorPicker::ready', (event, instance) => {\n      if (instance.options.mode !== 'gradient') {\n        return;\n      }\n\n      that.defaults.settings.color = api.options.color;\n      options = $.extend(true, that.defaults, options);\n\n      api.gradient = new Gradient(api, options);\n    });\n  }\n};\n\nconst NAMESPACE$1 = 'asColorPicker';\nconst COMPONENTS = {};\nconst LOCALIZATIONS = {\n  en: {\n    cancelText: 'cancel',\n    applyText: 'apply'\n  }\n};\n\nlet id = 0;\n\nfunction createId(api) {\n  api.id = id;\n  id++;\n}\n\nclass AsColorPicker {\n  constructor(element, options) {\n    this.element = element;\n    this.$element = $$1(element);\n\n    //flag\n    this.opened = false;\n    this.firstOpen = true;\n    this.disabled = false;\n    this.initialed = false;\n    this.originValue = this.element.value;\n    this.isEmpty = false;\n\n    createId(this);\n\n    this.options = $$1.extend(true, {}, DEFAULTS, options, this.$element.data());\n    this.namespace = this.options.namespace;\n\n    this.classes = {\n      wrap: `${this.namespace}-wrap`,\n      dropdown: `${this.namespace}-dropdown`,\n      input: `${this.namespace}-input`,\n      skin: `${this.namespace}_${this.options.skin}`,\n      open: `${this.namespace}_open`,\n      mask: `${this.namespace}-mask`,\n      hideInput: `${this.namespace}_hideInput`,\n      disabled: `${this.namespace}_disabled`,\n      mode: `${this.namespace}-mode_${this.options.mode}`\n    };\n\n    if (this.options.hideInput) {\n      this.$element.addClass(this.classes.hideInput);\n    }\n\n    this.components = MODES[this.options.mode];\n    this._components = $$1.extend(true, {}, COMPONENTS);\n\n    this._trigger('init');\n    this.init();\n  }\n\n  _trigger(eventType, ...params) {\n    let data = [this].concat(params);\n\n    // event\n    this.$element.trigger(`${NAMESPACE$1}::${eventType}`, data);\n\n    // callback\n    eventType = eventType.replace(/\\b\\w+\\b/g, (word) => {\n      return word.substring(0, 1).toUpperCase() + word.substring(1);\n    });\n    let onFunction = `on${eventType}`;\n\n    if (typeof this.options[onFunction] === 'function') {\n      this.options[onFunction].apply(this, params);\n    }\n  }\n\n  eventName(events) {\n    if (typeof events !== 'string' || events === '') {\n      return `.${this.options.namespace}`;\n    }\n    events = events.split(' ');\n\n    let length = events.length;\n    for (let i = 0; i < length; i++) {\n      events[i] = `${events[i]}.${this.options.namespace}`;\n    }\n    return events.join(' ');\n  }\n\n  init() {\n    this.color = AsColor(this.element.value, this.options.color);\n\n    this._create();\n\n    if (this.options.skin) {\n      this.$dropdown.addClass(this.classes.skin);\n      this.$element.parent().addClass(this.classes.skin);\n    }\n\n    if (this.options.readonly) {\n      this.$element.prop('readonly', true);\n    }\n\n    this._bindEvent();\n\n    this.initialed = true;\n    this._trigger('ready');\n  }\n\n  _create() {\n    this.$dropdown = $$1(`<div class=\"${this.classes.dropdown}\" data-mode=\"${this.options.mode}\"></div>`);\n    this.$element.wrap(`<div class=\"${this.classes.wrap}\"></div>`).addClass(this.classes.input);\n\n    this.$wrap = this.$element.parent();\n    this.$body = $$1('body');\n\n    this.$dropdown.data(NAMESPACE$1, this);\n\n    let component;\n    $$1.each(this.components, (key, options) => {\n      if (options === true) {\n        options = {};\n      }\n      if (this.options[key] !== undefined) {\n        options = $$1.extend(true, {}, options, this.options[key]);\n      }\n      if (Object.hasOwnProperty.call(this._components, key)) {\n        component = this._components[key];\n        component.init(this, options);\n      }\n    });\n\n    this._trigger('create');\n  }\n\n  _bindEvent() {\n    this.$element.on(this.eventName('click'), () => {\n      if (!this.opened) {\n        this.open();\n      }\n      return false;\n    });\n\n    this.$element.on(this.eventName('keydown'), (e) => {\n      if (e.keyCode === 9) {\n        this.close();\n      } else if (e.keyCode === 13) {\n        this.val(this.element.value);\n        this.close();\n      }\n    });\n\n    this.$element.on(this.eventName('keyup'), () => {\n      if (this.color.matchString(this.element.value)) {\n        this.val(this.element.value);\n      }\n    });\n  }\n\n  opacity(v) {\n    if (v) {\n      this.color.alpha(v);\n    } else {\n      return this.color.alpha();\n    }\n  }\n\n  position() {\n    const hidden = !this.$element.is(':visible');\n    const offset = hidden ? this.$trigger.offset() : this.$element.offset();\n    const height = hidden ? this.$trigger.outerHeight() : this.$element.outerHeight();\n    const width = hidden ? this.$trigger.outerWidth() : this.$element.outerWidth() + this.$trigger.outerWidth();\n    const pickerWidth = this.$dropdown.outerWidth(true);\n    const pickerHeight = this.$dropdown.outerHeight(true);\n    let top;\n    let left;\n\n    if (pickerHeight + offset.top > $$1(window).height() + $$1(window).scrollTop()) {\n      top = offset.top - pickerHeight;\n    } else {\n      top = offset.top + height;\n    }\n\n    if (pickerWidth + offset.left > $$1(window).width() + $$1(window).scrollLeft()) {\n      left = offset.left - pickerWidth + width;\n    } else {\n      left = offset.left;\n    }\n\n    this.$dropdown.css({\n      position: 'absolute',\n      top,\n      left\n    });\n  }\n\n  open() {\n    if (this.disabled) {\n      return;\n    }\n    this.originValue = this.element.value;\n\n    if (this.$dropdown[0] !== this.$body.children().last()[0]) {\n      this.$dropdown.detach().appendTo(this.$body);\n    }\n\n    this.$mask = $$1(`.${this.classes.mask}`);\n    if (this.$mask.length === 0) {\n      this.createMask();\n    }\n\n    // ensure the mask is always right before the dropdown\n    if (this.$dropdown.prev()[0] !== this.$mask[0]) {\n      this.$dropdown.before(this.$mask);\n    }\n\n    $$1(\"#asColorPicker-dropdown\").removeAttr(\"id\");\n    this.$dropdown.attr(\"id\", \"asColorPicker-dropdown\");\n\n    // show the mask\n    this.$mask.show();\n\n    this.position();\n\n    $$1(window).on(this.eventName('resize'), $$1.proxy(this.position, this));\n\n    this.$dropdown.addClass(this.classes.open);\n\n    this.opened = true;\n\n    if (this.firstOpen) {\n      this.firstOpen = false;\n      this._trigger('firstOpen');\n    }\n    this._setup();\n    this._trigger('open');\n  }\n\n  createMask() {\n    this.$mask = $$1(document.createElement(\"div\"));\n    this.$mask.attr(\"class\", this.classes.mask);\n    this.$mask.hide();\n    this.$mask.appendTo(this.$body);\n\n    this.$mask.on(this.eventName(\"mousedown touchstart click\"), e => {\n      const $dropdown = $$1(\"#asColorPicker-dropdown\");\n      let self;\n      if ($dropdown.length > 0) {\n        self = $dropdown.data(NAMESPACE$1);\n        if (self.opened) {\n          if (self.options.hideFireChange) {\n            self.apply();\n          } else {\n            self.cancel();\n          }\n        }\n\n        e.preventDefault();\n        e.stopPropagation();\n      }\n    });\n  }\n\n  close() {\n    this.opened = false;\n    this.$element.blur();\n    this.$mask.hide();\n\n    this.$dropdown.removeClass(this.classes.open);\n\n    $$1(window).off(this.eventName('resize'));\n\n    this._trigger('close');\n  }\n\n  clear() {\n    this.val('');\n  }\n\n  cancel() {\n    this.close();\n\n    this.set(this.originValue);\n  }\n\n  apply() {\n    this._trigger('apply', this.color);\n    this.close();\n  }\n\n  val(value) {\n    if (typeof value === 'undefined') {\n      return this.color.toString();\n    }\n\n    this.set(value);\n  }\n\n  _update() {\n    this._trigger('update', this.color);\n    this._updateInput();\n  }\n\n  _updateInput() {\n    let value = this.color.toString();\n    if (this.isEmpty) {\n      value = '';\n    }\n    this._trigger('change', value);\n    this.$element.val(value);\n  }\n\n  set(value) {\n    if (value !== '') {\n      this.isEmpty = false;\n    } else {\n      this.isEmpty = true;\n    }\n    return this._set(value);\n  }\n\n  _set(value) {\n    if (typeof value === 'string') {\n      this.color.val(value);\n    } else {\n      this.color.set(value);\n    }\n\n    this._update();\n  }\n\n  _setup() {\n    this._trigger('setup', this.color);\n  }\n\n  get() {\n    return this.color;\n  }\n\n  enable() {\n    this.disabled = false;\n    this.$parent.addClass(this.classes.disabled);\n    this._trigger('enable');\n    return this;\n  }\n\n  disable() {\n    this.disabled = true;\n    this.$parent.removeClass(this.classes.disabled);\n    this._trigger('disable');\n    return this;\n  }\n\n  destroy() {\n    this.$element.unwrap();\n    this.$element.off(this.eventName());\n    this.$mask.remove();\n    this.$dropdown.remove();\n\n    this.initialized = false;\n    this.$element.data(NAMESPACE$1, null);\n\n    this._trigger('destroy');\n    return this;\n  }\n\n  getString(name, def) {\n    if(this.options.lang in LOCALIZATIONS && typeof LOCALIZATIONS[this.options.lang][name] !== 'undefined') {\n      return LOCALIZATIONS[this.options.lang][name];\n    }\n    return def;\n  }\n\n  static setLocalization(lang, strings) {\n    LOCALIZATIONS[lang] = strings;\n  }\n\n  static registerComponent(name, method) {\n    COMPONENTS[name] = method;\n  }\n\n  static setDefaults(options) {\n    $$1.extend(true, DEFAULTS, $$1.isPlainObject(options) && options);\n  }\n}\n\nAsColorPicker.registerComponent('alpha', alpha);\nAsColorPicker.registerComponent('hex', hex);\nAsColorPicker.registerComponent('hue', hue);\nAsColorPicker.registerComponent('saturation', saturation);\nAsColorPicker.registerComponent('buttons', buttons);\nAsColorPicker.registerComponent('trigger', trigger);\nAsColorPicker.registerComponent('clear', clear);\nAsColorPicker.registerComponent('info', info);\nAsColorPicker.registerComponent('palettes', palettes);\nAsColorPicker.registerComponent('preview', preview);\nAsColorPicker.registerComponent('gradient', gradient);\n\n// Chinese (cn) localization\nAsColorPicker.setLocalization('cn', {\n  cancelText: \"取消\",\n  applyText: \"应用\"\n});\n\n// German (de) localization\nAsColorPicker.setLocalization('de', {\n  cancelText: \"Abbrechen\",\n  applyText: \"Wählen\"\n});\n\n// Danish (dk) localization\nAsColorPicker.setLocalization('dk', {\n  cancelText: \"annuller\",\n  applyText: \"Vælg\"\n});\n\n// Spanish (es) localization\nAsColorPicker.setLocalization('es', {\n  cancelText: \"Cancelar\",\n  applyText: \"Elegir\"\n});\n\n// Finnish (fi) localization\nAsColorPicker.setLocalization('fi', {\n  cancelText: \"Kumoa\",\n  applyText: \"Valitse\"\n});\n\n// French (fr) localization\nAsColorPicker.setLocalization('fr', {\n  cancelText: \"Annuler\",\n  applyText: \"Valider\"\n});\n\n// Italian (it) localization\nAsColorPicker.setLocalization('it', {\n  cancelText: \"annulla\",\n  applyText: \"scegli\"\n});\n\n// Japanese (ja) localization\nAsColorPicker.setLocalization('ja', {\n  cancelText: \"中止\",\n  applyText: \"選択\"\n});\n\n// Russian (ru) localization\nAsColorPicker.setLocalization('ru', {\n  cancelText: \"отмена\",\n  applyText: \"выбрать\"\n});\n\n// Swedish (sv) localization\nAsColorPicker.setLocalization('sv', {\n  cancelText: \"Avbryt\",\n  applyText: \"Välj\"\n});\n\n// Turkish (tr) localization\nAsColorPicker.setLocalization('tr', {\n  cancelText: \"Avbryt\",\n  applyText: \"Välj\"\n});\n\nvar info$1 = {\n  version:'0.4.4'\n};\n\nconst NAMESPACE = 'asColorPicker';\nconst OtherAsColorPicker = $$1.fn.asColorPicker;\n\nconst jQueryAsColorPicker = function(options, ...args) {\n  if (typeof options === 'string') {\n    const method = options;\n\n    if (/^_/.test(method)) {\n      return false;\n    } else if ((/^(get)$/.test(method)) || (method === 'val' && args.length === 0)) {\n      const instance = this.first().data(NAMESPACE);\n      if (instance && typeof instance[method] === 'function') {\n        return instance[method](...args);\n      }\n    } else {\n      return this.each(function() {\n        const instance = $$1.data(this, NAMESPACE);\n        if (instance && typeof instance[method] === 'function') {\n          instance[method](...args);\n        }\n      });\n    }\n  }\n\n  return this.each(function() {\n    if (!$$1(this).data(NAMESPACE)) {\n      $$1(this).data(NAMESPACE, new AsColorPicker(this, options));\n    }\n  });\n};\n\n$$1.fn.asColorPicker = jQueryAsColorPicker;\n\n$$1.asColorPicker = $$1.extend({\n  setDefaults: AsColorPicker.setDefaults,\n  registerComponent: AsColorPicker.registerComponent,\n  setLocalization: AsColorPicker.setLocalization,\n  noConflict: function() {\n    $$1.fn.asColorPicker = OtherAsColorPicker;\n    return jQueryAsColorPicker;\n  }\n}, info$1);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/LICENSE",
    "content": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\n  This version of the GNU Lesser General Public License incorporates\nthe terms and conditions of version 3 of the GNU General Public\nLicense, supplemented by the additional permissions listed below.\n\n  0. Additional Definitions.\n\n  As used herein, \"this License\" refers to version 3 of the GNU Lesser\nGeneral Public License, and the \"GNU GPL\" refers to version 3 of the GNU\nGeneral Public License.\n\n  \"The Library\" refers to a covered work governed by this License,\nother than an Application or a Combined Work as defined below.\n\n  An \"Application\" is any work that makes use of an interface provided\nby the Library, but which is not otherwise based on the Library.\nDefining a subclass of a class defined by the Library is deemed a mode\nof using an interface provided by the Library.\n\n  A \"Combined Work\" is a work produced by combining or linking an\nApplication with the Library.  The particular version of the Library\nwith which the Combined Work was made is also called the \"Linked\nVersion\".\n\n  The \"Minimal Corresponding Source\" for a Combined Work means the\nCorresponding Source for the Combined Work, excluding any source code\nfor portions of the Combined Work that, considered in isolation, are\nbased on the Application, and not on the Linked Version.\n\n  The \"Corresponding Application Code\" for a Combined Work means the\nobject code and/or source code for the Application, including any data\nand utility programs needed for reproducing the Combined Work from the\nApplication, but excluding the System Libraries of the Combined Work.\n\n  1. Exception to Section 3 of the GNU GPL.\n\n  You may convey a covered work under sections 3 and 4 of this License\nwithout being bound by section 3 of the GNU GPL.\n\n  2. Conveying Modified Versions.\n\n  If you modify a copy of the Library, and, in your modifications, a\nfacility refers to a function or data to be supplied by an Application\nthat uses the facility (other than as an argument passed when the\nfacility is invoked), then you may convey a copy of the modified\nversion:\n\n   a) under this License, provided that you make a good faith effort to\n   ensure that, in the event an Application does not supply the\n   function or data, the facility still operates, and performs\n   whatever part of its purpose remains meaningful, or\n\n   b) under the GNU GPL, with none of the additional permissions of\n   this License applicable to that copy.\n\n  3. Object Code Incorporating Material from Library Header Files.\n\n  The object code form of an Application may incorporate material from\na header file that is part of the Library.  You may convey such object\ncode under terms of your choice, provided that, if the incorporated\nmaterial is not limited to numerical parameters, data structure\nlayouts and accessors, or small macros, inline functions and templates\n(ten or fewer lines in length), you do both of the following:\n\n   a) Give prominent notice with each copy of the object code that the\n   Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the object code with a copy of the GNU GPL and this license\n   document.\n\n  4. Combined Works.\n\n  You may convey a Combined Work under terms of your choice that,\ntaken together, effectively do not restrict modification of the\nportions of the Library contained in the Combined Work and reverse\nengineering for debugging such modifications, if you also do each of\nthe following:\n\n   a) Give prominent notice with each copy of the Combined Work that\n   the Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the Combined Work with a copy of the GNU GPL and this license\n   document.\n\n   c) For a Combined Work that displays copyright notices during\n   execution, include the copyright notice for the Library among\n   these notices, as well as a reference directing the user to the\n   copies of the GNU GPL and this license document.\n\n   d) Do one of the following:\n\n       0) Convey the Minimal Corresponding Source under the terms of this\n       License, and the Corresponding Application Code in a form\n       suitable for, and under terms that permit, the user to\n       recombine or relink the Application with a modified version of\n       the Linked Version to produce a modified Combined Work, in the\n       manner specified by section 6 of the GNU GPL for conveying\n       Corresponding Source.\n\n       1) Use a suitable shared library mechanism for linking with the\n       Library.  A suitable mechanism is one that (a) uses at run time\n       a copy of the Library already present on the user's computer\n       system, and (b) will operate properly with a modified version\n       of the Library that is interface-compatible with the Linked\n       Version.\n\n   e) Provide Installation Information, but only if you would otherwise\n   be required to provide such information under section 6 of the\n   GNU GPL, and only to the extent that such information is\n   necessary to install and execute a modified version of the\n   Combined Work produced by recombining or relinking the\n   Application with a modified version of the Linked Version. (If\n   you use option 4d0, the Installation Information must accompany\n   the Minimal Corresponding Source and Corresponding Application\n   Code. If you use option 4d1, you must provide the Installation\n   Information in the manner specified by section 6 of the GNU GPL\n   for conveying Corresponding Source.)\n\n  5. Combined Libraries.\n\n  You may place library facilities that are a work based on the\nLibrary side by side in a single library together with other library\nfacilities that are not Applications and are not covered by this\nLicense, and convey such a combined library under terms of your\nchoice, if you do both of the following:\n\n   a) Accompany the combined library with a copy of the same work based\n   on the Library, uncombined with any other library facilities,\n   conveyed under the terms of this License.\n\n   b) Give prominent notice with the combined library that part of it\n   is a work based on the Library, and explaining where to find the\n   accompanying uncombined form of the same work.\n\n  6. Revised Versions of the GNU Lesser General Public License.\n\n  The Free Software Foundation may publish revised and/or new versions\nof the GNU Lesser General Public License from time to time. Such new\nversions will be similar in spirit to the present version, but may\ndiffer in detail to address new problems or concerns.\n\n  Each version is given a distinguishing version number. If the\nLibrary as you received it specifies that a certain numbered version\nof the GNU Lesser General Public License \"or any later version\"\napplies to it, you have the option of following the terms and\nconditions either of that published version or of any later version\npublished by the Free Software Foundation. If the Library as you\nreceived it does not specify a version number of the GNU Lesser\nGeneral Public License, you may choose any version of the GNU Lesser\nGeneral Public License ever published by the Free Software Foundation.\n\n  If the Library as you received it specifies that a proxy can decide\nwhether future versions of the GNU Lesser General Public License shall\napply, that proxy's public statement of acceptance of any version is\npermanent authorization for you to choose that version for the\nLibrary.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/README.md",
    "content": "# [jQuery asGradient](https://github.com/amazingSurge/jquery-asGradient) ![bower][bower-image] [![NPM version][npm-image]][npm-url] [![Dependency Status][daviddm-image]][daviddm-url] [![prs-welcome]](#contributing)\n\n> A jquery plugin used to manipulate css image gradient. You can add a new color stop. Change the position of color stop. Or remove a color stop. In the end, it can output a formated standard css gradient string. \n\n## Table of contents\n- [Main files](#main-files)\n- [Quick start](#quick-start)\n- [Requirements](#requirements)\n- [Usage](#usage)\n- [Examples](#examples)\n- [Options](#options)\n- [Methods](#methods)\n- [No conflict](#no-conflict)\n- [Browser support](#browser-support)\n- [Contributing](#contributing)\n- [Development](#development)\n- [Changelog](#changelog)\n- [Copyright and license](#copyright-and-license)\n\n## Main files\n```\ndist/\n├── jquery-asGradient.js\n├── jquery-asGradient.es.js\n└── jquery-asGradient.min.js\n```\n\n## Quick start\nSeveral quick start options are available:\n#### Download the latest build\n\n * [Development](https://raw.githubusercontent.com/amazingSurge/jquery-asGradient/master/dist/jquery-asGradient.js) - unminified\n * [Production](https://raw.githubusercontent.com/amazingSurge/jquery-asGradient/master/dist/jquery-asGradient.min.js) - minified\n\n#### Install From Bower\n```sh\nbower install jquery-asGradient --save\n```\n\n#### Install From Npm\n```sh\nnpm install jquery-asGradient --save\n```\n\n#### Install From Yarn\n```sh\nyarn add jquery-asGradient\n```\n\n#### Build From Source\nIf you want build from source:\n\n```sh\ngit clone git@github.com:amazingSurge/jquery-asGradient.git\ncd jquery-asGradient\nnpm install\nnpm install -g gulp-cli babel-cli\ngulp build\n```\n\nDone!\n\n## Requirements\n`jquery-asGradient` requires the latest version of [`jQuery`](https://jquery.com/download/) and [`jQuery-asColor`](https://github.com/amazingSurge/jquery-asColor).\n\n## Usage\n#### Including files:\n\n```html\n<script src=\"/path/to/jquery.js\"></script>\n<script src=\"/path/to/jquery-asColor.js\"></script>\n<script src=\"/path/to/jquery-asGradient.js\"></script>\n```\n\n#### Initialization\nAll you need to do is call the plugin on the element:\n\n```javascript\nvar gradient = new AsGradient('linear-gradient(to rgba(0, 0, 0, 1), rgba(255, 255, 255, 1))', {\n  cleanPosition: true,\n  color: {\n    format: 'rgba'\n  }\n});\n```\n\n## Examples\nThere are some example usages that you can look at to get started. They can be found in the\n[examples folder](https://github.com/amazingSurge/jquery-asGradient/tree/master/examples).\n\n## Options\n`jquery-asGradient` can accept an options object to alter the way it behaves. You can see the default options by call `$.asGradient.setDefaults()`. The structure of an options object is as follows:\n\n```\n{\n  prefixes: ['-webkit-', '-moz-', '-ms-', '-o-'],\n  forceStandard: true,\n  angleUseKeyword: true,\n  emptyString: '',\n  degradationFormat: false,\n  cleanPosition: true,\n  color: {\n    format: false, // rgb, rgba, hsl, hsla, hex\n    hexUseName: false,\n    reduceAlpha: true,\n    shortenHex: true,\n    zeroAlphaAsTransparent: false,\n    invalidValue: {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 1\n    }\n  }\n}\n```\n\n## Methods\n\n```javascript\nvar gradient = new AsGradient('linear-gradient(to bottom, yellow, blue)');\n\ngradient.toString();\n```\n\n#### toString()\nGet gradient string.\n```javascript\n// Get standard string.\ngradient.toString();\n\n// Get string by prefix.\ngradient.toString('-moz-');\n```\n\n#### fromString()\nSet values from gradient string.\n```javascript\ngradient.fromString('linear-gradient(to bottom, yellow 0%, blue 100%)');\n```\n\n#### getPrefixedStrings()\nGet prefixed strings array.\n```javascript\ngradient.getPrefixedStrings();\n```\n\n#### val()\nGet or set gradient string.\n```javascript\n// get gradient string\ngradient.val();\n\n// set gradient string\ngradient.val('linear-gradient(to bottom, yellow 0%, blue 100%)');\n```\n\n#### angle()\nGet or set angle.\n```javascript\n// get gradient angle\ngradient.angle();\n\n// set gradient angle\ngradient.angle(60);\n```\n\n#### append(color, position)\nAppend a new color stop.\n```javascript\ngradient.append('#fff', '50%');\n```\n\n#### insert(color, position, index)\nInsert a color stop to index\n```javascript\ngradient.append('#fff', '50%', 1);\n```\n\n#### getCurrent()\nGet current color stop.\n```javascript\nvar stop = gradient.getCurrent();\n```\n\n#### setCurrentById(id)\nSet current color stop by id.\n```javascript\ngradient.setCurrentById(2);\n```\n\n#### getById(id)\nGet color stop by index.\n```javascript\nvar stop = gradient.get(2);\n```\n\n#### removeById(id)\nRemove color stop by id.\n```javascript\ngradient.removeById(2);\n```\n\n#### get(index)\nGet color stop by index.\n```javascript\nvar stop = gradient.get(2);\n```\n\n#### remove(index)\nRemove color stop by index.\n```javascript\ngradient.remove(2);\n```\n\n#### empty()\nEmpty color stops.\n```javascript\ngradient.empty();\n```\n\n#### reset()\nReset gradient.\n```javascript\ngradient.reset();\n```\n\n## No conflict\nIf you have to use other plugin with the same namespace, just call the `$.asGradient.noConflict` method to revert to it.\n\n```html\n<script src=\"other-plugin.js\"></script>\n<script src=\"jquery-asGradient.js\"></script>\n<script>\n  $.asGradient.noConflict();\n  // Code that uses other plugin's \"$().asGradient\" can follow here.\n</script>\n```\n\n## Browser support\n\nTested on all major browsers.\n\n| <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/safari/safari_32x32.png\" alt=\"Safari\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/chrome/chrome_32x32.png\" alt=\"Chrome\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/firefox/firefox_32x32.png\" alt=\"Firefox\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/edge/edge_32x32.png\" alt=\"Edge\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/internet-explorer/internet-explorer_32x32.png\" alt=\"IE\"> | <img src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/opera/opera_32x32.png\" alt=\"Opera\"> |\n|:--:|:--:|:--:|:--:|:--:|:--:|\n| Latest ✓ | Latest ✓ | Latest ✓ | Latest ✓ | 9-11 ✓ | Latest ✓ |\n\nAs a jQuery plugin, you also need to see the [jQuery Browser Support](http://jquery.com/browser-support/).\n\n## Contributing\nAnyone and everyone is welcome to contribute. Please take a moment to\nreview the [guidelines for contributing](CONTRIBUTING.md). Make sure you're using the latest version of `jquery-asGradient` before submitting an issue. There are several ways to help out:\n\n* [Bug reports](CONTRIBUTING.md#bug-reports)\n* [Feature requests](CONTRIBUTING.md#feature-requests)\n* [Pull requests](CONTRIBUTING.md#pull-requests)\n* Write test cases for open bug issues\n* Contribute to the documentation\n\n## Development\n`jquery-asGradient` is built modularly and uses Gulp as a build system to build its distributable files. To install the necessary dependencies for the build system, please run:\n\n```sh\nnpm install -g gulp\nnpm install -g babel-cli\nnpm install\n```\n\nThen you can generate new distributable files from the sources, using:\n```\ngulp build\n```\n\nMore gulp tasks can be found [here](CONTRIBUTING.md#available-tasks).\n\n## Changelog\nTo see the list of recent changes, see [Releases section](https://github.com/amazingSurge/jquery-asGradient/releases).\n\n## Copyright and license\nCopyright (C) 2016 amazingSurge.\n\nLicensed under [the LGPL license](LICENSE).\n\n[⬆ back to top](#table-of-contents)\n\n[bower-image]: https://img.shields.io/bower/v/jquery-asGradient.svg?style=flat\n[bower-link]: https://david-dm.org/amazingSurge/jquery-asGradient/dev-status.svg\n[npm-image]: https://badge.fury.io/js/jquery-asGradient.svg?style=flat\n[npm-url]: https://npmjs.org/package/jquery-asGradient\n[license]: https://img.shields.io/npm/l/jquery-asGradient.svg?style=flat\n[prs-welcome]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg\n[daviddm-image]: https://david-dm.org/amazingSurge/jquery-asGradient.svg?style=flat\n[daviddm-url]: https://david-dm.org/amazingSurge/jquery-asGradient\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/dist/jquery-asGradient.es.js",
    "content": "/**\n* jQuery asGradient v0.3.3\n* https://github.com/amazingSurge/jquery-asGradient\n*\n* Copyright (c) amazingSurge\n* Released under the LGPL-3.0 license\n*/\nimport $ from 'jquery';\nimport Color from 'jquery-asColor';\n\nvar DEFAULTS = {\n  prefixes: ['-webkit-', '-moz-', '-ms-', '-o-'],\n  forceStandard: true,\n  angleUseKeyword: true,\n  emptyString: '',\n  degradationFormat: false,\n  cleanPosition: true,\n  color: {\n    format: false, // rgb, rgba, hsl, hsla, hex\n    hexUseName: false,\n    reduceAlpha: true,\n    shortenHex: true,\n    zeroAlphaAsTransparent: false,\n    invalidValue: {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 1\n    }\n  }\n};\n\n/* eslint no-extend-native: \"off\" */\nif (!String.prototype.includes) {\n  String.prototype.includes = function(search, start) {\n    'use strict';\n    if (typeof start !== 'number') {\n      start = 0;\n    }\n\n    if (start + search.length > this.length) {\n      return false;\n    }\n    return this.indexOf(search, start) !== -1;\n  };\n}\n\nfunction getPrefix() {\n  const ua = window.navigator.userAgent;\n  let prefix = '';\n  if (/MSIE/g.test(ua)) {\n    prefix = '-ms-';\n  } else if (/Firefox/g.test(ua)) {\n    prefix = '-moz-';\n  } else if (/(WebKit)/i.test(ua)) {\n    prefix = '-webkit-';\n  } else if (/Opera/g.test(ua)) {\n    prefix = '-o-';\n  }\n  return prefix;\n}\n\nfunction flip(o) {\n  const flipped = {};\n  for (const i in o) {\n    if (o.hasOwnProperty(i)) {\n      flipped[o[i]] = i;\n    }\n  }\n  return flipped;\n}\n\nfunction reverseDirection(direction) {\n  const mapping = {\n    'top': 'bottom',\n    'right': 'left',\n    'bottom': 'top',\n    'left': 'right',\n    'right top': 'left bottom',\n    'top right': 'bottom left',\n    'bottom right': 'top left',\n    'right bottom': 'left top',\n    'left bottom': 'right top',\n    'bottom left': 'top right',\n    'top left': 'bottom right',\n    'left top': 'right bottom'\n  };\n  return mapping.hasOwnProperty(direction) ? mapping[direction] : direction;\n}\n\nfunction isDirection(n) {\n  const reg = /^(top|left|right|bottom)$/i;\n  return reg.test(n);\n}\n\nvar keywordAngleMap = {\n  'to top': 0,\n  'to right': 90,\n  'to bottom': 180,\n  'to left': 270,\n  'to right top': 45,\n  'to top right': 45,\n  'to bottom right': 135,\n  'to right bottom': 135,\n  'to left bottom': 225,\n  'to bottom left': 225,\n  'to top left': 315,\n  'to left top': 315\n};\n\nconst angleKeywordMap = flip(keywordAngleMap);\n\nconst RegExpStrings = (() => {\n  const color = /(?:rgba|rgb|hsla|hsl)\\s*\\([\\s\\d\\.,%]+\\)|#[a-z0-9]{3,6}|[a-z]+/i;\n  const position = /\\d{1,3}%/i;\n  const angle = /(?:to ){0,1}(?:(?:top|left|right|bottom)\\s*){1,2}|\\d+deg/i;\n  const stop = new RegExp(`(${color.source})\\\\s*(${position.source}){0,1}`, 'i');\n  const stops = new RegExp(stop.source, 'gi');\n  const parameters = new RegExp(`(?:(${angle.source})){0,1}\\\\s*,{0,1}\\\\s*(.*?)\\\\s*`, 'i');\n  const full = new RegExp(`^(-webkit-|-moz-|-ms-|-o-){0,1}(linear|radial|repeating-linear)-gradient\\\\s*\\\\(\\\\s*(${parameters.source})\\\\s*\\\\)$`, 'i');\n\n  return {\n    FULL: full,\n    ANGLE: angle,\n    COLOR: color,\n    POSITION: position,\n    STOP: stop,\n    STOPS: stops,\n    PARAMETERS: new RegExp(`^${parameters.source}$`, 'i')\n  };\n})();\n\nvar GradientString = {\n  matchString: function(string) {\n    const matched = this.parseString(string);\n    if(matched && matched.value && matched.value.stops && matched.value.stops.length > 1){\n      return true;\n    }\n    return false;\n  },\n\n  parseString: function(string) {\n    string = $.trim(string);\n    let matched;\n    if ((matched = RegExpStrings.FULL.exec(string)) !== null) {\n      let value = this.parseParameters(matched[3]);\n\n      return {\n        prefix: (typeof matched[1] === 'undefined') ? null : matched[1],\n        type: matched[2],\n        value: value\n      };\n    } else {\n      return false;\n    }\n  },\n\n  parseParameters: function(string) {\n    let matched;\n    if ((matched = RegExpStrings.PARAMETERS.exec(string)) !== null) {\n      let stops = this.parseStops(matched[2]);\n      return {\n        angle: (typeof matched[1] === 'undefined') ? 0 : matched[1],\n        stops: stops\n      };\n    } else {\n      return false;\n    }\n  },\n\n  parseStops: function(string) {\n    let matched;\n    const result = [];\n    if ((matched = string.match(RegExpStrings.STOPS)) !== null) {\n\n      $.each(matched, (i, item) => {\n        const stop = this.parseStop(item);\n        if (stop) {\n          result.push(stop);\n        }\n      });\n      return result;\n    } else {\n      return false;\n    }\n  },\n\n  formatStops: function(stops, cleanPosition) {\n    let stop;\n    const output = [];\n    let positions = [];\n    const colors = [];\n    let position;\n\n    for (let i = 0; i < stops.length; i++) {\n      stop = stops[i];\n      if (typeof stop.position === 'undefined' || stop.position === null) {\n        if (i === 0) {\n          position = 0;\n        } else if (i === stops.length - 1) {\n          position = 1;\n        } else {\n          position = undefined;\n        }\n      } else {\n        position = stop.position;\n      }\n      positions.push(position);\n      colors.push(stop.color.toString());\n    }\n\n    positions = ((data => {\n      let start = null;\n      let average;\n      for (let i = 0; i < data.length; i++) {\n        if (isNaN(data[i])) {\n          if (start === null) {\n            start = i;\n            continue;\n          }\n        } else if (start) {\n          average = (data[i] - data[start - 1]) / (i - start + 1);\n          for (let j = start; j < i; j++) {\n            data[j] = data[start - 1] + (j - start + 1) * average;\n          }\n          start = null;\n        }\n      }\n\n      return data;\n    }))(positions);\n\n    for (let x = 0; x < stops.length; x++) {\n      if (cleanPosition && ((x === 0 && positions[x] === 0) || (x === stops.length - 1 && positions[x] === 1))) {\n        position = '';\n      } else {\n        position = ` ${this.formatPosition(positions[x])}`;\n      }\n\n      output.push(colors[x] + position);\n    }\n    return output.join(', ');\n  },\n\n  parseStop: function(string) {\n    let matched;\n    if ((matched = RegExpStrings.STOP.exec(string)) !== null) {\n      let position = this.parsePosition(matched[2]);\n\n      return {\n        color: matched[1],\n        position: position\n      };\n    } else {\n      return false;\n    }\n  },\n\n  parsePosition: function(string) {\n    if (typeof string === 'string' && string.substr(-1) === '%') {\n      string = parseFloat(string.slice(0, -1) / 100);\n    }\n\n    if(typeof string !== 'undefined' && string !== null) {\n      return parseFloat(string, 10);\n    } else {\n      return null;\n    }\n  },\n\n  formatPosition: function(value) {\n    return `${parseInt(value * 100, 10)}%`;\n  },\n\n  parseAngle: function(string, notStandard) {\n    if (typeof string === 'string' && string.includes('deg')) {\n      string = string.replace('deg', '');\n    }\n    if (!isNaN(string)) {\n      if (notStandard) {\n        string = this.fixOldAngle(string);\n      }\n    }\n    if (typeof string === 'string') {\n      const directions = string.split(' ');\n\n      const filtered = [];\n      for (const i in directions) {\n        if (isDirection(directions[i])) {\n          filtered.push(directions[i].toLowerCase());\n        }\n      }\n      let keyword = filtered.join(' ');\n\n      if (!string.includes('to ')) {\n        keyword = reverseDirection(keyword);\n      }\n      keyword = `to ${keyword}`;\n      if (keywordAngleMap.hasOwnProperty(keyword)) {\n        string = keywordAngleMap[keyword];\n      }\n    }\n    let value = parseFloat(string, 10);\n\n    if (value > 360) {\n      value %= 360;\n    } else if (value < 0) {\n      value %= -360;\n\n      if (value !== 0) {\n        value += 360;\n      }\n    }\n    return value;\n  },\n\n  fixOldAngle: function(value) {\n    value = parseFloat(value);\n    value = Math.abs(450 - value) % 360;\n    value = parseFloat(value.toFixed(3));\n    return value;\n  },\n\n  formatAngle: function(value, notStandard, useKeyword) {\n    value = parseInt(value, 10);\n    if (useKeyword && angleKeywordMap.hasOwnProperty(value)) {\n      value = angleKeywordMap[value];\n      if (notStandard) {\n        value = reverseDirection(value.substr(3));\n      }\n    } else {\n      if (notStandard) {\n        value = this.fixOldAngle(value);\n      }\n      value = `${value}deg`;\n    }\n\n    return value;\n  }\n};\n\nclass ColorStop {\n  constructor(color, position, gradient) {\n    this.color = Color(color, gradient.options.color);\n    this.position = GradientString.parsePosition(position);\n    this.id = ++gradient._stopIdCount;\n    this.gradient = gradient;\n  }\n\n  setPosition(string) {\n    const position = GradientString.parsePosition(string);\n    if(this.position !== position){\n      this.position = position;\n      this.gradient.reorder();\n    }\n  }\n\n  setColor(string) {\n    this.color.fromString(string);\n  }\n\n  remove() {\n    this.gradient.removeById(this.id);\n  }\n}\n\nvar GradientTypes = {\n  LINEAR: {\n    parse(result) {\n      return {\n        r: (result[1].substr(-1) === '%') ? parseInt(result[1].slice(0, -1) * 2.55, 10) : parseInt(result[1], 10),\n        g: (result[2].substr(-1) === '%') ? parseInt(result[2].slice(0, -1) * 2.55, 10) : parseInt(result[2], 10),\n        b: (result[3].substr(-1) === '%') ? parseInt(result[3].slice(0, -1) * 2.55, 10) : parseInt(result[3], 10),\n        a: 1\n      };\n    },\n    to(gradient, instance, prefix) {\n      if (gradient.stops.length === 0) {\n        return instance.options.emptyString;\n      }\n      if (gradient.stops.length === 1) {\n        return gradient.stops[0].color.to(instance.options.degradationFormat);\n      }\n\n      let standard = instance.options.forceStandard;\n      let _prefix = instance._prefix;\n\n      if (!_prefix) {\n        standard = true;\n      }\n      if (prefix && -1 !== $.inArray(prefix, instance.options.prefixes)) {\n        standard = false;\n        _prefix = prefix;\n      }\n\n      const angle = GradientString.formatAngle(gradient.angle, !standard, instance.options.angleUseKeyword);\n      const stops = GradientString.formatStops(gradient.stops, instance.options.cleanPosition);\n\n      const output = `linear-gradient(${angle}, ${stops})`;\n      if (standard) {\n        return output;\n      } else {\n        return _prefix + output;\n      }\n    }\n  }\n};\n\nclass AsGradient {\n  constructor(string, options) {\n    if (typeof string === 'object' && typeof options === 'undefined') {\n      options = string;\n      string = undefined;\n    }\n    this.value = {\n      angle: 0,\n      stops: []\n    };\n    this.options = $.extend(true, {}, DEFAULTS, options);\n\n    this._type = 'LINEAR';\n    this._prefix = null;\n    this.length = this.value.stops.length;\n    this.current = 0;\n    this._stopIdCount = 0;\n\n    this.init(string);\n  }\n\n  init(string) {\n    if (string) {\n      this.fromString(string);\n    }\n  }\n\n  val(value) {\n    if (typeof value === 'undefined') {\n      return this.toString();\n    } else {\n      this.fromString(value);\n      return this;\n    }\n  }\n\n  angle(value) {\n    if (typeof value === 'undefined') {\n      return this.value.angle;\n    } else {\n      this.value.angle = GradientString.parseAngle(value);\n      return this;\n    }\n  }\n\n  append(color, position) {\n    return this.insert(color, position, this.length);\n  }\n\n  reorder() {\n    if(this.length < 2){\n      return;\n    }\n\n    this.value.stops = this.value.stops.sort((a, b) => a.position - b.position);\n  }\n\n  insert(color, position, index) {\n    if (typeof index === 'undefined') {\n      index = this.current;\n    }\n\n    const stop = new ColorStop(color, position, this);\n\n    this.value.stops.splice(index, 0, stop);\n\n    this.length = this.length + 1;\n    this.current = index;\n    return stop;\n  }\n\n  getById(id) {\n    if(this.length > 0){\n      for(const i in this.value.stops){\n        if(id === this.value.stops[i].id){\n          return this.value.stops[i];\n        }\n      }\n    }\n    return false;\n  }\n\n  removeById(id) {\n    const index = this.getIndexById(id);\n    if(index){\n      this.remove(index);\n    }\n  }\n\n  getIndexById(id) {\n    let index = 0;\n    for(const i in this.value.stops){\n      if(id === this.value.stops[i].id){\n        return index;\n      }\n      index ++;\n    }\n    return false;\n  }\n\n  getCurrent() {\n    return this.value.stops[this.current];\n  }\n\n  setCurrentById(id) {\n    let index = 0;\n    for(const i in this.value.stops){\n      if(this.value.stops[i].id !== id){\n        index ++;\n      } else {\n        this.current = index;\n      }\n    }\n  }\n\n  get(index) {\n    if (typeof index === 'undefined') {\n      index = this.current;\n    }\n    if (index >= 0 && index < this.length) {\n      this.current = index;\n      return this.value.stops[index];\n    } else {\n      return false;\n    }\n  }\n\n  remove(index) {\n    if (typeof index === 'undefined') {\n      index = this.current;\n    }\n    if (index >= 0 && index < this.length) {\n      this.value.stops.splice(index, 1);\n      this.length = this.length - 1;\n      this.current = index - 1;\n    }\n  }\n\n  empty() {\n    this.value.stops = [];\n    this.length = 0;\n    this.current = 0;\n  }\n\n  reset() {\n    this.value._angle = 0;\n    this.empty();\n    this._prefix = null;\n    this._type = 'LINEAR';\n  }\n\n  type(type) {\n    if (typeof type === 'string' && (type = type.toUpperCase()) && typeof GradientTypes[type] !== 'undefined') {\n      this._type = type;\n      return this;\n    } else {\n      return this._type;\n    }\n  }\n\n  fromString(string) {\n    this.reset();\n\n    const result = GradientString.parseString(string);\n\n    if (result) {\n      this._prefix = result.prefix;\n      this.type(result.type);\n      if (result.value) {\n        this.value.angle = GradientString.parseAngle(result.value.angle, this._prefix !== null);\n\n        $.each(result.value.stops, (i, stop) => {\n          this.append(stop.color, stop.position);\n        });\n      }\n    }\n  }\n\n  toString(prefix) {\n    if(prefix === true){\n      prefix = getPrefix();\n    }\n    return GradientTypes[this.type()].to(this.value, this, prefix);\n  }\n\n  matchString(string) {\n    return GradientString.matchString(string);\n  }\n\n  toStringWithAngle(angle, prefix) {\n    const value = $.extend(true, {}, this.value);\n    value.angle = GradientString.parseAngle(angle);\n\n    if(prefix === true){\n      prefix = getPrefix();\n    }\n\n    return GradientTypes[this.type()].to(value, this, prefix);\n  }\n\n  getPrefixedStrings() {\n    const strings = [];\n    for (let i in this.options.prefixes) {\n      if(Object.hasOwnProperty.call(this.options.prefixes, i)){\n        strings.push(this.toString(this.options.prefixes[i]));\n      }\n    }\n    return strings;\n  }\n\n  static setDefaults(options) {\n    $.extend(true, DEFAULTS, $.isPlainObject(options) && options);\n  }\n}\n\nvar info = {\n  version:'0.3.3'\n};\n\nconst OtherAsGradient = $.asGradient;\n\nconst jQueryAsGradient = function(...args) {\n  return new AsGradient(...args);\n};\n\n$.asGradient = jQueryAsGradient;\n$.asGradient.Constructor = AsGradient;\n\n$.extend($.asGradient, {\n  setDefaults: AsGradient.setDefaults,\n  noConflict: function() {\n    $.asGradient = OtherAsGradient;\n    return jQueryAsGradient;\n  }\n}, GradientString, info);\n\nvar main = $.asGradient;\n\nexport default main;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/dist/jquery-asGradient.js",
    "content": "/**\n* jQuery asGradient v0.3.3\n* https://github.com/amazingSurge/jquery-asGradient\n*\n* Copyright (c) amazingSurge\n* Released under the LGPL-3.0 license\n*/\n(function(global, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define('AsGradient', ['exports', 'jquery', 'jquery-asColor'], factory);\n  } else if (typeof exports !== 'undefined') {\n    factory(exports, require('jquery'), require('jquery-asColor'));\n  } else {\n    var mod = {\n      exports: {}\n    };\n    factory(mod.exports, global.jQuery, global.AsColor);\n    global.AsGradient = mod.exports;\n  }\n})(this, function(exports, _jquery, _jqueryAsColor) {\n  'use strict';\n\n  Object.defineProperty(exports, '__esModule', {\n    value: true\n  });\n\n  var _jquery2 = _interopRequireDefault(_jquery);\n\n  var _jqueryAsColor2 = _interopRequireDefault(_jqueryAsColor);\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule\n      ? obj\n      : {\n          default: obj\n        };\n  }\n\n  var _typeof =\n    typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n      ? function(obj) {\n          return typeof obj;\n        }\n      : function(obj) {\n          return obj &&\n          typeof Symbol === 'function' &&\n          obj.constructor === Symbol &&\n          obj !== Symbol.prototype\n            ? 'symbol'\n            : typeof obj;\n        };\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError('Cannot call a class as a function');\n    }\n  }\n\n  var _createClass = (function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if ('value' in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  })();\n\n  var DEFAULTS = {\n    prefixes: ['-webkit-', '-moz-', '-ms-', '-o-'],\n    forceStandard: true,\n    angleUseKeyword: true,\n    emptyString: '',\n    degradationFormat: false,\n    cleanPosition: true,\n    color: {\n      format: false, // rgb, rgba, hsl, hsla, hex\n      hexUseName: false,\n      reduceAlpha: true,\n      shortenHex: true,\n      zeroAlphaAsTransparent: false,\n      invalidValue: {\n        r: 0,\n        g: 0,\n        b: 0,\n        a: 1\n      }\n    }\n  };\n\n  /* eslint no-extend-native: \"off\" */\n  if (!String.prototype.includes) {\n    String.prototype.includes = function(search, start) {\n      'use strict';\n\n      if (typeof start !== 'number') {\n        start = 0;\n      }\n\n      if (start + search.length > this.length) {\n        return false;\n      }\n      return this.indexOf(search, start) !== -1;\n    };\n  }\n\n  function getPrefix() {\n    var ua = window.navigator.userAgent;\n    var prefix = '';\n    if (/MSIE/g.test(ua)) {\n      prefix = '-ms-';\n    } else if (/Firefox/g.test(ua)) {\n      prefix = '-moz-';\n    } else if (/(WebKit)/i.test(ua)) {\n      prefix = '-webkit-';\n    } else if (/Opera/g.test(ua)) {\n      prefix = '-o-';\n    }\n    return prefix;\n  }\n\n  function flip(o) {\n    var flipped = {};\n    for (var i in o) {\n      if (o.hasOwnProperty(i)) {\n        flipped[o[i]] = i;\n      }\n    }\n    return flipped;\n  }\n\n  function reverseDirection(direction) {\n    var mapping = {\n      top: 'bottom',\n      right: 'left',\n      bottom: 'top',\n      left: 'right',\n      'right top': 'left bottom',\n      'top right': 'bottom left',\n      'bottom right': 'top left',\n      'right bottom': 'left top',\n      'left bottom': 'right top',\n      'bottom left': 'top right',\n      'top left': 'bottom right',\n      'left top': 'right bottom'\n    };\n    return mapping.hasOwnProperty(direction) ? mapping[direction] : direction;\n  }\n\n  function isDirection(n) {\n    var reg = /^(top|left|right|bottom)$/i;\n    return reg.test(n);\n  }\n\n  var keywordAngleMap = {\n    'to top': 0,\n    'to right': 90,\n    'to bottom': 180,\n    'to left': 270,\n    'to right top': 45,\n    'to top right': 45,\n    'to bottom right': 135,\n    'to right bottom': 135,\n    'to left bottom': 225,\n    'to bottom left': 225,\n    'to top left': 315,\n    'to left top': 315\n  };\n\n  var angleKeywordMap = flip(keywordAngleMap);\n\n  var RegExpStrings = (function() {\n    var color = /(?:rgba|rgb|hsla|hsl)\\s*\\([\\s\\d\\.,%]+\\)|#[a-z0-9]{3,6}|[a-z]+/i;\n    var position = /\\d{1,3}%/i;\n    var angle = /(?:to ){0,1}(?:(?:top|left|right|bottom)\\s*){1,2}|\\d+deg/i;\n    var stop = new RegExp(\n      '(' + color.source + ')\\\\s*(' + position.source + '){0,1}',\n      'i'\n    );\n    var stops = new RegExp(stop.source, 'gi');\n    var parameters = new RegExp(\n      '(?:(' + angle.source + ')){0,1}\\\\s*,{0,1}\\\\s*(.*?)\\\\s*',\n      'i'\n    );\n    var full = new RegExp(\n      '^(-webkit-|-moz-|-ms-|-o-){0,1}(linear|radial|repeating-linear)-gradient\\\\s*\\\\(\\\\s*(' +\n        parameters.source +\n        ')\\\\s*\\\\)$',\n      'i'\n    );\n\n    return {\n      FULL: full,\n      ANGLE: angle,\n      COLOR: color,\n      POSITION: position,\n      STOP: stop,\n      STOPS: stops,\n      PARAMETERS: new RegExp('^' + parameters.source + '$', 'i')\n    };\n  })();\n\n  var GradientString = {\n    matchString: function matchString(string) {\n      var matched = this.parseString(string);\n      if (\n        matched &&\n        matched.value &&\n        matched.value.stops &&\n        matched.value.stops.length > 1\n      ) {\n        return true;\n      }\n      return false;\n    },\n\n    parseString: function parseString(string) {\n      string = _jquery2.default.trim(string);\n      var matched = void 0;\n      if ((matched = RegExpStrings.FULL.exec(string)) !== null) {\n        var value = this.parseParameters(matched[3]);\n\n        return {\n          prefix: typeof matched[1] === 'undefined' ? null : matched[1],\n          type: matched[2],\n          value: value\n        };\n      } else {\n        return false;\n      }\n    },\n\n    parseParameters: function parseParameters(string) {\n      var matched = void 0;\n      if ((matched = RegExpStrings.PARAMETERS.exec(string)) !== null) {\n        var stops = this.parseStops(matched[2]);\n        return {\n          angle: typeof matched[1] === 'undefined' ? 0 : matched[1],\n          stops: stops\n        };\n      } else {\n        return false;\n      }\n    },\n\n    parseStops: function parseStops(string) {\n      var _this = this;\n\n      var matched = void 0;\n      var result = [];\n      if ((matched = string.match(RegExpStrings.STOPS)) !== null) {\n        _jquery2.default.each(matched, function(i, item) {\n          var stop = _this.parseStop(item);\n          if (stop) {\n            result.push(stop);\n          }\n        });\n        return result;\n      } else {\n        return false;\n      }\n    },\n\n    formatStops: function formatStops(stops, cleanPosition) {\n      var stop = void 0;\n      var output = [];\n      var positions = [];\n      var colors = [];\n      var position = void 0;\n\n      for (var i = 0; i < stops.length; i++) {\n        stop = stops[i];\n        if (typeof stop.position === 'undefined' || stop.position === null) {\n          if (i === 0) {\n            position = 0;\n          } else if (i === stops.length - 1) {\n            position = 1;\n          } else {\n            position = undefined;\n          }\n        } else {\n          position = stop.position;\n        }\n        positions.push(position);\n        colors.push(stop.color.toString());\n      }\n\n      positions = (function(data) {\n        var start = null;\n        var average = void 0;\n        for (var _i = 0; _i < data.length; _i++) {\n          if (isNaN(data[_i])) {\n            if (start === null) {\n              start = _i;\n              continue;\n            }\n          } else if (start) {\n            average = (data[_i] - data[start - 1]) / (_i - start + 1);\n            for (var j = start; j < _i; j++) {\n              data[j] = data[start - 1] + (j - start + 1) * average;\n            }\n            start = null;\n          }\n        }\n\n        return data;\n      })(positions);\n\n      for (var x = 0; x < stops.length; x++) {\n        if (\n          cleanPosition &&\n          ((x === 0 && positions[x] === 0) ||\n            (x === stops.length - 1 && positions[x] === 1))\n        ) {\n          position = '';\n        } else {\n          position = ' ' + this.formatPosition(positions[x]);\n        }\n\n        output.push(colors[x] + position);\n      }\n      return output.join(', ');\n    },\n\n    parseStop: function parseStop(string) {\n      var matched = void 0;\n      if ((matched = RegExpStrings.STOP.exec(string)) !== null) {\n        var position = this.parsePosition(matched[2]);\n\n        return {\n          color: matched[1],\n          position: position\n        };\n      } else {\n        return false;\n      }\n    },\n\n    parsePosition: function parsePosition(string) {\n      if (typeof string === 'string' && string.substr(-1) === '%') {\n        string = parseFloat(string.slice(0, -1) / 100);\n      }\n\n      if (typeof string !== 'undefined' && string !== null) {\n        return parseFloat(string, 10);\n      } else {\n        return null;\n      }\n    },\n\n    formatPosition: function formatPosition(value) {\n      return parseInt(value * 100, 10) + '%';\n    },\n\n    parseAngle: function parseAngle(string, notStandard) {\n      if (typeof string === 'string' && string.includes('deg')) {\n        string = string.replace('deg', '');\n      }\n      if (!isNaN(string)) {\n        if (notStandard) {\n          string = this.fixOldAngle(string);\n        }\n      }\n      if (typeof string === 'string') {\n        var directions = string.split(' ');\n\n        var filtered = [];\n        for (var i in directions) {\n          if (isDirection(directions[i])) {\n            filtered.push(directions[i].toLowerCase());\n          }\n        }\n        var keyword = filtered.join(' ');\n\n        if (!string.includes('to ')) {\n          keyword = reverseDirection(keyword);\n        }\n        keyword = 'to ' + keyword;\n        if (keywordAngleMap.hasOwnProperty(keyword)) {\n          string = keywordAngleMap[keyword];\n        }\n      }\n      var value = parseFloat(string, 10);\n\n      if (value > 360) {\n        value %= 360;\n      } else if (value < 0) {\n        value %= -360;\n\n        if (value !== 0) {\n          value += 360;\n        }\n      }\n      return value;\n    },\n\n    fixOldAngle: function fixOldAngle(value) {\n      value = parseFloat(value);\n      value = Math.abs(450 - value) % 360;\n      value = parseFloat(value.toFixed(3));\n      return value;\n    },\n\n    formatAngle: function formatAngle(value, notStandard, useKeyword) {\n      value = parseInt(value, 10);\n      if (useKeyword && angleKeywordMap.hasOwnProperty(value)) {\n        value = angleKeywordMap[value];\n        if (notStandard) {\n          value = reverseDirection(value.substr(3));\n        }\n      } else {\n        if (notStandard) {\n          value = this.fixOldAngle(value);\n        }\n        value = value + 'deg';\n      }\n\n      return value;\n    }\n  };\n\n  var ColorStop = (function() {\n    function ColorStop(color, position, gradient) {\n      _classCallCheck(this, ColorStop);\n\n      this.color = (0, _jqueryAsColor2.default)(color, gradient.options.color);\n      this.position = GradientString.parsePosition(position);\n      this.id = ++gradient._stopIdCount;\n      this.gradient = gradient;\n    }\n\n    _createClass(ColorStop, [\n      {\n        key: 'setPosition',\n        value: function setPosition(string) {\n          var position = GradientString.parsePosition(string);\n          if (this.position !== position) {\n            this.position = position;\n            this.gradient.reorder();\n          }\n        }\n      },\n      {\n        key: 'setColor',\n        value: function setColor(string) {\n          this.color.fromString(string);\n        }\n      },\n      {\n        key: 'remove',\n        value: function remove() {\n          this.gradient.removeById(this.id);\n        }\n      }\n    ]);\n\n    return ColorStop;\n  })();\n\n  var GradientTypes = {\n    LINEAR: {\n      parse: function parse(result) {\n        return {\n          r:\n            result[1].substr(-1) === '%'\n              ? parseInt(result[1].slice(0, -1) * 2.55, 10)\n              : parseInt(result[1], 10),\n          g:\n            result[2].substr(-1) === '%'\n              ? parseInt(result[2].slice(0, -1) * 2.55, 10)\n              : parseInt(result[2], 10),\n          b:\n            result[3].substr(-1) === '%'\n              ? parseInt(result[3].slice(0, -1) * 2.55, 10)\n              : parseInt(result[3], 10),\n          a: 1\n        };\n      },\n      to: function to(gradient, instance, prefix) {\n        if (gradient.stops.length === 0) {\n          return instance.options.emptyString;\n        }\n        if (gradient.stops.length === 1) {\n          return gradient.stops[0].color.to(instance.options.degradationFormat);\n        }\n\n        var standard = instance.options.forceStandard;\n        var _prefix = instance._prefix;\n\n        if (!_prefix) {\n          standard = true;\n        }\n        if (\n          prefix &&\n          -1 !== _jquery2.default.inArray(prefix, instance.options.prefixes)\n        ) {\n          standard = false;\n          _prefix = prefix;\n        }\n\n        var angle = GradientString.formatAngle(\n          gradient.angle,\n          !standard,\n          instance.options.angleUseKeyword\n        );\n        var stops = GradientString.formatStops(\n          gradient.stops,\n          instance.options.cleanPosition\n        );\n\n        var output = 'linear-gradient(' + angle + ', ' + stops + ')';\n        if (standard) {\n          return output;\n        } else {\n          return _prefix + output;\n        }\n      }\n    }\n  };\n\n  var AsGradient = (function() {\n    function AsGradient(string, options) {\n      _classCallCheck(this, AsGradient);\n\n      if (\n        (typeof string === 'undefined' ? 'undefined' : _typeof(string)) ===\n          'object' &&\n        typeof options === 'undefined'\n      ) {\n        options = string;\n        string = undefined;\n      }\n      this.value = {\n        angle: 0,\n        stops: []\n      };\n      this.options = _jquery2.default.extend(true, {}, DEFAULTS, options);\n\n      this._type = 'LINEAR';\n      this._prefix = null;\n      this.length = this.value.stops.length;\n      this.current = 0;\n      this._stopIdCount = 0;\n\n      this.init(string);\n    }\n\n    _createClass(\n      AsGradient,\n      [\n        {\n          key: 'init',\n          value: function init(string) {\n            if (string) {\n              this.fromString(string);\n            }\n          }\n        },\n        {\n          key: 'val',\n          value: function val(value) {\n            if (typeof value === 'undefined') {\n              return this.toString();\n            } else {\n              this.fromString(value);\n              return this;\n            }\n          }\n        },\n        {\n          key: 'angle',\n          value: function angle(value) {\n            if (typeof value === 'undefined') {\n              return this.value.angle;\n            } else {\n              this.value.angle = GradientString.parseAngle(value);\n              return this;\n            }\n          }\n        },\n        {\n          key: 'append',\n          value: function append(color, position) {\n            return this.insert(color, position, this.length);\n          }\n        },\n        {\n          key: 'reorder',\n          value: function reorder() {\n            if (this.length < 2) {\n              return;\n            }\n\n            this.value.stops = this.value.stops.sort(function(a, b) {\n              return a.position - b.position;\n            });\n          }\n        },\n        {\n          key: 'insert',\n          value: function insert(color, position, index) {\n            if (typeof index === 'undefined') {\n              index = this.current;\n            }\n\n            var stop = new ColorStop(color, position, this);\n\n            this.value.stops.splice(index, 0, stop);\n\n            this.length = this.length + 1;\n            this.current = index;\n            return stop;\n          }\n        },\n        {\n          key: 'getById',\n          value: function getById(id) {\n            if (this.length > 0) {\n              for (var i in this.value.stops) {\n                if (id === this.value.stops[i].id) {\n                  return this.value.stops[i];\n                }\n              }\n            }\n            return false;\n          }\n        },\n        {\n          key: 'removeById',\n          value: function removeById(id) {\n            var index = this.getIndexById(id);\n            if (index) {\n              this.remove(index);\n            }\n          }\n        },\n        {\n          key: 'getIndexById',\n          value: function getIndexById(id) {\n            var index = 0;\n            for (var i in this.value.stops) {\n              if (id === this.value.stops[i].id) {\n                return index;\n              }\n              index++;\n            }\n            return false;\n          }\n        },\n        {\n          key: 'getCurrent',\n          value: function getCurrent() {\n            return this.value.stops[this.current];\n          }\n        },\n        {\n          key: 'setCurrentById',\n          value: function setCurrentById(id) {\n            var index = 0;\n            for (var i in this.value.stops) {\n              if (this.value.stops[i].id !== id) {\n                index++;\n              } else {\n                this.current = index;\n              }\n            }\n          }\n        },\n        {\n          key: 'get',\n          value: function get(index) {\n            if (typeof index === 'undefined') {\n              index = this.current;\n            }\n            if (index >= 0 && index < this.length) {\n              this.current = index;\n              return this.value.stops[index];\n            } else {\n              return false;\n            }\n          }\n        },\n        {\n          key: 'remove',\n          value: function remove(index) {\n            if (typeof index === 'undefined') {\n              index = this.current;\n            }\n            if (index >= 0 && index < this.length) {\n              this.value.stops.splice(index, 1);\n              this.length = this.length - 1;\n              this.current = index - 1;\n            }\n          }\n        },\n        {\n          key: 'empty',\n          value: function empty() {\n            this.value.stops = [];\n            this.length = 0;\n            this.current = 0;\n          }\n        },\n        {\n          key: 'reset',\n          value: function reset() {\n            this.value._angle = 0;\n            this.empty();\n            this._prefix = null;\n            this._type = 'LINEAR';\n          }\n        },\n        {\n          key: 'type',\n          value: function type(_type) {\n            if (\n              typeof _type === 'string' &&\n              (_type = _type.toUpperCase()) &&\n              typeof GradientTypes[_type] !== 'undefined'\n            ) {\n              this._type = _type;\n              return this;\n            } else {\n              return this._type;\n            }\n          }\n        },\n        {\n          key: 'fromString',\n          value: function fromString(string) {\n            var _this2 = this;\n\n            this.reset();\n\n            var result = GradientString.parseString(string);\n\n            if (result) {\n              this._prefix = result.prefix;\n              this.type(result.type);\n              if (result.value) {\n                this.value.angle = GradientString.parseAngle(\n                  result.value.angle,\n                  this._prefix !== null\n                );\n\n                _jquery2.default.each(result.value.stops, function(i, stop) {\n                  _this2.append(stop.color, stop.position);\n                });\n              }\n            }\n          }\n        },\n        {\n          key: 'toString',\n          value: function toString(prefix) {\n            if (prefix === true) {\n              prefix = getPrefix();\n            }\n            return GradientTypes[this.type()].to(this.value, this, prefix);\n          }\n        },\n        {\n          key: 'matchString',\n          value: function matchString(string) {\n            return GradientString.matchString(string);\n          }\n        },\n        {\n          key: 'toStringWithAngle',\n          value: function toStringWithAngle(angle, prefix) {\n            var value = _jquery2.default.extend(true, {}, this.value);\n            value.angle = GradientString.parseAngle(angle);\n\n            if (prefix === true) {\n              prefix = getPrefix();\n            }\n\n            return GradientTypes[this.type()].to(value, this, prefix);\n          }\n        },\n        {\n          key: 'getPrefixedStrings',\n          value: function getPrefixedStrings() {\n            var strings = [];\n            for (var i in this.options.prefixes) {\n              if (Object.hasOwnProperty.call(this.options.prefixes, i)) {\n                strings.push(this.toString(this.options.prefixes[i]));\n              }\n            }\n            return strings;\n          }\n        }\n      ],\n      [\n        {\n          key: 'setDefaults',\n          value: function setDefaults(options) {\n            _jquery2.default.extend(\n              true,\n              DEFAULTS,\n              _jquery2.default.isPlainObject(options) && options\n            );\n          }\n        }\n      ]\n    );\n\n    return AsGradient;\n  })();\n\n  var info = {\n    version: '0.3.3'\n  };\n\n  var OtherAsGradient = _jquery2.default.asGradient;\n\n  var jQueryAsGradient = function jQueryAsGradient() {\n    for (\n      var _len = arguments.length, args = Array(_len), _key = 0;\n      _key < _len;\n      _key++\n    ) {\n      args[_key] = arguments[_key];\n    }\n\n    return new (Function.prototype.bind.apply(\n      AsGradient,\n      [null].concat(args)\n    ))();\n  };\n\n  _jquery2.default.asGradient = jQueryAsGradient;\n  _jquery2.default.asGradient.Constructor = AsGradient;\n\n  _jquery2.default.extend(\n    _jquery2.default.asGradient,\n    {\n      setDefaults: AsGradient.setDefaults,\n      noConflict: function noConflict() {\n        _jquery2.default.asGradient = OtherAsGradient;\n        return jQueryAsGradient;\n      }\n    },\n    GradientString,\n    info\n  );\n\n  var main = _jquery2.default.asGradient;\n\n  exports.default = main;\n});\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/package.json",
    "content": "{\n  \"_from\": \"jquery-asGradient@^0.3.2\",\n  \"_id\": \"jquery-asGradient@0.3.3\",\n  \"_inBundle\": false,\n  \"_integrity\": \"sha512-puoCFLfe98dwCCketwVsk/aBAEyOq0/BqW07PV71GvmwpKwYX7L0GC1THa2/tkMuST/2mmxHmGWJkxQDzNSiAA==\",\n  \"_location\": \"/jquery-asGradient\",\n  \"_phantomChildren\": {},\n  \"_requested\": {\n    \"type\": \"range\",\n    \"registry\": true,\n    \"raw\": \"jquery-asGradient@^0.3.2\",\n    \"name\": \"jquery-asGradient\",\n    \"escapedName\": \"jquery-asGradient\",\n    \"rawSpec\": \"^0.3.2\",\n    \"saveSpec\": null,\n    \"fetchSpec\": \"^0.3.2\"\n  },\n  \"_requiredBy\": [\n    \"/jquery-asColorPicker\"\n  ],\n  \"_resolved\": \"https://registry.npmjs.org/jquery-asGradient/-/jquery-asGradient-0.3.3.tgz\",\n  \"_shasum\": \"89e69eae0242b53c8fe08563ae7bf47aa624f4f3\",\n  \"_spec\": \"jquery-asGradient@^0.3.2\",\n  \"_where\": \"D:\\\\themeforest\\\\adminX\\\\adminX\\\\node_modules\\\\jquery-asColorPicker\",\n  \"author\": {\n    \"name\": \"amazingSurge\",\n    \"email\": \"amazingSurge@gmail.com\",\n    \"url\": \"amazingSurge.com\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/amazingSurge/jquery-asGradient/issues\"\n  },\n  \"bundleDependencies\": false,\n  \"dependencies\": {\n    \"jquery\": \">=2.2.0\",\n    \"jquery-asColor\": \"^0.3.3\"\n  },\n  \"deprecated\": false,\n  \"description\": \"A jquery plugin used to manipulate css image gradient.\",\n  \"devDependencies\": {\n    \"assets-manager\": \"*\",\n    \"babel-core\": \"*\",\n    \"babel-eslint\": \"*\",\n    \"babel-istanbul\": \"*\",\n    \"babel-plugin-transform-es2015-modules-umd\": \"*\",\n    \"babel-preset-es2015\": \"*\",\n    \"babel-preset-es2015-rollup\": \"*\",\n    \"babelify\": \"*\",\n    \"browserify\": \"*\",\n    \"browserify-babel-istanbul\": \"*\",\n    \"chai\": \"*\",\n    \"del\": \"*\",\n    \"graceful-fs\": \"*\",\n    \"gulp\": \"github:gulpjs/gulp#4.0\",\n    \"gulp-autoprefixer\": \"*\",\n    \"gulp-babel\": \"*\",\n    \"gulp-changed\": \"*\",\n    \"gulp-eslint\": \"*\",\n    \"gulp-extname\": \"*\",\n    \"gulp-filter\": \"*\",\n    \"gulp-header\": \"*\",\n    \"gulp-iconfont-css\": \"*\",\n    \"gulp-if\": \"*\",\n    \"gulp-nf-prettier\": \"*\",\n    \"gulp-notify\": \"*\",\n    \"gulp-plumber\": \"*\",\n    \"gulp-rename\": \"*\",\n    \"gulp-replace\": \"*\",\n    \"gulp-rollup\": \"*\",\n    \"gulp-size\": \"*\",\n    \"gulp-sourcemaps\": \"*\",\n    \"gulp-uglify\": \"*\",\n    \"gulp-util\": \"*\",\n    \"gulp-zip\": \"*\",\n    \"inquirer\": \"*\",\n    \"isparta\": \"*\",\n    \"karma\": \"*\",\n    \"karma-babel-preprocessor\": \"*\",\n    \"karma-browserify\": \"*\",\n    \"karma-chrome-launcher\": \"*\",\n    \"karma-coverage\": \"*\",\n    \"karma-firefox-launcher\": \"*\",\n    \"karma-mocha\": \"*\",\n    \"karma-mocha-reporter\": \"*\",\n    \"karma-phantomjs-launcher\": \"*\",\n    \"karma-sinon-chai\": \"*\",\n    \"merge-stream\": \"*\",\n    \"mkdirp\": \"*\",\n    \"mocha\": \"*\",\n    \"node-notifier\": \"*\",\n    \"path-exists\": \"*\",\n    \"phantomjs-prebuilt\": \"*\",\n    \"prettier\": \"*\",\n    \"release-it\": \"*\",\n    \"rollup-plugin-babel\": \"*\",\n    \"semver\": \"*\",\n    \"sinon\": \"*\",\n    \"sinon-chai\": \"*\",\n    \"through2\": \"*\",\n    \"yargs\": \"*\"\n  },\n  \"engines\": {\n    \"node\": \">= 6.2.2\",\n    \"npm\": \">= 3\"\n  },\n  \"files\": [\n    \"dist\",\n    \"src\"\n  ],\n  \"homepage\": \"https://github.com/amazingSurge/jquery-asGradient\",\n  \"keywords\": [\n    \"jquery\",\n    \"jquery-plugin\",\n    \"ecosystem:jquery\",\n    \"ui\",\n    \"es6\",\n    \"Gradient\"\n  ],\n  \"license\": \"LGPL-3.0\",\n  \"licenses\": [\n    {\n      \"type\": \"LGPL-3.0\",\n      \"url\": \"https://github.com/amazingSurge/jquery-asGradient/blob/master/LICENSE\"\n    }\n  ],\n  \"main\": \"dist/jquery-asGradient.js\",\n  \"module\": \"dist/jquery-asGradient.es.js\",\n  \"name\": \"jquery-asGradient\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+ssh://git@github.com/amazingSurge/jquery-asGradient.git\"\n  },\n  \"scripts\": {\n    \"build\": \"npm run prestart && gulp build\",\n    \"deploy\": \"gulp deploy\",\n    \"deploy:prepare\": \"gulp deploy:prepare\",\n    \"prestart\": \"npm install\",\n    \"release\": \"gulp release\",\n    \"start\": \"gulp serve\",\n    \"test\": \"gulp test\"\n  },\n  \"title\": \"jQuery asGradient\",\n  \"version\": \"0.3.3\"\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/asGradient.js",
    "content": "import $ from 'jquery';\nimport DEFAULTS from './defaults';\nimport * as util from './util';\nimport GradientString from './gradientString';\nimport ColorStop from './colorStop';\nimport GradientTypes from './gradientTypes';\n\nclass AsGradient {\n  constructor(string, options) {\n    if (typeof string === 'object' && typeof options === 'undefined') {\n      options = string;\n      string = undefined;\n    }\n    this.value = {\n      angle: 0,\n      stops: []\n    };\n    this.options = $.extend(true, {}, DEFAULTS, options);\n\n    this._type = 'LINEAR';\n    this._prefix = null;\n    this.length = this.value.stops.length;\n    this.current = 0;\n    this._stopIdCount = 0;\n\n    this.init(string);\n  }\n\n  init(string) {\n    if (string) {\n      this.fromString(string);\n    }\n  }\n\n  val(value) {\n    if (typeof value === 'undefined') {\n      return this.toString();\n    } else {\n      this.fromString(value);\n      return this;\n    }\n  }\n\n  angle(value) {\n    if (typeof value === 'undefined') {\n      return this.value.angle;\n    } else {\n      this.value.angle = GradientString.parseAngle(value);\n      return this;\n    }\n  }\n\n  append(color, position) {\n    return this.insert(color, position, this.length);\n  }\n\n  reorder() {\n    if(this.length < 2){\n      return;\n    }\n\n    this.value.stops = this.value.stops.sort((a, b) => a.position - b.position);\n  }\n\n  insert(color, position, index) {\n    if (typeof index === 'undefined') {\n      index = this.current;\n    }\n\n    const stop = new ColorStop(color, position, this);\n\n    this.value.stops.splice(index, 0, stop);\n\n    this.length = this.length + 1;\n    this.current = index;\n    return stop;\n  }\n\n  getById(id) {\n    if(this.length > 0){\n      for(const i in this.value.stops){\n        if(id === this.value.stops[i].id){\n          return this.value.stops[i];\n        }\n      }\n    }\n    return false;\n  }\n\n  removeById(id) {\n    const index = this.getIndexById(id);\n    if(index){\n      this.remove(index);\n    }\n  }\n\n  getIndexById(id) {\n    let index = 0;\n    for(const i in this.value.stops){\n      if(id === this.value.stops[i].id){\n        return index;\n      }\n      index ++;\n    }\n    return false;\n  }\n\n  getCurrent() {\n    return this.value.stops[this.current];\n  }\n\n  setCurrentById(id) {\n    let index = 0;\n    for(const i in this.value.stops){\n      if(this.value.stops[i].id !== id){\n        index ++;\n      } else {\n        this.current = index;\n      }\n    }\n  }\n\n  get(index) {\n    if (typeof index === 'undefined') {\n      index = this.current;\n    }\n    if (index >= 0 && index < this.length) {\n      this.current = index;\n      return this.value.stops[index];\n    } else {\n      return false;\n    }\n  }\n\n  remove(index) {\n    if (typeof index === 'undefined') {\n      index = this.current;\n    }\n    if (index >= 0 && index < this.length) {\n      this.value.stops.splice(index, 1);\n      this.length = this.length - 1;\n      this.current = index - 1;\n    }\n  }\n\n  empty() {\n    this.value.stops = [];\n    this.length = 0;\n    this.current = 0;\n  }\n\n  reset() {\n    this.value._angle = 0;\n    this.empty();\n    this._prefix = null;\n    this._type = 'LINEAR';\n  }\n\n  type(type) {\n    if (typeof type === 'string' && (type = type.toUpperCase()) && typeof GradientTypes[type] !== 'undefined') {\n      this._type = type;\n      return this;\n    } else {\n      return this._type;\n    }\n  }\n\n  fromString(string) {\n    this.reset();\n\n    const result = GradientString.parseString(string);\n\n    if (result) {\n      this._prefix = result.prefix;\n      this.type(result.type);\n      if (result.value) {\n        this.value.angle = GradientString.parseAngle(result.value.angle, this._prefix !== null);\n\n        $.each(result.value.stops, (i, stop) => {\n          this.append(stop.color, stop.position);\n        });\n      }\n    }\n  }\n\n  toString(prefix) {\n    if(prefix === true){\n      prefix = util.getPrefix();\n    }\n    return GradientTypes[this.type()].to(this.value, this, prefix);\n  }\n\n  matchString(string) {\n    return GradientString.matchString(string);\n  }\n\n  toStringWithAngle(angle, prefix) {\n    const value = $.extend(true, {}, this.value);\n    value.angle = GradientString.parseAngle(angle);\n\n    if(prefix === true){\n      prefix = util.getPrefix();\n    }\n\n    return GradientTypes[this.type()].to(value, this, prefix);\n  }\n\n  getPrefixedStrings() {\n    const strings = [];\n    for (let i in this.options.prefixes) {\n      if(Object.hasOwnProperty.call(this.options.prefixes, i)){\n        strings.push(this.toString(this.options.prefixes[i]));\n      }\n    }\n    return strings;\n  }\n\n  static setDefaults(options) {\n    $.extend(true, DEFAULTS, $.isPlainObject(options) && options);\n  }\n}\n\nexport default AsGradient;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/colorStop.js",
    "content": "import Color from 'jquery-asColor';\nimport GradientString from './gradientString';\n\nexport default class ColorStop {\n  constructor(color, position, gradient) {\n    this.color = Color(color, gradient.options.color);\n    this.position = GradientString.parsePosition(position);\n    this.id = ++gradient._stopIdCount;\n    this.gradient = gradient;\n  }\n\n  setPosition(string) {\n    const position = GradientString.parsePosition(string);\n    if(this.position !== position){\n      this.position = position;\n      this.gradient.reorder();\n    }\n  }\n\n  setColor(string) {\n    this.color.fromString(string);\n  }\n\n  remove() {\n    this.gradient.removeById(this.id);\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/defaults.js",
    "content": "export default {\n  prefixes: ['-webkit-', '-moz-', '-ms-', '-o-'],\n  forceStandard: true,\n  angleUseKeyword: true,\n  emptyString: '',\n  degradationFormat: false,\n  cleanPosition: true,\n  color: {\n    format: false, // rgb, rgba, hsl, hsla, hex\n    hexUseName: false,\n    reduceAlpha: true,\n    shortenHex: true,\n    zeroAlphaAsTransparent: false,\n    invalidValue: {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 1\n    }\n  }\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/gradientString.js",
    "content": "import $ from 'jquery';\nimport * as util from './util';\nimport keywordAngleMap from './keywordAngleMap';\n\nconst angleKeywordMap = util.flip(keywordAngleMap);\n\nconst RegExpStrings = (() => {\n  const color = /(?:rgba|rgb|hsla|hsl)\\s*\\([\\s\\d\\.,%]+\\)|#[a-z0-9]{3,6}|[a-z]+/i;\n  const position = /\\d{1,3}%/i;\n  const angle = /(?:to ){0,1}(?:(?:top|left|right|bottom)\\s*){1,2}|\\d+deg/i;\n  const stop = new RegExp(`(${color.source})\\\\s*(${position.source}){0,1}`, 'i');\n  const stops = new RegExp(stop.source, 'gi');\n  const parameters = new RegExp(`(?:(${angle.source})){0,1}\\\\s*,{0,1}\\\\s*(.*?)\\\\s*`, 'i');\n  const full = new RegExp(`^(-webkit-|-moz-|-ms-|-o-){0,1}(linear|radial|repeating-linear)-gradient\\\\s*\\\\(\\\\s*(${parameters.source})\\\\s*\\\\)$`, 'i');\n\n  return {\n    FULL: full,\n    ANGLE: angle,\n    COLOR: color,\n    POSITION: position,\n    STOP: stop,\n    STOPS: stops,\n    PARAMETERS: new RegExp(`^${parameters.source}$`, 'i')\n  };\n})();\n\nexport default {\n  matchString: function(string) {\n    const matched = this.parseString(string);\n    if(matched && matched.value && matched.value.stops && matched.value.stops.length > 1){\n      return true;\n    }\n    return false;\n  },\n\n  parseString: function(string) {\n    string = $.trim(string);\n    let matched;\n    if ((matched = RegExpStrings.FULL.exec(string)) !== null) {\n      let value = this.parseParameters(matched[3]);\n\n      return {\n        prefix: (typeof matched[1] === 'undefined') ? null : matched[1],\n        type: matched[2],\n        value: value\n      };\n    } else {\n      return false;\n    }\n  },\n\n  parseParameters: function(string) {\n    let matched;\n    if ((matched = RegExpStrings.PARAMETERS.exec(string)) !== null) {\n      let stops = this.parseStops(matched[2]);\n      return {\n        angle: (typeof matched[1] === 'undefined') ? 0 : matched[1],\n        stops: stops\n      };\n    } else {\n      return false;\n    }\n  },\n\n  parseStops: function(string) {\n    let matched;\n    const result = [];\n    if ((matched = string.match(RegExpStrings.STOPS)) !== null) {\n\n      $.each(matched, (i, item) => {\n        const stop = this.parseStop(item);\n        if (stop) {\n          result.push(stop);\n        }\n      });\n      return result;\n    } else {\n      return false;\n    }\n  },\n\n  formatStops: function(stops, cleanPosition) {\n    let stop;\n    const output = [];\n    let positions = [];\n    const colors = [];\n    let position;\n\n    for (let i = 0; i < stops.length; i++) {\n      stop = stops[i];\n      if (typeof stop.position === 'undefined' || stop.position === null) {\n        if (i === 0) {\n          position = 0;\n        } else if (i === stops.length - 1) {\n          position = 1;\n        } else {\n          position = undefined;\n        }\n      } else {\n        position = stop.position;\n      }\n      positions.push(position);\n      colors.push(stop.color.toString());\n    }\n\n    positions = ((data => {\n      let start = null;\n      let average;\n      for (let i = 0; i < data.length; i++) {\n        if (isNaN(data[i])) {\n          if (start === null) {\n            start = i;\n            continue;\n          }\n        } else if (start) {\n          average = (data[i] - data[start - 1]) / (i - start + 1);\n          for (let j = start; j < i; j++) {\n            data[j] = data[start - 1] + (j - start + 1) * average;\n          }\n          start = null;\n        }\n      }\n\n      return data;\n    }))(positions);\n\n    for (let x = 0; x < stops.length; x++) {\n      if (cleanPosition && ((x === 0 && positions[x] === 0) || (x === stops.length - 1 && positions[x] === 1))) {\n        position = '';\n      } else {\n        position = ` ${this.formatPosition(positions[x])}`;\n      }\n\n      output.push(colors[x] + position);\n    }\n    return output.join(', ');\n  },\n\n  parseStop: function(string) {\n    let matched;\n    if ((matched = RegExpStrings.STOP.exec(string)) !== null) {\n      let position = this.parsePosition(matched[2]);\n\n      return {\n        color: matched[1],\n        position: position\n      };\n    } else {\n      return false;\n    }\n  },\n\n  parsePosition: function(string) {\n    if (typeof string === 'string' && string.substr(-1) === '%') {\n      string = parseFloat(string.slice(0, -1) / 100);\n    }\n\n    if(typeof string !== 'undefined' && string !== null) {\n      return parseFloat(string, 10);\n    } else {\n      return null;\n    }\n  },\n\n  formatPosition: function(value) {\n    return `${parseInt(value * 100, 10)}%`;\n  },\n\n  parseAngle: function(string, notStandard) {\n    if (typeof string === 'string' && string.includes('deg')) {\n      string = string.replace('deg', '');\n    }\n    if (!isNaN(string)) {\n      if (notStandard) {\n        string = this.fixOldAngle(string);\n      }\n    }\n    if (typeof string === 'string') {\n      const directions = string.split(' ');\n\n      const filtered = [];\n      for (const i in directions) {\n        if (util.isDirection(directions[i])) {\n          filtered.push(directions[i].toLowerCase());\n        }\n      }\n      let keyword = filtered.join(' ');\n\n      if (!string.includes('to ')) {\n        keyword = util.reverseDirection(keyword);\n      }\n      keyword = `to ${keyword}`;\n      if (keywordAngleMap.hasOwnProperty(keyword)) {\n        string = keywordAngleMap[keyword];\n      }\n    }\n    let value = parseFloat(string, 10);\n\n    if (value > 360) {\n      value %= 360;\n    } else if (value < 0) {\n      value %= -360;\n\n      if (value !== 0) {\n        value += 360;\n      }\n    }\n    return value;\n  },\n\n  fixOldAngle: function(value) {\n    value = parseFloat(value);\n    value = Math.abs(450 - value) % 360;\n    value = parseFloat(value.toFixed(3));\n    return value;\n  },\n\n  formatAngle: function(value, notStandard, useKeyword) {\n    value = parseInt(value, 10);\n    if (useKeyword && angleKeywordMap.hasOwnProperty(value)) {\n      value = angleKeywordMap[value];\n      if (notStandard) {\n        value = util.reverseDirection(value.substr(3));\n      }\n    } else {\n      if (notStandard) {\n        value = this.fixOldAngle(value);\n      }\n      value = `${value}deg`;\n    }\n\n    return value;\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/gradientTypes.js",
    "content": "import $ from 'jquery';\nimport GradientString from './gradientString';\n\nexport default {\n  LINEAR: {\n    parse(result) {\n      return {\n        r: (result[1].substr(-1) === '%') ? parseInt(result[1].slice(0, -1) * 2.55, 10) : parseInt(result[1], 10),\n        g: (result[2].substr(-1) === '%') ? parseInt(result[2].slice(0, -1) * 2.55, 10) : parseInt(result[2], 10),\n        b: (result[3].substr(-1) === '%') ? parseInt(result[3].slice(0, -1) * 2.55, 10) : parseInt(result[3], 10),\n        a: 1\n      };\n    },\n    to(gradient, instance, prefix) {\n      if (gradient.stops.length === 0) {\n        return instance.options.emptyString;\n      }\n      if (gradient.stops.length === 1) {\n        return gradient.stops[0].color.to(instance.options.degradationFormat);\n      }\n\n      let standard = instance.options.forceStandard;\n      let _prefix = instance._prefix;\n\n      if (!_prefix) {\n        standard = true;\n      }\n      if (prefix && -1 !== $.inArray(prefix, instance.options.prefixes)) {\n        standard = false;\n        _prefix = prefix;\n      }\n\n      const angle = GradientString.formatAngle(gradient.angle, !standard, instance.options.angleUseKeyword);\n      const stops = GradientString.formatStops(gradient.stops, instance.options.cleanPosition);\n\n      const output = `linear-gradient(${angle}, ${stops})`;\n      if (standard) {\n        return output;\n      } else {\n        return _prefix + output;\n      }\n    }\n  }\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/info.js",
    "content": "export default {\n  version:'0.3.3'\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/keywordAngleMap.js",
    "content": "export default {\n  'to top': 0,\n  'to right': 90,\n  'to bottom': 180,\n  'to left': 270,\n  'to right top': 45,\n  'to top right': 45,\n  'to bottom right': 135,\n  'to right bottom': 135,\n  'to left bottom': 225,\n  'to bottom left': 225,\n  'to top left': 315,\n  'to left top': 315\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/main.js",
    "content": "import $ from 'jquery';\nimport AsGradient from './asGradient';\nimport info from './info';\nimport GradientString from './gradientString';\n\nconst OtherAsGradient = $.asGradient;\n\nconst jQueryAsGradient = function(...args) {\n  return new AsGradient(...args);\n}\n\n$.asGradient = jQueryAsGradient;\n$.asGradient.Constructor = AsGradient;\n\n$.extend($.asGradient, {\n  setDefaults: AsGradient.setDefaults,\n  noConflict: function() {\n    $.asGradient = OtherAsGradient;\n    return jQueryAsGradient;\n  }\n}, GradientString, info);\n\nexport default $.asGradient;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/regExpStrings.js",
    "content": ""
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-asGradient/src/util.js",
    "content": "/* eslint no-extend-native: \"off\" */\nif (!String.prototype.includes) {\n  String.prototype.includes = function(search, start) {\n    'use strict';\n    if (typeof start !== 'number') {\n      start = 0;\n    }\n\n    if (start + search.length > this.length) {\n      return false;\n    }\n    return this.indexOf(search, start) !== -1;\n  };\n}\n\nexport function getPrefix() {\n  const ua = window.navigator.userAgent;\n  let prefix = '';\n  if (/MSIE/g.test(ua)) {\n    prefix = '-ms-';\n  } else if (/Firefox/g.test(ua)) {\n    prefix = '-moz-';\n  } else if (/(WebKit)/i.test(ua)) {\n    prefix = '-webkit-';\n  } else if (/Opera/g.test(ua)) {\n    prefix = '-o-';\n  }\n  return prefix;\n}\n\nexport function flip(o) {\n  const flipped = {};\n  for (const i in o) {\n    if (o.hasOwnProperty(i)) {\n      flipped[o[i]] = i;\n    }\n  }\n  return flipped;\n}\n\nexport function reverseDirection(direction) {\n  const mapping = {\n    'top': 'bottom',\n    'right': 'left',\n    'bottom': 'top',\n    'left': 'right',\n    'right top': 'left bottom',\n    'top right': 'bottom left',\n    'bottom right': 'top left',\n    'right bottom': 'left top',\n    'left bottom': 'right top',\n    'bottom left': 'top right',\n    'top left': 'bottom right',\n    'left top': 'right bottom'\n  };\n  return mapping.hasOwnProperty(direction) ? mapping[direction] : direction;\n}\n\nexport function isDirection(n) {\n  const reg = /^(top|left|right|bottom)$/i;\n  return reg.test(n);\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-minicolors/component.json",
    "content": "{\n  \"name\": \"jquery-minicolors\",\n  \"version\": \"2.2.6\",\n  \"description\": \"jQuery MiniColors Plugin\",\n  \"homepage\": \"\",\n  \"main\": [ \"./jquery.minicolors.js\", \"./jquery.minicolors.css\" ],\n  \"dependencies\": {\n    \"jquery\": \">= 1.7.x\"\n  },\n  \"keywords\": [\n    \"jquery\",\n    \"colorpicker\"\n  ],\n  \"author\": {\n    \"name\": \"Cory LaViska\",\n    \"web\": \"http://www.abeautifulsite.net/\"\n  },\n  \"license\": [\n    \"http://www.opensource.org/licenses/mit-license.php\"\n  ]\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-minicolors/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>jQuery MiniColors</title>\n  <meta charset=\"utf-8\">\n\n  <!-- jQuery -->\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"></script>\n\n  <!-- Bootstrap 3 -->\n  <link rel=\"stylesheet\" href=\"http://netdna.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css\">\n  <script src=\"http://netdna.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js\"></script>\n\n  <!-- MiniColors -->\n  <script src=\"jquery.minicolors.js\"></script>\n  <link rel=\"stylesheet\" href=\"jquery.minicolors.css\">\n\n  <style>\n    dl {\n      margin: 20px 0;\n    }\n    dt {\n      font-size: 120%;\n    }\n    dd {\n      padding: 10px 20px 20px 20px;\n    }\n    dd:last-child {\n      border-bottom: none;\n    }\n    code {\n      color: black;\n      border: none;\n      background: rgba(128, 128, 128, .1);\n    }\n    pre {\n      background: #f8f8f8;\n      border: none;\n      color: #333;\n      padding: 20px;\n    }\n    h2 {\n      margin-top: 50px;\n    }\n    h3 {\n      color: #aaa;\n    }\n    .jumbotron {\n      padding: 40px;\n    }\n    .jumbotron h1 {\n      margin-top: 0;\n    }\n    .jumbotron p:last-child {\n      margin-bottom: 0;\n    }\n  </style>\n\n  <script>\n    $(document).ready( function() {\n\n      $('.demo').each( function() {\n        //\n        // Dear reader, it's actually very easy to initialize MiniColors. For example:\n        //\n        //  $(selector).minicolors();\n        //\n        // The way I've done it below is just for the demo, so don't get confused\n        // by it. Also, data- attributes aren't supported at this time...they're\n        // only used for this demo.\n        //\n        $(this).minicolors({\n          control: $(this).attr('data-control') || 'hue',\n          defaultValue: $(this).attr('data-defaultValue') || '',\n          format: $(this).attr('data-format') || 'hex',\n          keywords: $(this).attr('data-keywords') || '',\n          inline: $(this).attr('data-inline') === 'true',\n          letterCase: $(this).attr('data-letterCase') || 'lowercase',\n          opacity: $(this).attr('data-opacity'),\n          position: $(this).attr('data-position') || 'bottom left',\n          swatches: $(this).attr('data-swatches') ? $(this).attr('data-swatches').split('|') : [],\n          change: function(value, opacity) {\n            if( !value ) return;\n            if( opacity ) value += ', ' + opacity;\n            if( typeof console === 'object' ) {\n              console.log(value);\n            }\n          },\n          theme: 'bootstrap'\n        });\n\n      });\n\n    });\n  </script>\n</head>\n<body>\n  <div class=\"row\" style=\"margin: 40px 40px;\">\n    <div class=\"col-12\">\n\n      <!-- Intro -->\n      <div id=\"intro\" class=\"jumbotron\">\n        <h1>jQuery MiniColors</h1>\n        <p class=\"text-muted\">\n          Now with Bootstrap 3 support!\n        </p>\n        <p>\n          A project by <a href=\"http://www.abeautifulsite.net/\">A Beautiful Site</a>,\n          originally developed for <a href=\"http://www.surrealcms.com/\">Surreal CMS</a>.\n        </p>\n      </div>\n\n      <!-- Contents -->\n      <h2 id=\"contents\">Contents</h2>\n      <ul>\n        <li><a href=\"#download\">Download</a></li>\n        <li><a href=\"#demos\">Demos</a></li>\n        <li><a href=\"#api\">API</a>\n          <ul>\n            <li><a href=\"#instantiation\">Instantiation</a></li>\n            <li><a href=\"#settings\">Settings</a></li>\n            <li><a href=\"#methods\">Methods</a></li>\n            <li><a href=\"#events\">Events</a></li>\n          </ul>\n        </li>\n        <li><a href=\"#license\">License</a></li>\n      </ul>\n\n      <!-- Download -->\n      <h2 id=\"download\">Download</h2>\n      <p>\n        This project is on GitHub. Feel free to post bug reports, feature requests, and code\n        improvements on the official project page.\n      </p>\n      <p>\n        <a href=\"https://github.com/claviska/jquery-minicolors\" class=\"btn btn-success\">Download on GitHub</a>\n      </p>\n\n      <!-- Demos -->\n      <h2 id=\"demos\">Demos</h2>\n      <p>\n        This is the main demo page, which uses <a href=\"http://getbootstrap.com/\">Bootstrap 3</a>,\n        but this plugin works without Bootstrap as well.\n      </p>\n      <p>\n        <a href=\"without-bootstrap.html\" class=\"btn btn-primary\">View Demo Without Bootstrap</a>\n      </p>\n\n      <!-- Control types -->\n      <h3>Control Types</h3>\n      <div class=\"well\">\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n\n            <div class=\"form-group\">\n              <label for=\"hue-demo\">Hue (default)</label>\n              <input type=\"text\" id=\"hue-demo\" class=\"form-control demo\" data-control=\"hue\" value=\"#ff6161\">\n            </div>\n            <div class=\"form-group\">\n              <label for=\"saturation-demo\">Saturation</label>\n              <input type=\"text\" id=\"saturation-demo\" class=\"form-control demo\" data-control=\"saturation\" value=\"#0088cc\">\n            </div>\n          </div>\n\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"brightness-demo\">Brightness</label>\n              <input type=\"text\" id=\"brightness-demo\" class=\"form-control demo\" data-control=\"brightness\" value=\"#00ffff\">\n            </div>\n            <div class=\"form-group\">\n              <label for=\"wheel-demo\">Wheel</label>\n              <input type=\"text\" id=\"wheel-demo\" class=\"form-control demo\" data-control=\"wheel\" value=\"#ff99ee\">\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Input modes -->\n      <h3>Input Modes</h3>\n      <div class=\"well\">\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"text-field\">Text field</label>\n              <br>\n              <input type=\"text\" id=\"text-field\" class=\"form-control demo\" value=\"#70c24a\">\n            </div>\n            <div class=\"form-group\">\n              <label for=\"hidden-input\">Hidden Input</label>\n              <br>\n              <input type=\"hidden\" id=\"hidden-input\" class=\"demo\" value=\"#db913d\">\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"inline\">Inline</label>\n              <br>\n              <input type=\"text\" id=\"inline\" class=\"form-control demo\" data-inline=\"true\" value=\"#4fc8db\">\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Positions -->\n      <h3>Positions</h3>\n      <div class=\"well\">\n        <p>\n          Valid positions include <code>bottom left</code>, <code>bottom right</code>, <code>top\n          left</code>, and <code>top right</code>.\n        </p>\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"position-bottom-left\">bottom left (default)</label>\n              <input type=\"text\" id=\"position-bottom-left\" class=\"form-control demo\" data-position=\"bottom left\" value=\"#0088cc\">\n            </div>\n            <div class=\"form-group\">\n              <label for=\"position-top-left\">top left</label>\n              <input type=\"text\" id=\"position-top-left\" class=\"form-control demo\" data-position=\"top left\" value=\"#0088cc\">\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"position-bottom-right\">bottom right</label>\n              <input type=\"text\" id=\"position-bottom-right\" class=\"form-control demo\" data-position=\"bottom right\" value=\"#0088cc\">\n            </div>\n            <div class=\"form-group\">\n              <label for=\"position-top-right\">top right</label>\n              <input type=\"text\" id=\"position-top-right\" class=\"form-control demo\" data-position=\"top right\" value=\"#0088cc\">\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n          </div>\n        </div>\n      </div>\n\n      <!-- RGB(A) -->\n      <h3>RGB(A)</h3>\n      <div class=\"well\">\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"rgb\">RGB</label>\n              <br>\n              <input type=\"text\" id=\"rgb\" class=\"form-control demo\" data-format=\"rgb\" value=\"rgb(33, 147, 58)\">\n              <span class=\"help-block\">\n                RGB input can be assigned by setting the <code>format</code> option\n                to <code>rgb</code>.\n              </span>\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"rgba\">RGBA</label>\n              <br>\n              <input type=\"text\" id=\"rgba\" class=\"form-control demo\" data-format=\"rgb\" data-opacity=\".5\" value=\"rgba(52, 64, 158, 0.5)\">\n              <span class=\"help-block\">\n                RGBA input can be assigned by setting the <code>format</code>\n                option to <code>rgb</code> and <code>opacity</code> option to\n                <code>true</code>.\n              </span>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- and more -->\n      <h3>&hellip;and more!</h3>\n      <div class=\"well\">\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"opacity\">Opacity</label>\n              <br>\n              <input type=\"text\" id=\"opacity\" class=\"form-control demo\" data-opacity=\".5\" value=\"#766fa8\">\n              <span class=\"help-block\">\n                Opacity can be assigned by including the <code>data-opacity</code>\n                attribute or by setting the <code>opacity</code> option to\n                <code>true</code>.\n              </span>\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"keywords\">Keywords</label>\n              <br>\n              <input type=\"text\" id=\"keywords\" class=\"form-control demo\" data-keywords=\"transparent, initial, inherit\" value=\"transparent\">\n              <span class=\"help-block\">\n                CSS-wide keywords can be assigned by setting the <code>keywords</code>\n                option to a comma-separated list of valid keywords: <code>transparent,\n                initial, inherit</code>.\n              </span>\n            </div>\n          </div>\n        </div>\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"default-value\">Default Value</label>\n              <br>\n              <input type=\"text\" id=\"default-value\" class=\"form-control demo\" data-defaultValue=\"#ff6600\">\n              <span class=\"help-block\">\n                This field has a default value assigned to it, so it will never be empty.\n              </span>\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"letter-case\">Letter Case</label>\n              <br>\n              <input type=\"text\" id=\"letter-case\" class=\"form-control demo\" data-letterCase=\"uppercase\" value=\"#abcdef\">\n              <span class=\"help-block\">\n                This field will always be uppercase.\n              </span>\n            </div>\n          </div>\n        </div>\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"input-group\">Input Groups</label>\n              <div class=\"input-group\">\n                <input type=\"text\" id=\"input-group\" class=\"form-control demo\" value=\"#ff0000\"/>\n                <span class=\"input-group-btn\">\n                  <button class=\"btn btn-default\" type=\"button\">Button</button>\n                </span>\n              </div>\n              <span class=\"help-block\">\n                Example using Bootstrap's input groups.\n              </span>\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"more-input-group\">More Input Groups</label>\n              <div class=\"input-group\">\n                <span class=\"input-group-addon\">Color</span>\n                <input type=\"text\" id=\"more-input-group\" class=\"form-control demo\" value=\"#ff0000\"/>\n                <span class=\"input-group-btn\">\n                  <button class=\"btn btn-default\" type=\"button\">Button</button>\n                </span>\n              </div>\n              <span class=\"help-block\">\n                Input group example with addon.\n              </span>\n            </div>\n          </div>\n        </div>\n        <div class=\"row\">\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"letter-case\">Swatches</label>\n              <br>\n              <input type=\"text\" id=\"swatches\" class=\"form-control demo\" data-swatches=\"#ef9a9a|#90caf9|#a5d6a7|#fff59d|#ffcc80|#bcaaa4|#eeeeee|#f44336|#2196f3|#4caf50|#ffeb3b|#ff9800|#795548|#9e9e9e\" value=\"#abcdef\">\n              <span class=\"help-block\">\n                Example with swatches.\n              </span>\n            </div>\n          </div>\n          <div class=\"col-lg-4 col-sm-4 col-12\">\n            <div class=\"form-group\">\n              <label for=\"letter-case\">Swatches and opacity</label>\n              <br>\n              <input type=\"text\" id=\"swatches\" class=\"form-control demo\" data-format=\"rgb\" data-opacity=\"1\" data-swatches=\"#fff|#000|#f00|#0f0|#00f|#ff0|rgba(0,0,255,0.5)\"  value=\"rgba(14, 206, 235, .5)\">\n              <span class=\"help-block\">\n                Example with swatches and opacity.\n              </span>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- API -->\n      <h2 id=\"api\">API</h2>\n\n      <!-- Instantiation -->\n      <h3 id=\"instantiation\">Instantiation</h3>\n      <p>\n        Instantiate like any other jQuery plugin:\n      </p>\n      <pre>$('INPUT.minicolors').minicolors(settings);</pre>\n\n      <!-- Settings -->\n      <h3 id=\"settings\">Settings</h3>\n\n      <p>\n        Default settings are as follows:\n      </p>\n<pre>\n$.minicolors = {\n  defaults: {\n    animationSpeed: 50,\n    animationEasing: 'swing',\n    change: null,\n    changeDelay: 0,\n    control: 'hue',\n    defaultValue: '',\n    format: 'hex',\n    hide: null,\n    hideSpeed: 100,\n    inline: false,\n    keywords: '',\n    letterCase: 'lowercase',\n    opacity: false,\n    position: 'bottom left',\n    show: null,\n    showSpeed: 100,\n    theme: 'default',\n    swatches: []\n  }\n};\n</pre>\n      <p>\n        For convenience, you can change default settings globally by assigning new values:\n      </p>\n<pre>\n$.minicolors.defaults.changeDelay = 200;\n</pre>\n      <p>\n        To change multiple properties at once, use <code>$.extend()</code>:\n      </p>\n<pre>\n$.minicolors.defaults = $.extend($.minicolors.defaults, {\n  changeDelay: 200,\n  letterCase: 'uppercase',\n  theme: 'bootstrap'\n});\n</pre>\n      <p class=\"alert alert-warning\">\n        <strong>Note:</strong> Changing default settings will <em>not</em> affect controls that\n        are already initialized.\n      </p>\n\n      <dl>\n        <dt>animationSpeed</dt>\n        <dd>\n          <p>\n            The animation speed of the sliders when the user taps or clicks a new color. Set to\n            <code>0</code> for no animation.\n          </p>\n        </dd>\n\n        <dt>animationEasing</dt>\n        <dd>\n          <p>\n            The easing to use when animating the sliders.\n          </p>\n        </dd>\n\n        <dt>changeDelay</dt>\n        <dd>\n          <p>\n            The time, in milliseconds, to defer the <code>change</code> event from firing while\n            the user makes a selection. This is useful for preventing the <code>change</code> event\n            from firing frequently as the user drags the color picker around.\n          </p>\n          <p>\n            The default value is <code>0</code> (no delay). If your <code>change</code> callback\n            features something resource-intensive (such as an AJAX request), you’ll probably want\n            to set this to at least <code>200</code>.\n          </p>\n        </dd>\n\n        <dt>control</dt>\n        <dd>\n          <p>\n            Determines the type of control. Valid options are <code>hue</code>, <code>brightness</code>,\n            <code>saturation</code>, and <code>wheel</code>.\n          </p>\n        </dd>\n\n        <dt>defaultValue</dt>\n        <dd>\n          <p>\n            To force a default color, set this to a valid hex string. When the user clears the\n            control, it will revert to this color.\n          </p>\n        </dd>\n\n        <dt>format</dt>\n        <dd>\n          <p>\n            The format miniColors should use. Valid options are <code>hex</code> and\n            <code>rgb</code>.\n          </p>\n        </dd>\n\n        <dt>hideSpeed &amp; showSpeed</dt>\n        <dd>\n          <p>\n            The speed at which to hide and show the color picker.\n          </p>\n        </dd>\n\n        <dt>inline</dt>\n        <dd>\n          <p>\n            Set to <code>true</code> to force the color picker to appear inline.\n          </p>\n        </dd>\n\n        <dt>keywords</dt>\n        <dd>\n          <p>\n            A comma-separated list of keywords that the control should accept (e.g. inherit,\n            transparent, initial). By default, no keywords are allowed.\n          </p>\n        </dd>\n\n        <dt>letterCase</dt>\n        <dd>\n          <p>\n            Determines the letter case of the hex code value. Valid options are <code>uppercase</code>\n            or <code>lowercase</code>.\n          </p>\n        </dd>\n\n        <dt>opacity</dt>\n        <dd>\n          <p>\n            Set to <code>true</code> to enable the opacity slider. (Use the input element's\n            <code>data-opacity</code> attribute to set a preset value.)\n          </p>\n        </dd>\n\n        <dt>position</dt>\n        <dd>\n          <p>\n            Sets the position of the dropdown. Valid options are <code>bottom left</code>,\n            <code>bottom right</code>, <code>top left</code>, and <code>top right</code>.\n          </p>\n          <p class=\"alert alert-warning\">\n            The <code>swatchPosition</code> setting has been removed in version 2.1. The position\n            of the swatch is now determined by <code>position</code>.\n          </p>\n        </dd>\n\n        <dt>theme</dt>\n        <dd>\n          <p>\n            A string containing the name of the custom theme to be applied. In your CSS, prefix\n            your selectors like this:\n          </p>\n<pre>\n.minicolors-theme-yourThemeName { ... }\n</pre>\n          <p>\n            If you are using the default theme, you will probably need to adjust the swatch\n            styles depending on your existing stylesheet rules. Version 2.1 removes as much\n            styling on the <code>input</code> element as possible, which means it’s up to\n            you to adjust your CSS to make sure the swatch aligns properly.\n          </p>\n          <p>\n            To adjust the swatch, override these styles:\n          </p>\n<pre>\n.minicolors-theme-default .minicolors-swatch {\n  top: 5px;\n  left: 5px;\n  width: 18px;\n  height: 18px;\n}\n.minicolors-theme-default.minicolors-position-right .minicolors-swatch {\n  left: auto;\n  right: 5px;\n}\n</pre>\n          </div>\n        </dd>\n\n        <dt>swatches</dt>\n        <dd>\n          <p>\n            An array containing some colors, in either rgb(a) or hex format, that will\n            show up under the main color grid.\n          </p>\n        </dd>\n      </dl>\n\n      <!-- Methods -->\n      <h3 id=\"methods\">Methods</h3>\n      <p>Use this syntax for calling methods:</p>\n      <pre>$(<em>selector</em>).minicolors('method', <em>[data]</em>);</pre>\n      <dl>\n        <dt>create</dt>\n        <dd>\n          <p>\n            Initializes the control for all items matching your selector. This is the default\n            method, so <code>data</code> may be passed in as the only argument.\n          </p>\n          <p>\n            To set a preset color value, populate the <code>value</code> attribute of the original\n            input element.\n          </p>\n        </dd>\n\n        <dt>destroy</dt>\n        <dd>\n          <p>\n            Returns the <em>input</em> element to its original, uninitialized state.\n          </p>\n        </dd>\n\n        <dt>opacity</dt>\n        <dd>\n          <p>\n            Gets or sets a control's opacity level. To use this method as a setter, pass data in\n            as a value between 0 and 1. (You can also obtain this value by checking the input\n            element's <code>data-opacity</code> attribute.)\n          </p>\n          <p>\n            To set a preset opacity value, populate the <code>data-opacity</code> attribute of the\n            original input element.\n          </p>\n        </dd>\n\n        <dt>rgbObject</dt>\n        <dd>\n          <p>\n            Returns an object containing red, green, blue, and alpha properties that correspond to\n            the control's current value. Example:\n          </p>\n          <pre>{ r: 0, g: 82, b: 148, a: 0.75 }</pre>\n        </dd>\n\n        <dt>rgbString &amp; rgbaString</dt>\n        <dd>\n          <p>\n            Returns an RGB or RGBA string suitable for use in your CSS. Examples:\n          </p>\n<pre>\nrgb(0, 82, 148)\nrgba(0, 82, 148, .75)\n</pre>\n        </dd>\n\n        <dt>settings</dt>\n        <dd>\n          <p>\n            Gets or sets a control's settings. If new settings are passed in, the control will\n            destroy and re-initialize itself with any new settings overriding the old ones.\n          </p>\n        </dd>\n\n        <dt>value</dt>\n        <dd>\n          <p>\n            Gets or sets a control's color value. To use this method as a setter, pass\n            in a color string or an object (ex: <code>{color: '#fc0', opacity: .5}</code>).\n          </p>\n        </dd>\n      </dl>\n\n      <!-- Events -->\n      <h3 id=\"events\">Events</h3>\n      <dl>\n        <dt>change</dt>\n        <dd>\n          <p>Fires when the value of the color picker changes. The <code>this</code> keyword will reference the original input element.\n<pre>\n$(<em>selector</em>).minicolors({\n  change: function(value, opacity) {\n    console.log(value + ' - ' + opacity);\n  }\n});\n</pre>\n          <p class=\"alert alert-warning\">\n            <strong>Warning!</strong> This event will fire a lot when the user drags the\n            color picker around. Use the <code>changeDelay</code> setting to reduce its\n            frequency.\n          </p>\n        </dd>\n\n        <dt>hide</dt>\n        <dd>\n          <p>\n            Fires when the color picker is hidden. The <code>this</code> keyword will reference\n            the original input element.\n          </p>\n<pre>\n$(<em>selector</em>).minicolors({\n  hide: function() {\n  console.log('Hide event triggered!');\n  }\n});\n</pre>\n        </dd>\n\n        <dt>show</dt>\n        <dd>\n          <p>\n            Fires when the color picker is shown. The <code>this</code> keyword will reference\n            the original input element.\n          </p>\n<pre>\n$(<em>selector</em>).minicolors({\n  show: function() {\n    console.log('Show event triggered!');\n  }\n});\n</pre>\n        </dd>\n      </dl>\n\n      <h2 id=\"license\">License</h2>\n      <p>\n        Licensed under the <a href=\"http://opensource.org/licenses/MIT\">MIT license</a>,\n        same as <a href=\"https://jquery.org/license/\">jQuery</a>.\n      </p>\n      <p>\n        &copy;2013 <a href=\"http://www.abeautifulsite.net/\">A Beautiful Site, LLC.</a>\n      </p>\n    </div>\n  </div>\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-minicolors/jquery.minicolors.css",
    "content": ".minicolors {\n  position: relative;\n}\n\n.minicolors-sprite {\n  background-image: url(jquery.minicolors.png);\n}\n\n.minicolors-swatch {\n  position: absolute;\n  vertical-align: middle;\n  background-position: -80px 0;\n  border: solid 1px #ccc;\n  cursor: text;\n  padding: 0;\n  margin: 0;\n  display: inline-block;\n}\n\n.minicolors-swatch-color {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n}\n\n.minicolors input[type=hidden] + .minicolors-swatch {\n  width: 28px;\n  position: static;\n  cursor: pointer;\n}\n\n.minicolors input[type=hidden][disabled] + .minicolors-swatch {\n  cursor: default;\n}\n\n/* Panel */\n.minicolors-panel {\n  position: absolute;\n  width: 173px;\n  background: white;\n  border: solid 1px #CCC;\n  box-shadow: 0 0 20px rgba(0, 0, 0, .2);\n  z-index: 99999;\n  box-sizing: content-box;\n  display: none;\n}\n\n.minicolors-panel.minicolors-visible {\n  display: block;\n}\n\n/* Panel positioning */\n.minicolors-position-top .minicolors-panel {\n  top: -154px;\n}\n\n.minicolors-position-right .minicolors-panel {\n  right: 0;\n}\n\n.minicolors-position-bottom .minicolors-panel {\n  top: auto;\n}\n\n.minicolors-position-left .minicolors-panel {\n  left: 0;\n}\n\n.minicolors-with-opacity .minicolors-panel {\n  width: 194px;\n}\n\n.minicolors .minicolors-grid {\n  position: relative;\n  top: 1px;\n  left: 1px;\n  width: 150px;\n  height: 150px;\n  background-position: -120px 0;\n  cursor: crosshair;\n}\n\n.minicolors .minicolors-grid-inner {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 150px;\n  height: 150px;\n}\n\n.minicolors-slider-saturation .minicolors-grid {\n  background-position: -420px 0;\n}\n\n.minicolors-slider-saturation .minicolors-grid-inner {\n  background-position: -270px 0;\n  background-image: inherit;\n}\n\n.minicolors-slider-brightness .minicolors-grid {\n  background-position: -570px 0;\n}\n\n.minicolors-slider-brightness .minicolors-grid-inner {\n  background-color: black;\n}\n\n.minicolors-slider-wheel .minicolors-grid {\n  background-position: -720px 0;\n}\n\n.minicolors-slider,\n.minicolors-opacity-slider {\n  position: absolute;\n  top: 1px;\n  left: 152px;\n  width: 20px;\n  height: 150px;\n  background-color: white;\n  background-position: 0 0;\n  cursor: row-resize;\n}\n\n.minicolors-slider-saturation .minicolors-slider {\n  background-position: -60px 0;\n}\n\n.minicolors-slider-brightness .minicolors-slider {\n  background-position: -20px 0;\n}\n\n.minicolors-slider-wheel .minicolors-slider {\n  background-position: -20px 0;\n}\n\n.minicolors-opacity-slider {\n  left: 173px;\n  background-position: -40px 0;\n  display: none;\n}\n\n.minicolors-with-opacity .minicolors-opacity-slider {\n  display: block;\n}\n\n/* Pickers */\n.minicolors-grid .minicolors-picker {\n  position: absolute;\n  top: 70px;\n  left: 70px;\n  width: 12px;\n  height: 12px;\n  border: solid 1px black;\n  border-radius: 10px;\n  margin-top: -6px;\n  margin-left: -6px;\n  background: none;\n}\n\n.minicolors-grid .minicolors-picker > div {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 8px;\n  height: 8px;\n  border-radius: 8px;\n  border: solid 2px white;\n  box-sizing: content-box;\n}\n\n.minicolors-picker {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 18px;\n  height: 2px;\n  background: white;\n  border: solid 1px black;\n  margin-top: -2px;\n  box-sizing: content-box;\n}\n\n/* Swatches */\n.minicolors-swatches,\n.minicolors-swatches li {\n  margin: 5px 0 3px 5px;\n  padding: 0;\n  list-style: none;\n  overflow: hidden;\n}\n\n.minicolors-swatches .minicolors-swatch {\n  position: relative;\n  float: left;\n  cursor: pointer;\n  margin:0 4px 0 0;\n}\n\n.minicolors-with-opacity .minicolors-swatches .minicolors-swatch {\n  margin-right: 7px;\n}\n\n.minicolors-swatch.selected {\n  border-color: #000;\n}\n\n/* Inline controls */\n.minicolors-inline {\n  display: inline-block;\n}\n\n.minicolors-inline .minicolors-input {\n  display: none !important;\n}\n\n.minicolors-inline .minicolors-panel {\n  position: relative;\n  top: auto;\n  left: auto;\n  box-shadow: none;\n  z-index: auto;\n  display: inline-block;\n}\n\n/* Default theme */\n.minicolors-theme-default .minicolors-swatch {\n  top: 5px;\n  left: 5px;\n  width: 18px;\n  height: 18px;\n}\n.minicolors-theme-default .minicolors-swatches .minicolors-swatch {\n  margin-bottom: 2px;\n  top: 0;\n  left: 0;\n  width: 18px;\n  height: 18px;\n}\n.minicolors-theme-default.minicolors-position-right .minicolors-swatch {\n  left: auto;\n  right: 5px;\n}\n.minicolors-theme-default.minicolors {\n  width: auto;\n  display: inline-block;\n}\n.minicolors-theme-default .minicolors-input {\n  height: 20px;\n  width: auto;\n  display: inline-block;\n  padding-left: 26px;\n}\n.minicolors-theme-default.minicolors-position-right .minicolors-input {\n  padding-right: 26px;\n  padding-left: inherit;\n}\n\n/* Bootstrap theme */\n.minicolors-theme-bootstrap .minicolors-swatch {\n  z-index: 2;\n  top: 3px;\n  left: 3px;\n  width: 28px;\n  height: 28px;\n  border-radius: 3px;\n}\n.minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch {\n  margin-bottom: 2px;\n  top: 0;\n  left: 0;\n  width: 20px;\n  height: 20px;\n}\n.minicolors-theme-bootstrap .minicolors-swatch-color {\n  border-radius: inherit;\n}\n.minicolors-theme-bootstrap.minicolors-position-right > .minicolors-swatch {\n  left: auto;\n  right: 3px;\n}\n.minicolors-theme-bootstrap .minicolors-input {\n  float: none;\n  padding-left: 44px;\n}\n.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input {\n  padding-right: 44px;\n  padding-left: 12px;\n}\n.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {\n  top: 4px;\n  left: 4px;\n  width: 37px;\n  height: 37px;\n  border-radius: 5px;\n}\n.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {\n  width: 24px;\n  height: 24px;\n}\n.minicolors-theme-bootstrap .minicolors-input.input-xs + .minicolors-swatch {\n  width: 18px;\n  height: 18px;\n}\n.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n/* Semantic Ui theme */\n.minicolors-theme-semanticui .minicolors-swatch {\n  top: 0;\n  left: 0;\n  padding: 18px;\n}\n.minicolors-theme-semanticui input {\n  text-indent: 30px;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-minicolors/without-bootstrap.html",
    "content": "<!doctype html>\n<html>\n<head>\n  <title>jQuery MiniColors</title>\n  <meta charset=\"utf-8\">\n\n  <!-- jQuery -->\n  <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"></script>\n\n  <!-- MiniColors -->\n  <script src=\"jquery.minicolors.js\"></script>\n  <link rel=\"stylesheet\" href=\"jquery.minicolors.css\">\n\n  <style>\n    body {\n      font: 16px sans-serif;\n      line-height: 1.8;\n      padding: 0 40px;\n      margin-bottom: 200px;\n    }\n    a {\n      color: #08c;\n      text-decoration: none;\n    }\n    a:hover {\n      text-decoration: underline;\n    }\n    .form-group {\n      margin: 20px 0;\n    }\n    label {\n      color: #888;\n    }\n  </style>\n\n  <script>\n    $(document).ready( function() {\n\n      $('.demo').each( function() {\n        //\n        // Dear reader, it's actually very easy to initialize MiniColors. For example:\n        //\n        //  $(selector).minicolors();\n        //\n        // The way I've done it below is just for the demo, so don't get confused\n        // by it. Also, data- attributes aren't supported at this time. Again,\n        // they're only used for the purposes of this demo.\n        //\n        $(this).minicolors({\n          control: $(this).attr('data-control') || 'hue',\n          defaultValue: $(this).attr('data-defaultValue') || '',\n          format: $(this).attr('data-format') || 'hex',\n          keywords: $(this).attr('data-keywords') || '',\n          inline: $(this).attr('data-inline') === 'true',\n          letterCase: $(this).attr('data-letterCase') || 'lowercase',\n          opacity: $(this).attr('data-opacity'),\n          position: $(this).attr('data-position') || 'bottom left',\n          swatches: $(this).attr('data-swatches') ? $(this).attr('data-swatches').split('|') : [],\n          change: function(hex, opacity) {\n            var log;\n            try {\n              log = hex ? hex : 'transparent';\n              if( opacity ) log += ', ' + opacity;\n              console.log(log);\n            } catch(e) {}\n          },\n          theme: 'default'\n        });\n\n      });\n\n    });\n  </script>\n</head>\n<body>\n\n  <h1>MiniColors Demo (without Bootstrap)</h1>\n  <p>\n    <a href=\"index.html\">&laquo; Back to the Bootstrap demo</a>\n  </p>\n\n  <!-- Control Types -->\n  <h3>Control Types</h3>\n  <div class=\"form-group\">\n    <label for=\"hue-demo\">Hue (default)</label>\n    <input type=\"text\" id=\"hue-demo\" class=\"demo\" data-control=\"hue\" value=\"#ff6161\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"saturation-demo\">Saturation</label>\n    <input type=\"text\" id=\"saturation-demo\" class=\"demo\" data-control=\"saturation\" value=\"#0088cc\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"brightness-demo\">Brightness</label>\n    <input type=\"text\" id=\"brightness-demo\" class=\"demo\" data-control=\"brightness\" value=\"#00ffff\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"wheel-demo\">Wheel</label>\n    <input type=\"text\" id=\"wheel-demo\" class=\"demo\" data-control=\"wheel\" value=\"#ff99ee\">\n  </div>\n\n  <!-- Input modes -->\n  <h3>Input Modes</h3>\n  <div class=\"form-group\">\n    <label for=\"text-field\">Text field</label>\n    <br>\n    <input type=\"text\" id=\"text-field\" class=\"demo\" value=\"#70c24a\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"hidden-input\">Hidden Input</label>\n    <br>\n    <input type=\"hidden\" id=\"hidden-input\" class=\"demo\" value=\"#db913d\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"inline\">Inline</label>\n    <br>\n    <input type=\"text\" id=\"inline\" class=\"demo\" data-inline=\"true\" value=\"#4fc8db\">\n  </div>\n\n  <!-- Positions -->\n  <h3>Positions</h3>\n  <div class=\"form-group\">\n    <label for=\"position-bottom-left\">bottom left (default)</label>\n    <input type=\"text\" id=\"position-bottom-left\" class=\"demo\" data-position=\"bottom left\" value=\"#0088cc\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"position-top-left\">top left</label>\n    <input type=\"text\" id=\"position-top-left\" class=\"demo\" data-position=\"top left\" value=\"#0088cc\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"position-bottom-right\">bottom right</label>\n    <input type=\"text\" id=\"position-bottom-right\" class=\"demo\" data-position=\"bottom right\" value=\"#0088cc\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"position-top-right\">top right</label>\n    <input type=\"text\" id=\"position-top-right\" class=\"demo\" data-position=\"top right\" value=\"#0088cc\">\n  </div>\n\n  <!-- RGB(A) -->\n  <h3>RGB(A)</h3>\n  <div class=\"form-group\">\n    <label for=\"rgb\">rgb</label>\n    <br>\n    <input type=\"text\" id=\"rgb\" class=\"demo\" data-format=\"rgb\" value=\"rgb(33, 147, 58)\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"rgba\">rgb(a)</label>\n    <br>\n    <input type=\"text\" id=\"rgba\" class=\"demo\" data-format=\"rgb\" data-opacity=\".5\" value=\"rgba(52, 64, 158, 0.5)\">\n  </div>\n\n  <!-- and more -->\n  <h3>&hellip;and more!</h3>\n  <div class=\"form-group\">\n    <label for=\"opacity\">Opacity</label>\n    <br>\n    <input type=\"text\" id=\"opacity\" class=\"demo\" data-opacity=\".5\" value=\"#766fa8\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"keywords\">Keywords</label>\n    <br>\n    <input type=\"text\" id=\"keywords\" class=\"demo\" data-keywords=\"transparent, inherit, initial\" value=\"transparent\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"default-value\">Default Value</label>\n    <br>\n    <input type=\"text\" id=\"default-value\" class=\"demo\" data-defaultValue=\"#ff6600\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"letter-case\">Letter Case</label>\n    <br>\n    <input type=\"text\" id=\"letter-case\" class=\"demo\" data-letterCase=\"uppercase\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"letter-case\">Swatches</label>\n    <br>\n    <input type=\"text\" id=\"swatches\" class=\"demo\" data-swatches=\"#ef9a9a|#90caf9|#a5d6a7|#fff59d|#ffcc80|#bcaaa4|#eeeeee|#f44336|#2196f3|#4caf50|#ffeb3b|#ff9800|#795548|#9e9e9e\" value=\"#f00\">\n  </div>\n  <div class=\"form-group\">\n    <label for=\"letter-case\">Swatches and opacity</label>\n    <br>\n    <input type=\"text\" id=\"swatches-opacity\" class=\"demo\" data-format=\"rgb\" data-opacity=\"1\" data-swatches=\"#fff|#000|#f00|#0f0|#00f|#ff0|rgba(0,0,255,0.5)\" value=\"#f00\">\n  </div>\n\n</body>\n</html>\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-steps/LICENSE.txt",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 Rafael J. Staib\n\nPermission is hereby granted, free of charge, to any person obtaining a copy \nof this software and associated documentation files (the \"Software\"), to deal \nin the Software without restriction, including without limitation the rights \nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell \ncopies of the Software, and to permit persons to whom the Software is \nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in \nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN \nTHE SOFTWARE.\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-steps/jquery.steps.css",
    "content": "/*\n    Common \n*/\n\n.wizard,\n.tabcontrol\n{\n    display: block;\n    width: 100%;\n    overflow: hidden;\n}\n\n.wizard a,\n.tabcontrol a\n{\n    outline: 0;\n}\n\n.wizard ul,\n.tabcontrol ul\n{\n    list-style: none !important;\n    padding: 0;\n    margin: 0;\n}\n\n.wizard ul > li,\n.tabcontrol ul > li\n{\n    display: block;\n    padding: 0;\n}\n\n/* Accessibility */\n.wizard > .steps .current-info,\n.tabcontrol > .steps .current-info\n{\n    position: absolute;\n    left: -999em;\n}\n\n.wizard > .content > .title,\n.tabcontrol > .content > .title\n{\n    position: absolute;\n    left: -999em;\n}\n\n\n\n/*\n    Wizard\n*/\n\n.wizard > .steps\n{\n    position: relative;\n    display: block;\n    width: 100%;\n}\n\n.wizard.vertical > .steps\n{\n    display: inline;\n    float: left;\n    width: 30%;\n}\n\n.wizard > .steps .number\n{\n    font-size: 1.429em;\n}\n\n.wizard > .steps > ul > li\n{\n    width: 25%;\n}\n\n.wizard > .steps > ul > li,\n.wizard > .actions > ul > li\n{\n    float: left;\n}\n\n.wizard.vertical > .steps > ul > li\n{\n    float: none;\n    width: 100%;\n}\n\n.wizard > .steps a,\n.wizard > .steps a:hover,\n.wizard > .steps a:active\n{\n    display: block;\n    width: auto;\n    margin: 0 0.5em 0.5em;\n    padding: 1em 1em;\n    text-decoration: none;\n\n    -webkit-border-radius: 5px;\n    -moz-border-radius: 5px;\n    border-radius: 5px;\n}\n\n.wizard > .steps .disabled a,\n.wizard > .steps .disabled a:hover,\n.wizard > .steps .disabled a:active\n{\n    background: #eee;\n    color: #aaa;\n    cursor: default;\n}\n\n.wizard > .steps .current a,\n.wizard > .steps .current a:hover,\n.wizard > .steps .current a:active\n{\n    background: #2962FF;\n    color: #fff;\n    cursor: default;\n}\n\n.wizard > .steps .done a,\n.wizard > .steps .done a:hover,\n.wizard > .steps .done a:active\n{\n    background: #9dc8e2;\n    color: #fff;\n}\n\n.wizard > .steps .error a,\n.wizard > .steps .error a:hover,\n.wizard > .steps .error a:active\n{\n    background: #ff3111;\n    color: #fff;\n}\n\n.wizard > .content\n{\n    background: #eee;\n    display: block;\n    margin: 0.5em;\n    overflow: hidden;\n    position: relative;\n    width: auto;\n\n    -webkit-border-radius: 5px;\n    -moz-border-radius: 5px;\n    border-radius: 5px;\n}\n\n.wizard.vertical > .content\n{\n    display: inline;\n    float: left;\n    margin: 0 2.5% 0.5em 2.5%;\n    width: 65%;\n}\n\n.wizard > .content > .body\n{\n    float: left;\n   \n    width: 100%;\n    height: 95%;\n    padding: 2.5%;\n}\n\n.wizard > .content > .body ul\n{\n    list-style: disc !important;\n}\n\n.wizard > .content > .body ul > li\n{\n    display: list-item;\n}\n\n.wizard > .content > .body > iframe\n{\n    border: 0 none;\n    width: 100%;\n    height: 100%;\n}\n\n.wizard > .content > .body input\n{\n    display: block;\n    \n}\n\n.wizard > .content > .body input[type=\"checkbox\"]\n{\n    display: inline-block;\n}\n\n.wizard > .content > .body input.error\n{\n    background: rgb(251, 227, 228);\n    border: 1px solid #fbc2c4;\n    color: #8a1f11;\n}\n\n.wizard > .content > .body label\n{\n    display: inline-block;\n    margin-bottom: 0.5em;\n}\n\n.wizard > .content > .body label.error\n{\n    color: #8a1f11;\n    display: inline-block;\n    margin-left: 1.5em;\n}\n\n.wizard > .actions\n{\n    position: relative;\n    display: block;\n    text-align: right;\n    width: 100%;\n}\n\n.wizard.vertical > .actions\n{\n    display: inline;\n    float: right;\n    margin: 0 2.5%;\n    width: 95%;\n}\n\n.wizard > .actions > ul\n{\n    display: inline-block;\n    text-align: right;\n}\n\n.wizard > .actions > ul > li\n{\n    margin: 0 0.5em;\n}\n\n.wizard.vertical > .actions > ul > li\n{\n    margin: 0 0 0 1em;\n}\n\n.wizard > .actions a,\n.wizard > .actions a:hover,\n.wizard > .actions a:active\n{\n    background: #2962FF;\n    color: #fff;\n    display: block;\n    padding: 0.5em 1em;\n    text-decoration: none;\n\n    -webkit-border-radius: 5px;\n    -moz-border-radius: 5px;\n    border-radius: 5px;\n}\n\n.wizard > .actions .disabled a,\n.wizard > .actions .disabled a:hover,\n.wizard > .actions .disabled a:active\n{\n    background: #eee;\n    color: #aaa;\n}\n\n.wizard > .loading\n{\n}\n\n.wizard > .loading .spinner\n{\n}\n\n\n\n/*\n    Tabcontrol\n*/\n\n.tabcontrol > .steps\n{\n    position: relative;\n    display: block;\n    width: 100%;\n}\n\n.tabcontrol > .steps > ul\n{\n    position: relative;\n    margin: 6px 0 0 0;\n    top: 1px;\n    z-index: 1;\n}\n\n.tabcontrol > .steps > ul > li\n{\n    float: left;\n    margin: 5px 2px 0 0;\n    padding: 1px;\n\n    -webkit-border-top-left-radius: 5px;\n    -webkit-border-top-right-radius: 5px;\n    -moz-border-radius-topleft: 5px;\n    -moz-border-radius-topright: 5px;\n    border-top-left-radius: 5px;\n    border-top-right-radius: 5px;\n}\n\n.tabcontrol > .steps > ul > li:hover\n{\n    background: #edecec;\n    border: 1px solid #bbb;\n    padding: 0;\n}\n\n.tabcontrol > .steps > ul > li.current\n{\n    background: #fff;\n    border: 1px solid #bbb;\n    border-bottom: 0 none;\n    padding: 0 0 1px 0;\n    margin-top: 0;\n}\n\n.tabcontrol > .steps > ul > li > a\n{\n    color: #5f5f5f;\n    display: inline-block;\n    border: 0 none;\n    margin: 0;\n    padding: 10px 30px;\n    text-decoration: none;\n}\n\n.tabcontrol > .steps > ul > li > a:hover\n{\n    text-decoration: none;\n}\n\n.tabcontrol > .steps > ul > li.current > a\n{\n    padding: 15px 30px 10px 30px;\n}\n\n.tabcontrol > .content\n{\n    position: relative;\n    display: inline-block;\n    width: 100%;\n    height: 35em;\n    overflow: hidden;\n    border-top: 1px solid #bbb;\n    padding-top: 20px;\n}\n\n.tabcontrol > .content > .body\n{\n    float: left;\n    position: absolute;\n    width: 95%;\n    height: 95%;\n    padding: 2.5%;\n}\n\n.tabcontrol > .content > .body ul\n{\n    list-style: disc !important;\n}\n\n.tabcontrol > .content > .body ul > li\n{\n    display: list-item;\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-steps/lib/jquery.cookie-1.3.1.js",
    "content": "/*!\n * jQuery Cookie Plugin v1.3.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2013 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as anonymous module.\n\t\tdefine(['jquery'], factory);\n\t} else {\n\t\t// Browser globals.\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction raw(s) {\n\t\treturn s;\n\t}\n\n\tfunction decoded(s) {\n\t\treturn decodeURIComponent(s.replace(pluses, ' '));\n\t}\n\n\tfunction converted(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\t\ttry {\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(er) {}\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// write\n\t\tif (value !== undefined) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setDate(t.getDate() + days);\n\t\t\t}\n\n\t\t\tvalue = config.json ? JSON.stringify(value) : String(value);\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tconfig.raw ? key : encodeURIComponent(key),\n\t\t\t\t'=',\n\t\t\t\tconfig.raw ? value : encodeURIComponent(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// read\n\t\tvar decode = config.raw ? raw : decoded;\n\t\tvar cookies = document.cookie.split('; ');\n\t\tvar result = key ? undefined : {};\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = decode(parts.join('='));\n\n\t\t\tif (key && key === name) {\n\t\t\t\tresult = converted(cookie);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!key) {\n\t\t\t\tresult[name] = converted(cookie);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) !== undefined) {\n\t\t\t// Must not alter options, thus extending a fresh object...\n\t\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n}));\n\n"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-steps/nuget/jQuery.Steps.nuspec",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd\">\n    <metadata>\n        <id>jQuery.Steps</id>\n        <version>$version$</version>\n        <title>jQuery Steps</title>\n        <authors>Rafael Staib</authors>\n        <owners>r_staib</owners>\n        <licenseUrl>https://github.com/rstaib/jquery-steps/blob/master/LICENSE.txt</licenseUrl>\n        <projectUrl>http://www.jquery-steps.com</projectUrl>\n\t\t<iconUrl>http://www.jquery-steps.com/icon.png</iconUrl>\n        <requireLicenseAcceptance>true</requireLicenseAcceptance>\n        <description>An all-in-one wizard plugin that is extremely flexible, compact and feature-rich.</description>\n        <summary>An all-in-one wizard plugin that is extremely flexible, compact and feature-rich.</summary>\n        <copyright>� Copyright 2014, Rafael Staib</copyright>\n        <tags>jQuery, Accessibility, Forms, HTML5, Navigation, Steps, Tabs, UI, Validation, Wizard</tags>\n        <dependencies>\n            <dependency id=\"jQuery\" version=\"1.10.2\" />\n        </dependencies>\n    </metadata>\n    <files>\n        <file src=\"..\\build\\*.js\" target=\"Content\\Scripts\" />\n        <file src=\"..\\demo\\css\\jquery.steps.css\" target=\"Content\\Content\" />\n    </files>\n</package>"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-steps/steps.css",
    "content": "/*\nTemplate Name: Matrix Admin\nAuthor: Themedesigner\nEmail: niravjoshi87@gmail.com\nFile: css\n*/\n\n.wizard-content .wizard>.steps>ul>li:after,\n.wizard-content .wizard>.steps>ul>li:before {\n    content: '';\n    z-index: 9;\n    display: block;\n    position: absolute\n}\n\n.wizard-content .wizard {\n    width: 100%;\n    overflow: hidden\n}\n\n.wizard-content .wizard .content {\n    margin-left: 0!important\n}\n\n.wizard-content .wizard>.steps {\n    position: relative;\n    display: block;\n    width: 100%\n}\n\n.wizard-content .wizard>.steps .current-info {\n    position: absolute;\n    left: -99999px\n}\n.wizard-content  .wizard > .steps .current a, .wizard-content .wizard > .actions a,.wizard-content .wizard > .actions a:hover, \n.wizard-content .wizard > .steps .disabled a, .wizard-content .wizard > .steps .disabled a:hover, .wizard-content .wizard > .steps .disabled a:active,\n.wizard-content .wizard > .content,.wizard-content .wizard > .steps .done a, .wizard-content .wizard > .steps .done a:hover, .wizard-content .wizard > .steps .done a:active{\n    /*background: transparent;*/\n}\n.wizard-content .wizard > .steps > ul > li,.wizard-content .wizard > .actions > ul > li{\n    float:none;\n}\n.wizard-content .wizard>.steps>ul {\n    display: table;\n    width: 100%;\n    table-layout: fixed;\n    margin: 0;\n    padding: 0;\n    list-style: none\n}\n\n.wizard-content .wizard>.steps>ul>li {\n    display: table-cell;\n    width: auto;\n    vertical-align: top;\n    text-align: center;\n    position: relative\n}\n\n.wizard-content .wizard>.steps>ul>li a {\n    position: relative;\n    /*padding-top: 52px;\n    margin-top: 20px;*/\n    margin-bottom: 20px;\n    display: block\n}\n\n.wizard-content .wizard>.steps>ul>li:before {\n    left: 0\n}\n\n.wizard-content .wizard>.steps>ul>li:after {\n    right: 0\n}\n\n.wizard-content .wizard>.steps>ul>li:first-child:before,\n.wizard-content .wizard>.steps>ul>li:last-child:after {\n    content: none\n}\n\n.wizard-content .wizard>.steps>ul>li.current>a {\n    /*color: #2f3d4a;\n    cursor: default*/\n}\n\n.wizard-content .wizard>.steps>ul>li.current .step {\n    border-color: #2962FF ;\n    background-color: #fff;\n    color: #2962FF \n}\n\n.wizard-content .wizard>.steps>ul>li.disabled a,\n.wizard-content .wizard>.steps>ul>li.disabled a:focus,\n.wizard-content .wizard>.steps>ul>li.disabled a:hover {\n    color: #999;\n    cursor: default\n}\n\n.wizard-content .wizard>.steps>ul>li.done a,\n.wizard-content .wizard>.steps>ul>li.done a:focus,\n.wizard-content .wizard>.steps>ul>li.done a:hover {\n    color: #999\n}\n\n.wizard-content .wizard>.steps>ul>li.done .step {\n    background-color: #2962FF ;\n    border-color: #2962FF ;\n    color: #fff !important;\n}\n\n.wizard-content .wizard>.steps>ul>li.error .step {\n    border-color: #f62d51;\n    color: #f62d51\n}\n\n.wizard-content .wizard>.steps .step {\n    background-color: #fff;\n    display: inline-block;\n    position: absolute;\n    top: 0;\n    left: 50%;\n    margin-left: -24px;\n    z-index: 10;\n    text-align: center\n}\n\n.wizard-content .wizard>.content {\n    overflow: hidden;\n    position: relative;\n    width: auto;\n    padding: 0;\n    margin: 0\n}\n\n.wizard-content .wizard>.content>.title {\n    position: absolute;\n    left: -99999px\n}\n\n.wizard-content .wizard>.content>.body {\n   /* padding: 0 20px*/\n}\n\n.wizard-content .wizard>.content>iframe {\n    border: 0;\n    width: 100%;\n    height: 100%\n}\n\n.wizard-content .wizard>.actions {\n    position: relative;\n    display: block;\n    text-align: right;\n   /* padding: 0 20px 20px*/\n   margin-top: 20px;\n}\n\n.wizard-content .wizard>.actions>ul {\n    float: right;\n    list-style: none;\n    padding: 0;\n    margin: 0,\n}\n\n.wizard-content .wizard>.actions>ul:after {\n    content: '';\n    display: table;\n    clear: both\n}\n\n.wizard-content .wizard>.actions>ul>li {\n    float: left\n}\n\n.wizard-content .wizard>.actions>ul>li+li {\n    margin-left: 10px\n}\n\n.wizard-content .wizard>.actions>ul>li>a {\n    background: #2962FF ;\n    color: #fff;\n    display: block;\n    padding: 7px 12px;\n    border-radius: 4px;\n    border: 1px solid transparent\n}\n\n.wizard-content .wizard>.actions>ul>li>a:focus,\n.wizard-content .wizard>.actions>ul>li>a:hover {\n    -webkit-box-shadow: 0 0 0 100px rgba(0, 0, 0, .05) inset;\n    box-shadow: 0 0 0 100px rgba(0, 0, 0, .05) inset\n}\n\n.wizard-content .wizard>.actions>ul>li>a:active {\n    -webkit-box-shadow: 0 0 0 100px rgba(0, 0, 0, .1) inset;\n    box-shadow: 0 0 0 100px rgba(0, 0, 0, .1) inset\n}\n\n.wizard-content .wizard>.actions>ul>li>a[href=\"#previous\"] {\n    background-color: #fff;\n    color: #54667a;\n    border: 1px solid #d9d9d9\n}\n\n.wizard-content .wizard>.actions>ul>li>a[href=\"#previous\"]:focus,\n.wizard-content .wizard>.actions>ul>li>a[href=\"#previous\"]:hover {\n    -webkit-box-shadow: 0 0 0 100px rgba(0, 0, 0, .02) inset;\n    box-shadow: 0 0 0 100px rgba(0, 0, 0, .02) inset\n}\n\n.wizard-content .wizard>.actions>ul>li>a[href=\"#previous\"]:active {\n    -webkit-box-shadow: 0 0 0 100px rgba(0, 0, 0, .04) inset;\n    box-shadow: 0 0 0 100px rgba(0, 0, 0, .04) inset\n}\n\n.wizard-content .wizard>.actions>ul>li.disabled>a,\n.wizard-content .wizard>.actions>ul>li.disabled>a:focus,\n.wizard-content .wizard>.actions>ul>li.disabled>a:hover {\n    color: #999\n}\n\n.wizard-content .wizard>.actions>ul>li.disabled>a[href=\"#previous\"],\n.wizard-content .wizard>.actions>ul>li.disabled>a[href=\"#previous\"]:focus,\n.wizard-content .wizard>.actions>ul>li.disabled>a[href=\"#previous\"]:hover {\n    -webkit-box-shadow: none;\n    box-shadow: none\n}\n\n.wizard-content .wizard.wizard-circle>.steps>ul>li:after,\n.wizard-content .wizard.wizard-circle>.steps>ul>li:before {\n    top: 45px;\n    width: 50%;\n    height: 3px;\n    background-color: #2962FF \n}\n\n.wizard-content .wizard.wizard-circle>.steps>ul>li.current:after,\n.wizard-content .wizard.wizard-circle>.steps>ul>li.current~li:after,\n.wizard-content .wizard.wizard-circle>.steps>ul>li.current~li:before {\n    background-color: #F3F3F3\n}\n\n.wizard-content .wizard.wizard-circle>.steps .step {\n    width: 50px;\n    height: 50px;\n    line-height: 45px;\n    border: 3px solid #F3F3F3;\n    font-size: 1.3rem;\n    border-radius: 50%\n}\n\n.wizard-content .wizard.wizard-notification>.steps>ul>li:after,\n.wizard-content .wizard.wizard-notification>.steps>ul>li:before {\n    top: 39px;\n    width: 50%;\n    height: 2px;\n    background-color: #2962FF \n}\n\n.wizard-content .wizard.wizard-notification>.steps>ul>li.current .step {\n    border: 2px solid #2962FF ;\n    color: #2962FF ;\n    line-height: 36px\n}\n\n.wizard-content .wizard.wizard-notification>.steps>ul>li.current .step:after,\n.wizard-content .wizard.wizard-notification>.steps>ul>li.done .step:after {\n    border-top-color: #2962FF \n}\n\n.wizard-content .wizard.wizard-notification>.steps>ul>li.current:after,\n.wizard-content .wizard.wizard-notification>.steps>ul>li.current~li:after,\n.wizard-content .wizard.wizard-notification>.steps>ul>li.current~li:before {\n    background-color: #F3F3F3\n}\n\n.wizard-content .wizard.wizard-notification>.steps>ul>li.done .step {\n    color: #FFF\n}\n\n.wizard-content .wizard.wizard-notification>.steps .step {\n    width: 40px;\n    height: 40px;\n    line-height: 40px;\n    font-size: 1.3rem;\n    border-radius: 15%;\n    background-color: #F3F3F3\n}\n\n.wizard-content .wizard.wizard-notification>.steps .step:after {\n    content: \"\";\n    width: 0;\n    height: 0;\n    position: absolute;\n    bottom: 0;\n    left: 50%;\n    margin-left: -8px;\n    margin-bottom: -8px;\n    border-left: 7px solid transparent;\n    border-right: 7px solid transparent;\n    border-top: 8px solid #F3F3F3\n}\n\n.wizard-content .wizard.vertical>.steps {\n    display: inline;\n    float: left;\n    width: 20%\n}\n\n.wizard-content .wizard.vertical>.steps>ul>li {\n    display: block;\n    width: 100%\n}\n.wizard-content .wizard.vertical.wizard>.content{\n    min-width: 80%\n}\n.wizard-content .wizard.vertical>.steps>ul>li.current:after,\n.wizard-content .wizard.vertical>.steps>ul>li.current:before,\n.wizard-content .wizard.vertical>.steps>ul>li.current~li:after,\n.wizard-content .wizard.vertical>.steps>ul>li.current~li:before,\n.wizard-content .wizard.vertical>.steps>ul>li:after,\n.wizard-content .wizard.vertical>.steps>ul>li:before {\n    background-color: transparent\n}\n\n@media (max-width:768px) {\n    .wizard-content .wizard>.steps>ul {\n        margin-bottom: 20px\n    }\n    .wizard-content .wizard>.steps>ul>li {\n        display: block;\n        float: left;\n        width: 50%\n    }\n    .wizard-content .wizard>.steps>ul>li>a {\n        margin-bottom: 0\n    }\n    .wizard-content .wizard>.steps>ul>li:first-child:before {\n        content: ''\n    }\n    .wizard-content .wizard>.steps>ul>li:last-child:after {\n        content: '';\n        background-color: #2962FF \n    }\n    .wizard-content .wizard.vertical>.steps {\n        width: 15%\n    }\n}\n\n@media (max-width:480px) {\n    .wizard-content .wizard>.steps>ul>li {\n        width: 100%\n    }\n    .wizard-content .wizard>.steps>ul>li.current:after {\n        background-color: #2962FF \n    }\n     .wizard-content .wizard.vertical>.steps>ul>li {\n        display: block;\n        float: left;\n        width: 50%\n    }\n    .wizard-content .wizard.vertical>.steps {\n        width: 100%;\n        float:none;\n    }\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-steps/steps.jquery.json",
    "content": "{\n    \"name\": \"steps\",\n    \"title\": \"jQuery Steps\",\n    \"description\": \"A powerful jQuery wizard plugin that supports accessibility and HTML5.\",\n    \"keywords\": [\n        \"wizard\",\n        \"navigation\",\n        \"forms\",\n        \"UI\",\n        \"component\",\n        \"HTML5\",\n        \"accessibility\",\n        \"validation\",\n        \"tabs\",\n        \"steps\"\n    ],\n    \"version\": \"1.1.0\",\n    \"author\": {\n        \"name\": \"Rafael Staib\",\n        \"email\": \"me@rafaelstaib.com\",\n        \"url\": \"http://www.rafaelstaib.com\"\n    },\n    \"licenses\": [\n        { \"type\": \"MIT\", \"url\": \"http://www.opensource.org/licenses/MIT\" }\n    ],\n    \"bugs\": \"https://github.com/rstaib/jquery-steps/issues\",\n    \"homepage\": \"http://www.jquery-steps.com\",\n    \"docs\": \"https://github.com/rstaib/jquery-steps/wiki\",\n    \"download\": \"http://www.jquery-steps.com\",\n    \"demo\": \"http://www.jquery-steps.com/Examples\",\n    \"dependencies\": {\n        \"jquery\": \">=1.9.0\"\n    }\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/additional-methods.js",
    "content": "/*!\n * jQuery Validation Plugin v1.17.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2017 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"./jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n( function() {\n\n\tfunction stripHtml( value ) {\n\n\t\t// Remove html tags and space chars\n\t\treturn value.replace( /<.[^<>]*?>/g, \" \" ).replace( /&nbsp;|&#160;/gi, \" \" )\n\n\t\t// Remove punctuation\n\t\t.replace( /[.(),;:!?%#$'\\\"_+=\\/\\-“”’]*/g, \"\" );\n\t}\n\n\t$.validator.addMethod( \"maxWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length <= params;\n\t}, $.validator.format( \"Please enter {0} words or less.\" ) );\n\n\t$.validator.addMethod( \"minWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length >= params;\n\t}, $.validator.format( \"Please enter at least {0} words.\" ) );\n\n\t$.validator.addMethod( \"rangeWords\", function( value, element, params ) {\n\t\tvar valueStripped = stripHtml( value ),\n\t\t\tregex = /\\b\\w+\\b/g;\n\t\treturn this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];\n\t}, $.validator.format( \"Please enter between {0} and {1} words.\" ) );\n\n}() );\n\n// Accept a value from a file input based on a required mimetype\n$.validator.addMethod( \"accept\", function( value, element, param ) {\n\n\t// Split mime on commas in case we have multiple types we can accept\n\tvar typeParam = typeof param === \"string\" ? param.replace( /\\s/g, \"\" ) : \"image/*\",\n\t\toptionalValue = this.optional( element ),\n\t\ti, file, regex;\n\n\t// Element is optional\n\tif ( optionalValue ) {\n\t\treturn optionalValue;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\n\t\t// Escape string to be used in the regex\n\t\t// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\n\t\t// Escape also \"/*\" as \"/.*\" as a wildcard\n\t\ttypeParam = typeParam\n\t\t\t\t.replace( /[\\-\\[\\]\\/\\{\\}\\(\\)\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\" )\n\t\t\t\t.replace( /,/g, \"|\" )\n\t\t\t\t.replace( /\\/\\*/g, \"/.*\" );\n\n\t\t// Check if the element has a FileList before checking each file\n\t\tif ( element.files && element.files.length ) {\n\t\t\tregex = new RegExp( \".?(\" + typeParam + \")$\", \"i\" );\n\t\t\tfor ( i = 0; i < element.files.length; i++ ) {\n\t\t\t\tfile = element.files[ i ];\n\n\t\t\t\t// Grab the mimetype from the loaded file, verify it matches\n\t\t\t\tif ( !file.type.match( regex ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Either return true because we've validated each file, or because the\n\t// browser does not support element.files and the FileList feature\n\treturn true;\n}, $.validator.format( \"Please enter a value with a valid mimetype.\" ) );\n\n$.validator.addMethod( \"alphanumeric\", function( value, element ) {\n\treturn this.optional( element ) || /^\\w+$/i.test( value );\n}, \"Letters, numbers, and underscores only please\" );\n\n/*\n * Dutch bank account numbers (not 'giro' numbers) have 9 digits\n * and pass the '11 check'.\n * We accept the notation with spaces, as that is common.\n * acceptable: 123456789 or 12 34 56 789\n */\n$.validator.addMethod( \"bankaccountNL\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {\n\t\treturn false;\n\t}\n\n\t// Now '11 check'\n\tvar account = value.replace( / /g, \"\" ), // Remove spaces\n\t\tsum = 0,\n\t\tlen = account.length,\n\t\tpos, factor, digit;\n\tfor ( pos = 0; pos < len; pos++ ) {\n\t\tfactor = len - pos;\n\t\tdigit = account.substring( pos, pos + 1 );\n\t\tsum = sum + factor * digit;\n\t}\n\treturn sum % 11 === 0;\n}, \"Please specify a valid bank account number\" );\n\n$.validator.addMethod( \"bankorgiroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) ||\n\t\t\t( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||\n\t\t\t( $.validator.methods.giroaccountNL.call( this, value, element ) );\n}, \"Please specify a valid bank or giro account number\" );\n\n/**\n * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.\n *\n * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n *\n * BIC definition in detail:\n * - First 4 characters - bank code (only letters)\n * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)\n * - Next 2 characters - location code (letters and digits)\n *   a. shall not start with '0' or '1'\n *   b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)\n * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)\n */\n$.validator.addMethod( \"bic\", function( value, element ) {\n    return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );\n}, \"Please specify a valid BIC code\" );\n\n/*\n * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities\n * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal\n *\n * Spanish CIF structure:\n *\n * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]\n *\n * Where:\n *\n * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]\n * P: 2 characters. Province.\n * N: 5 characters. Secuencial Number within the province.\n * C: 1 character. Control Digit: [0-9A-J].\n *\n * [ T ]: Kind of Organizations. Possible values:\n *\n *   A. Corporations\n *   B. LLCs\n *   C. General partnerships\n *   D. Companies limited partnerships\n *   E. Communities of goods\n *   F. Cooperative Societies\n *   G. Associations\n *   H. Communities of homeowners in horizontal property regime\n *   J. Civil Societies\n *   K. Old format\n *   L. Old format\n *   M. Old format\n *   N. Nonresident entities\n *   P. Local authorities\n *   Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions\n *   R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)\n *   S. Organs of State Administration and regions\n *   V. Agrarian Transformation\n *   W. Permanent establishments of non-resident in Spain\n *\n * [ C ]: Control Digit. It can be a number or a letter depending on T value:\n * [ T ]  -->  [ C ]\n * ------    ----------\n *   A         Number\n *   B         Number\n *   E         Number\n *   H         Number\n *   K         Letter\n *   P         Letter\n *   Q         Letter\n *   S         Letter\n *\n */\n$.validator.addMethod( \"cifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\\d{7})([0-9A-J])$/gi );\n\tvar letter  = value.substring( 0, 1 ), // [ T ]\n\t\tnumber  = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]\n\t\tcontrol = value.substring( 8, 9 ), // [ C ]\n\t\tall_sum = 0,\n\t\teven_sum = 0,\n\t\todd_sum = 0,\n\t\ti, n,\n\t\tcontrol_digit,\n\t\tcontrol_letter;\n\n\tfunction isOdd( n ) {\n\t\treturn n % 2 === 0;\n\t}\n\n\t// Quick format test\n\tif ( value.length !== 9 || !cifRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tfor ( i = 0; i < number.length; i++ ) {\n\t\tn = parseInt( number[ i ], 10 );\n\n\t\t// Odd positions\n\t\tif ( isOdd( i ) ) {\n\n\t\t\t// Odd positions are multiplied first.\n\t\t\tn *= 2;\n\n\t\t\t// If the multiplication is bigger than 10 we need to adjust\n\t\t\todd_sum += n < 10 ? n : n - 9;\n\n\t\t// Even positions\n\t\t// Just sum them\n\t\t} else {\n\t\t\teven_sum += n;\n\t\t}\n\t}\n\n\tall_sum = even_sum + odd_sum;\n\tcontrol_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();\n\tcontrol_digit = parseInt( control_digit, 10 ) > 9 ? \"0\" : control_digit;\n\tcontrol_letter = \"JABCDEFGHI\".substr( control_digit, 1 ).toString();\n\n\t// Control must be a digit\n\tif ( letter.match( /[ABEH]/ ) ) {\n\t\treturn control === control_digit;\n\n\t// Control must be a letter\n\t} else if ( letter.match( /[KPQS]/ ) ) {\n\t\treturn control === control_letter;\n\t}\n\n\t// Can be either\n\treturn control === control_digit || control === control_letter;\n\n}, \"Please specify a valid CIF number.\" );\n\n/*\n * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.\n * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cpfBR\", function( value ) {\n\n\t// Removing special characters from value\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n\t// Checking value to have 11 digits only\n\tif ( value.length !== 11 ) {\n\t\treturn false;\n\t}\n\n\tvar sum = 0,\n\t\tfirstCN, secondCN, checkResult, i;\n\n\tfirstCN = parseInt( value.substring( 9, 10 ), 10 );\n\tsecondCN = parseInt( value.substring( 10, 11 ), 10 );\n\n\tcheckResult = function( sum, cn ) {\n\t\tvar result = ( sum * 10 ) % 11;\n\t\tif ( ( result === 10 ) || ( result === 11 ) ) {\n\t\t\tresult = 0;\n\t\t}\n\t\treturn ( result === cn );\n\t};\n\n\t// Checking for dump data\n\tif ( value === \"\" ||\n\t\tvalue === \"00000000000\" ||\n\t\tvalue === \"11111111111\" ||\n\t\tvalue === \"22222222222\" ||\n\t\tvalue === \"33333333333\" ||\n\t\tvalue === \"44444444444\" ||\n\t\tvalue === \"55555555555\" ||\n\t\tvalue === \"66666666666\" ||\n\t\tvalue === \"77777777777\" ||\n\t\tvalue === \"88888888888\" ||\n\t\tvalue === \"99999999999\"\n\t) {\n\t\treturn false;\n\t}\n\n\t// Step 1 - using first Check Number:\n\tfor ( i = 1; i <= 9; i++ ) {\n\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );\n\t}\n\n\t// If first Check Number (CN) is valid, move to Step 2 - using second Check Number:\n\tif ( checkResult( sum, firstCN ) ) {\n\t\tsum = 0;\n\t\tfor ( i = 1; i <= 10; i++ ) {\n\t\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );\n\t\t}\n\t\treturn checkResult( sum, secondCN );\n\t}\n\treturn false;\n\n}, \"Please specify a valid CPF number\" );\n\n// https://jqueryvalidation.org/creditcard-method/\n// based on https://en.wikipedia.org/wiki/Luhn_algorithm\n$.validator.addMethod( \"creditcard\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn \"dependency-mismatch\";\n\t}\n\n\t// Accept only spaces, digits and dashes\n\tif ( /[^0-9 \\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvar nCheck = 0,\n\t\tnDigit = 0,\n\t\tbEven = false,\n\t\tn, cDigit;\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\t// Basing min and max length on\n\t// https://developer.ean.com/general_info/Valid_Credit_Card_Types\n\tif ( value.length < 13 || value.length > 19 ) {\n\t\treturn false;\n\t}\n\n\tfor ( n = value.length - 1; n >= 0; n-- ) {\n\t\tcDigit = value.charAt( n );\n\t\tnDigit = parseInt( cDigit, 10 );\n\t\tif ( bEven ) {\n\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\n\t\t\t\tnDigit -= 9;\n\t\t\t}\n\t\t}\n\n\t\tnCheck += nDigit;\n\t\tbEven = !bEven;\n\t}\n\n\treturn ( nCheck % 10 ) === 0;\n}, \"Please enter a valid credit card number.\" );\n\n/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator\n * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0\n * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)\n */\n$.validator.addMethod( \"creditcardtypes\", function( value, element, param ) {\n\tif ( /[^0-9\\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\tvar validTypes = 0x0000;\n\n\tif ( param.mastercard ) {\n\t\tvalidTypes |= 0x0001;\n\t}\n\tif ( param.visa ) {\n\t\tvalidTypes |= 0x0002;\n\t}\n\tif ( param.amex ) {\n\t\tvalidTypes |= 0x0004;\n\t}\n\tif ( param.dinersclub ) {\n\t\tvalidTypes |= 0x0008;\n\t}\n\tif ( param.enroute ) {\n\t\tvalidTypes |= 0x0010;\n\t}\n\tif ( param.discover ) {\n\t\tvalidTypes |= 0x0020;\n\t}\n\tif ( param.jcb ) {\n\t\tvalidTypes |= 0x0040;\n\t}\n\tif ( param.unknown ) {\n\t\tvalidTypes |= 0x0080;\n\t}\n\tif ( param.all ) {\n\t\tvalidTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\n\t}\n\tif ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub\n\t\treturn value.length === 14;\n\t}\n\tif ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0080 ) { // Unknown\n\t\treturn true;\n\t}\n\treturn false;\n}, \"Please enter a valid credit card number.\" );\n\n/**\n * Validates currencies with any given symbols by @jameslouiz\n * Symbols can be optional or required. Symbols required by default\n *\n * Usage examples:\n *  currency: [\"£\", false] - Use false for soft currency validation\n *  currency: [\"$\", false]\n *  currency: [\"RM\", false] - also works with text based symbols such as \"RM\" - Malaysia Ringgit etc\n *\n *  <input class=\"currencyInput\" name=\"currencyInput\">\n *\n * Soft symbol checking\n *  currencyInput: {\n *     currency: [\"$\", false]\n *  }\n *\n * Strict symbol checking (default)\n *  currencyInput: {\n *     currency: \"$\"\n *     //OR\n *     currency: [\"$\", true]\n *  }\n *\n * Multiple Symbols\n *  currencyInput: {\n *     currency: \"$,£,¢\"\n *  }\n */\n$.validator.addMethod( \"currency\", function( value, element, param ) {\n    var isParamString = typeof param === \"string\",\n        symbol = isParamString ? param : param[ 0 ],\n        soft = isParamString ? true : param[ 1 ],\n        regex;\n\n    symbol = symbol.replace( /,/g, \"\" );\n    symbol = soft ? symbol + \"]\" : symbol + \"]?\";\n    regex = \"^[\" + symbol + \"([1-9]{1}[0-9]{0,2}(\\\\,[0-9]{3})*(\\\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\\\.[0-9]{0,2})?|0(\\\\.[0-9]{0,2})?|(\\\\.[0-9]{1,2})?)$\";\n    regex = new RegExp( regex );\n    return this.optional( element ) || regex.test( value );\n\n}, \"Please specify a valid currency\" );\n\n$.validator.addMethod( \"dateFA\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-4]\\d{3}\\/((0?[1-6]\\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );\n}, $.validator.messages.date );\n\n/**\n * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.\n *\n * @example $.validator.methods.date(\"01/01/1900\")\n * @result true\n *\n * @example $.validator.methods.date(\"01/13/1990\")\n * @result false\n *\n * @example $.validator.methods.date(\"01.01.1900\")\n * @result false\n *\n * @example <input name=\"pippo\" class=\"{dateITA:true}\" />\n * @desc Declares an optional input element whose value must be a valid date.\n *\n * @name $.validator.methods.dateITA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"dateITA\", function( value, element ) {\n\tvar check = false,\n\t\tre = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/,\n\t\tadata, gg, mm, aaaa, xdata;\n\tif ( re.test( value ) ) {\n\t\tadata = value.split( \"/\" );\n\t\tgg = parseInt( adata[ 0 ], 10 );\n\t\tmm = parseInt( adata[ 1 ], 10 );\n\t\taaaa = parseInt( adata[ 2 ], 10 );\n\t\txdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );\n\t\tif ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {\n\t\t\tcheck = true;\n\t\t} else {\n\t\t\tcheck = false;\n\t\t}\n\t} else {\n\t\tcheck = false;\n\t}\n\treturn this.optional( element ) || check;\n}, $.validator.messages.date );\n\n$.validator.addMethod( \"dateNL\", function( value, element ) {\n\treturn this.optional( element ) || /^(0?[1-9]|[12]\\d|3[01])[\\.\\/\\-](0?[1-9]|1[012])[\\.\\/\\-]([12]\\d)?(\\d\\d)$/.test( value );\n}, $.validator.messages.date );\n\n// Older \"accept\" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept\n$.validator.addMethod( \"extension\", function( value, element, param ) {\n\tparam = typeof param === \"string\" ? param.replace( /,/g, \"|\" ) : \"png|jpe?g|gif\";\n\treturn this.optional( element ) || value.match( new RegExp( \"\\\\.(\" + param + \")$\", \"i\" ) );\n}, $.validator.format( \"Please enter a value with a valid extension.\" ) );\n\n/**\n * Dutch giro account numbers (not bank numbers) have max 7 digits\n */\n$.validator.addMethod( \"giroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[0-9]{1,7}$/.test( value );\n}, \"Please specify a valid giro account number\" );\n\n/**\n * IBAN is the international bank account number.\n * It has a country - specific format, that is checked here too\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n */\n$.validator.addMethod( \"iban\", function( value, element ) {\n\n\t// Some quick simple tests to prevent needless work\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Remove spaces and to upper case\n\tvar iban = value.replace( / /g, \"\" ).toUpperCase(),\n\t\tibancheckdigits = \"\",\n\t\tleadingZeroes = true,\n\t\tcRest = \"\",\n\t\tcOperator = \"\",\n\t\tcountrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;\n\n\t// Check for IBAN code length.\n\t// It contains:\n\t// country code ISO 3166-1 - two letters,\n\t// two check digits,\n\t// Basic Bank Account Number (BBAN) - up to 30 chars\n\tvar minimalIBANlength = 5;\n\tif ( iban.length < minimalIBANlength ) {\n\t\treturn false;\n\t}\n\n\t// Check the country code and find the country specific format\n\tcountrycode = iban.substring( 0, 2 );\n\tbbancountrypatterns = {\n\t\t\"AL\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"AD\": \"\\\\d{8}[\\\\dA-Z]{12}\",\n\t\t\"AT\": \"\\\\d{16}\",\n\t\t\"AZ\": \"[\\\\dA-Z]{4}\\\\d{20}\",\n\t\t\"BE\": \"\\\\d{12}\",\n\t\t\"BH\": \"[A-Z]{4}[\\\\dA-Z]{14}\",\n\t\t\"BA\": \"\\\\d{16}\",\n\t\t\"BR\": \"\\\\d{23}[A-Z][\\\\dA-Z]\",\n\t\t\"BG\": \"[A-Z]{4}\\\\d{6}[\\\\dA-Z]{8}\",\n\t\t\"CR\": \"\\\\d{17}\",\n\t\t\"HR\": \"\\\\d{17}\",\n\t\t\"CY\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"CZ\": \"\\\\d{20}\",\n\t\t\"DK\": \"\\\\d{14}\",\n\t\t\"DO\": \"[A-Z]{4}\\\\d{20}\",\n\t\t\"EE\": \"\\\\d{16}\",\n\t\t\"FO\": \"\\\\d{14}\",\n\t\t\"FI\": \"\\\\d{14}\",\n\t\t\"FR\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"GE\": \"[\\\\dA-Z]{2}\\\\d{16}\",\n\t\t\"DE\": \"\\\\d{18}\",\n\t\t\"GI\": \"[A-Z]{4}[\\\\dA-Z]{15}\",\n\t\t\"GR\": \"\\\\d{7}[\\\\dA-Z]{16}\",\n\t\t\"GL\": \"\\\\d{14}\",\n\t\t\"GT\": \"[\\\\dA-Z]{4}[\\\\dA-Z]{20}\",\n\t\t\"HU\": \"\\\\d{24}\",\n\t\t\"IS\": \"\\\\d{22}\",\n\t\t\"IE\": \"[\\\\dA-Z]{4}\\\\d{14}\",\n\t\t\"IL\": \"\\\\d{19}\",\n\t\t\"IT\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"KZ\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"KW\": \"[A-Z]{4}[\\\\dA-Z]{22}\",\n\t\t\"LV\": \"[A-Z]{4}[\\\\dA-Z]{13}\",\n\t\t\"LB\": \"\\\\d{4}[\\\\dA-Z]{20}\",\n\t\t\"LI\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"LT\": \"\\\\d{16}\",\n\t\t\"LU\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"MK\": \"\\\\d{3}[\\\\dA-Z]{10}\\\\d{2}\",\n\t\t\"MT\": \"[A-Z]{4}\\\\d{5}[\\\\dA-Z]{18}\",\n\t\t\"MR\": \"\\\\d{23}\",\n\t\t\"MU\": \"[A-Z]{4}\\\\d{19}[A-Z]{3}\",\n\t\t\"MC\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"MD\": \"[\\\\dA-Z]{2}\\\\d{18}\",\n\t\t\"ME\": \"\\\\d{18}\",\n\t\t\"NL\": \"[A-Z]{4}\\\\d{10}\",\n\t\t\"NO\": \"\\\\d{11}\",\n\t\t\"PK\": \"[\\\\dA-Z]{4}\\\\d{16}\",\n\t\t\"PS\": \"[\\\\dA-Z]{4}\\\\d{21}\",\n\t\t\"PL\": \"\\\\d{24}\",\n\t\t\"PT\": \"\\\\d{21}\",\n\t\t\"RO\": \"[A-Z]{4}[\\\\dA-Z]{16}\",\n\t\t\"SM\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"SA\": \"\\\\d{2}[\\\\dA-Z]{18}\",\n\t\t\"RS\": \"\\\\d{18}\",\n\t\t\"SK\": \"\\\\d{20}\",\n\t\t\"SI\": \"\\\\d{15}\",\n\t\t\"ES\": \"\\\\d{20}\",\n\t\t\"SE\": \"\\\\d{20}\",\n\t\t\"CH\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"TN\": \"\\\\d{20}\",\n\t\t\"TR\": \"\\\\d{5}[\\\\dA-Z]{17}\",\n\t\t\"AE\": \"\\\\d{3}\\\\d{16}\",\n\t\t\"GB\": \"[A-Z]{4}\\\\d{14}\",\n\t\t\"VG\": \"[\\\\dA-Z]{4}\\\\d{16}\"\n\t};\n\n\tbbanpattern = bbancountrypatterns[ countrycode ];\n\n\t// As new countries will start using IBAN in the\n\t// future, we only check if the countrycode is known.\n\t// This prevents false negatives, while almost all\n\t// false positives introduced by this, will be caught\n\t// by the checksum validation below anyway.\n\t// Strict checking should return FALSE for unknown\n\t// countries.\n\tif ( typeof bbanpattern !== \"undefined\" ) {\n\t\tibanregexp = new RegExp( \"^[A-Z]{2}\\\\d{2}\" + bbanpattern + \"$\", \"\" );\n\t\tif ( !( ibanregexp.test( iban ) ) ) {\n\t\t\treturn false; // Invalid country specific format\n\t\t}\n\t}\n\n\t// Now check the checksum, first convert to digits\n\tibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );\n\tfor ( i = 0; i < ibancheck.length; i++ ) {\n\t\tcharAt = ibancheck.charAt( i );\n\t\tif ( charAt !== \"0\" ) {\n\t\t\tleadingZeroes = false;\n\t\t}\n\t\tif ( !leadingZeroes ) {\n\t\t\tibancheckdigits += \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".indexOf( charAt );\n\t\t}\n\t}\n\n\t// Calculate the result of: ibancheckdigits % 97\n\tfor ( p = 0; p < ibancheckdigits.length; p++ ) {\n\t\tcChar = ibancheckdigits.charAt( p );\n\t\tcOperator = \"\" + cRest + \"\" + cChar;\n\t\tcRest = cOperator % 97;\n\t}\n\treturn cRest === 1;\n}, \"Please specify a valid IBAN\" );\n\n$.validator.addMethod( \"integer\", function( value, element ) {\n\treturn this.optional( element ) || /^-?\\d+$/.test( value );\n}, \"A positive or negative non-decimal number please\" );\n\n$.validator.addMethod( \"ipv4\", function( value, element ) {\n\treturn this.optional( element ) || /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test( value );\n}, \"Please enter a valid IP v4 address.\" );\n\n$.validator.addMethod( \"ipv6\", function( value, element ) {\n\treturn this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );\n}, \"Please enter a valid IP v6 address.\" );\n\n$.validator.addMethod( \"lettersonly\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z]+$/i.test( value );\n}, \"Letters only please\" );\n\n$.validator.addMethod( \"letterswithbasicpunc\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z\\-.,()'\"\\s]+$/i.test( value );\n}, \"Letters or punctuation only please\" );\n\n$.validator.addMethod( \"mobileNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)6((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid mobile number\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"mobileUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[1345789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/ );\n}, \"Please specify a valid mobile number\" );\n\n$.validator.addMethod( \"netmask\", function( value, element ) {\n    return this.optional( element ) || /^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)/i.test( value );\n}, \"Please enter a valid netmask.\" );\n\n/*\n * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish\n * authorities to any foreigner.\n *\n * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal\n * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to\n * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.\n */\n$.validator.addMethod( \"nieES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );\n\tvar validChars = \"TRWAGMYFPDXBNJZSQVHLCKET\",\n\t\tletter = value.substr( value.length - 1 ).toUpperCase(),\n\t\tnumber;\n\n\tvalue = value.toString().toUpperCase();\n\n\t// Quick format test\n\tif ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\t// X means same number\n\t// Y means number + 10000000\n\t// Z means number + 20000000\n\tvalue = value.replace( /^[X]/, \"0\" )\n\t\t.replace( /^[Y]/, \"1\" )\n\t\t.replace( /^[Z]/, \"2\" );\n\n\tnumber = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );\n\n\treturn validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;\n\n}, \"Please specify a valid NIE number.\" );\n\n/*\n * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals\n */\n$.validator.addMethod( \"nifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvalue = value.toUpperCase();\n\n\t// Basic format test\n\tif ( !value.match( \"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\" ) ) {\n\t\treturn false;\n\t}\n\n\t// Test NIF\n\tif ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {\n\t\treturn ( \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );\n\t}\n\n\t// Test specials NIF (starts with K, L or M)\n\tif ( /^[KLM]{1}/.test( value ) ) {\n\t\treturn ( value[ 8 ] === \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 1 ) % 23 ) );\n\t}\n\n\treturn false;\n\n}, \"Please specify a valid NIF number.\" );\n\n/*\n * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies\n */\n$.validator.addMethod( \"nipPL\", function( value ) {\n\t\"use strict\";\n\n\tvalue = value.replace( /[^0-9]/g, \"\" );\n\n\tif ( value.length !== 10 ) {\n\t\treturn false;\n\t}\n\n\tvar arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];\n\tvar intSum = 0;\n\tfor ( var i = 0; i < 9; i++ ) {\n\t\tintSum += arrSteps[ i ] * value[ i ];\n\t}\n\tvar int2 = intSum % 11;\n\tvar intControlNr = ( int2 === 10 ) ? 0 : int2;\n\n\treturn ( intControlNr === parseInt( value[ 9 ], 10 ) );\n}, \"Please specify a valid NIP number.\" );\n\n$.validator.addMethod( \"notEqualTo\", function( value, element, param ) {\n\treturn this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );\n}, \"Please enter a different value, values must not be the same.\" );\n\n$.validator.addMethod( \"nowhitespace\", function( value, element ) {\n\treturn this.optional( element ) || /^\\S+$/i.test( value );\n}, \"No white space please\" );\n\n/**\n* Return true if the field value matches the given format RegExp\n*\n* @example $.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\n* @result true\n*\n* @example $.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\n* @result false\n*\n* @name $.validator.methods.pattern\n* @type Boolean\n* @cat Plugins/Validate/Methods\n*/\n$.validator.addMethod( \"pattern\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( typeof param === \"string\" ) {\n\t\tparam = new RegExp( \"^(?:\" + param + \")$\" );\n\t}\n\treturn param.test( value );\n}, \"Invalid format.\" );\n\n/**\n * Dutch phone numbers have 10 digits (or 11 and start with +31).\n */\n$.validator.addMethod( \"phoneNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)[1-9]((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid phone number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n\n// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers\n$.validator.addMethod( \"phonesUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[1345789]\\d{8}|624\\d{6})))$/ );\n}, \"Please specify a valid uk phone number\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"phoneUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}|\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4}|\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3})|\\d{5}\\)?\\s?\\d{4,5})$/ );\n}, \"Please specify a valid phone number\" );\n\n/**\n * Matches US phone number format\n *\n * where the area code may not start with 1 and the prefix may not start with 1\n * allows '-' or ' ' as a separator and allows parens around area code\n * some people may want to put a '1' in front of their number\n *\n * 1(212)-999-2345 or\n * 212 999 2344 or\n * 212-999-0983\n *\n * but not\n * 111-123-5434\n * and not\n * 212 123 4567\n */\n$.validator.addMethod( \"phoneUS\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(\\+?1-?)?(\\([2-9]([02-9]\\d|1[02-9])\\)|[2-9]([02-9]\\d|1[02-9]))-?[2-9]([02-9]\\d|1[02-9])-?\\d{4}$/ );\n}, \"Please specify a valid phone number\" );\n\n/*\n* Valida CEPs do brasileiros:\n*\n* Formatos aceitos:\n* 99999-999\n* 99.999-999\n* 99999999\n*/\n$.validator.addMethod( \"postalcodeBR\", function( cep_value, element ) {\n\treturn this.optional( element ) || /^\\d{2}.\\d{3}-\\d{3}?$|^\\d{5}-?\\d{3}?$/.test( cep_value );\n}, \"Informe um CEP válido.\" );\n\n/**\n * Matches a valid Canadian Postal Code\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H 0H0\", element )\n * @result true\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H0H0\", element )\n * @result false\n *\n * @name jQuery.validator.methods.postalCodeCA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"postalCodeCA\", function( value, element ) {\n\treturn this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ] *\\d[ABCEGHJKLMNPRSTVWXYZ]\\d$/i.test( value );\n}, \"Please specify a valid postal code\" );\n\n/* Matches Italian postcode (CAP) */\n$.validator.addMethod( \"postalcodeIT\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}$/.test( value );\n}, \"Please specify a valid postal code\" );\n\n$.validator.addMethod( \"postalcodeNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-9][0-9]{3}\\s?[a-zA-Z]{2}$/.test( value );\n}, \"Please specify a valid postal code\" );\n\n// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)\n$.validator.addMethod( \"postcodeUK\", function( value, element ) {\n\treturn this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\\s?(0AA))$/i.test( value );\n}, \"Please specify a valid UK postcode\" );\n\n/*\n * Lets you say \"at least X inputs that match selector Y must be filled.\"\n *\n * The end result is that neither of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\n *\t...will validate unless at least one of them is filled.\n *\n * partnumber:\t{require_from_group: [1,\".productinfo\"]},\n * description: {require_from_group: [1,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n */\n$.validator.addMethod( \"require_from_group\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_req_grp\" ) ? $fieldsFirst.data( \"valid_req_grp\" ) : $.extend( {}, this ),\n\t\tisValid = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_req_grp\", validator );\n\n\t// If element isn't being validated, run each require_from_group field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please fill at least {0} of these fields.\" ) );\n\n/*\n * Lets you say \"either at least X inputs that match selector Y must be filled,\n * OR they must all be skipped (left blank).\"\n *\n * The end result, is that none of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\t<input class=\"productinfo\" name=\"color\">\n *\n *\t...will validate unless either at least two of them are filled,\n *\tOR none of them are.\n *\n * partnumber:\t{skip_or_fill_minimum: [2,\".productinfo\"]},\n * description: {skip_or_fill_minimum: [2,\".productinfo\"]},\n * color:\t\t{skip_or_fill_minimum: [2,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n *\n */\n$.validator.addMethod( \"skip_or_fill_minimum\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_skip\" ) ? $fieldsFirst.data( \"valid_skip\" ) : $.extend( {}, this ),\n\t\tnumberFilled = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length,\n\t\tisValid = numberFilled === 0 || numberFilled >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_skip\", validator );\n\n\t// If element isn't being validated, run each skip_or_fill_minimum field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please either skip these fields or fill at least {0} of them.\" ) );\n\n/* Validates US States and/or Territories by @jdforsythe\n * Can be case insensitive or require capitalization - default is case insensitive\n * Can include US Territories or not - default does not\n * Can include US Military postal abbreviations (AA, AE, AP) - default does not\n *\n * Note: \"States\" always includes DC (District of Colombia)\n *\n * Usage examples:\n *\n *  This is the default - case insensitive, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false,\n *     includeTerritories: false,\n *     includeMilitary: false\n *  }\n *\n *  Only allow capital letters, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false\n *  }\n *\n *  Case insensitive, include territories but not military zones\n *  stateInput: {\n *     includeTerritories: true\n *  }\n *\n *  Only allow capital letters, include territories and military zones\n *  stateInput: {\n *     caseSensitive: true,\n *     includeTerritories: true,\n *     includeMilitary: true\n *  }\n *\n */\n$.validator.addMethod( \"stateUS\", function( value, element, options ) {\n\tvar isDefault = typeof options === \"undefined\",\n\t\tcaseSensitive = ( isDefault || typeof options.caseSensitive === \"undefined\" ) ? false : options.caseSensitive,\n\t\tincludeTerritories = ( isDefault || typeof options.includeTerritories === \"undefined\" ) ? false : options.includeTerritories,\n\t\tincludeMilitary = ( isDefault || typeof options.includeMilitary === \"undefined\" ) ? false : options.includeMilitary,\n\t\tregex;\n\n\tif ( !includeTerritories && !includeMilitary ) {\n\t\tregex = \"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t} else if ( includeTerritories && includeMilitary ) {\n\t\tregex = \"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else if ( includeTerritories ) {\n\t\tregex = \"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else {\n\t\tregex = \"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t}\n\n\tregex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, \"i\" );\n\treturn this.optional( element ) || regex.test( value );\n}, \"Please specify a valid state\" );\n\n// TODO check if value starts with <, otherwise don't try stripping anything\n$.validator.addMethod( \"strippedminlength\", function( value, element, param ) {\n\treturn $( value ).text().length >= param;\n}, $.validator.format( \"Please enter at least {0} characters\" ) );\n\n$.validator.addMethod( \"time\", function( value, element ) {\n\treturn this.optional( element ) || /^([01]\\d|2[0-3]|[0-9])(:[0-5]\\d){1,2}$/.test( value );\n}, \"Please enter a valid time, between 00:00 and 23:59\" );\n\n$.validator.addMethod( \"time12h\", function( value, element ) {\n\treturn this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\\d){1,2}(\\ ?[AP]M))$/i.test( value );\n}, \"Please enter a valid time in 12-hour am/pm format\" );\n\n// Same as url, but TLD is optional\n$.validator.addMethod( \"url2\", function( value, element ) {\n\treturn this.optional( element ) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test( value );\n}, $.validator.messages.url );\n\n/**\n * Return true, if the value is a valid vehicle identification number (VIN).\n *\n * Works with all kind of text inputs.\n *\n * @example <input type=\"text\" size=\"20\" name=\"VehicleID\" class=\"{required:true,vinUS:true}\" />\n * @desc Declares a required input element whose value must be a valid vehicle identification number.\n *\n * @name $.validator.methods.vinUS\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"vinUS\", function( v ) {\n\tif ( v.length !== 17 ) {\n\t\treturn false;\n\t}\n\n\tvar LL = [ \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"J\", \"K\", \"L\", \"M\", \"N\", \"P\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\" ],\n\t\tVL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],\n\t\tFL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],\n\t\trs = 0,\n\t\ti, n, d, f, cd, cdv;\n\n\tfor ( i = 0; i < 17; i++ ) {\n\t\tf = FL[ i ];\n\t\td = v.slice( i, i + 1 );\n\t\tif ( i === 8 ) {\n\t\t\tcdv = d;\n\t\t}\n\t\tif ( !isNaN( d ) ) {\n\t\t\td *= f;\n\t\t} else {\n\t\t\tfor ( n = 0; n < LL.length; n++ ) {\n\t\t\t\tif ( d.toUpperCase() === LL[ n ] ) {\n\t\t\t\t\td = VL[ n ];\n\t\t\t\t\td *= f;\n\t\t\t\t\tif ( isNaN( cdv ) && n === 8 ) {\n\t\t\t\t\t\tcdv = LL[ n ];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\trs += d;\n\t}\n\tcd = rs % 11;\n\tif ( cd === 10 ) {\n\t\tcd = \"X\";\n\t}\n\tif ( cd === cdv ) {\n\t\treturn true;\n\t}\n\treturn false;\n}, \"The specified vehicle identification number (VIN) is invalid.\" );\n\n$.validator.addMethod( \"zipcodeUS\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}(-\\d{4})?$/.test( value );\n}, \"The specified US ZIP Code is invalid\" );\n\n$.validator.addMethod( \"ziprange\", function( value, element ) {\n\treturn this.optional( element ) || /^90[2-5]\\d\\{2\\}-\\d{4}$/.test( value );\n}, \"Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx\" );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ar.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: AR (Arabic; العربية)\n */\n$.extend( $.validator.messages, {\n\trequired: \"هذا الحقل إلزامي\",\n\tremote: \"يرجى تصحيح هذا الحقل للمتابعة\",\n\temail: \"رجاء إدخال عنوان بريد إلكتروني صحيح\",\n\turl: \"رجاء إدخال عنوان موقع إلكتروني صحيح\",\n\tdate: \"رجاء إدخال تاريخ صحيح\",\n\tdateISO: \"رجاء إدخال تاريخ صحيح (ISO)\",\n\tnumber: \"رجاء إدخال عدد بطريقة صحيحة\",\n\tdigits: \"رجاء إدخال أرقام فقط\",\n\tcreditcard: \"رجاء إدخال رقم بطاقة ائتمان صحيح\",\n\tequalTo: \"رجاء إدخال نفس القيمة\",\n\textension: \"رجاء إدخال ملف بامتداد موافق عليه\",\n\tmaxlength: $.validator.format( \"الحد الأقصى لعدد الحروف هو {0}\" ),\n\tminlength: $.validator.format( \"الحد الأدنى لعدد الحروف هو {0}\" ),\n\trangelength: $.validator.format( \"عدد الحروف يجب أن يكون بين {0} و {1}\" ),\n\trange: $.validator.format( \"رجاء إدخال عدد قيمته بين {0} و {1}\" ),\n\tmax: $.validator.format( \"رجاء إدخال عدد أقل من أو يساوي {0}\" ),\n\tmin: $.validator.format( \"رجاء إدخال عدد أكبر من أو يساوي {0}\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_az.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: Az (Azeri; azərbaycan dili)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Bu xana mütləq doldurulmalıdır.\",\n\tremote: \"Zəhmət olmasa, düzgün məna daxil edin.\",\n\temail: \"Zəhmət olmasa, düzgün elektron poçt daxil edin.\",\n\turl: \"Zəhmət olmasa, düzgün URL daxil edin.\",\n\tdate: \"Zəhmət olmasa, düzgün tarix daxil edin.\",\n\tdateISO: \"Zəhmət olmasa, düzgün ISO formatlı tarix daxil edin.\",\n\tnumber: \"Zəhmət olmasa, düzgün rəqəm daxil edin.\",\n\tdigits: \"Zəhmət olmasa, yalnız rəqəm daxil edin.\",\n\tcreditcard: \"Zəhmət olmasa, düzgün kredit kart nömrəsini daxil edin.\",\n\tequalTo: \"Zəhmət olmasa, eyni mənanı bir daha daxil edin.\",\n\textension: \"Zəhmət olmasa, düzgün genişlənməyə malik faylı seçin.\",\n\tmaxlength: $.validator.format( \"Zəhmət olmasa, {0} simvoldan çox olmayaraq daxil edin.\" ),\n\tminlength: $.validator.format( \"Zəhmət olmasa, {0} simvoldan az olmayaraq daxil edin.\" ),\n\trangelength: $.validator.format( \"Zəhmət olmasa, {0} - {1} aralığında uzunluğa malik simvol daxil edin.\" ),\n\trange: $.validator.format( \"Zəhmət olmasa, {0} - {1} aralığında rəqəm daxil edin.\" ),\n\tmax: $.validator.format( \"Zəhmət olmasa, {0} və ondan kiçik rəqəm daxil edin.\" ),\n\tmin: $.validator.format( \"Zəhmət olmasa, {0} və ondan böyük rəqəm daxil edin\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_bg.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: BG (Bulgarian; български език)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Полето е задължително.\",\n\tremote: \"Моля, въведете правилната стойност.\",\n\temail: \"Моля, въведете валиден email.\",\n\turl: \"Моля, въведете валидно URL.\",\n\tdate: \"Моля, въведете валидна дата.\",\n\tdateISO: \"Моля, въведете валидна дата (ISO).\",\n\tnumber: \"Моля, въведете валиден номер.\",\n\tdigits: \"Моля, въведете само цифри.\",\n\tcreditcard: \"Моля, въведете валиден номер на кредитна карта.\",\n\tequalTo: \"Моля, въведете същата стойност отново.\",\n\textension: \"Моля, въведете стойност с валидно разширение.\",\n\tmaxlength: $.validator.format( \"Моля, въведете повече от {0} символа.\" ),\n\tminlength: $.validator.format( \"Моля, въведете поне {0} символа.\" ),\n\trangelength: $.validator.format( \"Моля, въведете стойност с дължина между {0} и {1} символа.\" ),\n\trange: $.validator.format( \"Моля, въведете стойност между {0} и {1}.\" ),\n\tmax: $.validator.format( \"Моля, въведете стойност по-малка или равна на {0}.\" ),\n\tmin: $.validator.format( \"Моля, въведете стойност по-голяма или равна на {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_bn_BD.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: bn_BD (Bengali, Bangladesh)\n */\n$.extend( $.validator.messages, {\n\trequired: \"এই তথ্যটি আবশ্যক।\",\n\tremote: \"এই তথ্যটি ঠিক করুন।\",\n\temail: \"অনুগ্রহ করে একটি সঠিক মেইল ঠিকানা লিখুন।\",\n\turl: \"অনুগ্রহ করে একটি সঠিক লিঙ্ক দিন।\",\n\tdate: \"তারিখ সঠিক নয়।\",\n\tdateISO: \"অনুগ্রহ করে একটি সঠিক (ISO) তারিখ লিখুন।\",\n\tnumber: \"অনুগ্রহ করে একটি সঠিক নম্বর লিখুন।\",\n\tdigits: \"এখানে শুধু সংখ্যা ব্যবহার করা যাবে।\",\n\tcreditcard: \"অনুগ্রহ করে একটি ক্রেডিট কার্ডের সঠিক নম্বর লিখুন।\",\n\tequalTo: \"একই মান আবার লিখুন।\",\n\textension: \"সঠিক ধরনের ফাইল আপলোড করুন।\",\n\tmaxlength: $.validator.format( \"{0}টির বেশি অক্ষর লেখা যাবে না।\" ),\n\tminlength: $.validator.format( \"{0}টির কম অক্ষর লেখা যাবে না।\" ),\n\trangelength: $.validator.format( \"{0} থেকে {1} টি অক্ষর সম্বলিত মান লিখুন।\" ),\n\trange: $.validator.format( \"{0} থেকে {1} এর মধ্যে একটি মান ব্যবহার করুন।\" ),\n\tmax: $.validator.format( \"অনুগ্রহ করে {0} বা তার চাইতে কম মান ব্যবহার করুন।\" ),\n\tmin: $.validator.format( \"অনুগ্রহ করে {0} বা তার চাইতে বেশি মান ব্যবহার করুন।\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ca.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: CA (Catalan; català)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Aquest camp és obligatori.\",\n\tremote: \"Si us plau, omple aquest camp.\",\n\temail: \"Si us plau, escriu una adreça de correu-e vàlida\",\n\turl: \"Si us plau, escriu una URL vàlida.\",\n\tdate: \"Si us plau, escriu una data vàlida.\",\n\tdateISO: \"Si us plau, escriu una data (ISO) vàlida.\",\n\tnumber: \"Si us plau, escriu un número enter vàlid.\",\n\tdigits: \"Si us plau, escriu només dígits.\",\n\tcreditcard: \"Si us plau, escriu un número de tarjeta vàlid.\",\n\tequalTo: \"Si us plau, escriu el mateix valor de nou.\",\n\textension: \"Si us plau, escriu un valor amb una extensió acceptada.\",\n\tmaxlength: $.validator.format( \"Si us plau, no escriguis més de {0} caracters.\" ),\n\tminlength: $.validator.format( \"Si us plau, no escriguis menys de {0} caracters.\" ),\n\trangelength: $.validator.format( \"Si us plau, escriu un valor entre {0} i {1} caracters.\" ),\n\trange: $.validator.format( \"Si us plau, escriu un valor entre {0} i {1}.\" ),\n\tmax: $.validator.format( \"Si us plau, escriu un valor menor o igual a {0}.\" ),\n\tmin: $.validator.format( \"Si us plau, escriu un valor major o igual a {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_cs.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: CS (Czech; čeština, český jazyk)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Tento údaj je povinný.\",\n\tremote: \"Prosím, opravte tento údaj.\",\n\temail: \"Prosím, zadejte platný e-mail.\",\n\turl: \"Prosím, zadejte platné URL.\",\n\tdate: \"Prosím, zadejte platné datum.\",\n\tdateISO: \"Prosím, zadejte platné datum (ISO).\",\n\tnumber: \"Prosím, zadejte číslo.\",\n\tdigits: \"Prosím, zadávejte pouze číslice.\",\n\tcreditcard: \"Prosím, zadejte číslo kreditní karty.\",\n\tequalTo: \"Prosím, zadejte znovu stejnou hodnotu.\",\n\textension: \"Prosím, zadejte soubor se správnou příponou.\",\n\tmaxlength: $.validator.format( \"Prosím, zadejte nejvíce {0} znaků.\" ),\n\tminlength: $.validator.format( \"Prosím, zadejte nejméně {0} znaků.\" ),\n\trangelength: $.validator.format( \"Prosím, zadejte od {0} do {1} znaků.\" ),\n\trange: $.validator.format( \"Prosím, zadejte hodnotu od {0} do {1}.\" ),\n\tmax: $.validator.format( \"Prosím, zadejte hodnotu menší nebo rovnu {0}.\" ),\n\tmin: $.validator.format( \"Prosím, zadejte hodnotu větší nebo rovnu {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_da.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: DA (Danish; dansk)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Dette felt er påkrævet.\",\n\tmaxlength: $.validator.format( \"Indtast højst {0} tegn.\" ),\n\tminlength: $.validator.format( \"Indtast mindst {0} tegn.\" ),\n\trangelength: $.validator.format( \"Indtast mindst {0} og højst {1} tegn.\" ),\n\temail: \"Indtast en gyldig email-adresse.\",\n\turl: \"Indtast en gyldig URL.\",\n\tdate: \"Indtast en gyldig dato.\",\n\tnumber: \"Indtast et tal.\",\n\tdigits: \"Indtast kun cifre.\",\n\tequalTo: \"Indtast den samme værdi igen.\",\n\trange: $.validator.format( \"Angiv en værdi mellem {0} og {1}.\" ),\n\tmax: $.validator.format( \"Angiv en værdi der højst er {0}.\" ),\n\tmin: $.validator.format( \"Angiv en værdi der mindst er {0}.\" ),\n\tcreditcard: \"Indtast et gyldigt kreditkortnummer.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_de.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: DE (German, Deutsch)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Dieses Feld ist ein Pflichtfeld.\",\n\tmaxlength: $.validator.format( \"Geben Sie bitte maximal {0} Zeichen ein.\" ),\n\tminlength: $.validator.format( \"Geben Sie bitte mindestens {0} Zeichen ein.\" ),\n\trangelength: $.validator.format( \"Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein.\" ),\n\temail: \"Geben Sie bitte eine gültige E-Mail Adresse ein.\",\n\turl: \"Geben Sie bitte eine gültige URL ein.\",\n\tdate: \"Bitte geben Sie ein gültiges Datum ein.\",\n\tnumber: \"Geben Sie bitte eine Nummer ein.\",\n\tdigits: \"Geben Sie bitte nur Ziffern ein.\",\n\tequalTo: \"Bitte denselben Wert wiederholen.\",\n\trange: $.validator.format( \"Geben Sie bitte einen Wert zwischen {0} und {1} ein.\" ),\n\tmax: $.validator.format( \"Geben Sie bitte einen Wert kleiner oder gleich {0} ein.\" ),\n\tmin: $.validator.format( \"Geben Sie bitte einen Wert größer oder gleich {0} ein.\" ),\n\tcreditcard: \"Geben Sie bitte eine gültige Kreditkarten-Nummer ein.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_el.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: EL (Greek; ελληνικά)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Αυτό το πεδίο είναι υποχρεωτικό.\",\n\tremote: \"Παρακαλώ διορθώστε αυτό το πεδίο.\",\n\temail: \"Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.\",\n\turl: \"Παρακαλώ εισάγετε ένα έγκυρο URL.\",\n\tdate: \"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.\",\n\tdateISO: \"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).\",\n\tnumber: \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό.\",\n\tdigits: \"Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.\",\n\tcreditcard: \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.\",\n\tequalTo: \"Παρακαλώ εισάγετε την ίδια τιμή ξανά.\",\n\textension: \"Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.\",\n\tmaxlength: $.validator.format( \"Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες.\" ),\n\tminlength: $.validator.format( \"Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες.\" ),\n\trangelength: $.validator.format( \"Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων.\" ),\n\trange: $.validator.format( \"Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}.\" ),\n\tmax: $.validator.format( \"Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}.\" ),\n\tmin: $.validator.format( \"Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_es.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ES (Spanish; Español)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Este campo es obligatorio.\",\n\tremote: \"Por favor, rellena este campo.\",\n\temail: \"Por favor, escribe una dirección de correo válida.\",\n\turl: \"Por favor, escribe una URL válida.\",\n\tdate: \"Por favor, escribe una fecha válida.\",\n\tdateISO: \"Por favor, escribe una fecha (ISO) válida.\",\n\tnumber: \"Por favor, escribe un número válido.\",\n\tdigits: \"Por favor, escribe sólo dígitos.\",\n\tcreditcard: \"Por favor, escribe un número de tarjeta válido.\",\n\tequalTo: \"Por favor, escribe el mismo valor de nuevo.\",\n\textension: \"Por favor, escribe un valor con una extensión aceptada.\",\n\tmaxlength: $.validator.format( \"Por favor, no escribas más de {0} caracteres.\" ),\n\tminlength: $.validator.format( \"Por favor, no escribas menos de {0} caracteres.\" ),\n\trangelength: $.validator.format( \"Por favor, escribe un valor entre {0} y {1} caracteres.\" ),\n\trange: $.validator.format( \"Por favor, escribe un valor entre {0} y {1}.\" ),\n\tmax: $.validator.format( \"Por favor, escribe un valor menor o igual a {0}.\" ),\n\tmin: $.validator.format( \"Por favor, escribe un valor mayor o igual a {0}.\" ),\n\tnifES: \"Por favor, escribe un NIF válido.\",\n\tnieES: \"Por favor, escribe un NIE válido.\",\n\tcifES: \"Por favor, escribe un CIF válido.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_es_AR.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ES (Spanish; Español)\n * Region: AR (Argentina)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Este campo es obligatorio.\",\n\tremote: \"Por favor, completá este campo.\",\n\temail: \"Por favor, escribí una dirección de correo válida.\",\n\turl: \"Por favor, escribí una URL válida.\",\n\tdate: \"Por favor, escribí una fecha válida.\",\n\tdateISO: \"Por favor, escribí una fecha (ISO) válida.\",\n\tnumber: \"Por favor, escribí un número entero válido.\",\n\tdigits: \"Por favor, escribí sólo dígitos.\",\n\tcreditcard: \"Por favor, escribí un número de tarjeta válido.\",\n\tequalTo: \"Por favor, escribí el mismo valor de nuevo.\",\n\textension: \"Por favor, escribí un valor con una extensión aceptada.\",\n\tmaxlength: $.validator.format( \"Por favor, no escribas más de {0} caracteres.\" ),\n\tminlength: $.validator.format( \"Por favor, no escribas menos de {0} caracteres.\" ),\n\trangelength: $.validator.format( \"Por favor, escribí un valor entre {0} y {1} caracteres.\" ),\n\trange: $.validator.format( \"Por favor, escribí un valor entre {0} y {1}.\" ),\n\tmax: $.validator.format( \"Por favor, escribí un valor menor o igual a {0}.\" ),\n\tmin: $.validator.format( \"Por favor, escribí un valor mayor o igual a {0}.\" ),\n\tnifES: \"Por favor, escribí un NIF válido.\",\n\tnieES: \"Por favor, escribí un NIE válido.\",\n\tcifES: \"Por favor, escribí un CIF válido.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_es_PE.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ES (Spanish; Español)\n * Region: PE (Perú)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Este campo es obligatorio.\",\n\tremote: \"Por favor, llene este campo.\",\n\temail: \"Por favor, escriba un correo electrónico válido.\",\n\turl: \"Por favor, escriba una URL válida.\",\n\tdate: \"Por favor, escriba una fecha válida.\",\n\tdateISO: \"Por favor, escriba una fecha (ISO) válida.\",\n\tnumber: \"Por favor, escriba un número válido.\",\n\tdigits: \"Por favor, escriba sólo dígitos.\",\n\tcreditcard: \"Por favor, escriba un número de tarjeta válido.\",\n\tequalTo: \"Por favor, escriba el mismo valor de nuevo.\",\n\textension: \"Por favor, escriba un valor con una extensión permitida.\",\n\tmaxlength: $.validator.format( \"Por favor, no escriba más de {0} caracteres.\" ),\n\tminlength: $.validator.format( \"Por favor, no escriba menos de {0} caracteres.\" ),\n\trangelength: $.validator.format( \"Por favor, escriba un valor entre {0} y {1} caracteres.\" ),\n\trange: $.validator.format( \"Por favor, escriba un valor entre {0} y {1}.\" ),\n\tmax: $.validator.format( \"Por favor, escriba un valor menor o igual a {0}.\" ),\n\tmin: $.validator.format( \"Por favor, escriba un valor mayor o igual a {0}.\" ),\n\tnifES: \"Por favor, escriba un NIF válido.\",\n\tnieES: \"Por favor, escriba un NIE válido.\",\n\tcifES: \"Por favor, escriba un CIF válido.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_et.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ET (Estonian; eesti, eesti keel)\n */\n$.extend( $.validator.messages, {\n\trequired: \"See väli peab olema täidetud.\",\n\tmaxlength: $.validator.format( \"Palun sisestage vähem kui {0} tähemärki.\" ),\n\tminlength: $.validator.format( \"Palun sisestage vähemalt {0} tähemärki.\" ),\n\trangelength: $.validator.format( \"Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki.\" ),\n\temail: \"Palun sisestage korrektne e-maili aadress.\",\n\turl: \"Palun sisestage korrektne URL.\",\n\tdate: \"Palun sisestage korrektne kuupäev.\",\n\tdateISO: \"Palun sisestage korrektne kuupäev (YYYY-MM-DD).\",\n\tnumber: \"Palun sisestage korrektne number.\",\n\tdigits: \"Palun sisestage ainult numbreid.\",\n\tequalTo: \"Palun sisestage sama väärtus uuesti.\",\n\trange: $.validator.format( \"Palun sisestage väärtus vahemikus {0} kuni {1}.\" ),\n\tmax: $.validator.format( \"Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}.\" ),\n\tmin: $.validator.format( \"Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}.\" ),\n\tcreditcard: \"Palun sisestage korrektne krediitkaardi number.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_eu.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: EU (Basque; euskara, euskera)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Eremu hau beharrezkoa da.\",\n\tremote: \"Mesedez, bete eremu hau.\",\n\temail: \"Mesedez, idatzi baliozko posta helbide bat.\",\n\turl: \"Mesedez, idatzi baliozko URL bat.\",\n\tdate: \"Mesedez, idatzi baliozko data bat.\",\n\tdateISO: \"Mesedez, idatzi baliozko (ISO) data bat.\",\n\tnumber: \"Mesedez, idatzi baliozko zenbaki oso bat.\",\n\tdigits: \"Mesedez, idatzi digituak soilik.\",\n\tcreditcard: \"Mesedez, idatzi baliozko txartel zenbaki bat.\",\n\tequalTo: \"Mesedez, idatzi berdina berriro ere.\",\n\textension: \"Mesedez, idatzi onartutako luzapena duen balio bat.\",\n\tmaxlength: $.validator.format( \"Mesedez, ez idatzi {0} karaktere baino gehiago.\" ),\n\tminlength: $.validator.format( \"Mesedez, ez idatzi {0} karaktere baino gutxiago.\" ),\n\trangelength: $.validator.format( \"Mesedez, idatzi {0} eta {1} karaktere arteko balio bat.\" ),\n\trange: $.validator.format( \"Mesedez, idatzi {0} eta {1} arteko balio bat.\" ),\n\tmax: $.validator.format( \"Mesedez, idatzi {0} edo txikiagoa den balio bat.\" ),\n\tmin: $.validator.format( \"Mesedez, idatzi {0} edo handiagoa den balio bat.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_fa.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FA (Persian; فارسی)\n */\n$.extend( $.validator.messages, {\n\trequired: \"تکمیل این فیلد اجباری است.\",\n\tremote: \"لطفا این فیلد را تصحیح کنید.\",\n\temail: \".لطفا یک ایمیل صحیح وارد کنید\",\n\turl: \"لطفا آدرس صحیح وارد کنید.\",\n\tdate: \"لطفا یک تاریخ صحیح وارد کنید\",\n\tdateFA: \"لطفا یک تاریخ صحیح وارد کنید\",\n\tdateISO: \"لطفا تاریخ صحیح وارد کنید (ISO).\",\n\tnumber: \"لطفا عدد صحیح وارد کنید.\",\n\tdigits: \"لطفا تنها رقم وارد کنید\",\n\tcreditcard: \"لطفا کریدیت کارت صحیح وارد کنید.\",\n\tequalTo: \"لطفا مقدار برابری وارد کنید\",\n\textension: \"لطفا مقداری وارد کنید که \",\n\tmaxlength: $.validator.format( \"لطفا بیشتر از {0} حرف وارد نکنید.\" ),\n\tminlength: $.validator.format( \"لطفا کمتر از {0} حرف وارد نکنید.\" ),\n\trangelength: $.validator.format( \"لطفا مقداری بین {0} تا {1} حرف وارد کنید.\" ),\n\trange: $.validator.format( \"لطفا مقداری بین {0} تا {1} حرف وارد کنید.\" ),\n\tmax: $.validator.format( \"لطفا مقداری کمتر از {0} وارد کنید.\" ),\n\tmin: $.validator.format( \"لطفا مقداری بیشتر از {0} وارد کنید.\" ),\n\tminWords: $.validator.format( \"لطفا حداقل {0} کلمه وارد کنید.\" ),\n\tmaxWords: $.validator.format( \"لطفا حداکثر {0} کلمه وارد کنید.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_fi.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FI (Finnish; suomi, suomen kieli)\n */\n$.extend( $.validator.messages, {\n\trequired: \"T&auml;m&auml; kentt&auml; on pakollinen.\",\n\temail: \"Sy&ouml;t&auml; oikea s&auml;hk&ouml;postiosoite.\",\n\turl: \"Sy&ouml;t&auml; oikea URL-osoite.\",\n\tdate: \"Sy&ouml;t&auml; oikea p&auml;iv&auml;m&auml;&auml;r&auml;.\",\n\tdateISO: \"Sy&ouml;t&auml; oikea p&auml;iv&auml;m&auml;&auml;r&auml; muodossa VVVV-KK-PP.\",\n\tnumber: \"Sy&ouml;t&auml; luku.\",\n\tcreditcard: \"Sy&ouml;t&auml; voimassa oleva luottokorttinumero.\",\n\tdigits: \"Sy&ouml;t&auml; pelk&auml;st&auml;&auml;n numeroita.\",\n\tequalTo: \"Sy&ouml;t&auml; sama arvo uudestaan.\",\n\tmaxlength: $.validator.format( \"Voit sy&ouml;tt&auml;&auml; enint&auml;&auml;n {0} merkki&auml;.\" ),\n\tminlength: $.validator.format( \"V&auml;hint&auml;&auml;n {0} merkki&auml;.\" ),\n\trangelength: $.validator.format( \"Sy&ouml;t&auml; v&auml;hint&auml;&auml;n {0} ja enint&auml;&auml;n {1} merkki&auml;.\" ),\n\trange: $.validator.format( \"Sy&ouml;t&auml; arvo v&auml;lilt&auml; {0}&ndash;{1}.\" ),\n\tmax: $.validator.format( \"Sy&ouml;t&auml; arvo, joka on enint&auml;&auml;n {0}.\" ),\n\tmin: $.validator.format( \"Sy&ouml;t&auml; arvo, joka on v&auml;hint&auml;&auml;n {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_fr.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: FR (French; français)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Ce champ est obligatoire.\",\n\tremote: \"Veuillez corriger ce champ.\",\n\temail: \"Veuillez fournir une adresse électronique valide.\",\n\turl: \"Veuillez fournir une adresse URL valide.\",\n\tdate: \"Veuillez fournir une date valide.\",\n\tdateISO: \"Veuillez fournir une date valide (ISO).\",\n\tnumber: \"Veuillez fournir un numéro valide.\",\n\tdigits: \"Veuillez fournir seulement des chiffres.\",\n\tcreditcard: \"Veuillez fournir un numéro de carte de crédit valide.\",\n\tequalTo: \"Veuillez fournir encore la même valeur.\",\n\tnotEqualTo: \"Veuillez fournir une valeur différente, les valeurs ne doivent pas être identiques.\",\n\textension: \"Veuillez fournir une valeur avec une extension valide.\",\n\tmaxlength: $.validator.format( \"Veuillez fournir au plus {0} caractères.\" ),\n\tminlength: $.validator.format( \"Veuillez fournir au moins {0} caractères.\" ),\n\trangelength: $.validator.format( \"Veuillez fournir une valeur qui contient entre {0} et {1} caractères.\" ),\n\trange: $.validator.format( \"Veuillez fournir une valeur entre {0} et {1}.\" ),\n\tmax: $.validator.format( \"Veuillez fournir une valeur inférieure ou égale à {0}.\" ),\n\tmin: $.validator.format( \"Veuillez fournir une valeur supérieure ou égale à {0}.\" ),\n\tstep: $.validator.format( \"Veuillez fournir une valeur multiple de {0}.\" ),\n\tmaxWords: $.validator.format( \"Veuillez fournir au plus {0} mots.\" ),\n\tminWords: $.validator.format( \"Veuillez fournir au moins {0} mots.\" ),\n\trangeWords: $.validator.format( \"Veuillez fournir entre {0} et {1} mots.\" ),\n\tletterswithbasicpunc: \"Veuillez fournir seulement des lettres et des signes de ponctuation.\",\n\talphanumeric: \"Veuillez fournir seulement des lettres, nombres, espaces et soulignages.\",\n\tlettersonly: \"Veuillez fournir seulement des lettres.\",\n\tnowhitespace: \"Veuillez ne pas inscrire d'espaces blancs.\",\n\tziprange: \"Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.\",\n\tinteger: \"Veuillez fournir un nombre non décimal qui est positif ou négatif.\",\n\tvinUS: \"Veuillez fournir un numéro d'identification du véhicule (VIN).\",\n\tdateITA: \"Veuillez fournir une date valide.\",\n\ttime: \"Veuillez fournir une heure valide entre 00:00 et 23:59.\",\n\tphoneUS: \"Veuillez fournir un numéro de téléphone valide.\",\n\tphoneUK: \"Veuillez fournir un numéro de téléphone valide.\",\n\tmobileUK: \"Veuillez fournir un numéro de téléphone mobile valide.\",\n\tstrippedminlength: $.validator.format( \"Veuillez fournir au moins {0} caractères.\" ),\n\temail2: \"Veuillez fournir une adresse électronique valide.\",\n\turl2: \"Veuillez fournir une adresse URL valide.\",\n\tcreditcardtypes: \"Veuillez fournir un numéro de carte de crédit valide.\",\n\tipv4: \"Veuillez fournir une adresse IP v4 valide.\",\n\tipv6: \"Veuillez fournir une adresse IP v6 valide.\",\n\trequire_from_group: \"Veuillez fournir au moins {0} de ces champs.\",\n\tnifES: \"Veuillez fournir un numéro NIF valide.\",\n\tnieES: \"Veuillez fournir un numéro NIE valide.\",\n\tcifES: \"Veuillez fournir un numéro CIF valide.\",\n\tpostalCodeCA: \"Veuillez fournir un code postal valide.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ge.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/**\n * @author  @tatocaster <kutaliatato@gmail.com>\n * Translated default messages for the jQuery validation plugin.\n * Locale: GE (Georgian; ქართული)\n */\n$.extend( $.validator.messages, {\n\trequired: \"ეს ველი სავალდებულოა\",\n\tremote: \"გთხოვთ შეასწოროთ.\",\n\temail: \"გთხოვთ შეიყვანოთ სწორი ფორმატით.\",\n\turl: \"გთხოვთ შეიყვანოთ სწორი ფორმატით.\",\n\tdate: \"გთხოვთ შეიყვანოთ სწორი თარიღი.\",\n\tdateISO: \"გთხოვთ შეიყვანოთ სწორი ფორმატით (ISO).\",\n\tnumber: \"გთხოვთ შეიყვანოთ რიცხვი.\",\n\tdigits: \"დაშვებულია მხოლოდ ციფრები.\",\n\tcreditcard: \"გთხოვთ შეიყვანოთ სწორი ფორმატის ბარათის კოდი.\",\n\tequalTo: \"გთხოვთ შეიყვანოთ იგივე მნიშვნელობა.\",\n\tmaxlength: $.validator.format( \"გთხოვთ შეიყვანოთ არა უმეტეს {0} სიმბოლოსი.\" ),\n\tminlength: $.validator.format( \"შეიყვანეთ მინიმუმ {0} სიმბოლო.\" ),\n\trangelength: $.validator.format( \"გთხოვთ შეიყვანოთ {0} -დან {1} -მდე რაოდენობის სიმბოლოები.\" ),\n\trange: $.validator.format( \"შეიყვანეთ {0} -სა {1} -ს შორის.\" ),\n\tmax: $.validator.format( \"გთხოვთ შეიყვანოთ მნიშვნელობა ნაკლები ან ტოლი {0} -ს.\" ),\n\tmin: $.validator.format( \"გთხოვთ შეიყვანოთ მნიშვნელობა მეტი ან ტოლი {0} -ს.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_gl.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: GL (Galician; Galego)\n */\n( function( $ ) {\n\t$.extend( $.validator.messages, {\n\t\trequired: \"Este campo é obrigatorio.\",\n\t\tremote: \"Por favor, cubre este campo.\",\n\t\temail: \"Por favor, escribe unha dirección de correo válida.\",\n\t\turl: \"Por favor, escribe unha URL válida.\",\n\t\tdate: \"Por favor, escribe unha data válida.\",\n\t\tdateISO: \"Por favor, escribe unha data (ISO) válida.\",\n\t\tnumber: \"Por favor, escribe un número válido.\",\n\t\tdigits: \"Por favor, escribe só díxitos.\",\n\t\tcreditcard: \"Por favor, escribe un número de tarxeta válido.\",\n\t\tequalTo: \"Por favor, escribe o mesmo valor de novo.\",\n\t\textension: \"Por favor, escribe un valor cunha extensión aceptada.\",\n\t\tmaxlength: $.validator.format( \"Por favor, non escribas máis de {0} caracteres.\" ),\n\t\tminlength: $.validator.format( \"Por favor, non escribas menos de {0} caracteres.\" ),\n\t\trangelength: $.validator.format( \"Por favor, escribe un valor entre {0} e {1} caracteres.\" ),\n\t\trange: $.validator.format( \"Por favor, escribe un valor entre {0} e {1}.\" ),\n\t\tmax: $.validator.format( \"Por favor, escribe un valor menor ou igual a {0}.\" ),\n\t\tmin: $.validator.format( \"Por favor, escribe un valor maior ou igual a {0}.\" ),\n\t\tnifES: \"Por favor, escribe un NIF válido.\",\n\t\tnieES: \"Por favor, escribe un NIE válido.\",\n\t\tcifES: \"Por favor, escribe un CIF válido.\"\n\t} );\n}( jQuery ) );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_he.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HE (Hebrew; עברית)\n */\n$.extend( $.validator.messages, {\n\trequired: \"השדה הזה הינו שדה חובה\",\n\tremote: \"נא לתקן שדה זה\",\n\temail: \"נא למלא כתובת דוא\\\"ל חוקית\",\n\turl: \"נא למלא כתובת אינטרנט חוקית\",\n\tdate: \"נא למלא תאריך חוקי\",\n\tdateISO: \"נא למלא תאריך חוקי (ISO)\",\n\tnumber: \"נא למלא מספר\",\n\tdigits: \"נא למלא רק מספרים\",\n\tcreditcard: \"נא למלא מספר כרטיס אשראי חוקי\",\n\tequalTo: \"נא למלא את אותו ערך שוב\",\n\textension: \"נא למלא ערך עם סיומת חוקית\",\n\tmaxlength: $.validator.format( \".נא לא למלא יותר מ- {0} תווים\" ),\n\tminlength: $.validator.format( \"נא למלא לפחות {0} תווים\" ),\n\trangelength: $.validator.format( \"נא למלא ערך בין {0} ל- {1} תווים\" ),\n\trange: $.validator.format( \"נא למלא ערך בין {0} ל- {1}\" ),\n\tmax: $.validator.format( \"נא למלא ערך קטן או שווה ל- {0}\" ),\n\tmin: $.validator.format( \"נא למלא ערך גדול או שווה ל- {0}\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_hr.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HR (Croatia; hrvatski jezik)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Ovo polje je obavezno.\",\n\tremote: \"Ovo polje treba popraviti.\",\n\temail: \"Unesite ispravnu e-mail adresu.\",\n\turl: \"Unesite ispravan URL.\",\n\tdate: \"Unesite ispravan datum.\",\n\tdateISO: \"Unesite ispravan datum (ISO).\",\n\tnumber: \"Unesite ispravan broj.\",\n\tdigits: \"Unesite samo brojeve.\",\n\tcreditcard: \"Unesite ispravan broj kreditne kartice.\",\n\tequalTo: \"Unesite ponovo istu vrijednost.\",\n\textension: \"Unesite vrijednost sa ispravnom ekstenzijom.\",\n\tmaxlength: $.validator.format( \"Maksimalni broj znakova je {0} .\" ),\n\tminlength: $.validator.format( \"Minimalni broj znakova je {0} .\" ),\n\trangelength: $.validator.format( \"Unesite vrijednost između {0} i {1} znakova.\" ),\n\trange: $.validator.format( \"Unesite vrijednost između {0} i {1}.\" ),\n\tmax: $.validator.format( \"Unesite vrijednost manju ili jednaku {0}.\" ),\n\tmin: $.validator.format( \"Unesite vrijednost veću ili jednaku {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_hu.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HU (Hungarian; Magyar)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Kötelező megadni.\",\n\tmaxlength: $.validator.format( \"Legfeljebb {0} karakter hosszú legyen.\" ),\n\tminlength: $.validator.format( \"Legalább {0} karakter hosszú legyen.\" ),\n\trangelength: $.validator.format( \"Legalább {0} és legfeljebb {1} karakter hosszú legyen.\" ),\n\temail: \"Érvényes e-mail címnek kell lennie.\",\n\turl: \"Érvényes URL-nek kell lennie.\",\n\tdate: \"Dátumnak kell lennie.\",\n\tnumber: \"Számnak kell lennie.\",\n\tdigits: \"Csak számjegyek lehetnek.\",\n\tequalTo: \"Meg kell egyeznie a két értéknek.\",\n\trange: $.validator.format( \"{0} és {1} közé kell esnie.\" ),\n\tmax: $.validator.format( \"Nem lehet nagyobb, mint {0}.\" ),\n\tmin: $.validator.format( \"Nem lehet kisebb, mint {0}.\" ),\n\tcreditcard: \"Érvényes hitelkártyaszámnak kell lennie.\",\n\tremote: \"Kérem javítsa ki ezt a mezőt.\",\n\tdateISO: \"Kérem írjon be egy érvényes dátumot (ISO).\",\n\tstep: $.validator.format( \"A {0} egyik többszörösét adja meg.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_hy_AM.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: HY_AM (Armenian; հայերեն լեզու)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Պարտադիր լրացման դաշտ\",\n\tremote: \"Ներմուծեք ճիշտ արժեքը\",\n\temail: \"Ներմուծեք վավեր էլեկտրոնային փոստի հասցե\",\n\turl: \"Ներմուծեք վավեր URL\",\n\tdate: \"Ներմուծեք վավեր ամսաթիվ\",\n\tdateISO: \"Ներմուծեք ISO ֆորմատով վավեր ամսաթիվ։\",\n\tnumber: \"Ներմուծեք թիվ\",\n\tdigits: \"Ներմուծեք միայն թվեր\",\n\tcreditcard: \"Ներմուծեք ճիշտ բանկային քարտի համար\",\n\tequalTo: \"Ներմուծեք միևնուն արժեքը ևս մեկ անգամ\",\n\textension: \"Ընտրեք ճիշտ ընդլանումով ֆայլ\",\n\tmaxlength: $.validator.format( \"Ներմուծեք ոչ ավել քան {0} նիշ\" ),\n\tminlength: $.validator.format( \"Ներմուծեք ոչ պակաս քան {0} նիշ\" ),\n\trangelength: $.validator.format( \"Ներմուծեք {0}֊ից {1} երկարությամբ արժեք\" ),\n\trange: $.validator.format( \"Ներմուծեք թիվ {0}֊ից {1} միջակայքում\" ),\n\tmax: $.validator.format( \"Ներմուծեք թիվ, որը փոքր կամ հավասար է {0}֊ին\" ),\n\tmin: $.validator.format( \"Ներմուծեք թիվ, որը մեծ կամ հավասար է {0}֊ին\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_id.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ID (Indonesia; Indonesian)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Kolom ini diperlukan.\",\n\tremote: \"Harap benarkan kolom ini.\",\n\temail: \"Silakan masukkan format email yang benar.\",\n\turl: \"Silakan masukkan format URL yang benar.\",\n\tdate: \"Silakan masukkan format tanggal yang benar.\",\n\tdateISO: \"Silakan masukkan format tanggal(ISO) yang benar.\",\n\tnumber: \"Silakan masukkan angka yang benar.\",\n\tdigits: \"Harap masukan angka saja.\",\n\tcreditcard: \"Harap masukkan format kartu kredit yang benar.\",\n\tequalTo: \"Harap masukkan nilai yg sama dengan sebelumnya.\",\n\tmaxlength: $.validator.format( \"Input dibatasi hanya {0} karakter.\" ),\n\tminlength: $.validator.format( \"Input tidak kurang dari {0} karakter.\" ),\n\trangelength: $.validator.format( \"Panjang karakter yg diizinkan antara {0} dan {1} karakter.\" ),\n\trange: $.validator.format( \"Harap masukkan nilai antara {0} dan {1}.\" ),\n\tmax: $.validator.format( \"Harap masukkan nilai lebih kecil atau sama dengan {0}.\" ),\n\tmin: $.validator.format( \"Harap masukkan nilai lebih besar atau sama dengan {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_is.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: IS (Icelandic; íslenska)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Þessi reitur er nauðsynlegur.\",\n\tremote: \"Lagaðu þennan reit.\",\n\tmaxlength: $.validator.format( \"Sláðu inn mest {0} stafi.\" ),\n\tminlength: $.validator.format( \"Sláðu inn minnst {0} stafi.\" ),\n\trangelength: $.validator.format( \"Sláðu inn minnst {0} og mest {1} stafi.\" ),\n\temail: \"Sláðu inn gilt netfang.\",\n\turl: \"Sláðu inn gilda vefslóð.\",\n\tdate: \"Sláðu inn gilda dagsetningu.\",\n\tnumber: \"Sláðu inn tölu.\",\n\tdigits: \"Sláðu inn tölustafi eingöngu.\",\n\tequalTo: \"Sláðu sama gildi inn aftur.\",\n\trange: $.validator.format( \"Sláðu inn gildi milli {0} og {1}.\" ),\n\tmax: $.validator.format( \"Sláðu inn gildi sem er minna en eða jafnt og {0}.\" ),\n\tmin: $.validator.format( \"Sláðu inn gildi sem er stærra en eða jafnt og {0}.\" ),\n\tcreditcard: \"Sláðu inn gilt greiðslukortanúmer.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_it.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: IT (Italian; Italiano)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Campo obbligatorio\",\n\tremote: \"Controlla questo campo\",\n\temail: \"Inserisci un indirizzo email valido\",\n\turl: \"Inserisci un indirizzo web valido\",\n\tdate: \"Inserisci una data valida\",\n\tdateISO: \"Inserisci una data valida (ISO)\",\n\tnumber: \"Inserisci un numero valido\",\n\tdigits: \"Inserisci solo numeri\",\n\tcreditcard: \"Inserisci un numero di carta di credito valido\",\n\tequalTo: \"Il valore non corrisponde\",\n\textension: \"Inserisci un valore con un&apos;estensione valida\",\n\tmaxlength: $.validator.format( \"Non inserire pi&ugrave; di {0} caratteri\" ),\n\tminlength: $.validator.format( \"Inserisci almeno {0} caratteri\" ),\n\trangelength: $.validator.format( \"Inserisci un valore compreso tra {0} e {1} caratteri\" ),\n\trange: $.validator.format( \"Inserisci un valore compreso tra {0} e {1}\" ),\n\tmax: $.validator.format( \"Inserisci un valore minore o uguale a {0}\" ),\n\tmin: $.validator.format( \"Inserisci un valore maggiore o uguale a {0}\" ),\n\tnifES: \"Inserisci un NIF valido\",\n\tnieES: \"Inserisci un NIE valido\",\n\tcifES: \"Inserisci un CIF valido\",\n\tcurrency: \"Inserisci una valuta valida\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ja.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: JA (Japanese; 日本語)\n */\n$.extend( $.validator.messages, {\n\trequired: \"このフィールドは必須です。\",\n\tremote: \"このフィールドを修正してください。\",\n\temail: \"有効なEメールアドレスを入力してください。\",\n\turl: \"有効なURLを入力してください。\",\n\tdate: \"有効な日付を入力してください。\",\n\tdateISO: \"有効な日付（ISO）を入力してください。\",\n\tnumber: \"有効な数字を入力してください。\",\n\tdigits: \"数字のみを入力してください。\",\n\tcreditcard: \"有効なクレジットカード番号を入力してください。\",\n\tequalTo: \"同じ値をもう一度入力してください。\",\n\textension: \"有効な拡張子を含む値を入力してください。\",\n\tmaxlength: $.validator.format( \"{0} 文字以内で入力してください。\" ),\n\tminlength: $.validator.format( \"{0} 文字以上で入力してください。\" ),\n\trangelength: $.validator.format( \"{0} 文字から {1} 文字までの値を入力してください。\" ),\n\trange: $.validator.format( \"{0} から {1} までの値を入力してください。\" ),\n\tstep: $.validator.format( \"{0} の倍数を入力してください。\" ),\n\tmax: $.validator.format( \"{0} 以下の値を入力してください。\" ),\n\tmin: $.validator.format( \"{0} 以上の値を入力してください。\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ka.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: KA (Georgian; ქართული)\n */\n$.extend( $.validator.messages, {\n\trequired: \"ამ ველის შევსება აუცილებელია.\",\n\tremote: \"გთხოვთ მიუთითოთ სწორი მნიშვნელობა.\",\n\temail: \"გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.\",\n\turl: \"გთხოვთ მიუთითოთ კორექტული URL.\",\n\tdate: \"გთხოვთ მიუთითოთ კორექტული თარიღი.\",\n\tdateISO: \"გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.\",\n\tnumber: \"გთხოვთ მიუთითოთ ციფრი.\",\n\tdigits: \"გთხოვთ მიუთითოთ მხოლოდ ციფრები.\",\n\tcreditcard: \"გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.\",\n\tequalTo: \"გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.\",\n\textension: \"გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.\",\n\tmaxlength: $.validator.format( \"დასაშვებია არაუმეტეს {0} სიმბოლო.\" ),\n\tminlength: $.validator.format( \"აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო.\" ),\n\trangelength: $.validator.format( \"ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე.\" ),\n\trange: $.validator.format( \"გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე.\" ),\n\tmax: $.validator.format( \"გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს.\" ),\n\tmin: $.validator.format( \"გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_kk.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: KK (Kazakh; қазақ тілі)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Бұл өрісті міндетті түрде толтырыңыз.\",\n\tremote: \"Дұрыс мағына енгізуіңізді сұраймыз.\",\n\temail: \"Нақты электронды поштаңызды енгізуіңізді сұраймыз.\",\n\turl: \"Нақты URL-ды енгізуіңізді сұраймыз.\",\n\tdate: \"Нақты URL-ды енгізуіңізді сұраймыз.\",\n\tdateISO: \"Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.\",\n\tnumber: \"Күнді енгізуіңізді сұраймыз.\",\n\tdigits: \"Тек қана сандарды енгізуіңізді сұраймыз.\",\n\tcreditcard: \"Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.\",\n\tequalTo: \"Осы мәнді қайта енгізуіңізді сұраймыз.\",\n\textension: \"Файлдың кеңейтуін дұрыс таңдаңыз.\",\n\tmaxlength: $.validator.format( \"Ұзындығы {0} символдан көр болмасын.\" ),\n\tminlength: $.validator.format( \"Ұзындығы {0} символдан аз болмасын.\" ),\n\trangelength: $.validator.format( \"Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз.\" ),\n\trange: $.validator.format( \"Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз.\" ),\n\tmax: $.validator.format( \"{0} аз немесе тең санын енгізуіңіді сұраймыз.\" ),\n\tmin: $.validator.format( \"{0} көп немесе тең санын енгізуіңізді сұраймыз.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ko.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: KO (Korean; 한국어)\n */\n$.extend( $.validator.messages, {\n\trequired: \"필수 항목입니다.\",\n\tremote: \"항목을 수정하세요.\",\n\temail: \"유효하지 않은 E-Mail주소입니다.\",\n\turl: \"유효하지 않은 URL입니다.\",\n\tdate: \"올바른 날짜를 입력하세요.\",\n\tdateISO: \"올바른 날짜(ISO)를 입력하세요.\",\n\tnumber: \"유효한 숫자가 아닙니다.\",\n\tdigits: \"숫자만 입력 가능합니다.\",\n\tcreditcard: \"신용카드 번호가 바르지 않습니다.\",\n\tequalTo: \"같은 값을 다시 입력하세요.\",\n\textension: \"올바른 확장자가 아닙니다.\",\n\tmaxlength: $.validator.format( \"{0}자를 넘을 수 없습니다. \" ),\n\tminlength: $.validator.format( \"{0}자 이상 입력하세요.\" ),\n\trangelength: $.validator.format( \"문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요.\" ),\n\trange: $.validator.format( \"{0} 에서 {1} 사이의 값을 입력하세요.\" ),\n\tmax: $.validator.format( \"{0} 이하의 값을 입력하세요.\" ),\n\tmin: $.validator.format( \"{0} 이상의 값을 입력하세요.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_lt.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: LT (Lithuanian; lietuvių kalba)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Šis laukas yra privalomas.\",\n\tremote: \"Prašau pataisyti šį lauką.\",\n\temail: \"Prašau įvesti teisingą elektroninio pašto adresą.\",\n\turl: \"Prašau įvesti teisingą URL.\",\n\tdate: \"Prašau įvesti teisingą datą.\",\n\tdateISO: \"Prašau įvesti teisingą datą (ISO).\",\n\tnumber: \"Prašau įvesti teisingą skaičių.\",\n\tdigits: \"Prašau naudoti tik skaitmenis.\",\n\tcreditcard: \"Prašau įvesti teisingą kreditinės kortelės numerį.\",\n\tequalTo: \"Prašau įvestį tą pačią reikšmę dar kartą.\",\n\textension: \"Prašau įvesti reikšmę su teisingu plėtiniu.\",\n\tmaxlength: $.validator.format( \"Prašau įvesti ne daugiau kaip {0} simbolių.\" ),\n\tminlength: $.validator.format( \"Prašau įvesti bent {0} simbolius.\" ),\n\trangelength: $.validator.format( \"Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių.\" ),\n\trange: $.validator.format( \"Prašau įvesti reikšmę intervale nuo {0} iki {1}.\" ),\n\tmax: $.validator.format( \"Prašau įvesti reikšmę mažesnę arba lygią {0}.\" ),\n\tmin: $.validator.format( \"Prašau įvesti reikšmę didesnę arba lygią {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_lv.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: LV (Latvian; latviešu valoda)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Šis lauks ir obligāts.\",\n\tremote: \"Lūdzu, pārbaudiet šo lauku.\",\n\temail: \"Lūdzu, ievadiet derīgu e-pasta adresi.\",\n\turl: \"Lūdzu, ievadiet derīgu URL adresi.\",\n\tdate: \"Lūdzu, ievadiet derīgu datumu.\",\n\tdateISO: \"Lūdzu, ievadiet derīgu datumu (ISO).\",\n\tnumber: \"Lūdzu, ievadiet derīgu numuru.\",\n\tdigits: \"Lūdzu, ievadiet tikai ciparus.\",\n\tcreditcard: \"Lūdzu, ievadiet derīgu kredītkartes numuru.\",\n\tequalTo: \"Lūdzu, ievadiet to pašu vēlreiz.\",\n\textension: \"Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.\",\n\tmaxlength: $.validator.format( \"Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes.\" ),\n\tminlength: $.validator.format( \"Lūdzu, ievadiet vismaz {0} rakstzīmes.\" ),\n\trangelength: $.validator.format( \"Lūdzu ievadiet {0} līdz {1} rakstzīmes.\" ),\n\trange: $.validator.format( \"Lūdzu, ievadiet skaitli no {0} līdz {1}.\" ),\n\tmax: $.validator.format( \"Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}.\" ),\n\tmin: $.validator.format( \"Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_mk.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: MK (Macedonian; македонски јазик)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Полето е задолжително.\",\n\tremote: \"Поправете го ова поле\",\n\temail: \"Внесете правилна e-mail адреса\",\n\turl: \"Внесете правилен URL.\",\n\tdate: \"Внесете правилен датум\",\n\tdateISO: \"Внесете правилен датум (ISO).\",\n\tnumber: \"Внесете правилен број.\",\n\tdigits: \"Внесете само бројки.\",\n\tcreditcard: \"Внесете правилен број на кредитната картичка.\",\n\tequalTo: \"Внесете ја истата вредност повторно.\",\n\textension: \"Внесете вредност со соодветна екстензија.\",\n\tmaxlength: $.validator.format( \"Внесете максимално {0} знаци.\" ),\n\tminlength: $.validator.format( \"Внесете барем {0} знаци.\" ),\n\trangelength: $.validator.format( \"Внесете вредност со должина помеѓу {0} и {1} знаци.\" ),\n\trange: $.validator.format( \"Внесете вредност помеѓу {0} и {1}.\" ),\n\tmax: $.validator.format( \"Внесете вредност помала или еднаква на {0}.\" ),\n\tmin: $.validator.format( \"Внесете вредност поголема или еднаква на {0}\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_my.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: MY (Malay; Melayu)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Medan ini diperlukan.\",\n\tremote: \"Sila betulkan medan ini.\",\n\temail: \"Sila masukkan alamat emel yang betul.\",\n\turl: \"Sila masukkan URL yang betul.\",\n\tdate: \"Sila masukkan tarikh yang betul.\",\n\tdateISO: \"Sila masukkan tarikh(ISO) yang betul.\",\n\tnumber: \"Sila masukkan nombor yang betul.\",\n\tdigits: \"Sila masukkan nilai digit sahaja.\",\n\tcreditcard: \"Sila masukkan nombor kredit kad yang betul.\",\n\tequalTo: \"Sila masukkan nilai yang sama semula.\",\n\textension: \"Sila masukkan nilai yang telah diterima.\",\n\tmaxlength: $.validator.format( \"Sila masukkan tidak lebih dari {0} aksara.\" ),\n\tminlength: $.validator.format( \"Sila masukkan sekurang-kurangnya {0} aksara.\" ),\n\trangelength: $.validator.format( \"Sila masukkan antara {0} dan {1} panjang aksara.\" ),\n\trange: $.validator.format( \"Sila masukkan nilai antara {0} dan {1} aksara.\" ),\n\tmax: $.validator.format( \"Sila masukkan nilai yang kurang atau sama dengan {0}.\" ),\n\tmin: $.validator.format( \"Sila masukkan nilai yang lebih atau sama dengan {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_nl.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: NL (Dutch; Nederlands, Vlaams)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Dit is een verplicht veld.\",\n\tremote: \"Controleer dit veld.\",\n\temail: \"Vul hier een geldig e-mailadres in.\",\n\turl: \"Vul hier een geldige URL in.\",\n\tdate: \"Vul hier een geldige datum in.\",\n\tdateISO: \"Vul hier een geldige datum in (ISO-formaat).\",\n\tnumber: \"Vul hier een geldig getal in.\",\n\tdigits: \"Vul hier alleen getallen in.\",\n\tcreditcard: \"Vul hier een geldig creditcardnummer in.\",\n\tequalTo: \"Vul hier dezelfde waarde in.\",\n\textension: \"Vul hier een waarde in met een geldige extensie.\",\n\tmaxlength: $.validator.format( \"Vul hier maximaal {0} tekens in.\" ),\n\tminlength: $.validator.format( \"Vul hier minimaal {0} tekens in.\" ),\n\trangelength: $.validator.format( \"Vul hier een waarde in van minimaal {0} en maximaal {1} tekens.\" ),\n\trange: $.validator.format( \"Vul hier een waarde in van minimaal {0} en maximaal {1}.\" ),\n\tmax: $.validator.format( \"Vul hier een waarde in kleiner dan of gelijk aan {0}.\" ),\n\tmin: $.validator.format( \"Vul hier een waarde in groter dan of gelijk aan {0}.\" ),\n\tstep: $.validator.format( \"Vul hier een veelvoud van {0} in.\" ),\n\n\t// For validations in additional-methods.js\n\tiban: \"Vul hier een geldig IBAN in.\",\n\tdateNL: \"Vul hier een geldige datum in.\",\n\tphoneNL: \"Vul hier een geldig Nederlands telefoonnummer in.\",\n\tmobileNL: \"Vul hier een geldig Nederlands mobiel telefoonnummer in.\",\n\tpostalcodeNL: \"Vul hier een geldige postcode in.\",\n\tbankaccountNL: \"Vul hier een geldig bankrekeningnummer in.\",\n\tgiroaccountNL: \"Vul hier een geldig gironummer in.\",\n\tbankorgiroaccountNL: \"Vul hier een geldig bank- of gironummer in.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_no.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: NO (Norwegian; Norsk)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Dette feltet er obligatorisk.\",\n\tmaxlength: $.validator.format( \"Maksimalt {0} tegn.\" ),\n\tminlength: $.validator.format( \"Minimum {0} tegn.\" ),\n\trangelength: $.validator.format( \"Angi minimum {0} og maksimum {1} tegn.\" ),\n\temail: \"Oppgi en gyldig epostadresse.\",\n\turl: \"Angi en gyldig URL.\",\n\tdate: \"Angi en gyldig dato.\",\n\tdateISO: \"Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).\",\n\tdateSE: \"Angi en gyldig dato.\",\n\tnumber: \"Angi et gyldig nummer.\",\n\tnumberSE: \"Angi et gyldig nummer.\",\n\tdigits: \"Skriv kun tall.\",\n\tequalTo: \"Skriv samme verdi igjen.\",\n\trange: $.validator.format( \"Angi en verdi mellom {0} og {1}.\" ),\n\tmax: $.validator.format( \"Angi en verdi som er mindre eller lik {0}.\" ),\n\tmin: $.validator.format( \"Angi en verdi som er st&oslash;rre eller lik {0}.\" ),\n\tstep: $.validator.format( \"Angi en verdi ganger {0}.\" ),\n\tcreditcard: \"Angi et gyldig kredittkortnummer.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_pl.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PL (Polish; język polski, polszczyzna)\n */\n$.extend( $.validator.messages, {\n\trequired: \"To pole jest wymagane.\",\n\tremote: \"Proszę o wypełnienie tego pola.\",\n\temail: \"Proszę o podanie prawidłowego adresu email.\",\n\turl: \"Proszę o podanie prawidłowego URL.\",\n\tdate: \"Proszę o podanie prawidłowej daty.\",\n\tdateISO: \"Proszę o podanie prawidłowej daty (ISO).\",\n\tnumber: \"Proszę o podanie prawidłowej liczby.\",\n\tdigits: \"Proszę o podanie samych cyfr.\",\n\tcreditcard: \"Proszę o podanie prawidłowej karty kredytowej.\",\n\tequalTo: \"Proszę o podanie tej samej wartości ponownie.\",\n\textension: \"Proszę o podanie wartości z prawidłowym rozszerzeniem.\",\n\tnipPL: \"Proszę o podanie prawidłowego numeru NIP.\",\n\tmaxlength: $.validator.format( \"Proszę o podanie nie więcej niż {0} znaków.\" ),\n\tminlength: $.validator.format( \"Proszę o podanie przynajmniej {0} znaków.\" ),\n\trangelength: $.validator.format( \"Proszę o podanie wartości o długości od {0} do {1} znaków.\" ),\n\trange: $.validator.format( \"Proszę o podanie wartości z przedziału od {0} do {1}.\" ),\n\tmax: $.validator.format( \"Proszę o podanie wartości mniejszej bądź równej {0}.\" ),\n\tmin: $.validator.format( \"Proszę o podanie wartości większej bądź równej {0}.\" ),\n\tpattern: $.validator.format( \"Pole zawiera niedozwolone znaki.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_pt_BR.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PT (Portuguese; português)\n * Region: BR (Brazil)\n */\n$.extend( $.validator.messages, {\n\n\t// Core\n\trequired: \"Este campo &eacute; requerido.\",\n\tremote: \"Por favor, corrija este campo.\",\n\temail: \"Por favor, forne&ccedil;a um endere&ccedil;o de email v&aacute;lido.\",\n\turl: \"Por favor, forne&ccedil;a uma URL v&aacute;lida.\",\n\tdate: \"Por favor, forne&ccedil;a uma data v&aacute;lida.\",\n\tdateISO: \"Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).\",\n\tnumber: \"Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.\",\n\tdigits: \"Por favor, forne&ccedil;a somente d&iacute;gitos.\",\n\tcreditcard: \"Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.\",\n\tequalTo: \"Por favor, forne&ccedil;a o mesmo valor novamente.\",\n\tmaxlength: $.validator.format( \"Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres.\" ),\n\tminlength: $.validator.format( \"Por favor, forne&ccedil;a ao menos {0} caracteres.\" ),\n\trangelength: $.validator.format( \"Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento.\" ),\n\trange: $.validator.format( \"Por favor, forne&ccedil;a um valor entre {0} e {1}.\" ),\n\tmax: $.validator.format( \"Por favor, forne&ccedil;a um valor menor ou igual a {0}.\" ),\n\tmin: $.validator.format( \"Por favor, forne&ccedil;a um valor maior ou igual a {0}.\" ),\n\tstep: $.validator.format( \"Por favor, forne&ccedil;a um valor m&acute;tiplo de {0}.\" ),\n\n\t// Metodos Adicionais\n\tmaxWords: $.validator.format( \"Por favor, forne&ccedil;a com {0} palavras ou menos.\" ),\n\tminWords: $.validator.format( \"Por favor, forne&ccedil;a pelo menos {0} palavras.\" ),\n\trangeWords: $.validator.format( \"Por favor, forne&ccedil;a entre {0} e {1} palavras.\" ),\n\taccept: \"Por favor, forne&ccedil;a um tipo v&aacute;lido.\",\n\talphanumeric: \"Por favor, forne&ccedil;a somente com letras, n&uacute;meros e sublinhados.\",\n\tbankaccountNL: \"Por favor, forne&ccedil;a com um n&uacute;mero de conta banc&aacute;ria v&aacute;lida.\",\n\tbankorgiroaccountNL: \"Por favor, forne&ccedil;a um banco v&aacute;lido ou n&uacute;mero de conta.\",\n\tbic: \"Por favor, forne&ccedil;a um c&oacute;digo BIC v&aacute;lido.\",\n\tcifES: \"Por favor, forne&ccedil;a um c&oacute;digo CIF v&aacute;lido.\",\n\tcreditcardtypes: \"Por favor, forne&ccedil;a um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.\",\n\tcurrency: \"Por favor, forne&ccedil;a uma moeda v&aacute;lida.\",\n\tdateFA: \"Por favor, forne&ccedil;a uma data correta.\",\n\tdateITA: \"Por favor, forne&ccedil;a uma data correta.\",\n\tdateNL: \"Por favor, forne&ccedil;a uma data correta.\",\n\textension: \"Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.\",\n\tgiroaccountNL: \"Por favor, forne&ccedil;a um n&uacute;mero de conta corrente v&aacute;lido.\",\n\tiban: \"Por favor, forne&ccedil;a um c&oacute;digo IBAN v&aacute;lido.\",\n\tinteger: \"Por favor, forne&ccedil;a um n&uacute;mero n&atilde;o decimal.\",\n\tipv4: \"Por favor, forne&ccedil;a um IPv4 v&aacute;lido.\",\n\tipv6: \"Por favor, forne&ccedil;a um IPv6 v&aacute;lido.\",\n\tlettersonly: \"Por favor, forne&ccedil;a apenas com letras.\",\n\tletterswithbasicpunc: \"Por favor, forne&ccedil;a apenas letras ou pontua&ccedil;ões.\",\n\tmobileNL: \"Por favor, fornece&ccedil;a um n&uacute;mero v&aacute;lido de telefone.\",\n\tmobileUK: \"Por favor, fornece&ccedil;a um n&uacute;mero v&aacute;lido de telefone.\",\n\tnieES: \"Por favor, forne&ccedil;a um NIE v&aacute;lido.\",\n\tnifES: \"Por favor, forne&ccedil;a um NIF v&aacute;lido.\",\n\tnowhitespace: \"Por favor, n&atilde;o utilize espa&ccedil;os em branco.\",\n\tpattern: \"O formato fornenecido &eacute; inv&aacute;lido.\",\n\tphoneNL: \"Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.\",\n\tphoneUK: \"Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.\",\n\tphoneUS: \"Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.\",\n\tphonesUK: \"Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.\",\n\tpostalCodeCA: \"Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.\",\n\tpostalcodeIT: \"Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.\",\n\tpostalcodeNL: \"Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.\",\n\tpostcodeUK: \"Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.\",\n\tpostalcodeBR: \"Por favor, forne&ccedil;a um CEP v&aacute;lido.\",\n\trequire_from_group: $.validator.format( \"Por favor, forne&ccedil;a pelo menos {0} destes campos.\" ),\n\tskip_or_fill_minimum: $.validator.format( \"Por favor, optar entre ignorar esses campos ou preencher pelo menos {0} deles.\" ),\n\tstateUS: \"Por favor, forne&ccedil;a um estado v&aacute;lido.\",\n\tstrippedminlength: $.validator.format( \"Por favor, forne&ccedil;a pelo menos {0} caracteres.\" ),\n\ttime: \"Por favor, forne&ccedil;a um hor&aacute;rio v&aacute;lido, no intervado de 00:00 e 23:59.\",\n\ttime12h: \"Por favor, forne&ccedil;a um hor&aacute;rio v&aacute;lido, no intervado de 01:00 e 12:59 am/pm.\",\n\turl2: \"Por favor, fornece&ccedil;a uma URL v&aacute;lida.\",\n\tvinUS: \"O n&uacute;mero de identifica&ccedil;&atilde;o de ve&iacute;culo informada (VIN) &eacute; inv&aacute;lido.\",\n\tzipcodeUS: \"Por favor, fornece&ccedil;a um c&oacute;digo postal americano v&aacute;lido.\",\n\tziprange: \"O c&oacute;digo postal deve estar entre 902xx-xxxx e 905xx-xxxx\",\n\tcpfBR: \"Por favor, forne&ccedil;a um CPF v&aacute;lido.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_pt_PT.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: PT (Portuguese; português)\n * Region: PT (Portugal)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Campo de preenchimento obrigat&oacute;rio.\",\n\tremote: \"Por favor, corrija este campo.\",\n\temail: \"Por favor, introduza um endere&ccedil;o eletr&oacute;nico v&aacute;lido.\",\n\turl: \"Por favor, introduza um URL v&aacute;lido.\",\n\tdate: \"Por favor, introduza uma data v&aacute;lida.\",\n\tdateISO: \"Por favor, introduza uma data v&aacute;lida (ISO).\",\n\tnumber: \"Por favor, introduza um n&uacute;mero v&aacute;lido.\",\n\tdigits: \"Por favor, introduza apenas d&iacute;gitos.\",\n\tcreditcard: \"Por favor, introduza um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.\",\n\tequalTo: \"Por favor, introduza de novo o mesmo valor.\",\n\textension: \"Por favor, introduza um ficheiro com uma extens&atilde;o v&aacute;lida.\",\n\tmaxlength: $.validator.format( \"Por favor, n&atilde;o introduza mais do que {0} caracteres.\" ),\n\tminlength: $.validator.format( \"Por favor, introduza pelo menos {0} caracteres.\" ),\n\trangelength: $.validator.format( \"Por favor, introduza entre {0} e {1} caracteres.\" ),\n\trange: $.validator.format( \"Por favor, introduza um valor entre {0} e {1}.\" ),\n\tmax: $.validator.format( \"Por favor, introduza um valor menor ou igual a {0}.\" ),\n\tmin: $.validator.format( \"Por favor, introduza um valor maior ou igual a {0}.\" ),\n\tnifES: \"Por favor, introduza um NIF v&aacute;lido.\",\n\tnieES: \"Por favor, introduza um NIE v&aacute;lido.\",\n\tcifES: \"Por favor, introduza um CIF v&aacute;lido.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ro.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: RO (Romanian, limba română)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Acest câmp este obligatoriu.\",\n\tremote: \"Te rugăm să completezi acest câmp.\",\n\temail: \"Te rugăm să introduci o adresă de email validă\",\n\turl: \"Te rugăm sa introduci o adresă URL validă.\",\n\tdate: \"Te rugăm să introduci o dată corectă.\",\n\tdateISO: \"Te rugăm să introduci o dată (ISO) corectă.\",\n\tnumber: \"Te rugăm să introduci un număr întreg valid.\",\n\tdigits: \"Te rugăm să introduci doar cifre.\",\n\tcreditcard: \"Te rugăm să introduci un numar de carte de credit valid.\",\n\tequalTo: \"Te rugăm să reintroduci valoarea.\",\n\textension: \"Te rugăm să introduci o valoare cu o extensie validă.\",\n\tmaxlength: $.validator.format( \"Te rugăm să nu introduci mai mult de {0} caractere.\" ),\n\tminlength: $.validator.format( \"Te rugăm să introduci cel puțin {0} caractere.\" ),\n\trangelength: $.validator.format( \"Te rugăm să introduci o valoare între {0} și {1} caractere.\" ),\n\trange: $.validator.format( \"Te rugăm să introduci o valoare între {0} și {1}.\" ),\n\tmax: $.validator.format( \"Te rugăm să introduci o valoare egal sau mai mică decât {0}.\" ),\n\tmin: $.validator.format( \"Te rugăm să introduci o valoare egal sau mai mare decât {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ru.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: RU (Russian; русский язык)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Это поле необходимо заполнить.\",\n\tremote: \"Пожалуйста, введите правильное значение.\",\n\temail: \"Пожалуйста, введите корректный адрес электронной почты.\",\n\turl: \"Пожалуйста, введите корректный URL.\",\n\tdate: \"Пожалуйста, введите корректную дату.\",\n\tdateISO: \"Пожалуйста, введите корректную дату в формате ISO.\",\n\tnumber: \"Пожалуйста, введите число.\",\n\tdigits: \"Пожалуйста, вводите только цифры.\",\n\tcreditcard: \"Пожалуйста, введите правильный номер кредитной карты.\",\n\tequalTo: \"Пожалуйста, введите такое же значение ещё раз.\",\n\textension: \"Пожалуйста, выберите файл с правильным расширением.\",\n\tmaxlength: $.validator.format( \"Пожалуйста, введите не больше {0} символов.\" ),\n\tminlength: $.validator.format( \"Пожалуйста, введите не меньше {0} символов.\" ),\n\trangelength: $.validator.format( \"Пожалуйста, введите значение длиной от {0} до {1} символов.\" ),\n\trange: $.validator.format( \"Пожалуйста, введите число от {0} до {1}.\" ),\n\tmax: $.validator.format( \"Пожалуйста, введите число, меньшее или равное {0}.\" ),\n\tmin: $.validator.format( \"Пожалуйста, введите число, большее или равное {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_sd.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SD (Sindhi; سنڌي)\n */\n$.extend( $.validator.messages, {\n    required: \"هنن جاين جي ضرورت آهي\",\n    remote: \"هنن جاين جي ضرورت آهي\",\n    email: \"لکيل اي ميل غلط آهي\",\n    url: \"لکيل ايڊريس غلط آهي\",\n    date: \"لکيل تاريخ غلط آهي\",\n    dateISO: \"جي معيار جي مطابق نه آهي (ISO) لکيل تاريخ\",\n    number: \"لکيل انگ صحيح ناهي\",\n    digits: \"رڳو انگ داخل ڪري سگهجي ٿو\",\n    creditcard: \"لکيل ڪارڊ نمبر صحيح نه آهي\",\n    equalTo: \"داخل ٿيل ڀيٽ صحيح نه آهي\",\n    extension: \"لکيل غلط آهي\",\n    maxlength: $.validator.format( \"وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي\" ),\n    minlength: $.validator.format( \"گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي\" ),\n    rangelength: $.validator.format( \"داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي\" ),\n    range: $.validator.format( \"داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي\" ),\n    max: $.validator.format( \"وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي\" ),\n    min: $.validator.format( \"گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_si.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SI (Slovenian)\n */\n$.extend( $.validator.messages, {\n\trequired: \"To polje je obvezno.\",\n\tremote: \"Vpis v tem polju ni v pravi obliki.\",\n\temail: \"Prosimo, vnesite pravi email naslov.\",\n\turl: \"Prosimo, vnesite pravi URL.\",\n\tdate: \"Prosimo, vnesite pravi datum.\",\n\tdateISO: \"Prosimo, vnesite pravi datum (ISO).\",\n\tnumber: \"Prosimo, vnesite pravo številko.\",\n\tdigits: \"Prosimo, vnesite samo številke.\",\n\tcreditcard: \"Prosimo, vnesite pravo številko kreditne kartice.\",\n\tequalTo: \"Prosimo, ponovno vnesite enako vsebino.\",\n\textension: \"Prosimo, vnesite vsebino z pravo končnico.\",\n\tmaxlength: $.validator.format( \"Prosimo, da ne vnašate več kot {0} znakov.\" ),\n\tminlength: $.validator.format( \"Prosimo, vnesite vsaj {0} znakov.\" ),\n\trangelength: $.validator.format( \"Prosimo, vnesite od {0} do {1} znakov.\" ),\n\trange: $.validator.format( \"Prosimo, vnesite vrednost med {0} in {1}.\" ),\n\tmax: $.validator.format( \"Prosimo, vnesite vrednost manjšo ali enako {0}.\" ),\n\tmin: $.validator.format( \"Prosimo, vnesite vrednost večjo ali enako {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_sk.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SK (Slovak; slovenčina, slovenský jazyk)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Povinné zadať.\",\n\tmaxlength: $.validator.format( \"Maximálne {0} znakov.\" ),\n\tminlength: $.validator.format( \"Minimálne {0} znakov.\" ),\n\trangelength: $.validator.format( \"Minimálne {0} a maximálne {1} znakov.\" ),\n\temail: \"E-mailová adresa musí byť platná.\",\n\turl: \"URL musí byť platná.\",\n\tdate: \"Musí byť dátum.\",\n\tnumber: \"Musí byť číslo.\",\n\tdigits: \"Môže obsahovať iba číslice.\",\n\tequalTo: \"Dve hodnoty sa musia rovnať.\",\n\trange: $.validator.format( \"Musí byť medzi {0} a {1}.\" ),\n\tmax: $.validator.format( \"Nemôže byť viac ako {0}.\" ),\n\tmin: $.validator.format( \"Nemôže byť menej ako {0}.\" ),\n\tcreditcard: \"Číslo platobnej karty musí byť platné.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_sl.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Language: SL (Slovenian; slovenski jezik)\n */\n$.extend( $.validator.messages, {\n\trequired: \"To polje je obvezno.\",\n\tremote: \"Prosimo popravite to polje.\",\n\temail: \"Prosimo vnesite veljaven email naslov.\",\n\turl: \"Prosimo vnesite veljaven URL naslov.\",\n\tdate: \"Prosimo vnesite veljaven datum.\",\n\tdateISO: \"Prosimo vnesite veljaven ISO datum.\",\n\tnumber: \"Prosimo vnesite veljavno število.\",\n\tdigits: \"Prosimo vnesite samo števila.\",\n\tcreditcard: \"Prosimo vnesite veljavno številko kreditne kartice.\",\n\tequalTo: \"Prosimo ponovno vnesite vrednost.\",\n\textension: \"Prosimo vnesite vrednost z veljavno končnico.\",\n\tmaxlength: $.validator.format( \"Prosimo vnesite največ {0} znakov.\" ),\n\tminlength: $.validator.format( \"Prosimo vnesite najmanj {0} znakov.\" ),\n\trangelength: $.validator.format( \"Prosimo vnesite najmanj {0} in največ {1} znakov.\" ),\n\trange: $.validator.format( \"Prosimo vnesite vrednost med {0} in {1}.\" ),\n\tmax: $.validator.format( \"Prosimo vnesite vrednost manjše ali enako {0}.\" ),\n\tmin: $.validator.format( \"Prosimo vnesite vrednost večje ali enako {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_sr.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SR (Serbian; српски језик)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Поље је обавезно.\",\n\tremote: \"Средите ово поље.\",\n\temail: \"Унесите исправну и-мејл адресу.\",\n\turl: \"Унесите исправан URL.\",\n\tdate: \"Унесите исправан датум.\",\n\tdateISO: \"Унесите исправан датум (ISO).\",\n\tnumber: \"Унесите исправан број.\",\n\tdigits: \"Унесите само цифе.\",\n\tcreditcard: \"Унесите исправан број кредитне картице.\",\n\tequalTo: \"Унесите исту вредност поново.\",\n\textension: \"Унесите вредност са одговарајућом екстензијом.\",\n\tmaxlength: $.validator.format( \"Унесите мање од {0} карактера.\" ),\n\tminlength: $.validator.format( \"Унесите барем {0} карактера.\" ),\n\trangelength: $.validator.format( \"Унесите вредност дугачку између {0} и {1} карактера.\" ),\n\trange: $.validator.format( \"Унесите вредност између {0} и {1}.\" ),\n\tmax: $.validator.format( \"Унесите вредност мању или једнаку {0}.\" ),\n\tmin: $.validator.format( \"Унесите вредност већу или једнаку {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_sr_lat.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SR (Serbian - Latin alphabet; srpski jezik - latinica)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Polje je obavezno.\",\n\tremote: \"Sredite ovo polje.\",\n\temail: \"Unesite ispravnu e-mail adresu\",\n\turl: \"Unesite ispravan URL.\",\n\tdate: \"Unesite ispravan datum.\",\n\tdateISO: \"Unesite ispravan datum (ISO).\",\n\tnumber: \"Unesite ispravan broj.\",\n\tdigits: \"Unesite samo cifre.\",\n\tcreditcard: \"Unesite ispravan broj kreditne kartice.\",\n\tequalTo: \"Unesite istu vrednost ponovo.\",\n\textension: \"Unesite vrednost sa odgovarajućom ekstenzijom.\",\n\tmaxlength: $.validator.format( \"Unesite manje od {0} karaktera.\" ),\n\tminlength: $.validator.format( \"Unesite barem {0} karaktera.\" ),\n\trangelength: $.validator.format( \"Unesite vrednost dugačku između {0} i {1} karaktera.\" ),\n\trange: $.validator.format( \"Unesite vrednost između {0} i {1}.\" ),\n\tmax: $.validator.format( \"Unesite vrednost manju ili jednaku {0}.\" ),\n\tmin: $.validator.format( \"Unesite vrednost veću ili jednaku {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_sv.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: SV (Swedish; Svenska)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Detta f&auml;lt &auml;r obligatoriskt.\",\n\tmaxlength: $.validator.format( \"Du f&aring;r ange h&ouml;gst {0} tecken.\" ),\n\tminlength: $.validator.format( \"Du m&aring;ste ange minst {0} tecken.\" ),\n\trangelength: $.validator.format( \"Ange minst {0} och max {1} tecken.\" ),\n\temail: \"Ange en korrekt e-postadress.\",\n\turl: \"Ange en korrekt URL.\",\n\tdate: \"Ange ett korrekt datum.\",\n\tdateISO: \"Ange ett korrekt datum (&Aring;&Aring;&Aring;&Aring;-MM-DD).\",\n\tnumber: \"Ange ett korrekt nummer.\",\n\tdigits: \"Ange endast siffror.\",\n\tequalTo: \"Ange samma v&auml;rde igen.\",\n\trange: $.validator.format( \"Ange ett v&auml;rde mellan {0} och {1}.\" ),\n\tmax: $.validator.format( \"Ange ett v&auml;rde som &auml;r mindre eller lika med {0}.\" ),\n\tmin: $.validator.format( \"Ange ett v&auml;rde som &auml;r st&ouml;rre eller lika med {0}.\" ),\n\tcreditcard: \"Ange ett korrekt kreditkortsnummer.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_th.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: TH (Thai; ไทย)\n */\n$.extend( $.validator.messages, {\n\trequired: \"โปรดระบุ\",\n\tremote: \"โปรดแก้ไขให้ถูกต้อง\",\n\temail: \"โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง\",\n\turl: \"โปรดระบุ URL ที่ถูกต้อง\",\n\tdate: \"โปรดระบุวันที่ ที่ถูกต้อง\",\n\tdateISO: \"โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).\",\n\tnumber: \"โปรดระบุทศนิยมที่ถูกต้อง\",\n\tdigits: \"โปรดระบุจำนวนเต็มที่ถูกต้อง\",\n\tcreditcard: \"โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง\",\n\tequalTo: \"โปรดระบุค่าเดิมอีกครั้ง\",\n\textension: \"โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง\",\n\tmaxlength: $.validator.format( \"โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ\" ),\n\tminlength: $.validator.format( \"โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ\" ),\n\trangelength: $.validator.format( \"โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ\" ),\n\trange: $.validator.format( \"โปรดระบุค่าระหว่าง {0} และ {1}\" ),\n\tmax: $.validator.format( \"โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}\" ),\n\tmin: $.validator.format( \"โปรดระบุค่ามากกว่าหรือเท่ากับ {0}\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_tj.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: TJ (Tajikistan; Забони тоҷикӣ)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Ворид кардани ин филд маҷбури аст.\",\n\tremote: \"Илтимос, маълумоти саҳеҳ ворид кунед.\",\n\temail: \"Илтимос, почтаи электронии саҳеҳ ворид кунед.\",\n\turl: \"Илтимос, URL адреси саҳеҳ ворид кунед.\",\n\tdate: \"Илтимос, таърихи саҳеҳ ворид кунед.\",\n\tdateISO: \"Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.\",\n\tnumber: \"Илтимос, рақамҳои саҳеҳ ворид кунед.\",\n\tdigits: \"Илтимос, танҳо рақам ворид кунед.\",\n\tcreditcard: \"Илтимос, кредит карди саҳеҳ ворид кунед.\",\n\tequalTo: \"Илтимос, миқдори баробар ворид кунед.\",\n\textension: \"Илтимос, қофияи файлро дуруст интихоб кунед\",\n\tmaxlength: $.validator.format( \"Илтимос, бештар аз {0} рамз ворид накунед.\" ),\n\tminlength: $.validator.format( \"Илтимос, камтар аз {0} рамз ворид накунед.\" ),\n\trangelength: $.validator.format( \"Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед.\" ),\n\trange: $.validator.format( \"Илтимос, аз {0} то {1} рақам зиёд ворид кунед.\" ),\n\tmax: $.validator.format( \"Илтимос, бештар аз {0} рақам ворид накунед.\" ),\n\tmin: $.validator.format( \"Илтимос, камтар аз {0} рақам ворид накунед.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_tr.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: TR (Turkish; Türkçe)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Bu alanın doldurulması zorunludur.\",\n\tremote: \"Lütfen bu alanı düzeltin.\",\n\temail: \"Lütfen geçerli bir e-posta adresi giriniz.\",\n\turl: \"Lütfen geçerli bir web adresi (URL) giriniz.\",\n\tdate: \"Lütfen geçerli bir tarih giriniz.\",\n\tdateISO: \"Lütfen geçerli bir tarih giriniz(ISO formatında)\",\n\tnumber: \"Lütfen geçerli bir sayı giriniz.\",\n\tdigits: \"Lütfen sadece sayısal karakterler giriniz.\",\n\tcreditcard: \"Lütfen geçerli bir kredi kartı giriniz.\",\n\tequalTo: \"Lütfen aynı değeri tekrar giriniz.\",\n\textension: \"Lütfen geçerli uzantıya sahip bir değer giriniz.\",\n\tmaxlength: $.validator.format( \"Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz.\" ),\n\tminlength: $.validator.format( \"Lütfen en az {0} karakter uzunluğunda bir değer giriniz.\" ),\n\trangelength: $.validator.format( \"Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz.\" ),\n\trange: $.validator.format( \"Lütfen {0} ile {1} arasında bir değer giriniz.\" ),\n\tmax: $.validator.format( \"Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz.\" ),\n\tmin: $.validator.format( \"Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.\" ),\n\trequire_from_group: \"Lütfen bu alanların en az {0} tanesini doldurunuz.\"\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_uk.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: UK (Ukrainian; українська мова)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Це поле необхідно заповнити.\",\n\tremote: \"Будь ласка, введіть правильне значення.\",\n\temail: \"Будь ласка, введіть коректну адресу електронної пошти.\",\n\turl: \"Будь ласка, введіть коректний URL.\",\n\tdate: \"Будь ласка, введіть коректну дату.\",\n\tdateISO: \"Будь ласка, введіть коректну дату у форматі ISO.\",\n\tnumber: \"Будь ласка, введіть число.\",\n\tdigits: \"Вводите потрібно лише цифри.\",\n\tcreditcard: \"Будь ласка, введіть правильний номер кредитної карти.\",\n\tequalTo: \"Будь ласка, введіть таке ж значення ще раз.\",\n\textension: \"Будь ласка, виберіть файл з правильним розширенням.\",\n\tmaxlength: $.validator.format( \"Будь ласка, введіть не більше {0} символів.\" ),\n\tminlength: $.validator.format( \"Будь ласка, введіть не менше {0} символів.\" ),\n\trangelength: $.validator.format( \"Будь ласка, введіть значення довжиною від {0} до {1} символів.\" ),\n\trange: $.validator.format( \"Будь ласка, введіть число від {0} до {1}.\" ),\n\tmax: $.validator.format( \"Будь ласка, введіть число, менше або рівно {0}.\" ),\n\tmin: $.validator.format( \"Будь ласка, введіть число, більше або рівно {0}.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_ur.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: UR (Urdu; اردو)\n */\n$.extend( $.validator.messages, {\n\trequired: \"ان معلومات کا اندراج ضروری ہے\",\n\tremote: \"ان معلومات کا اندراج ضروری ہے\",\n\temail: \"درج کی ہوئی ای میل درست نہیں ہے\",\n\turl: \"درج کیا گیا پتہ درست نہیں ہے\",\n\tdate: \"درج کی گئی تاریخ درست نہیں ہے\",\n\tdateISO: \"معیار کے مطابق نہیں ہے (ISO) درج کی گئی تاریخ\",\n\tnumber: \"درج کیےگئے ہندسے درست نہیں ہیں\",\n\tdigits: \"صرف ہندسے اندراج کئے جاسکتے ہیں\",\n\tcreditcard: \"درج کیا گیا کارڈ نمبر درست نہیں ہے\",\n\tequalTo: \"اندراج کا موازنہ درست نہیں ہے\",\n\textension: \"اندراج درست نہیں ہے\",\n\tmaxlength: $.validator.format( \"زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں\" ),\n\tminlength: $.validator.format( \"کم سے کم {0} کا اندراج کرنا ضروری ہے\" ),\n\trangelength: $.validator.format( \"اندراج کا {0} اور {1}کے درمیان ہونا ضروری ہے\" ),\n\trange: $.validator.format( \"اندراج کا {0} اور {1} کے درمیان ہونا ضروری ہے\" ),\n\tmax: $.validator.format( \"زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں\" ),\n\tmin: $.validator.format( \"کم سے کم {0} کا اندراج کرنا ضروری ہے\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_vi.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: VI (Vietnamese; Tiếng Việt)\n */\n$.extend( $.validator.messages, {\n\trequired: \"Hãy nhập.\",\n\tremote: \"Hãy sửa cho đúng.\",\n\temail: \"Hãy nhập email.\",\n\turl: \"Hãy nhập URL.\",\n\tdate: \"Hãy nhập ngày.\",\n\tdateISO: \"Hãy nhập ngày (ISO).\",\n\tnumber: \"Hãy nhập số.\",\n\tdigits: \"Hãy nhập chữ số.\",\n\tcreditcard: \"Hãy nhập số thẻ tín dụng.\",\n\tequalTo: \"Hãy nhập thêm lần nữa.\",\n\textension: \"Phần mở rộng không đúng.\",\n\tmaxlength: $.validator.format( \"Hãy nhập từ {0} kí tự trở xuống.\" ),\n\tminlength: $.validator.format( \"Hãy nhập từ {0} kí tự trở lên.\" ),\n\trangelength: $.validator.format( \"Hãy nhập từ {0} đến {1} kí tự.\" ),\n\trange: $.validator.format( \"Hãy nhập từ {0} đến {1}.\" ),\n\tmax: $.validator.format( \"Hãy nhập từ {0} trở xuống.\" ),\n\tmin: $.validator.format( \"Hãy nhập từ {1} trở lên.\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_zh.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)\n */\n$.extend( $.validator.messages, {\n\trequired: \"这是必填字段\",\n\tremote: \"请修正此字段\",\n\temail: \"请输入有效的电子邮件地址\",\n\turl: \"请输入有效的网址\",\n\tdate: \"请输入有效的日期\",\n\tdateISO: \"请输入有效的日期 (YYYY-MM-DD)\",\n\tnumber: \"请输入有效的数字\",\n\tdigits: \"只能输入数字\",\n\tcreditcard: \"请输入有效的信用卡号码\",\n\tequalTo: \"你的输入不相同\",\n\textension: \"请输入有效的后缀\",\n\tmaxlength: $.validator.format( \"最多可以输入 {0} 个字符\" ),\n\tminlength: $.validator.format( \"最少要输入 {0} 个字符\" ),\n\trangelength: $.validator.format( \"请输入长度在 {0} 到 {1} 之间的字符串\" ),\n\trange: $.validator.format( \"请输入范围在 {0} 到 {1} 之间的数值\" ),\n\tmax: $.validator.format( \"请输入不大于 {0} 的数值\" ),\n\tmin: $.validator.format( \"请输入不小于 {0} 的数值\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/messages_zh_TW.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Translated default messages for the jQuery validation plugin.\n * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語)\n * Region: TW (Taiwan)\n */\n$.extend( $.validator.messages, {\n\trequired: \"必須填寫\",\n\tremote: \"請修正此欄位\",\n\temail: \"請輸入有效的電子郵件\",\n\turl: \"請輸入有效的網址\",\n\tdate: \"請輸入有效的日期\",\n\tdateISO: \"請輸入有效的日期 (YYYY-MM-DD)\",\n\tnumber: \"請輸入正確的數值\",\n\tdigits: \"只可輸入數字\",\n\tcreditcard: \"請輸入有效的信用卡號碼\",\n\tequalTo: \"請重複輸入一次\",\n\textension: \"請輸入有效的後綴\",\n\tmaxlength: $.validator.format( \"最多 {0} 個字\" ),\n\tminlength: $.validator.format( \"最少 {0} 個字\" ),\n\trangelength: $.validator.format( \"請輸入長度為 {0} 至 {1} 之間的字串\" ),\n\trange: $.validator.format( \"請輸入 {0} 至 {1} 之間的數值\" ),\n\tmax: $.validator.format( \"請輸入不大於 {0} 的數值\" ),\n\tmin: $.validator.format( \"請輸入不小於 {0} 的數值\" )\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/methods_de.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: DE\n */\n$.extend( $.validator.methods, {\n\tdate: function( value, element ) {\n\t\treturn this.optional( element ) || /^\\d\\d?\\.\\d\\d?\\.\\d\\d\\d?\\d?$/.test( value );\n\t},\n\tnumber: function( value, element ) {\n\t\treturn this.optional( element ) || /^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.test( value );\n\t}\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/methods_es_CL.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: ES_CL\n */\n$.extend( $.validator.methods, {\n\tdate: function( value, element ) {\n\t\treturn this.optional( element ) || /^\\d\\d?\\-\\d\\d?\\-\\d\\d\\d?\\d?$/.test( value );\n\t},\n\tnumber: function( value, element ) {\n\t\treturn this.optional( element ) || /^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.test( value );\n\t}\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/methods_fi.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: FI\n */\n$.extend( $.validator.methods, {\n\tdate: function( value, element ) {\n\t\treturn this.optional( element ) || /^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$/.test( value );\n\t},\n\tnumber: function( value, element ) {\n\t\treturn this.optional( element ) || /^-?(?:\\d+)(?:,\\d+)?$/.test( value );\n\t}\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/methods_nl.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: NL\n */\n$.extend( $.validator.methods, {\n\tdate: function( value, element ) {\n\t\treturn this.optional( element ) || /^\\d\\d?[\\.\\/\\-]\\d\\d?[\\.\\/\\-]\\d\\d\\d?\\d?$/.test( value );\n\t},\n\tnumber: function( value, element ) {\n\t\treturn this.optional( element ) || /^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.test( value );\n\t}\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery-validation/dist/localization/methods_pt.js",
    "content": "(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n/*\n * Localized default methods for the jQuery validation plugin.\n * Locale: PT_BR\n */\n$.extend( $.validator.methods, {\n\tdate: function( value, element ) {\n\t\treturn this.optional( element ) || /^\\d\\d?\\/\\d\\d?\\/\\d\\d\\d?\\d?$/.test( value );\n\t}\n} );\nreturn $;\n}));"
  },
  {
    "path": "public/admin-panel/assets/libs/jquery.flot.tooltip/js/jquery.flot.tooltip.source.js",
    "content": "(function ($) {\n    // plugin options, default values\n    var defaultOptions = {\n        tooltip: {\n            show: false,\n            cssClass: \"flotTip\",\n            content: \"%s | X: %x | Y: %y\",\n            // allowed templates are:\n            // %s -> series label,\n            // %c -> series color,\n            // %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),\n            // %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),\n            // %x -> X value,\n            // %y -> Y value,\n            // %x.2 -> precision of X value,\n            // %p -> percent\n            // %n -> value (not percent) of pie chart\n            xDateFormat: null,\n            yDateFormat: null,\n            monthNames: null,\n            dayNames: null,\n            shifts: {\n                x: 10,\n                y: 20\n            },\n            defaultTheme: true,\n            snap: true,\n            lines: false,\n            clickTips: false,\n\n            // callbacks\n            onHover: function (flotItem, $tooltipEl) {},\n\n            $compat: false\n        }\n    };\n\n    // dummy default options object for legacy code (<0.8.5) - is deleted later\n    defaultOptions.tooltipOpts = defaultOptions.tooltip;\n\n    // object\n    var FlotTooltip = function (plot) {\n        // variables\n        this.tipPosition = {x: 0, y: 0};\n\n        this.init(plot);\n    };\n\n    // main plugin function\n    FlotTooltip.prototype.init = function (plot) {\n        var that = this;\n\n        // detect other flot plugins\n        var plotPluginsLength = $.plot.plugins.length;\n        this.plotPlugins = [];\n\n        if (plotPluginsLength) {\n            for (var p = 0; p < plotPluginsLength; p++) {\n                this.plotPlugins.push($.plot.plugins[p].name);\n            }\n        }\n\n        plot.hooks.bindEvents.push(function (plot, eventHolder) {\n\n            // get plot options\n            that.plotOptions = plot.getOptions();\n\n            // for legacy (<0.8.5) implementations\n            if (typeof(that.plotOptions.tooltip) === 'boolean') {\n                that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip;\n                that.plotOptions.tooltip = that.plotOptions.tooltipOpts;\n                delete that.plotOptions.tooltipOpts;\n            }\n\n            // if not enabled return\n            if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return;\n\n            // shortcut to access tooltip options\n            that.tooltipOptions = that.plotOptions.tooltip;\n\n            if (that.tooltipOptions.$compat) {\n                that.wfunc = 'width';\n                that.hfunc = 'height';\n            } else {\n                that.wfunc = 'innerWidth';\n                that.hfunc = 'innerHeight';\n            }\n\n            // create tooltip DOM element\n            var $tip = that.getDomElement();\n\n            // bind event\n            $( plot.getPlaceholder() ).bind(\"plothover\", plothover);\n            if (that.tooltipOptions.clickTips) {\n                $( plot.getPlaceholder() ).bind(\"plotclick\", plotclick);\n            }\n            that.clickmode = false;\n\n            $(eventHolder).bind('mousemove', mouseMove);\n        });\n\n        plot.hooks.shutdown.push(function (plot, eventHolder){\n            $(plot.getPlaceholder()).unbind(\"plothover\", plothover);\n            $(plot.getPlaceholder()).unbind(\"plotclick\", plotclick);\n            plot.removeTooltip();\n            $(eventHolder).unbind(\"mousemove\", mouseMove);\n        });\n\n        function mouseMove(e){\n            var pos = {};\n            pos.x = e.pageX;\n            pos.y = e.pageY;\n            plot.setTooltipPosition(pos);\n        }\n\n        /**\n         *  open the tooltip (if not already open) and freeze it on the current position till the next click\n         */\n        function plotclick(event, pos, item) {\n            if (! that.clickmode) {\n                // it is the click activating the clicktip\n                plothover(event, pos, item);\n                if (that.getDomElement().is(\":visible\")) {\n                    $(plot.getPlaceholder()).unbind(\"plothover\", plothover);\n                    that.clickmode = true;\n                }\n            } else {\n                // it is the click deactivating the clicktip\n                $( plot.getPlaceholder() ).bind(\"plothover\", plothover);\n                plot.hideTooltip();\n                that.clickmode = false;\n            }\n        }\n\n        function plothover(event, pos, item) {\n            // Simple distance formula.\n            var lineDistance = function (p1x, p1y, p2x, p2y) {\n                return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));\n            };\n\n            // Here is some voodoo magic for determining the distance to a line form a given point {x, y}.\n            var dotLineLength = function (x, y, x0, y0, x1, y1, o) {\n                if (o && !(o =\n                    function (x, y, x0, y0, x1, y1) {\n                        if (typeof x0 !== 'undefined') return { x: x0, y: y };\n                        else if (typeof y0 !== 'undefined') return { x: x, y: y0 };\n\n                        var left,\n                            tg = -1 / ((y1 - y0) / (x1 - x0));\n\n                        return {\n                            x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1),\n                            y: tg * left - tg * x + y\n                        };\n                    } (x, y, x0, y0, x1, y1),\n                    o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1))\n                ) {\n                    var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1);\n                    return l1 > l2 ? l2 : l1;\n                } else {\n                    var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1;\n                    return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b);\n                }\n            };\n\n            if (item) {\n                plot.showTooltip(item, that.tooltipOptions.snap ? item : pos);\n            } else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) {\n                var maxDistance = that.plotOptions.grid.mouseActiveRadius;\n\n                var closestTrace = {\n                    distance: maxDistance + 1\n                };\n\n                var ttPos = pos;\n\n                $.each(plot.getData(), function (i, series) {\n                    var xBeforeIndex = 0,\n                        xAfterIndex = -1;\n\n                    // Our search here assumes our data is sorted via the x-axis.\n                    // TODO: Improve efficiency somehow - search smaller sets of data.\n                    for (var j = 1; j < series.data.length; j++) {\n                        if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) {\n                            xBeforeIndex = j - 1;\n                            xAfterIndex = j;\n                        }\n                    }\n\n                    if (xAfterIndex === -1) {\n                        plot.hideTooltip();\n                        return;\n                    }\n\n                    var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] },\n                        pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] };\n\n                    var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x),\n                        series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false);\n\n                    if (distToLine < closestTrace.distance) {\n\n                        var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) <\n                            lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex;\n\n                        var pointSize = series.datapoints.pointsize;\n\n                        // Calculate the point on the line vertically closest to our cursor.\n                        var pointOnLine = [\n                            pos.x,\n                            pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x)))\n                        ];\n\n                        var item = {\n                            datapoint: pointOnLine,\n                            dataIndex: closestIndex,\n                            series: series,\n                            seriesIndex: i\n                        };\n\n                        closestTrace = {\n                            distance: distToLine,\n                            item: item\n                        };\n\n                        if (that.tooltipOptions.snap) {\n                            ttPos = {\n                                pageX: series.xaxis.p2c(pointOnLine[0]),\n                                pageY: series.yaxis.p2c(pointOnLine[1])\n                            };\n                        }\n                    }\n                });\n\n                if (closestTrace.distance < maxDistance + 1)\n                    plot.showTooltip(closestTrace.item, ttPos);\n                else\n                    plot.hideTooltip();\n            } else {\n                plot.hideTooltip();\n            }\n        }\n\n        // Quick little function for setting the tooltip position.\n        plot.setTooltipPosition = function (pos) {\n            var $tip = that.getDomElement();\n\n            var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x;\n            var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y;\n            if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) {\n                pos.x -= totalTipWidth;\n                pos.x = Math.max(pos.x, 0);\n            }\n            if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) {\n                pos.y -= totalTipHeight;\n            }\n\n\t    /*\n\t       The section applies the new positioning ONLY if pos.x and pos.y\n\t       are numbers. If they are undefined or not a number, use the last\n\t       known numerical position. This hack fixes a bug that kept pie\n\t       charts from keeping their tooltip positioning.\n\t     */\n\n            if (isNaN(pos.x)) {\n\t\tthat.tipPosition.x = that.tipPosition.xPrev;\n\t    }\n\t    else {\n\t\tthat.tipPosition.x = pos.x;\n\t\tthat.tipPosition.xPrev = pos.x;\n\t    }\n\t    if (isNaN(pos.y)) {\n\t\tthat.tipPosition.y = that.tipPosition.yPrev;\n\t    }\n\t    else {\n\t\tthat.tipPosition.y = pos.y;\n\t\tthat.tipPosition.yPrev = pos.y;\n\t    }\n\n        };\n\n        // Quick little function for showing the tooltip.\n        plot.showTooltip = function (target, position, targetPosition) {\n            var $tip = that.getDomElement();\n\n            // convert tooltip content template to real tipText\n            var tipText = that.stringFormat(that.tooltipOptions.content, target);\n            if (tipText === '')\n                return;\n\n            $tip.html(tipText);\n            plot.setTooltipPosition({ x: that.tipPosition.x, y: that.tipPosition.y });\n            $tip.css({\n                left: that.tipPosition.x + that.tooltipOptions.shifts.x,\n                top: that.tipPosition.y + that.tooltipOptions.shifts.y\n            }).show();\n\n            // run callback\n            if (typeof that.tooltipOptions.onHover === 'function') {\n                that.tooltipOptions.onHover(target, $tip);\n            }\n        };\n\n        // Quick little function for hiding the tooltip.\n        plot.hideTooltip = function () {\n            that.getDomElement().hide().html('');\n        };\n\n        plot.removeTooltip = function() {\n            that.getDomElement().remove();\n        };\n    };\n\n    /**\n     * get or create tooltip DOM element\n     * @return jQuery object\n     */\n    FlotTooltip.prototype.getDomElement = function () {\n        var $tip = $('<div>');\n        if (this.tooltipOptions && this.tooltipOptions.cssClass) {\n            $tip = $('.' + this.tooltipOptions.cssClass);\n\n            if( $tip.length === 0 ){\n                $tip = $('<div />').addClass(this.tooltipOptions.cssClass);\n                $tip.appendTo('body').hide().css({position: 'absolute'});\n\n                if(this.tooltipOptions.defaultTheme) {\n                    $tip.css({\n                        'background': '#fff',\n                        'z-index': '1040',\n                        'padding': '0.4em 0.6em',\n                        'border-radius': '0.5em',\n                        'font-size': '0.8em',\n                        'border': '1px solid #111',\n                        'display': 'none',\n                        'white-space': 'nowrap'\n                    });\n                }\n            }\n        }\n\n        return $tip;\n    };\n\n    /**\n     * core function, create tooltip content\n     * @param  {string} content - template with tooltip content\n     * @param  {object} item - Flot item\n     * @return {string} real tooltip content for current item\n     */\n    FlotTooltip.prototype.stringFormat = function (content, item) {\n        var percentPattern = /%p\\.{0,1}(\\d{0,})/;\n        var seriesPattern = /%s/;\n        var colorPattern = /%c/;\n        var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded\n        var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded\n        var xPattern = /%x\\.{0,1}(\\d{0,})/;\n        var yPattern = /%y\\.{0,1}(\\d{0,})/;\n        var xPatternWithoutPrecision = \"%x\";\n        var yPatternWithoutPrecision = \"%y\";\n        var customTextPattern = \"%ct\";\n\tvar nPiePattern = \"%n\";\n\n        var x, y, customText, p, n;\n\n        // for threshold plugin we need to read data from different place\n        if (typeof item.series.threshold !== \"undefined\") {\n            x = item.datapoint[0];\n            y = item.datapoint[1];\n            customText = item.datapoint[2];\n\t}\n\n\t// for CurvedLines plugin we need to read data from different place\n\t    else if (typeof item.series.curvedLines !== \"undefined\") {\n\t\tx = item.datapoint[0];\n\t\ty = item.datapoint[1];\n\t    }\n\n        else if (typeof item.series.lines !== \"undefined\" && item.series.lines.steps) {\n            x = item.series.datapoints.points[item.dataIndex * 2];\n            y = item.series.datapoints.points[item.dataIndex * 2 + 1];\n            // TODO: where to find custom text in this variant?\n            customText = \"\";\n        } else {\n            x = item.series.data[item.dataIndex][0];\n            y = item.series.data[item.dataIndex][1];\n            customText = item.series.data[item.dataIndex][2];\n        }\n\n        // I think this is only in case of threshold plugin\n        if (item.series.label === null && item.series.originSeries) {\n            item.series.label = item.series.originSeries.label;\n        }\n\n        // if it is a function callback get the content string\n        if (typeof(content) === 'function') {\n            content = content(item.series.label, x, y, item);\n        }\n\n        // the case where the passed content is equal to false\n        if (typeof(content) === 'boolean' && !content) {\n            return '';\n        }\n\n        /* replacement of %ct and other multi-character templates must\n           precede the replacement of single-character templates\n           to avoid conflict between '%c' and '%ct'  and similar substrings\n        */\n        if (customText) {\n            content = content.replace(customTextPattern, customText);\n        }\n\n        // percent match for pie charts and stacked percent\n        if (typeof (item.series.percent) !== 'undefined') {\n            p = item.series.percent;\n        } else if (typeof (item.series.percents) !== 'undefined') {\n            p = item.series.percents[item.dataIndex];\n        }\n        if (typeof p === 'number') {\n            content = this.adjustValPrecision(percentPattern, content, p);\n        }\n\n        // replace %n with number of items represented by slice in pie charts\n        if (item.series.hasOwnProperty('pie')) {\n            if (typeof item.series.data[0][1] !== 'undefined') {\n                n = item.series.data[0][1];\n            }\n        }\n        if (typeof n === 'number') {\n            content = content.replace(nPiePattern, n);\n        }\n\n        // series match\n        if (typeof(item.series.label) !== 'undefined') {\n            content = content.replace(seriesPattern, item.series.label);\n        } else {\n            //remove %s if label is undefined\n            content = content.replace(seriesPattern, \"\");\n        }\n\n        // color match\n        if (typeof(item.series.color) !== 'undefined') {\n            content = content.replace(colorPattern, item.series.color);\n        } else {\n            //remove %s if color is undefined\n            content = content.replace(colorPattern, \"\");\n        }\n\n        // x axis label match\n        if (this.hasAxisLabel('xaxis', item)) {\n            content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel);\n        } else {\n            //remove %lx if axis label is undefined or axislabels plugin not present\n            content = content.replace(xLabelPattern, \"\");\n        }\n\n        // y axis label match\n        if (this.hasAxisLabel('yaxis', item)) {\n            content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel);\n        } else {\n            //remove %ly if axis label is undefined or axislabels plugin not present\n            content = content.replace(yLabelPattern, \"\");\n        }\n\n        // time mode axes with custom dateFormat\n        if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) {\n            content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options));\n        }\n        if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) {\n            content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options));\n        }\n\n        // set precision if defined\n        if (typeof x === 'number') {\n            content = this.adjustValPrecision(xPattern, content, x);\n        }\n        if (typeof y === 'number') {\n            content = this.adjustValPrecision(yPattern, content, y);\n        }\n\n        // change x from number to given label, if given\n        if (typeof item.series.xaxis.ticks !== 'undefined') {\n\n            var ticks;\n            if (this.hasRotatedXAxisTicks(item)) {\n                // xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks\n                ticks = 'rotatedTicks';\n            } else {\n                ticks = 'ticks';\n            }\n\n            // see https://github.com/krzysu/flot.tooltip/issues/65\n            var tickIndex = item.dataIndex + item.seriesIndex;\n\n            for (var xIndex in item.series.xaxis[ticks]) {\n                if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) {\n                    var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v;\n                    if (valueX === x) {\n                        content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label.replace(/\\$/g, '$$$$'));\n                    }\n                }\n            }\n        }\n\n        // change y from number to given label, if given\n        if (typeof item.series.yaxis.ticks !== 'undefined') {\n            for (var yIndex in item.series.yaxis.ticks) {\n                if (item.series.yaxis.ticks.hasOwnProperty(yIndex)) {\n                    var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[yIndex].label : item.series.yaxis.ticks[yIndex].v;\n                    if (valueY === y) {\n                        content = content.replace(yPattern, item.series.yaxis.ticks[yIndex].label.replace(/\\$/g, '$$$$'));\n                    }\n                }\n            }\n        }\n\n        // if no value customization, use tickFormatter by default\n        if (typeof item.series.xaxis.tickFormatter !== 'undefined') {\n            //escape dollar\n            content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\\$/g, '$$'));\n        }\n        if (typeof item.series.yaxis.tickFormatter !== 'undefined') {\n            //escape dollar\n            content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\\$/g, '$$'));\n        }\n\n        return content;\n    };\n\n    // helpers just for readability\n    FlotTooltip.prototype.isTimeMode = function (axisName, item) {\n        return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time');\n    };\n\n    FlotTooltip.prototype.isXDateFormat = function (item) {\n        return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null);\n    };\n\n    FlotTooltip.prototype.isYDateFormat = function (item) {\n        return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null);\n    };\n\n    FlotTooltip.prototype.isCategoriesMode = function (axisName, item) {\n        return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories');\n    };\n\n    //\n    FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) {\n        var theDate = $.plot.dateGenerator(tmst, options);\n        return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames);\n    };\n\n    //\n    FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) {\n\n        var precision;\n        var matchResult = content.match(pattern);\n        if( matchResult !== null ) {\n            if(RegExp.$1 !== '') {\n                precision = RegExp.$1;\n                value = value.toFixed(precision);\n\n                // only replace content if precision exists, in other case use thickformater\n                content = content.replace(pattern, value);\n            }\n        }\n        return content;\n    };\n\n    // other plugins detection below\n\n    // check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given\n    FlotTooltip.prototype.hasAxisLabel = function (axisName, item) {\n        return ($.inArray('axisLabels', this.plotPlugins) !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0);\n    };\n\n    // check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used\n    FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) {\n        return ($.inArray('tickRotor',this.plotPlugins) !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined');\n    };\n\n    //\n    var init = function (plot) {\n      new FlotTooltip(plot);\n    };\n\n    // define Flot plugin\n    $.plot.plugins.push({\n        init: init,\n        options: defaultOptions,\n        name: 'tooltip',\n        version: '0.8.5'\n    });\n\n})(jQuery);\n"
  },
  {
    "path": "public/admin-panel/assets/libs/magnific-popup/animation.css",
    "content": "\n/* \n\n====== Zoom effect ======\n\n*/\n.mfp-zoom-in {\n  /* start state */\n  /* animate in */\n  /* animate out */\n}\n.mfp-zoom-in .mfp-with-anim {\n  opacity: 0;\n  transition: all 0.2s ease-in-out;\n  transform: scale(0.8);\n}\n.mfp-zoom-in.mfp-bg {\n  opacity: 0;\n  transition: all 0.3s ease-out;\n}\n.mfp-zoom-in.mfp-ready .mfp-with-anim {\n  opacity: 1;\n  transform: scale(1);\n}\n.mfp-zoom-in.mfp-ready.mfp-bg {\n  opacity: 0.8;\n}\n.mfp-zoom-in.mfp-removing .mfp-with-anim {\n  transform: scale(0.8);\n  opacity: 0;\n}\n.mfp-zoom-in.mfp-removing.mfp-bg {\n  opacity: 0;\n}\n/* \n\n====== Newspaper effect ======\n\n*/\n.mfp-newspaper {\n  /* start state */\n  /* animate in */\n  /* animate out */\n}\n.mfp-newspaper .mfp-with-anim {\n  opacity: 0;\n  -webkit-transition: all 0.2s ease-in-out;\n  transition: all 0.5s;\n  transform: scale(0) rotate(500deg);\n}\n.mfp-newspaper.mfp-bg {\n  opacity: 0;\n  transition: all 0.5s;\n}\n.mfp-newspaper.mfp-ready .mfp-with-anim {\n  opacity: 1;\n  transform: scale(1) rotate(0deg);\n}\n.mfp-newspaper.mfp-ready.mfp-bg {\n  opacity: 0.8;\n}\n.mfp-newspaper.mfp-removing .mfp-with-anim {\n  transform: scale(0) rotate(500deg);\n  opacity: 0;\n}\n.mfp-newspaper.mfp-removing.mfp-bg {\n  opacity: 0;\n}\n/* \n\n====== Move-horizontal effect ======\n\n*/\n.mfp-move-horizontal {\n  /* start state */\n  /* animate in */\n  /* animate out */\n}\n.mfp-move-horizontal .mfp-with-anim {\n  opacity: 0;\n  transition: all 0.3s;\n  transform: translateX(-50px);\n}\n.mfp-move-horizontal.mfp-bg {\n  opacity: 0;\n  transition: all 0.3s;\n}\n.mfp-move-horizontal.mfp-ready .mfp-with-anim {\n  opacity: 1;\n  transform: translateX(0);\n}\n.mfp-move-horizontal.mfp-ready.mfp-bg {\n  opacity: 0.8;\n}\n.mfp-move-horizontal.mfp-removing .mfp-with-anim {\n  transform: translateX(50px);\n  opacity: 0;\n}\n.mfp-move-horizontal.mfp-removing.mfp-bg {\n  opacity: 0;\n}\n/* \n\n====== Move-from-top effect ======\n\n*/\n.mfp-move-from-top {\n  /* start state */\n  /* animate in */\n  /* animate out */\n}\n.mfp-move-from-top .mfp-content {\n  vertical-align: top;\n}\n.mfp-move-from-top .mfp-with-anim {\n  opacity: 0;\n  transition: all 0.2s;\n  transform: translateY(-100px);\n}\n.mfp-move-from-top.mfp-bg {\n  opacity: 0;\n  transition: all 0.2s;\n}\n.mfp-move-from-top.mfp-ready .mfp-with-anim {\n  opacity: 1;\n  transform: translateY(0);\n}\n.mfp-move-from-top.mfp-ready.mfp-bg {\n  opacity: 0.8;\n}\n.mfp-move-from-top.mfp-removing .mfp-with-anim {\n  transform: translateY(-50px);\n  opacity: 0;\n}\n.mfp-move-from-top.mfp-removing.mfp-bg {\n  opacity: 0;\n}\n/* \n\n====== 3d unfold ======\n\n*/\n.mfp-3d-unfold {\n  /* start state */\n  /* animate in */\n  /* animate out */\n}\n.mfp-3d-unfold .mfp-content {\n  perspective: 2000px;\n}\n.mfp-3d-unfold .mfp-with-anim {\n  opacity: 0;\n  transition: all 0.3s ease-in-out;\n  transform-style: preserve-3d;\n  transform: rotateY(-60deg);\n}\n.mfp-3d-unfold.mfp-bg {\n  opacity: 0;\n  transition: all 0.5s;\n}\n.mfp-3d-unfold.mfp-ready .mfp-with-anim {\n  opacity: 1;\n  transform: rotateY(0deg);\n}\n.mfp-3d-unfold.mfp-ready.mfp-bg {\n  opacity: 0.8;\n}\n.mfp-3d-unfold.mfp-removing .mfp-with-anim {\n  transform: rotateY(60deg);\n  opacity: 0;\n}\n.mfp-3d-unfold.mfp-removing.mfp-bg {\n  opacity: 0;\n}\n/* \n\n====== Zoom-out effect ======\n\n*/\n.mfp-zoom-out {\n  /* start state */\n  /* animate in */\n  /* animate out */\n}\n.mfp-zoom-out .mfp-with-anim {\n  opacity: 0;\n  transition: all 0.3s ease-in-out;\n  transform: scale(1.3);\n}\n.mfp-zoom-out.mfp-bg {\n  opacity: 0;\n  transition: all 0.3s ease-out;\n}\n.mfp-zoom-out.mfp-ready .mfp-with-anim {\n  opacity: 1;\n  transform: scale(1);\n}\n.mfp-zoom-out.mfp-ready.mfp-bg {\n  opacity: 0.8;\n}\n.mfp-zoom-out.mfp-removing .mfp-with-anim {\n  transform: scale(1.3);\n  opacity: 0;\n}\n.mfp-zoom-out.mfp-removing.mfp-bg {\n  opacity: 0;\n}\n/* \n\n====== \"Hinge\" close effect ======\n\n*/\n@keyframes hinge {\n  0% {\n    transform: rotate(0);\n    transform-origin: top left;\n    animation-timing-function: ease-in-out;\n  }\n  20%,\n  60% {\n    transform: rotate(80deg);\n    transform-origin: top left;\n    animation-timing-function: ease-in-out;\n  }\n  40% {\n    transform: rotate(60deg);\n    transform-origin: top left;\n    animation-timing-function: ease-in-out;\n  }\n  80% {\n    transform: rotate(60deg) translateY(0);\n    opacity: 1;\n    transform-origin: top left;\n    animation-timing-function: ease-in-out;\n  }\n  100% {\n    transform: translateY(700px);\n    opacity: 0;\n  }\n}\n.hinge {\n  animation-duration: 1s;\n  animation-name: hinge;\n}\n.mfp-with-fade .mfp-content,\n.mfp-with-fade.mfp-bg {\n  opacity: 0;\n  transition: opacity 0.5s ease-out;\n}\n.mfp-with-fade.mfp-ready .mfp-content {\n  opacity: 1;\n}\n.mfp-with-fade.mfp-ready.mfp-bg {\n  opacity: 0.8;\n}\n.mfp-with-fade.mfp-removing.mfp-bg {\n  opacity: 0;\n}\n\n.white-popup-block{\n    background: #FFF;\n    padding: 20px 30px;\n    text-align: left;\n    max-width: 650px;\n    margin: 40px auto;\n    position: relative;}\n\n.mfp-fade.mfp-bg {\n  opacity: 0;\n  -webkit-transition: all 0.15s ease-out; \n  -moz-transition: all 0.15s ease-out; \n  transition: all 0.15s ease-out;\n}\n.mfp-fade.mfp-bg.mfp-ready {\n  opacity: 0.8;\n}\n.mfp-fade.mfp-bg.mfp-removing {\n  opacity: 0;\n}\n\n.mfp-fade.mfp-wrap .mfp-content {\n  opacity: 0;\n  -webkit-transition: all 0.15s ease-out; \n  -moz-transition: all 0.15s ease-out; \n  transition: all 0.15s ease-out;\n}\n.mfp-fade.mfp-wrap.mfp-ready .mfp-content {\n  opacity: 1;\n}\n.mfp-fade.mfp-wrap.mfp-removing .mfp-content {\n  opacity: 0;\n}"
  },
  {
    "path": "public/admin-panel/assets/libs/magnific-popup/dist/magnific-popup.css",
    "content": "/* Magnific Popup CSS */\n.mfp-bg {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 1042;\n  overflow: hidden;\n  position: fixed;\n  background: #0b0b0b;\n  opacity: 0.8; }\n\n.mfp-wrap {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 1043;\n  position: fixed;\n  outline: none !important;\n  -webkit-backface-visibility: hidden; }\n\n.mfp-container {\n  text-align: center;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  left: 0;\n  top: 0;\n  padding: 0 8px;\n  box-sizing: border-box; }\n\n.mfp-container:before {\n  content: '';\n  display: inline-block;\n  height: 100%;\n  vertical-align: middle; }\n\n.mfp-align-top .mfp-container:before {\n  display: none; }\n\n.mfp-content {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n  margin: 0 auto;\n  text-align: left;\n  z-index: 1045; }\n\n.mfp-inline-holder .mfp-content,\n.mfp-ajax-holder .mfp-content {\n  width: 100%;\n  cursor: auto; }\n\n.mfp-ajax-cur {\n  cursor: progress; }\n\n.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {\n  cursor: -moz-zoom-out;\n  cursor: -webkit-zoom-out;\n  cursor: zoom-out; }\n\n.mfp-zoom {\n  cursor: pointer;\n  cursor: -webkit-zoom-in;\n  cursor: -moz-zoom-in;\n  cursor: zoom-in; }\n\n.mfp-auto-cursor .mfp-content {\n  cursor: auto; }\n\n.mfp-close,\n.mfp-arrow,\n.mfp-preloader,\n.mfp-counter {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none; }\n\n.mfp-loading.mfp-figure {\n  display: none; }\n\n.mfp-hide {\n  display: none !important; }\n\n.mfp-preloader {\n  color: #CCC;\n  position: absolute;\n  top: 50%;\n  width: auto;\n  text-align: center;\n  margin-top: -0.8em;\n  left: 8px;\n  right: 8px;\n  z-index: 1044; }\n  .mfp-preloader a {\n    color: #CCC; }\n    .mfp-preloader a:hover {\n      color: #FFF; }\n\n.mfp-s-ready .mfp-preloader {\n  display: none; }\n\n.mfp-s-error .mfp-content {\n  display: none; }\n\nbutton.mfp-close,\nbutton.mfp-arrow {\n  overflow: visible;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  display: block;\n  outline: none;\n  padding: 0;\n  z-index: 1046;\n  box-shadow: none;\n  touch-action: manipulation; }\n\nbutton::-moz-focus-inner {\n  padding: 0;\n  border: 0; }\n\n.mfp-close {\n  width: 44px;\n  height: 44px;\n  line-height: 44px;\n  position: absolute;\n  right: 0;\n  top: 0;\n  text-decoration: none;\n  text-align: center;\n  opacity: 0.65;\n  padding: 0 0 18px 10px;\n  color: #FFF;\n  font-style: normal;\n  font-size: 28px;\n  font-family: Arial, Baskerville, monospace; }\n  .mfp-close:hover,\n  .mfp-close:focus {\n    opacity: 1; }\n  .mfp-close:active {\n    top: 1px; }\n\n.mfp-close-btn-in .mfp-close {\n  color: #333; }\n\n.mfp-image-holder .mfp-close,\n.mfp-iframe-holder .mfp-close {\n  color: #FFF;\n  right: -6px;\n  text-align: right;\n  padding-right: 6px;\n  width: 100%; }\n\n.mfp-counter {\n  position: absolute;\n  top: 0;\n  right: 0;\n  color: #CCC;\n  font-size: 12px;\n  line-height: 18px;\n  white-space: nowrap; }\n\n.mfp-arrow {\n  position: absolute;\n  opacity: 0.65;\n  margin: 0;\n  top: 50%;\n  margin-top: -55px;\n  padding: 0;\n  width: 90px;\n  height: 110px;\n  -webkit-tap-highlight-color: transparent; }\n  .mfp-arrow:active {\n    margin-top: -54px; }\n  .mfp-arrow:hover,\n  .mfp-arrow:focus {\n    opacity: 1; }\n  .mfp-arrow:before,\n  .mfp-arrow:after {\n    content: '';\n    display: block;\n    width: 0;\n    height: 0;\n    position: absolute;\n    left: 0;\n    top: 0;\n    margin-top: 35px;\n    margin-left: 35px;\n    border: medium inset transparent; }\n  .mfp-arrow:after {\n    border-top-width: 13px;\n    border-bottom-width: 13px;\n    top: 8px; }\n  .mfp-arrow:before {\n    border-top-width: 21px;\n    border-bottom-width: 21px;\n    opacity: 0.7; }\n\n.mfp-arrow-left {\n  left: 0; }\n  .mfp-arrow-left:after {\n    border-right: 17px solid #FFF;\n    margin-left: 31px; }\n  .mfp-arrow-left:before {\n    margin-left: 25px;\n    border-right: 27px solid #3F3F3F; }\n\n.mfp-arrow-right {\n  right: 0; }\n  .mfp-arrow-right:after {\n    border-left: 17px solid #FFF;\n    margin-left: 39px; }\n  .mfp-arrow-right:before {\n    border-left: 27px solid #3F3F3F; }\n\n.mfp-iframe-holder {\n  padding-top: 40px;\n  padding-bottom: 40px; }\n  .mfp-iframe-holder .mfp-content {\n    line-height: 0;\n    width: 100%;\n    max-width: 900px; }\n  .mfp-iframe-holder .mfp-close {\n    top: -40px; }\n\n.mfp-iframe-scaler {\n  width: 100%;\n  height: 0;\n  overflow: hidden;\n  padding-top: 56.25%; }\n  .mfp-iframe-scaler iframe {\n    position: absolute;\n    display: block;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\n    background: #000; }\n\n/* Main image in popup */\nimg.mfp-img {\n  width: auto;\n  max-width: 100%;\n  height: auto;\n  display: block;\n  line-height: 0;\n  box-sizing: border-box;\n  padding: 40px 0 40px;\n  margin: 0 auto; }\n\n/* The shadow behind the image */\n.mfp-figure {\n  line-height: 0; }\n  .mfp-figure:after {\n    content: '';\n    position: absolute;\n    left: 0;\n    top: 40px;\n    bottom: 40px;\n    display: block;\n    right: 0;\n    width: auto;\n    height: auto;\n    z-index: -1;\n    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);\n    background: #444; }\n  .mfp-figure small {\n    color: #BDBDBD;\n    display: block;\n    font-size: 12px;\n    line-height: 14px; }\n  .mfp-figure figure {\n    margin: 0; }\n\n.mfp-bottom-bar {\n  margin-top: -36px;\n  position: absolute;\n  top: 100%;\n  left: 0;\n  width: 100%;\n  cursor: auto; }\n\n.mfp-title {\n  text-align: left;\n  line-height: 18px;\n  color: #F3F3F3;\n  word-wrap: break-word;\n  padding-right: 36px; }\n\n.mfp-image-holder .mfp-content {\n  max-width: 100%; }\n\n.mfp-gallery .mfp-image-holder .mfp-figure {\n  cursor: pointer; }\n\n@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {\n  /**\n       * Remove all paddings around the image on small screen\n       */\n  .mfp-img-mobile .mfp-image-holder {\n    padding-left: 0;\n    padding-right: 0; }\n  .mfp-img-mobile img.mfp-img {\n    padding: 0; }\n  .mfp-img-mobile .mfp-figure:after {\n    top: 0;\n    bottom: 0; }\n  .mfp-img-mobile .mfp-figure small {\n    display: inline;\n    margin-left: 5px; }\n  .mfp-img-mobile .mfp-bottom-bar {\n    background: rgba(0, 0, 0, 0.6);\n    bottom: 0;\n    margin: 0;\n    top: auto;\n    padding: 3px 5px;\n    position: fixed;\n    box-sizing: border-box; }\n    .mfp-img-mobile .mfp-bottom-bar:empty {\n      padding: 0; }\n  .mfp-img-mobile .mfp-counter {\n    right: 5px;\n    top: 3px; }\n  .mfp-img-mobile .mfp-close {\n    top: 0;\n    right: 0;\n    width: 35px;\n    height: 35px;\n    line-height: 35px;\n    background: rgba(0, 0, 0, 0.6);\n    position: fixed;\n    text-align: center;\n    padding: 0; } }\n\n@media all and (max-width: 900px) {\n  .mfp-arrow {\n    -webkit-transform: scale(0.75);\n    transform: scale(0.75); }\n  .mfp-arrow-left {\n    -webkit-transform-origin: 0;\n    transform-origin: 0; }\n  .mfp-arrow-right {\n    -webkit-transform-origin: 100%;\n    transform-origin: 100%; }\n  .mfp-container {\n    padding-left: 6px;\n    padding-right: 6px; } }\n"
  },
  {
    "path": "public/admin-panel/assets/libs/magnific-popup/meg.init.js",
    "content": "\n$(function() {\n\n\t$('.image-popup-vertical-fit').magnificPopup({\n\t\ttype: 'image',\n\t\tcloseOnContentClick: true,\n\t\tmainClass: 'mfp-img-mobile',\n\t\timage: {\n\t\t\tverticalFit: true\n\t\t}\n\t\t\n\t});\n\n\t$('.image-popup-fit-width').magnificPopup({\n\t\ttype: 'image',\n\t\tcloseOnContentClick: true,\n\t\timage: {\n\t\t\tverticalFit: false\n\t\t}\n\t});\n\n\t$('.image-popup-no-margins').magnificPopup({\n\t\ttype: 'image',\n\t\tcloseOnContentClick: true,\n\t\tcloseBtnInside: false,\n\t\tfixedContentPos: true,\n\t\tmainClass: 'mfp-no-margins mfp-with-zoom', // class to remove default margin from left and right side\n\t\timage: {\n\t\t\tverticalFit: true\n\t\t},\n\t\tzoom: {\n\t\t\tenabled: true,\n\t\t\tduration: 300 // don't foget to change the duration also in CSS\n\t\t}\n\t});\n\n\t$('.popup-gallery').magnificPopup({\n\t\tdelegate: 'a',\n\t\ttype: 'image',\n\t\ttLoading: 'Loading image #%curr%...',\n\t\tmainClass: 'mfp-img-mobile',\n\t\tgallery: {\n\t\t\tenabled: true,\n\t\t\tnavigateByImgClick: true,\n\t\t\tpreload: [0,1] // Will preload 0 - before current, and 1 after the current image\n\t\t},\n\t\timage: {\n\t\t\ttError: '<a href=\"%url%\">The image #%curr%</a> could not be loaded.',\n\t\t\ttitleSrc: function(item) {\n\t\t\t\treturn item.el.attr('title') + '<small>by Marsel Van Oosten</small>';\n\t\t\t}\n\t\t}\n\t});\n\n\t$('.zoom-gallery').magnificPopup({\n\t\tdelegate: 'a',\n\t\ttype: 'image',\n\t\tcloseOnContentClick: false,\n\t\tcloseBtnInside: false,\n\t\tmainClass: 'mfp-with-zoom mfp-img-mobile',\n\t\timage: {\n\t\t\tverticalFit: true,\n\t\t\ttitleSrc: function(item) {\n\t\t\t\treturn item.el.attr('title') + ' &middot; <a class=\"image-source-link\" href=\"'+item.el.attr('data-source')+'\" target=\"_blank\">image source</a>';\n\t\t\t}\n\t\t},\n\t\tgallery: {\n\t\t\tenabled: true\n\t\t},\n\t\tzoom: {\n\t\t\tenabled: true,\n\t\t\tduration: 300, // don't foget to change the duration also in CSS\n\t\t\topener: function(element) {\n\t\t\t\treturn element.find('img');\n\t\t\t}\n\t\t}\n\t\t\n\t});\n\n\t$('#image-popups').magnificPopup({\n\t\t  delegate: 'a',\n\t\t  type: 'image',\n\t\t  removalDelay: 500, //delay removal by X to allow out-animation\n\t\t  callbacks: {\n\t\t    beforeOpen: function() {\n\t\t      // just a hack that adds mfp-anim class to markup \n\t\t       this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');\n\t\t       this.st.mainClass = this.st.el.attr('data-effect');\n\t\t    }\n\t\t  },\n\t\t  closeOnContentClick: true,\n\t\t  midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.\n\t\t});\n\n\t$('.popup-youtube, .popup-vimeo, .popup-gmaps').magnificPopup({\n\n\t\tdisableOn: 700,\n\t\ttype: 'iframe',\n\t\tmainClass: 'mfp-fade',\n\t\tremovalDelay: 160,\n\t\tpreloader: false,\n\n\t\tfixedContentPos: false\n\t});\n\t$('.popup-with-form').magnificPopup({\n\t\ttype: 'inline',\n\t\tpreloader: false,\n\t\tfocus: '#name',\n\n\t\t// When elemened is focused, some mobile browsers in some cases zoom in\n\t\t// It looks not nice, so we disable it:\n\t\tcallbacks: {\n\t\t\tbeforeOpen: function() {\n\t\t\t\tif($(window).width() < 700) {\n\t\t\t\t\tthis.st.focus = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.st.focus = '#name';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t$('.simple-ajax-popup-align-top').magnificPopup({\n\t\ttype: 'ajax',\n\t\talignTop: true,\n\t\toverflowY: 'scroll' // as we know that popup content is tall we set scroll overflow by default to avoid jump\n\t});\n\n\t$('.simple-ajax-popup').magnificPopup({\n\t\ttype: 'ajax'\n\t});\n\t\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/ender.js",
    "content": "$.ender({ moment: require('moment') })\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/af.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var af = moment.defineLocale('af', {\n        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM : function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Vandag om] LT',\n            nextDay : '[Môre om] LT',\n            nextWeek : 'dddd [om] LT',\n            lastDay : '[Gister om] LT',\n            lastWeek : '[Laas] dddd [om] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'oor %s',\n            past : '%s gelede',\n            s : '\\'n paar sekondes',\n            ss : '%d sekondes',\n            m : '\\'n minuut',\n            mm : '%d minute',\n            h : '\\'n uur',\n            hh : '%d ure',\n            d : '\\'n dag',\n            dd : '%d dae',\n            M : '\\'n maand',\n            MM : '%d maande',\n            y : '\\'n jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week : {\n            dow : 1, // Maandag is die eerste dag van die week.\n            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        }\n    });\n\n    return af;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ar-dz.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 4  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arDz;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ar-kw.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arKw;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ar-ly.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '1',\n        '2': '2',\n        '3': '3',\n        '4': '4',\n        '5': '5',\n        '6': '6',\n        '7': '7',\n        '8': '8',\n        '9': '9',\n        '0': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arLy;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ar-ma.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arMa;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ar-sa.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return arSa;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ar-tn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss : '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات'\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return arTn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ar.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var ar = moment.defineLocale('ar', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ar;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/az.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı'\n    };\n\n    var az = moment.defineLocale('az', {\n        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[sabah saat] LT',\n            nextWeek : '[gələn həftə] dddd [saat] LT',\n            lastDay : '[dünən] LT',\n            lastWeek : '[keçən həftə] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s əvvəl',\n            s : 'birneçə saniyyə',\n            ss : '%d saniyə',\n            m : 'bir dəqiqə',\n            mm : '%d dəqiqə',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir il',\n            yy : '%d il'\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM : function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal : function (number) {\n            if (number === 0) {  // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = number % 100 - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return az;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/be.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            'dd': 'дзень_дні_дзён',\n            'MM': 'месяц_месяцы_месяцаў',\n            'yy': 'год_гады_гадоў'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months : {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n        },\n        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays : {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n            isFormat: /\\[ ?[Вв] ?(?:мінулую|наступную)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n        },\n        calendar : {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'праз %s',\n            past : '%s таму',\n            s : 'некалькі секунд',\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithPlural,\n            hh : relativeTimeWithPlural,\n            d : 'дзень',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM : function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return be;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/bg.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var bg = moment.defineLocale('bg', {\n        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Днес в] LT',\n            nextDay : '[Утре в] LT',\n            nextWeek : 'dddd [в] LT',\n            lastDay : '[Вчера в] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[В изминалата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[В изминалия] dddd [в] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'след %s',\n            past : 'преди %s',\n            s : 'няколко секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дни',\n            M : 'месец',\n            MM : '%d месеца',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bg;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/bm.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var bm = moment.defineLocale('bm', {\n        months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n        monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'MMMM [tile] D [san] YYYY',\n            LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bi lɛrɛ] LT',\n            nextDay : '[Sini lɛrɛ] LT',\n            nextWeek : 'dddd [don lɛrɛ] LT',\n            lastDay : '[Kunu lɛrɛ] LT',\n            lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s kɔnɔ',\n            past : 'a bɛ %s bɔ',\n            s : 'sanga dama dama',\n            ss : 'sekondi %d',\n            m : 'miniti kelen',\n            mm : 'miniti %d',\n            h : 'lɛrɛ kelen',\n            hh : 'lɛrɛ %d',\n            d : 'tile kelen',\n            dd : 'tile %d',\n            M : 'kalo kelen',\n            MM : 'kalo %d',\n            y : 'san kelen',\n            yy : 'san %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return bm;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/bn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '১',\n        '2': '২',\n        '3': '৩',\n        '4': '৪',\n        '5': '৫',\n        '6': '৬',\n        '7': '৭',\n        '8': '৮',\n        '9': '৯',\n        '0': '০'\n    },\n    numberMap = {\n        '১': '1',\n        '২': '2',\n        '৩': '3',\n        '৪': '4',\n        '৫': '5',\n        '৬': '6',\n        '৭': '7',\n        '৮': '8',\n        '৯': '9',\n        '০': '0'\n    };\n\n    var bn = moment.defineLocale('bn', {\n        months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n        monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm সময়',\n            LTS : 'A h:mm:ss সময়',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm সময়',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n        },\n        calendar : {\n            sameDay : '[আজ] LT',\n            nextDay : '[আগামীকাল] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[গতকাল] LT',\n            lastWeek : '[গত] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s পরে',\n            past : '%s আগে',\n            s : 'কয়েক সেকেন্ড',\n            ss : '%d সেকেন্ড',\n            m : 'এক মিনিট',\n            mm : '%d মিনিট',\n            h : 'এক ঘন্টা',\n            hh : '%d ঘন্টা',\n            d : 'এক দিন',\n            dd : '%d দিন',\n            M : 'এক মাস',\n            MM : '%d মাস',\n            y : 'এক বছর',\n            yy : '%d বছর'\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'রাত' && hour >= 4) ||\n                    (meridiem === 'দুপুর' && hour < 5) ||\n                    meridiem === 'বিকাল') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/bo.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '༡',\n        '2': '༢',\n        '3': '༣',\n        '4': '༤',\n        '5': '༥',\n        '6': '༦',\n        '7': '༧',\n        '8': '༨',\n        '9': '༩',\n        '0': '༠'\n    },\n    numberMap = {\n        '༡': '1',\n        '༢': '2',\n        '༣': '3',\n        '༤': '4',\n        '༥': '5',\n        '༦': '6',\n        '༧': '7',\n        '༨': '8',\n        '༩': '9',\n        '༠': '0'\n    };\n\n    var bo = moment.defineLocale('bo', {\n        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[དི་རིང] LT',\n            nextDay : '[སང་ཉིན] LT',\n            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay : '[ཁ་སང] LT',\n            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ལ་',\n            past : '%s སྔན་ལ',\n            s : 'ལམ་སང',\n            ss : '%d སྐར་ཆ།',\n            m : 'སྐར་མ་གཅིག',\n            mm : '%d སྐར་མ',\n            h : 'ཆུ་ཚོད་གཅིག',\n            hh : '%d ཆུ་ཚོད',\n            d : 'ཉིན་གཅིག',\n            dd : '%d ཉིན་',\n            M : 'ཟླ་བ་གཅིག',\n            MM : '%d ཟླ་བ',\n            y : 'ལོ་གཅིག',\n            yy : '%d ལོ'\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n                    (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                    meridiem === 'དགོང་དག') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bo;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/br.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            'mm': 'munutenn',\n            'MM': 'miz',\n            'dd': 'devezh'\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            'm': 'v',\n            'b': 'v',\n            'd': 'z'\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var br = moment.defineLocale('br', {\n        months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n        monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h[e]mm A',\n            LTS : 'h[e]mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [a viz] MMMM YYYY',\n            LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n        },\n        calendar : {\n            sameDay : '[Hiziv da] LT',\n            nextDay : '[Warc\\'hoazh da] LT',\n            nextWeek : 'dddd [da] LT',\n            lastDay : '[Dec\\'h da] LT',\n            lastWeek : 'dddd [paset da] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'a-benn %s',\n            past : '%s \\'zo',\n            s : 'un nebeud segondennoù',\n            ss : '%d eilenn',\n            m : 'ur vunutenn',\n            mm : relativeTimeWithMutation,\n            h : 'un eur',\n            hh : '%d eur',\n            d : 'un devezh',\n            dd : relativeTimeWithMutation,\n            M : 'ur miz',\n            MM : relativeTimeWithMutation,\n            y : 'ur bloaz',\n            yy : specialMutationForYears\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal : function (number) {\n            var output = (number === 1) ? 'añ' : 'vet';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return br;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/bs.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return bs;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ca.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ca = moment.defineLocale('ca', {\n        months : {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n            format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n            isFormat: /D[oD]?(\\s)+MMMM/\n        },\n        monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [de] YYYY',\n            ll : 'D MMM YYYY',\n            LLL : 'D MMMM [de] YYYY [a les] H:mm',\n            lll : 'D MMM YYYY, H:mm',\n            LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll : 'ddd D MMM YYYY, H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextDay : function () {\n                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastDay : function () {\n                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'd\\'aquí %s',\n            past : 'fa %s',\n            s : 'uns segons',\n            ss : '%d segons',\n            m : 'un minut',\n            mm : '%d minuts',\n            h : 'una hora',\n            hh : '%d hores',\n            d : 'un dia',\n            dd : '%d dies',\n            M : 'un mes',\n            MM : '%d mesos',\n            y : 'un any',\n            yy : '%d anys'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal : function (number, period) {\n            var output = (number === 1) ? 'r' :\n                (number === 2) ? 'n' :\n                (number === 3) ? 'r' :\n                (number === 4) ? 't' : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ca;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/cs.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n    function plural(n) {\n        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n                break;\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsParse : (function (months, monthsShort) {\n            var i, _monthsParse = [];\n            for (i = 0; i < 12; i++) {\n                // use custom parser to solve problem with July (červenec)\n                _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n            }\n            return _monthsParse;\n        }(months, monthsShort)),\n        shortMonthsParse : (function (monthsShort) {\n            var i, _shortMonthsParse = [];\n            for (i = 0; i < 12; i++) {\n                _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n            }\n            return _shortMonthsParse;\n        }(monthsShort)),\n        longMonthsParse : (function (months) {\n            var i, _longMonthsParse = [];\n            for (i = 0; i < 12; i++) {\n                _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n            }\n            return _longMonthsParse;\n        }(months)),\n        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm',\n            l : 'D. M. YYYY'\n        },\n        calendar : {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'před %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cs;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/cv.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var cv = moment.defineLocale('cv', {\n        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n        },\n        calendar : {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (output) {\n                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n                return output + affix;\n            },\n            past : '%s каялла',\n            s : 'пӗр-ик ҫеккунт',\n            ss : '%d ҫеккунт',\n            m : 'пӗр минут',\n            mm : '%d минут',\n            h : 'пӗр сехет',\n            hh : '%d сехет',\n            d : 'пӗр кун',\n            dd : '%d кун',\n            M : 'пӗр уйӑх',\n            MM : '%d уйӑх',\n            y : 'пӗр ҫул',\n            yy : '%d ҫул'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal : '%d-мӗш',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return cv;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/cy.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cy;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/da.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var da = moment.defineLocale('da', {\n        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay : '[i dag kl.] LT',\n            nextDay : '[i morgen kl.] LT',\n            nextWeek : 'på dddd [kl.] LT',\n            lastDay : '[i går kl.] LT',\n            lastWeek : '[i] dddd[s kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'få sekunder',\n            ss : '%d sekunder',\n            m : 'et minut',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dage',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'et år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return da;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/de-at.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deAt;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/de-ch.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deCh;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/de.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return de;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/dv.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'ޖެނުއަރީ',\n        'ފެބްރުއަރީ',\n        'މާރިޗު',\n        'އޭޕްރީލު',\n        'މޭ',\n        'ޖޫން',\n        'ޖުލައި',\n        'އޯގަސްޓު',\n        'ސެޕްޓެމްބަރު',\n        'އޮކްޓޯބަރު',\n        'ނޮވެމްބަރު',\n        'ޑިސެމްބަރު'\n    ], weekdays = [\n        'އާދިއްތަ',\n        'ހޯމަ',\n        'އަންގާރަ',\n        'ބުދަ',\n        'ބުރާސްފަތި',\n        'ހުކުރު',\n        'ހޮނިހިރު'\n    ];\n\n    var dv = moment.defineLocale('dv', {\n        months : months,\n        monthsShort : months,\n        weekdays : weekdays,\n        weekdaysShort : weekdays,\n        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat : {\n\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/M/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM : function (input) {\n            return 'މފ' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar : {\n            sameDay : '[މިއަދު] LT',\n            nextDay : '[މާދަމާ] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[އިއްޔެ] LT',\n            lastWeek : '[ފާއިތުވި] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ތެރޭގައި %s',\n            past : 'ކުރިން %s',\n            s : 'ސިކުންތުކޮޅެއް',\n            ss : 'd% ސިކުންތު',\n            m : 'މިނިޓެއް',\n            mm : 'މިނިޓު %d',\n            h : 'ގަޑިއިރެއް',\n            hh : 'ގަޑިއިރު %d',\n            d : 'ދުވަހެއް',\n            dd : 'ދުވަސް %d',\n            M : 'މަހެއް',\n            MM : 'މަސް %d',\n            y : 'އަހަރެއް',\n            yy : 'އަހަރު %d'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 7,  // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return dv;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/el.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM : function (input) {\n            return ((input + '').toLowerCase()[0] === 'μ');\n        },\n        meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendarEl : {\n            sameDay : '[Σήμερα {}] LT',\n            nextDay : '[Αύριο {}] LT',\n            nextWeek : 'dddd [{}] LT',\n            lastDay : '[Χθες {}] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        calendar : function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n        },\n        relativeTime : {\n            future : 'σε %s',\n            past : '%s πριν',\n            s : 'λίγα δευτερόλεπτα',\n            ss : '%d δευτερόλεπτα',\n            m : 'ένα λεπτό',\n            mm : '%d λεπτά',\n            h : 'μία ώρα',\n            hh : '%d ώρες',\n            d : 'μία μέρα',\n            dd : '%d μέρες',\n            M : 'ένας μήνας',\n            MM : '%d μήνες',\n            y : 'ένας χρόνος',\n            yy : '%d χρόνια'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4st is the first week of the year.\n        }\n    });\n\n    return el;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/en-au.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enAu = moment.defineLocale('en-au', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enAu;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/en-ca.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enCa = moment.defineLocale('en-ca', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'YYYY-MM-DD',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY h:mm A',\n            LLLL : 'dddd, MMMM D, YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enCa;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/en-gb.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enGb = moment.defineLocale('en-gb', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enGb;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/en-ie.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enIe = moment.defineLocale('en-ie', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enIe;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/en-il.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enIl = moment.defineLocale('en-il', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enIl;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/en-nz.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enNz = moment.defineLocale('en-nz', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enNz;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/eo.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var eo = moment.defineLocale('eo', {\n        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n        weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D[-a de] MMMM, YYYY',\n            LLL : 'D[-a de] MMMM, YYYY HH:mm',\n            LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar : {\n            sameDay : '[Hodiaŭ je] LT',\n            nextDay : '[Morgaŭ je] LT',\n            nextWeek : 'dddd [je] LT',\n            lastDay : '[Hieraŭ je] LT',\n            lastWeek : '[pasinta] dddd [je] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'post %s',\n            past : 'antaŭ %s',\n            s : 'sekundoj',\n            ss : '%d sekundoj',\n            m : 'minuto',\n            mm : '%d minutoj',\n            h : 'horo',\n            hh : '%d horoj',\n            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n            dd : '%d tagoj',\n            M : 'monato',\n            MM : '%d monatoj',\n            y : 'jaro',\n            yy : '%d jaroj'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal : '%da',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return eo;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/es-do.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return esDo;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/es-us.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var esUs = moment.defineLocale('es-us', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsParseExact : true,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'MM/DD/YYYY',\n            LL : 'MMMM [de] D [de] YYYY',\n            LLL : 'MMMM [de] D [de] YYYY h:mm A',\n            LLLL : 'dddd, MMMM [de] D [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return esUs;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/es.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex : monthsRegex,\n        monthsShortRegex : monthsRegex,\n        monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex : /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return es;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/et.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            'ss': [number + 'sekundi', number + 'sekundit'],\n            'm' : ['ühe minuti', 'üks minut'],\n            'mm': [number + ' minuti', number + ' minutit'],\n            'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n            'hh': [number + ' tunni', number + ' tundi'],\n            'd' : ['ühe päeva', 'üks päev'],\n            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n            'MM': [number + ' kuu', number + ' kuud'],\n            'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n            'yy': [number + ' aasta', number + ' aastat']\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat : {\n            LT   : 'H:mm',\n            LTS : 'H:mm:ss',\n            L    : 'DD.MM.YYYY',\n            LL   : 'D. MMMM YYYY',\n            LLL  : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[Täna,] LT',\n            nextDay  : '[Homme,] LT',\n            nextWeek : '[Järgmine] dddd LT',\n            lastDay  : '[Eile,] LT',\n            lastWeek : '[Eelmine] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s pärast',\n            past   : '%s tagasi',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : '%d päeva',\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return et;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/eu.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var eu = moment.defineLocale('eu', {\n        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY[ko] MMMM[ren] D[a]',\n            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l : 'YYYY-M-D',\n            ll : 'YYYY[ko] MMM D[a]',\n            lll : 'YYYY[ko] MMM D[a] HH:mm',\n            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n        },\n        calendar : {\n            sameDay : '[gaur] LT[etan]',\n            nextDay : '[bihar] LT[etan]',\n            nextWeek : 'dddd LT[etan]',\n            lastDay : '[atzo] LT[etan]',\n            lastWeek : '[aurreko] dddd LT[etan]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s barru',\n            past : 'duela %s',\n            s : 'segundo batzuk',\n            ss : '%d segundo',\n            m : 'minutu bat',\n            mm : '%d minutu',\n            h : 'ordu bat',\n            hh : '%d ordu',\n            d : 'egun bat',\n            dd : '%d egun',\n            M : 'hilabete bat',\n            MM : '%d hilabete',\n            y : 'urte bat',\n            yy : '%d urte'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return eu;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/fa.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '۱',\n        '2': '۲',\n        '3': '۳',\n        '4': '۴',\n        '5': '۵',\n        '6': '۶',\n        '7': '۷',\n        '8': '۸',\n        '9': '۹',\n        '0': '۰'\n    }, numberMap = {\n        '۱': '1',\n        '۲': '2',\n        '۳': '3',\n        '۴': '4',\n        '۵': '5',\n        '۶': '6',\n        '۷': '7',\n        '۸': '8',\n        '۹': '9',\n        '۰': '0'\n    };\n\n    var fa = moment.defineLocale('fa', {\n        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar : {\n            sameDay : '[امروز ساعت] LT',\n            nextDay : '[فردا ساعت] LT',\n            nextWeek : 'dddd [ساعت] LT',\n            lastDay : '[دیروز ساعت] LT',\n            lastWeek : 'dddd [پیش] [ساعت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'در %s',\n            past : '%s پیش',\n            s : 'چند ثانیه',\n            ss : 'ثانیه d%',\n            m : 'یک دقیقه',\n            mm : '%d دقیقه',\n            h : 'یک ساعت',\n            hh : '%d ساعت',\n            d : 'یک روز',\n            dd : '%d روز',\n            M : 'یک ماه',\n            MM : '%d ماه',\n            y : 'یک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/[۰-۹]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal : '%dم',\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return fa;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/fi.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n        numbersFuture = [\n            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n            numbersPast[7], numbersPast[8], numbersPast[9]\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                return isFuture ? 'sekunnin' : 'sekuntia';\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'Do MMMM[ta] YYYY',\n            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l : 'D.M.YYYY',\n            ll : 'Do MMM YYYY',\n            lll : 'Do MMM YYYY, [klo] HH.mm',\n            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n        },\n        calendar : {\n            sameDay : '[tänään] [klo] LT',\n            nextDay : '[huomenna] [klo] LT',\n            nextWeek : 'dddd [klo] LT',\n            lastDay : '[eilen] [klo] LT',\n            lastWeek : '[viime] dddd[na] [klo] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s päästä',\n            past : '%s sitten',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fi;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/fo.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var fo = moment.defineLocale('fo', {\n        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D. MMMM, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Í dag kl.] LT',\n            nextDay : '[Í morgin kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[Í gjár kl.] LT',\n            lastWeek : '[síðstu] dddd [kl] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'um %s',\n            past : '%s síðani',\n            s : 'fá sekund',\n            ss : '%d sekundir',\n            m : 'ein minutt',\n            mm : '%d minuttir',\n            h : 'ein tími',\n            hh : '%d tímar',\n            d : 'ein dagur',\n            dd : '%d dagar',\n            M : 'ein mánaði',\n            MM : '%d mánaðir',\n            y : 'eitt ár',\n            yy : '%d ár'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fo;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/fr-ca.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        }\n    });\n\n    return frCa;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/fr-ch.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return frCh;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/fr.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var fr = moment.defineLocale('fr', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fr;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/fy.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    var fy = moment.defineLocale('fy', {\n        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact : true,\n        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'oer %s',\n            past : '%s lyn',\n            s : 'in pear sekonden',\n            ss : '%d sekonden',\n            m : 'ien minút',\n            mm : '%d minuten',\n            h : 'ien oere',\n            hh : '%d oeren',\n            d : 'ien dei',\n            dd : '%d dagen',\n            M : 'ien moanne',\n            MM : '%d moannen',\n            y : 'ien jier',\n            yy : '%d jierren'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fy;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/gd.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n    ];\n\n    var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\n    var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\n    var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\n    var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsParseExact : true,\n        weekdays : weekdays,\n        weekdaysShort : weekdaysShort,\n        weekdaysMin : weekdaysMin,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[An-diugh aig] LT',\n            nextDay : '[A-màireach aig] LT',\n            nextWeek : 'dddd [aig] LT',\n            lastDay : '[An-dè aig] LT',\n            lastWeek : 'dddd [seo chaidh] [aig] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ann an %s',\n            past : 'bho chionn %s',\n            s : 'beagan diogan',\n            ss : '%d diogan',\n            m : 'mionaid',\n            mm : '%d mionaidean',\n            h : 'uair',\n            hh : '%d uairean',\n            d : 'latha',\n            dd : '%d latha',\n            M : 'mìos',\n            MM : '%d mìosan',\n            y : 'bliadhna',\n            yy : '%d bliadhna'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n        ordinal : function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gd;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/gl.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var gl = moment.defineLocale('gl', {\n        months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n        monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            lastDay : function () {\n                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n            },\n            lastWeek : function () {\n                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past : 'hai %s',\n            s : 'uns segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'unha hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gl;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/gom-latn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['thodde secondanim', 'thodde second'],\n            'ss': [number + ' secondanim', number + ' second'],\n            'm': ['eka mintan', 'ek minute'],\n            'mm': [number + ' mintanim', number + ' mintam'],\n            'h': ['eka horan', 'ek hor'],\n            'hh': [number + ' horanim', number + ' horam'],\n            'd': ['eka disan', 'ek dis'],\n            'dd': [number + ' disanim', number + ' dis'],\n            'M': ['eka mhoinean', 'ek mhoino'],\n            'MM': [number + ' mhoineanim', number + ' mhoine'],\n            'y': ['eka vorsan', 'ek voros'],\n            'yy': [number + ' vorsanim', number + ' vorsam']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n        monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n        weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'A h:mm [vazta]',\n            LTS : 'A h:mm:ss [vazta]',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY A h:mm [vazta]',\n            LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n        },\n        calendar : {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Ieta to] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fatlo] dddd[,] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s',\n            past : '%s adim',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /rati|sokalli|donparam|sanje/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokalli') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokalli';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        }\n    });\n\n    return gomLatn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/gu.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n            '1': '૧',\n            '2': '૨',\n            '3': '૩',\n            '4': '૪',\n            '5': '૫',\n            '6': '૬',\n            '7': '૭',\n            '8': '૮',\n            '9': '૯',\n            '0': '૦'\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0'\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પેહલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ'\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return gu;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/he.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var he = moment.defineLocale('he', {\n        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [ב]MMMM YYYY',\n            LLL : 'D [ב]MMMM YYYY HH:mm',\n            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n            l : 'D/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[היום ב־]LT',\n            nextDay : '[מחר ב־]LT',\n            nextWeek : 'dddd [בשעה] LT',\n            lastDay : '[אתמול ב־]LT',\n            lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'בעוד %s',\n            past : 'לפני %s',\n            s : 'מספר שניות',\n            ss : '%d שניות',\n            m : 'דקה',\n            mm : '%d דקות',\n            h : 'שעה',\n            hh : function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d : 'יום',\n            dd : function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M : 'חודש',\n            MM : function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y : 'שנה',\n            yy : function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            }\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM : function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        }\n    });\n\n    return he;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/hi.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var hi = moment.defineLocale('hi', {\n        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm बजे',\n            LTS : 'A h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[कल] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[कल] LT',\n            lastWeek : '[पिछले] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s में',\n            past : '%s पहले',\n            s : 'कुछ ही क्षण',\n            ss : '%d सेकंड',\n            m : 'एक मिनट',\n            mm : '%d मिनट',\n            h : 'एक घंटा',\n            hh : '%d घंटे',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महीने',\n            MM : '%d महीने',\n            y : 'एक वर्ष',\n            yy : '%d वर्ष'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return hi;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/hr.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months : {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n        },\n        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return hr;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/hu.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY. MMMM D.',\n            LLL : 'YYYY. MMMM D. H:mm',\n            LLLL : 'YYYY. MMMM D., dddd H:mm'\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar : {\n            sameDay : '[ma] LT[-kor]',\n            nextDay : '[holnap] LT[-kor]',\n            nextWeek : function () {\n                return week.call(this, true);\n            },\n            lastDay : '[tegnap] LT[-kor]',\n            lastWeek : function () {\n                return week.call(this, false);\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s múlva',\n            past : '%s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return hu;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/hy-am.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months : {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n        },\n        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY թ.',\n            LLL : 'D MMMM YYYY թ., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n        },\n        calendar : {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s հետո',\n            past : '%s առաջ',\n            s : 'մի քանի վայրկյան',\n            ss : '%d վայրկյան',\n            m : 'րոպե',\n            mm : '%d րոպե',\n            h : 'ժամ',\n            hh : '%d ժամ',\n            d : 'օր',\n            dd : '%d օր',\n            M : 'ամիս',\n            MM : '%d ամիս',\n            y : 'տարի',\n            yy : '%d տարի'\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem : function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return hyAm;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/id.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var id = moment.defineLocale('id', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Besok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kemarin pukul] LT',\n            lastWeek : 'dddd [lalu pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lalu',\n            s : 'beberapa detik',\n            ss : '%d detik',\n            m : 'semenit',\n            mm : '%d menit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return id;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/is.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n        },\n        calendar : {\n            sameDay : '[í dag kl.] LT',\n            nextDay : '[á morgun kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[í gær kl.] LT',\n            lastWeek : '[síðasta] dddd [kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'eftir %s',\n            past : 'fyrir %s síðan',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : 'klukkustund',\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return is;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/it.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var it = moment.defineLocale('it', {\n        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past : '%s fa',\n            s : 'alcuni secondi',\n            ss : '%d secondi',\n            m : 'un minuto',\n            mm : '%d minuti',\n            h : 'un\\'ora',\n            hh : '%d ore',\n            d : 'un giorno',\n            dd : '%d giorni',\n            M : 'un mese',\n            MM : '%d mesi',\n            y : 'un anno',\n            yy : '%d anni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return it;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ja.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ja = moment.defineLocale('ja', {\n        months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日 dddd HH:mm',\n            l : 'YYYY/MM/DD',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日(ddd) HH:mm'\n        },\n        meridiemParse: /午前|午後/i,\n        isPM : function (input) {\n            return input === '午後';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar : {\n            sameDay : '[今日] LT',\n            nextDay : '[明日] LT',\n            nextWeek : function (now) {\n                if (now.week() < this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay : '[昨日] LT',\n            lastWeek : function (now) {\n                if (this.week() < now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}日/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s後',\n            past : '%s前',\n            s : '数秒',\n            ss : '%d秒',\n            m : '1分',\n            mm : '%d分',\n            h : '1時間',\n            hh : '%d時間',\n            d : '1日',\n            dd : '%d日',\n            M : '1ヶ月',\n            MM : '%dヶ月',\n            y : '1年',\n            yy : '%d年'\n        }\n    });\n\n    return ja;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/jv.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var jv = moment.defineLocale('jv', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar : {\n            sameDay : '[Dinten puniko pukul] LT',\n            nextDay : '[Mbenjang pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kala wingi pukul] LT',\n            lastWeek : 'dddd [kepengker pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'wonten ing %s',\n            past : '%s ingkang kepengker',\n            s : 'sawetawis detik',\n            ss : '%d detik',\n            m : 'setunggal menit',\n            mm : '%d menit',\n            h : 'setunggal jam',\n            hh : '%d jam',\n            d : 'sedinten',\n            dd : '%d dinten',\n            M : 'sewulan',\n            MM : '%d wulan',\n            y : 'setaun',\n            yy : '%d taun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return jv;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ka.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ka = moment.defineLocale('ka', {\n        months : {\n            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n        },\n        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays : {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n            isFormat: /(წინა|შემდეგ)/\n        },\n        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[დღეს] LT[-ზე]',\n            nextDay : '[ხვალ] LT[-ზე]',\n            lastDay : '[გუშინ] LT[-ზე]',\n            nextWeek : '[შემდეგ] dddd LT[-ზე]',\n            lastWeek : '[წინა] dddd LT-ზე',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n                    s.replace(/ი$/, 'ში') :\n                    s + 'ში';\n            },\n            past : function (s) {\n                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if ((/წელი/).test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n            },\n            s : 'რამდენიმე წამი',\n            ss : '%d წამი',\n            m : 'წუთი',\n            mm : '%d წუთი',\n            h : 'საათი',\n            hh : '%d საათი',\n            d : 'დღე',\n            dd : '%d დღე',\n            M : 'თვე',\n            MM : '%d თვე',\n            y : 'წელი',\n            yy : '%d წელი'\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal : function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week : {\n            dow : 1,\n            doy : 7\n        }\n    });\n\n    return ka;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/kk.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші'\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгін сағат] LT',\n            nextDay : '[Ертең сағат] LT',\n            nextWeek : 'dddd [сағат] LT',\n            lastDay : '[Кеше сағат] LT',\n            lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ішінде',\n            past : '%s бұрын',\n            s : 'бірнеше секунд',\n            ss : '%d секунд',\n            m : 'бір минут',\n            mm : '%d минут',\n            h : 'бір сағат',\n            hh : '%d сағат',\n            d : 'бір күн',\n            dd : '%d күн',\n            M : 'бір ай',\n            MM : '%d ай',\n            y : 'бір жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return kk;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/km.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '១',\n        '2': '២',\n        '3': '៣',\n        '4': '៤',\n        '5': '៥',\n        '6': '៦',\n        '7': '៧',\n        '8': '៨',\n        '9': '៩',\n        '0': '០'\n    }, numberMap = {\n        '១': '1',\n        '២': '2',\n        '៣': '3',\n        '៤': '4',\n        '៥': '5',\n        '៦': '6',\n        '៧': '7',\n        '៨': '8',\n        '៩': '9',\n        '០': '0'\n    };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ'\n        },\n        dayOfMonthOrdinalParse : /ទី\\d{1,2}/,\n        ordinal : 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return km;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/kn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '೧',\n        '2': '೨',\n        '3': '೩',\n        '4': '೪',\n        '5': '೫',\n        '6': '೬',\n        '7': '೭',\n        '8': '೮',\n        '9': '೯',\n        '0': '೦'\n    },\n    numberMap = {\n        '೧': '1',\n        '೨': '2',\n        '೩': '3',\n        '೪': '4',\n        '೫': '5',\n        '೬': '6',\n        '೭': '7',\n        '೮': '8',\n        '೯': '9',\n        '೦': '0'\n    };\n\n    var kn = moment.defineLocale('kn', {\n        months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n        monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n        weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[ಇಂದು] LT',\n            nextDay : '[ನಾಳೆ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ನಿನ್ನೆ] LT',\n            lastWeek : '[ಕೊನೆಯ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ನಂತರ',\n            past : '%s ಹಿಂದೆ',\n            s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss : '%d ಸೆಕೆಂಡುಗಳು',\n            m : 'ಒಂದು ನಿಮಿಷ',\n            mm : '%d ನಿಮಿಷ',\n            h : 'ಒಂದು ಗಂಟೆ',\n            hh : '%d ಗಂಟೆ',\n            d : 'ಒಂದು ದಿನ',\n            dd : '%d ದಿನ',\n            M : 'ಒಂದು ತಿಂಗಳು',\n            MM : '%d ತಿಂಗಳು',\n            y : 'ಒಂದು ವರ್ಷ',\n            yy : '%d ವರ್ಷ'\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal : function (number) {\n            return number + 'ನೇ';\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return kn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ko.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ko = moment.defineLocale('ko', {\n        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY년 MMMM D일',\n            LLL : 'YYYY년 MMMM D일 A h:mm',\n            LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n            l : 'YYYY.MM.DD.',\n            ll : 'YYYY년 MMMM D일',\n            lll : 'YYYY년 MMMM D일 A h:mm',\n            llll : 'YYYY년 MMMM D일 dddd A h:mm'\n        },\n        calendar : {\n            sameDay : '오늘 LT',\n            nextDay : '내일 LT',\n            nextWeek : 'dddd LT',\n            lastDay : '어제 LT',\n            lastWeek : '지난주 dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s 후',\n            past : '%s 전',\n            s : '몇 초',\n            ss : '%d초',\n            m : '1분',\n            mm : '%d분',\n            h : '한 시간',\n            hh : '%d시간',\n            d : '하루',\n            dd : '%d일',\n            M : '한 달',\n            MM : '%d달',\n            y : '일 년',\n            yy : '%d년'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse : /오전|오후/,\n        isPM : function (token) {\n            return token === '오후';\n        },\n        meridiem : function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        }\n    });\n\n    return ko;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ky.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү'\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгүн саат] LT',\n            nextDay : '[Эртең саат] LT',\n            nextWeek : 'dddd [саат] LT',\n            lastDay : '[Кече саат] LT',\n            lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ичинде',\n            past : '%s мурун',\n            s : 'бирнече секунд',\n            ss : '%d секунд',\n            m : 'бир мүнөт',\n            mm : '%d мүнөт',\n            h : 'бир саат',\n            hh : '%d саат',\n            d : 'бир күн',\n            dd : '%d күн',\n            M : 'бир ай',\n            MM : '%d ай',\n            y : 'бир жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ky;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/lb.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eng Minutt', 'enger Minutt'],\n            'h': ['eng Stonn', 'enger Stonn'],\n            'd': ['een Dag', 'engem Dag'],\n            'M': ['ee Mount', 'engem Mount'],\n            'y': ['ee Joer', 'engem Joer']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10, firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            }\n        },\n        relativeTime : {\n            future : processFutureTime,\n            past : processPastTime,\n            s : 'e puer Sekonnen',\n            ss : '%d Sekonnen',\n            m : processRelativeTime,\n            mm : '%d Minutten',\n            h : processRelativeTime,\n            hh : '%d Stonnen',\n            d : processRelativeTime,\n            dd : '%d Deeg',\n            M : processRelativeTime,\n            MM : '%d Méint',\n            y : processRelativeTime,\n            yy : '%d Joer'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lb;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/lo.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var lo = moment.defineLocale('lo', {\n        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar : {\n            sameDay : '[ມື້ນີ້ເວລາ] LT',\n            nextDay : '[ມື້ອື່ນເວລາ] LT',\n            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ອີກ %s',\n            past : '%sຜ່ານມາ',\n            s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss : '%d ວິນາທີ' ,\n            m : '1 ນາທີ',\n            mm : '%d ນາທີ',\n            h : '1 ຊົ່ວໂມງ',\n            hh : '%d ຊົ່ວໂມງ',\n            d : '1 ມື້',\n            dd : '%d ມື້',\n            M : '1 ເດືອນ',\n            MM : '%d ເດືອນ',\n            y : '1 ປີ',\n            yy : '%d ປີ'\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal : function (number) {\n            return 'ທີ່' + number;\n        }\n    });\n\n    return lo;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/lt.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss' : 'sekundė_sekundžių_sekundes',\n        'm' : 'minutė_minutės_minutę',\n        'mm': 'minutės_minučių_minutes',\n        'h' : 'valanda_valandos_valandą',\n        'hh': 'valandos_valandų_valandas',\n        'd' : 'diena_dienos_dieną',\n        'dd': 'dienos_dienų_dienas',\n        'M' : 'mėnuo_mėnesio_mėnesį',\n        'MM': 'mėnesiai_mėnesių_mėnesius',\n        'y' : 'metai_metų_metus',\n        'yy': 'metai_metų_metus'\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months : {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n        },\n        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays : {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n            isFormat: /dddd HH:mm/\n        },\n        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY [m.] MMMM D [d.]',\n            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l : 'YYYY-MM-DD',\n            ll : 'YYYY [m.] MMMM D [d.]',\n            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n        },\n        calendar : {\n            sameDay : '[Šiandien] LT',\n            nextDay : '[Rytoj] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[Vakar] LT',\n            lastWeek : '[Praėjusį] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'po %s',\n            past : 'prieš %s',\n            s : translateSeconds,\n            ss : translate,\n            m : translateSingular,\n            mm : translate,\n            h : translateSingular,\n            hh : translate,\n            d : translateSingular,\n            dd : translate,\n            M : translateSingular,\n            MM : translate,\n            y : translateSingular,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal : function (number) {\n            return number + '-oji';\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lt;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/lv.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'h': 'stundas_stundām_stunda_stundas'.split('_'),\n        'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n        'd': 'dienas_dienām_diena_dienas'.split('_'),\n        'dd': 'dienas_dienām_diena_dienas'.split('_'),\n        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'y': 'gada_gadiem_gads_gadi'.split('_'),\n        'yy': 'gada_gadiem_gads_gadi'.split('_')\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY.',\n            LL : 'YYYY. [gada] D. MMMM',\n            LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n        },\n        calendar : {\n            sameDay : '[Šodien pulksten] LT',\n            nextDay : '[Rīt pulksten] LT',\n            nextWeek : 'dddd [pulksten] LT',\n            lastDay : '[Vakar pulksten] LT',\n            lastWeek : '[Pagājušā] dddd [pulksten] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'pēc %s',\n            past : 'pirms %s',\n            s : relativeSeconds,\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithSingular,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithSingular,\n            hh : relativeTimeWithPlural,\n            d : relativeTimeWithSingular,\n            dd : relativeTimeWithPlural,\n            M : relativeTimeWithSingular,\n            MM : relativeTimeWithPlural,\n            y : relativeTimeWithSingular,\n            yy : relativeTimeWithPlural\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lv;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/me.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mjesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return me;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/mi.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mi;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/mk.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mk = moment.defineLocale('mk', {\n        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Денес во] LT',\n            nextDay : '[Утре во] LT',\n            nextWeek : '[Во] dddd [во] LT',\n            lastDay : '[Вчера во] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'после %s',\n            past : 'пред %s',\n            s : 'неколку секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дена',\n            M : 'месец',\n            MM : '%d месеци',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return mk;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ml.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ml = moment.defineLocale('ml', {\n        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm -നു',\n            LTS : 'A h:mm:ss -നു',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm -നു',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n        },\n        calendar : {\n            sameDay : '[ഇന്ന്] LT',\n            nextDay : '[നാളെ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ഇന്നലെ] LT',\n            lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s കഴിഞ്ഞ്',\n            past : '%s മുൻപ്',\n            s : 'അൽപ നിമിഷങ്ങൾ',\n            ss : '%d സെക്കൻഡ്',\n            m : 'ഒരു മിനിറ്റ്',\n            mm : '%d മിനിറ്റ്',\n            h : 'ഒരു മണിക്കൂർ',\n            hh : '%d മണിക്കൂർ',\n            d : 'ഒരു ദിവസം',\n            dd : '%d ദിവസം',\n            M : 'ഒരു മാസം',\n            MM : '%d മാസം',\n            y : 'ഒരു വർഷം',\n            yy : '%d വർഷം'\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'രാത്രി' && hour >= 4) ||\n                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                    meridiem === 'വൈകുന്നേരം') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        }\n    });\n\n    return ml;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/mn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n        monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY оны MMMMын D',\n            LLL : 'YYYY оны MMMMын D HH:mm',\n            LLLL : 'dddd, YYYY оны MMMMын D HH:mm'\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM : function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar : {\n            sameDay : '[Өнөөдөр] LT',\n            nextDay : '[Маргааш] LT',\n            nextWeek : '[Ирэх] dddd LT',\n            lastDay : '[Өчигдөр] LT',\n            lastWeek : '[Өнгөрсөн] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s дараа',\n            past : '%s өмнө',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        }\n    });\n\n    return mn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/mr.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture)\n    {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's': output = 'काही सेकंद'; break;\n                case 'ss': output = '%d सेकंद'; break;\n                case 'm': output = 'एक मिनिट'; break;\n                case 'mm': output = '%d मिनिटे'; break;\n                case 'h': output = 'एक तास'; break;\n                case 'hh': output = '%d तास'; break;\n                case 'd': output = 'एक दिवस'; break;\n                case 'dd': output = '%d दिवस'; break;\n                case 'M': output = 'एक महिना'; break;\n                case 'MM': output = '%d महिने'; break;\n                case 'y': output = 'एक वर्ष'; break;\n                case 'yy': output = '%d वर्षे'; break;\n            }\n        }\n        else {\n            switch (string) {\n                case 's': output = 'काही सेकंदां'; break;\n                case 'ss': output = '%d सेकंदां'; break;\n                case 'm': output = 'एका मिनिटा'; break;\n                case 'mm': output = '%d मिनिटां'; break;\n                case 'h': output = 'एका तासा'; break;\n                case 'hh': output = '%d तासां'; break;\n                case 'd': output = 'एका दिवसा'; break;\n                case 'dd': output = '%d दिवसां'; break;\n                case 'M': output = 'एका महिन्या'; break;\n                case 'MM': output = '%d महिन्यां'; break;\n                case 'y': output = 'एका वर्षा'; break;\n                case 'yy': output = '%d वर्षां'; break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm वाजता',\n            LTS : 'A h:mm:ss वाजता',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm वाजता',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[उद्या] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात्री') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळी') {\n                return hour;\n            } else if (meridiem === 'दुपारी') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'सायंकाळी') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात्री';\n            } else if (hour < 10) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return mr;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ms-my.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var msMy = moment.defineLocale('ms-my', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return msMy;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ms.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ms = moment.defineLocale('ms', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ms;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/mt.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mt = moment.defineLocale('mt', {\n        months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n        monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n        weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Illum fil-]LT',\n            nextDay : '[Għada fil-]LT',\n            nextWeek : 'dddd [fil-]LT',\n            lastDay : '[Il-bieraħ fil-]LT',\n            lastWeek : 'dddd [li għadda] [fil-]LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'f’ %s',\n            past : '%s ilu',\n            s : 'ftit sekondi',\n            ss : '%d sekondi',\n            m : 'minuta',\n            mm : '%d minuti',\n            h : 'siegħa',\n            hh : '%d siegħat',\n            d : 'ġurnata',\n            dd : '%d ġranet',\n            M : 'xahar',\n            MM : '%d xhur',\n            y : 'sena',\n            yy : '%d sni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mt;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/my.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '၁',\n        '2': '၂',\n        '3': '၃',\n        '4': '၄',\n        '5': '၅',\n        '6': '၆',\n        '7': '၇',\n        '8': '၈',\n        '9': '၉',\n        '0': '၀'\n    }, numberMap = {\n        '၁': '1',\n        '၂': '2',\n        '၃': '3',\n        '၄': '4',\n        '၅': '5',\n        '၆': '6',\n        '၇': '7',\n        '၈': '8',\n        '၉': '9',\n        '၀': '0'\n    };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss : '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်'\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return my;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/nb.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var nb = moment.defineLocale('nb', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'noen sekunder',\n            ss : '%d sekunder',\n            m : 'ett minutt',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dager',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nb;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ne.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var ne = moment.defineLocale('ne', {\n        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'Aको h:mm बजे',\n            LTS : 'Aको h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[भोलि] LT',\n            nextWeek : '[आउँदो] dddd[,] LT',\n            lastDay : '[हिजो] LT',\n            lastWeek : '[गएको] dddd[,] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sमा',\n            past : '%s अगाडि',\n            s : 'केही क्षण',\n            ss : '%d सेकेण्ड',\n            m : 'एक मिनेट',\n            mm : '%d मिनेट',\n            h : 'एक घण्टा',\n            hh : '%d घण्टा',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महिना',\n            MM : '%d महिना',\n            y : 'एक बर्ष',\n            yy : '%d बर्ष'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ne;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/nl-be.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nlBe;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/nl.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nl;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/nn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var nn = moment.defineLocale('nn', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s sidan',\n            s : 'nokre sekund',\n            ss : '%d sekund',\n            m : 'eit minutt',\n            mm : '%d minutt',\n            h : 'ein time',\n            hh : '%d timar',\n            d : 'ein dag',\n            dd : '%d dagar',\n            M : 'ein månad',\n            MM : '%d månader',\n            y : 'eit år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/pa-in.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '੧',\n        '2': '੨',\n        '3': '੩',\n        '4': '੪',\n        '5': '੫',\n        '6': '੬',\n        '7': '੭',\n        '8': '੮',\n        '9': '੯',\n        '0': '੦'\n    },\n    numberMap = {\n        '੧': '1',\n        '੨': '2',\n        '੩': '3',\n        '੪': '4',\n        '੫': '5',\n        '੬': '6',\n        '੭': '7',\n        '੮': '8',\n        '੯': '9',\n        '੦': '0'\n    };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.\n        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm ਵਜੇ',\n            LTS : 'A h:mm:ss ਵਜੇ',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n        },\n        calendar : {\n            sameDay : '[ਅਜ] LT',\n            nextDay : '[ਕਲ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ਕਲ] LT',\n            lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ਵਿੱਚ',\n            past : '%s ਪਿਛਲੇ',\n            s : 'ਕੁਝ ਸਕਿੰਟ',\n            ss : '%d ਸਕਿੰਟ',\n            m : 'ਇਕ ਮਿੰਟ',\n            mm : '%d ਮਿੰਟ',\n            h : 'ਇੱਕ ਘੰਟਾ',\n            hh : '%d ਘੰਟੇ',\n            d : 'ਇੱਕ ਦਿਨ',\n            dd : '%d ਦਿਨ',\n            M : 'ਇੱਕ ਮਹੀਨਾ',\n            MM : '%d ਮਹੀਨੇ',\n            y : 'ਇੱਕ ਸਾਲ',\n            yy : '%d ਸਾਲ'\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return paIn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/pl.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n    function plural(n) {\n        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix  ? 'godzina'  : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (format === '') {\n                // Hack: if format empty we know this is used to generate\n                // RegExp by moment. Give then back both valid forms of months\n                // in RegExp ready format.\n                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : '%s temu',\n            s : 'kilka sekund',\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : '1 dzień',\n            dd : '%d dni',\n            M : 'miesiąc',\n            MM : translate,\n            y : 'rok',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pl;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/pt-br.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'poucos segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº'\n    });\n\n    return ptBr;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/pt.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var pt = moment.defineLocale('pt', {\n        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pt;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ro.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                'ss': 'secunde',\n                'mm': 'minute',\n                'hh': 'ore',\n                'dd': 'zile',\n                'MM': 'luni',\n                'yy': 'ani'\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'peste %s',\n            past : '%s în urmă',\n            s : 'câteva secunde',\n            ss : relativeTimeWithPlural,\n            m : 'un minut',\n            mm : relativeTimeWithPlural,\n            h : 'o oră',\n            hh : relativeTimeWithPlural,\n            d : 'o zi',\n            dd : relativeTimeWithPlural,\n            M : 'o lună',\n            MM : relativeTimeWithPlural,\n            y : 'un an',\n            yy : relativeTimeWithPlural\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ro;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ru.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            'hh': 'час_часа_часов',\n            'dd': 'день_дня_дней',\n            'MM': 'месяц_месяца_месяцев',\n            'yy': 'год_года_лет'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months : {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n        },\n        monthsShort : {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n        },\n        weekdays : {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соотвествует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., H:mm',\n            LLLL : 'dddd, D MMMM YYYY г., H:mm'\n        },\n        calendar : {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'через %s',\n            past : '%s назад',\n            s : 'несколько секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'час',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM : function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ru;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sd.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوري',\n        'فيبروري',\n        'مارچ',\n        'اپريل',\n        'مئي',\n        'جون',\n        'جولاءِ',\n        'آگسٽ',\n        'سيپٽمبر',\n        'آڪٽوبر',\n        'نومبر',\n        'ڊسمبر'\n    ];\n    var days = [\n        'آچر',\n        'سومر',\n        'اڱارو',\n        'اربع',\n        'خميس',\n        'جمع',\n        'ڇنڇر'\n    ];\n\n    var sd = moment.defineLocale('sd', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[اڄ] LT',\n            nextDay : '[سڀاڻي] LT',\n            nextWeek : 'dddd [اڳين هفتي تي] LT',\n            lastDay : '[ڪالهه] LT',\n            lastWeek : '[گزريل هفتي] dddd [تي] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s پوء',\n            past : '%s اڳ',\n            s : 'چند سيڪنڊ',\n            ss : '%d سيڪنڊ',\n            m : 'هڪ منٽ',\n            mm : '%d منٽ',\n            h : 'هڪ ڪلاڪ',\n            hh : '%d ڪلاڪ',\n            d : 'هڪ ڏينهن',\n            dd : '%d ڏينهن',\n            M : 'هڪ مهينو',\n            MM : '%d مهينا',\n            y : 'هڪ سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sd;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/se.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var se = moment.defineLocale('se', {\n        months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'MMMM D. [b.] YYYY',\n            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s geažes',\n            past : 'maŋit %s',\n            s : 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m : 'okta minuhta',\n            mm : '%d minuhtat',\n            h : 'okta diimmu',\n            hh : '%d diimmut',\n            d : 'okta beaivi',\n            dd : '%d beaivvit',\n            M : 'okta mánnu',\n            MM : '%d mánut',\n            y : 'okta jahki',\n            yy : '%d jagit'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return se;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/si.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'a h:mm',\n            LTS : 'a h:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY MMMM D',\n            LLL : 'YYYY MMMM D, a h:mm',\n            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n        },\n        calendar : {\n            sameDay : '[අද] LT[ට]',\n            nextDay : '[හෙට] LT[ට]',\n            nextWeek : 'dddd LT[ට]',\n            lastDay : '[ඊයේ] LT[ට]',\n            lastWeek : '[පසුගිය] dddd LT[ට]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sකින්',\n            past : '%sකට පෙර',\n            s : 'තත්පර කිහිපය',\n            ss : 'තත්පර %d',\n            m : 'මිනිත්තුව',\n            mm : 'මිනිත්තු %d',\n            h : 'පැය',\n            hh : 'පැය %d',\n            d : 'දිනය',\n            dd : 'දින %d',\n            M : 'මාසය',\n            MM : 'මාස %d',\n            y : 'වසර',\n            yy : 'වසර %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal : function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM : function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        }\n    });\n\n    return si;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sk.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return (n > 1) && (n < 5);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n                break;\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months : months,\n        monthsShort : monthsShort,\n        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'pred %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sk;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sl.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += withoutSuffix || isFuture ? 'sekund' : 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danes ob] LT',\n            nextDay  : '[jutri ob] LT',\n\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay  : '[včeraj ob] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'čez %s',\n            past   : 'pred %s',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : processRelativeTime,\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return sl;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sq.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sq = moment.defineLocale('sq', {\n        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Sot në] LT',\n            nextDay : '[Nesër në] LT',\n            nextWeek : 'dddd [në] LT',\n            lastDay : '[Dje në] LT',\n            lastWeek : 'dddd [e kaluar në] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'në %s',\n            past : '%s më parë',\n            s : 'disa sekonda',\n            ss : '%d sekonda',\n            m : 'një minutë',\n            mm : '%d minuta',\n            h : 'një orë',\n            hh : '%d orë',\n            d : 'një ditë',\n            dd : '%d ditë',\n            M : 'një muaj',\n            MM : '%d muaj',\n            y : 'një vit',\n            yy : '%d vite'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sq;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sr-cyrl.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay  : '[јуче у] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past   : 'пре %s',\n            s      : 'неколико секунди',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'дан',\n            dd     : translator.translate,\n            M      : 'месец',\n            MM     : translator.translate,\n            y      : 'годину',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return srCyrl;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sr.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'pre %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return sr;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ss.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ss = moment.defineLocale('ss', {\n        months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Namuhla nga] LT',\n            nextDay : '[Kusasa nga] LT',\n            nextWeek : 'dddd [nga] LT',\n            lastDay : '[Itolo nga] LT',\n            lastWeek : 'dddd [leliphelile] [nga] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'nga %s',\n            past : 'wenteka nga %s',\n            s : 'emizuzwana lomcane',\n            ss : '%d mzuzwana',\n            m : 'umzuzu',\n            mm : '%d emizuzu',\n            h : 'lihora',\n            hh : '%d emahora',\n            d : 'lilanga',\n            dd : '%d emalanga',\n            M : 'inyanga',\n            MM : '%d tinyanga',\n            y : 'umnyaka',\n            yy : '%d iminyaka'\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : '%d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ss;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sv.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sv = moment.defineLocale('sv', {\n        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : 'för %s sedan',\n            s : 'några sekunder',\n            ss : '%d sekunder',\n            m : 'en minut',\n            mm : '%d minuter',\n            h : 'en timme',\n            hh : '%d timmar',\n            d : 'en dag',\n            dd : '%d dagar',\n            M : 'en månad',\n            MM : '%d månader',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'e' :\n                (b === 1) ? 'a' :\n                (b === 2) ? 'a' :\n                (b === 3) ? 'e' : 'e';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sv;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/sw.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sw = moment.defineLocale('sw', {\n        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[leo saa] LT',\n            nextDay : '[kesho saa] LT',\n            nextWeek : '[wiki ijayo] dddd [saat] LT',\n            lastDay : '[jana] LT',\n            lastWeek : '[wiki iliyopita] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s baadaye',\n            past : 'tokea %s',\n            s : 'hivi punde',\n            ss : 'sekunde %d',\n            m : 'dakika moja',\n            mm : 'dakika %d',\n            h : 'saa limoja',\n            hh : 'masaa %d',\n            d : 'siku moja',\n            dd : 'masiku %d',\n            M : 'mwezi mmoja',\n            MM : 'miezi %d',\n            y : 'mwaka mmoja',\n            yy : 'miaka %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return sw;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ta.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '௧',\n        '2': '௨',\n        '3': '௩',\n        '4': '௪',\n        '5': '௫',\n        '6': '௬',\n        '7': '௭',\n        '8': '௮',\n        '9': '௯',\n        '0': '௦'\n    }, numberMap = {\n        '௧': '1',\n        '௨': '2',\n        '௩': '3',\n        '௪': '4',\n        '௫': '5',\n        '௬': '6',\n        '௭': '7',\n        '௮': '8',\n        '௯': '9',\n        '௦': '0'\n    };\n\n    var ta = moment.defineLocale('ta', {\n        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, HH:mm',\n            LLLL : 'dddd, D MMMM YYYY, HH:mm'\n        },\n        calendar : {\n            sameDay : '[இன்று] LT',\n            nextDay : '[நாளை] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[நேற்று] LT',\n            lastWeek : '[கடந்த வாரம்] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s இல்',\n            past : '%s முன்',\n            s : 'ஒரு சில விநாடிகள்',\n            ss : '%d விநாடிகள்',\n            m : 'ஒரு நிமிடம்',\n            mm : '%d நிமிடங்கள்',\n            h : 'ஒரு மணி நேரம்',\n            hh : '%d மணி நேரம்',\n            d : 'ஒரு நாள்',\n            dd : '%d நாட்கள்',\n            M : 'ஒரு மாதம்',\n            MM : '%d மாதங்கள்',\n            y : 'ஒரு வருடம்',\n            yy : '%d ஆண்டுகள்'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal : function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை';  // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ta;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/te.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var te = moment.defineLocale('te', {\n        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[నేడు] LT',\n            nextDay : '[రేపు] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[నిన్న] LT',\n            lastWeek : '[గత] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s లో',\n            past : '%s క్రితం',\n            s : 'కొన్ని క్షణాలు',\n            ss : '%d సెకన్లు',\n            m : 'ఒక నిమిషం',\n            mm : '%d నిమిషాలు',\n            h : 'ఒక గంట',\n            hh : '%d గంటలు',\n            d : 'ఒక రోజు',\n            dd : '%d రోజులు',\n            M : 'ఒక నెల',\n            MM : '%d నెలలు',\n            y : 'ఒక సంవత్సరం',\n            yy : '%d సంవత్సరాలు'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n        ordinal : '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return te;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tet.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tet = moment.defineLocale('tet', {\n        months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'iha %s',\n            past : '%s liuba',\n            s : 'minutu balun',\n            ss : 'minutu %d',\n            m : 'minutu ida',\n            mm : 'minutu %d',\n            h : 'oras ida',\n            hh : 'oras %d',\n            d : 'loron ida',\n            dd : 'loron %d',\n            M : 'fulan ida',\n            MM : 'fulan %d',\n            y : 'tinan ida',\n            yy : 'tinan %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tet;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tg.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум'\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n        weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Имрӯз соати] LT',\n            nextDay : '[Пагоҳ соати] LT',\n            lastDay : '[Дирӯз соати] LT',\n            nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'баъди %s',\n            past : '%s пеш',\n            s : 'якчанд сония',\n            m : 'як дақиқа',\n            mm : '%d дақиқа',\n            h : 'як соат',\n            hh : '%d соат',\n            d : 'як рӯз',\n            dd : '%d рӯз',\n            M : 'як моҳ',\n            MM : '%d моҳ',\n            y : 'як сол',\n            yy : '%d сол'\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1th is the first week of the year.\n        }\n    });\n\n    return tg;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/th.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var th = moment.defineLocale('th', {\n        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n        monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY เวลา H:mm',\n            LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar : {\n            sameDay : '[วันนี้ เวลา] LT',\n            nextDay : '[พรุ่งนี้ เวลา] LT',\n            nextWeek : 'dddd[หน้า เวลา] LT',\n            lastDay : '[เมื่อวานนี้ เวลา] LT',\n            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'อีก %s',\n            past : '%sที่แล้ว',\n            s : 'ไม่กี่วินาที',\n            ss : '%d วินาที',\n            m : '1 นาที',\n            mm : '%d นาที',\n            h : '1 ชั่วโมง',\n            hh : '%d ชั่วโมง',\n            d : '1 วัน',\n            dd : '%d วัน',\n            M : '1 เดือน',\n            MM : '%d เดือน',\n            y : '1 ปี',\n            yy : '%d ปี'\n        }\n    });\n\n    return th;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tl-ph.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'MM/D/YYYY',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY HH:mm',\n            LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'sa loob ng %s',\n            past : '%s ang nakalipas',\n            s : 'ilang segundo',\n            ss : '%d segundo',\n            m : 'isang minuto',\n            mm : '%d minuto',\n            h : 'isang oras',\n            hh : '%d oras',\n            d : 'isang araw',\n            dd : '%d araw',\n            M : 'isang buwan',\n            MM : '%d buwan',\n            y : 'isang taon',\n            yy : '%d taon'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlPh;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tlh.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'leS' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'waQ' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'nem' :\n        time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'Hu’' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'wen' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'ben' :\n        time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n        ten = Math.floor((number % 100) / 10),\n        one = number % 10,\n        word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n        }\n        return (word === '') ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n        monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : translateFuture,\n            past : translatePast,\n            s : 'puS lup',\n            ss : translate,\n            m : 'wa’ tup',\n            mm : translate,\n            h : 'wa’ rep',\n            hh : translate,\n            d : 'wa’ jaj',\n            dd : translate,\n            M : 'wa’ jar',\n            MM : translate,\n            y : 'wa’ DIS',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlh;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tr.js",
    "content": "\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    var suffixes = {\n        1: '\\'inci',\n        5: '\\'inci',\n        8: '\\'inci',\n        70: '\\'inci',\n        80: '\\'inci',\n        2: '\\'nci',\n        7: '\\'nci',\n        20: '\\'nci',\n        50: '\\'nci',\n        3: '\\'üncü',\n        4: '\\'üncü',\n        100: '\\'üncü',\n        6: '\\'ncı',\n        9: '\\'uncu',\n        10: '\\'uncu',\n        30: '\\'uncu',\n        60: '\\'ıncı',\n        90: '\\'ıncı'\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[yarın saat] LT',\n            nextWeek : '[gelecek] dddd [saat] LT',\n            lastDay : '[dün] LT',\n            lastWeek : '[geçen] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s önce',\n            s : 'birkaç saniye',\n            ss : '%d saniye',\n            m : 'bir dakika',\n            mm : '%d dakika',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir yıl',\n            yy : '%d yıl'\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {  // special case for zero\n                        return number + '\\'ıncı';\n                    }\n                    var a = number % 10,\n                        b = number % 100 - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return tr;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tzl.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM [dallas] YYYY',\n            LLL : 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM : function (input) {\n            return 'd\\'o' === input.toLowerCase();\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'd\\'o' : 'D\\'O';\n            } else {\n                return isLower ? 'd\\'a' : 'D\\'A';\n            }\n        },\n        calendar : {\n            sameDay : '[oxhi à] LT',\n            nextDay : '[demà à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[ieiri à] LT',\n            lastWeek : '[sür el] dddd [lasteu à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'osprei %s',\n            past : 'ja%s',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['viensas secunds', '\\'iensas secunds'],\n            'ss': [number + ' secunds', '' + number + ' secunds'],\n            'm': ['\\'n míut', '\\'iens míut'],\n            'mm': [number + ' míuts', '' + number + ' míuts'],\n            'h': ['\\'n þora', '\\'iensa þora'],\n            'hh': [number + ' þoras', '' + number + ' þoras'],\n            'd': ['\\'n ziua', '\\'iensa ziua'],\n            'dd': [number + ' ziuas', '' + number + ' ziuas'],\n            'M': ['\\'n mes', '\\'iens mes'],\n            'MM': [number + ' mesen', '' + number + ' mesen'],\n            'y': ['\\'n ar', '\\'iens ar'],\n            'yy': [number + ' ars', '' + number + ' ars']\n        };\n        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n    }\n\n    return tzl;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tzm-latn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'dadkh s yan %s',\n            past : 'yan %s',\n            s : 'imik',\n            ss : '%d imik',\n            m : 'minuḍ',\n            mm : '%d minuḍ',\n            h : 'saɛa',\n            hh : '%d tassaɛin',\n            d : 'ass',\n            dd : '%d ossan',\n            M : 'ayowr',\n            MM : '%d iyyirn',\n            y : 'asgas',\n            yy : '%d isgasn'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return tzmLatn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/tzm.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tzm = moment.defineLocale('tzm', {\n        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past : 'ⵢⴰⵏ %s',\n            s : 'ⵉⵎⵉⴽ',\n            ss : '%d ⵉⵎⵉⴽ',\n            m : 'ⵎⵉⵏⵓⴺ',\n            mm : '%d ⵎⵉⵏⵓⴺ',\n            h : 'ⵙⴰⵄⴰ',\n            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d : 'ⴰⵙⵙ',\n            dd : '%d oⵙⵙⴰⵏ',\n            M : 'ⴰⵢoⵓⵔ',\n            MM : '%d ⵉⵢⵢⵉⵔⵏ',\n            y : 'ⴰⵙⴳⴰⵙ',\n            yy : '%d ⵉⵙⴳⴰⵙⵏ'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return tzm;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ug-cn.js",
    "content": "//! moment.js language configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل'\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ugCn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/uk.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            'dd': 'день_дні_днів',\n            'MM': 'місяць_місяці_місяців',\n            'yy': 'рік_роки_років'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n        };\n\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n            'accusative' :\n            ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n                'genitive' :\n                'nominative');\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months : {\n            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n        },\n        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n        weekdays : weekdaysCaseReplace,\n        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY р.',\n            LLL : 'D MMMM YYYY р., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n        },\n        calendar : {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past : '%s тому',\n            s : 'декілька секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'годину',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'місяць',\n            MM : relativeTimeWithPlural,\n            y : 'рік',\n            yy : relativeTimeWithPlural\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return uk;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/ur.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوری',\n        'فروری',\n        'مارچ',\n        'اپریل',\n        'مئی',\n        'جون',\n        'جولائی',\n        'اگست',\n        'ستمبر',\n        'اکتوبر',\n        'نومبر',\n        'دسمبر'\n    ];\n    var days = [\n        'اتوار',\n        'پیر',\n        'منگل',\n        'بدھ',\n        'جمعرات',\n        'جمعہ',\n        'ہفتہ'\n    ];\n\n    var ur = moment.defineLocale('ur', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[آج بوقت] LT',\n            nextDay : '[کل بوقت] LT',\n            nextWeek : 'dddd [بوقت] LT',\n            lastDay : '[گذشتہ روز بوقت] LT',\n            lastWeek : '[گذشتہ] dddd [بوقت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s بعد',\n            past : '%s قبل',\n            s : 'چند سیکنڈ',\n            ss : '%d سیکنڈ',\n            m : 'ایک منٹ',\n            mm : '%d منٹ',\n            h : 'ایک گھنٹہ',\n            hh : '%d گھنٹے',\n            d : 'ایک دن',\n            dd : '%d دن',\n            M : 'ایک ماہ',\n            MM : '%d ماہ',\n            y : 'ایک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ur;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/uz-latn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n        monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n        weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bugun soat] LT [da]',\n            nextDay : '[Ertaga] LT [da]',\n            nextWeek : 'dddd [kuni soat] LT [da]',\n            lastDay : '[Kecha soat] LT [da]',\n            lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Yaqin %s ichida',\n            past : 'Bir necha %s oldin',\n            s : 'soniya',\n            ss : '%d soniya',\n            m : 'bir daqiqa',\n            mm : '%d daqiqa',\n            h : 'bir soat',\n            hh : '%d soat',\n            d : 'bir kun',\n            dd : '%d kun',\n            M : 'bir oy',\n            MM : '%d oy',\n            y : 'bir yil',\n            yy : '%d yil'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return uzLatn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/uz.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var uz = moment.defineLocale('uz', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бугун соат] LT [да]',\n            nextDay : '[Эртага] LT [да]',\n            nextWeek : 'dddd [куни соат] LT [да]',\n            lastDay : '[Кеча соат] LT [да]',\n            lastWeek : '[Утган] dddd [куни соат] LT [да]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Якин %s ичида',\n            past : 'Бир неча %s олдин',\n            s : 'фурсат',\n            ss : '%d фурсат',\n            m : 'бир дакика',\n            mm : '%d дакика',\n            h : 'бир соат',\n            hh : '%d соат',\n            d : 'бир кун',\n            dd : '%d кун',\n            M : 'бир ой',\n            MM : '%d ой',\n            y : 'бир йил',\n            yy : '%d йил'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return uz;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/vi.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var vi = moment.defineLocale('vi', {\n        months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /sa|ch/i,\n        isPM : function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [năm] YYYY',\n            LLL : 'D MMMM [năm] YYYY HH:mm',\n            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n            l : 'DD/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần rồi lúc] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s tới',\n            past : '%s trước',\n            s : 'vài giây',\n            ss : '%d giây' ,\n            m : 'một phút',\n            mm : '%d phút',\n            h : 'một giờ',\n            hh : '%d giờ',\n            d : 'một ngày',\n            dd : '%d ngày',\n            M : 'một tháng',\n            MM : '%d tháng',\n            y : 'một năm',\n            yy : '%d năm'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return vi;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/x-pseudo.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[T~ódá~ý át] LT',\n            nextDay : '[T~ómó~rró~w át] LT',\n            nextWeek : 'dddd [át] LT',\n            lastDay : '[Ý~ést~érdá~ý át] LT',\n            lastWeek : '[L~ást] dddd [át] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'í~ñ %s',\n            past : '%s á~gó',\n            s : 'á ~féw ~sécó~ñds',\n            ss : '%d s~écóñ~ds',\n            m : 'á ~míñ~úté',\n            mm : '%d m~íñú~tés',\n            h : 'á~ñ hó~úr',\n            hh : '%d h~óúrs',\n            d : 'á ~dáý',\n            dd : '%d d~áýs',\n            M : 'á ~móñ~th',\n            MM : '%d m~óñt~hs',\n            y : 'á ~ýéár',\n            yy : '%d ý~éárs'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return xPseudo;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/yo.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var yo = moment.defineLocale('yo', {\n        months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n        monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Ònì ni] LT',\n            nextDay : '[Ọ̀la ni] LT',\n            nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n            lastDay : '[Àna ni] LT',\n            lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ní %s',\n            past : '%s kọjá',\n            s : 'ìsẹjú aayá die',\n            ss :'aayá %d',\n            m : 'ìsẹjú kan',\n            mm : 'ìsẹjú %d',\n            h : 'wákati kan',\n            hh : 'wákati %d',\n            d : 'ọjọ́ kan',\n            dd : 'ọjọ́ %d',\n            M : 'osù kan',\n            MM : 'osù %d',\n            y : 'ọdún kan',\n            yy : 'ọdún %d'\n        },\n        dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n        ordinal : 'ọjọ́ %d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return yo;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/zh-cn.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日Ah点mm分',\n            LLLL : 'YYYY年M月D日ddddAh点mm分',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' ||\n                    meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s内',\n            past : '%s前',\n            s : '几秒',\n            ss : '%d 秒',\n            m : '1 分钟',\n            mm : '%d 分钟',\n            h : '1 小时',\n            hh : '%d 小时',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 个月',\n            MM : '%d 个月',\n            y : '1 年',\n            yy : '%d 年'\n        },\n        week : {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return zhCn;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/zh-hk.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhHk;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/locale/zh-tw.js",
    "content": "//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天] LT',\n            nextDay : '[明天] LT',\n            nextWeek : '[下]dddd LT',\n            lastDay : '[昨天] LT',\n            lastWeek : '[上]dddd LT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhTw;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/moment.js",
    "content": "//! moment.js\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks () {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback (callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return input != null && Object.prototype.toString.call(input) === '[object Object]';\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return (Object.getOwnPropertyNames(obj).length === 0);\n        } else {\n            var k;\n            for (k in obj) {\n                if (obj.hasOwnProperty(k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n    }\n\n    function isDate(input) {\n        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n    }\n\n    function map(arr, fn) {\n        var res = [], i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty           : false,\n            unusedTokens    : [],\n            unusedInput     : [],\n            overflow        : -2,\n            charsLeftOver   : 0,\n            nullInput       : false,\n            invalidMonth    : null,\n            invalidFormat   : false,\n            userInvalidated : false,\n            iso             : false,\n            parsedDateParts : [],\n            meridiem        : null,\n            rfc2822         : false,\n            weekdayMismatch : false\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this);\n            var len = t.length >>> 0;\n\n            for (var i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m);\n            var parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            var isNowValid = !isNaN(m._d.getTime()) &&\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid = isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            }\n            else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid (flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        }\n        else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = hooks.momentProperties = [];\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    var updateInProgress = false;\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment (obj) {\n        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n    }\n\n    function absFloor (number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if ((dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    function warn(msg) {\n        if (hooks.suppressDeprecationWarnings === false &&\n                (typeof console !==  'undefined') && console.warn) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [];\n                var arg;\n                for (var i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (var key in arguments[0]) {\n                            arg += key + ': ' + arguments[0][key] + ', ';\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n    function set (config) {\n        var prop, i;\n        for (i in config) {\n            prop = config[i];\n            if (isFunction(prop)) {\n                this[i] = prop;\n            } else {\n                this['_' + i] = prop;\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' + (/\\d{1,2}/).source);\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig), prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (hasOwnProp(parentConfig, prop) &&\n                    !hasOwnProp(childConfig, prop) &&\n                    isObject(parentConfig[prop])) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i, res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay : '[Today at] LT',\n        nextDay : '[Tomorrow at] LT',\n        nextWeek : 'dddd [at] LT',\n        lastDay : '[Yesterday at] LT',\n        lastWeek : '[Last] dddd [at] LT',\n        sameElse : 'L'\n    };\n\n    function calendar (key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    var defaultLongDateFormat = {\n        LTS  : 'h:mm:ss A',\n        LT   : 'h:mm A',\n        L    : 'MM/DD/YYYY',\n        LL   : 'MMMM D, YYYY',\n        LLL  : 'MMMM D, YYYY h:mm A',\n        LLLL : 'dddd, MMMM D, YYYY h:mm A'\n    };\n\n    function longDateFormat (key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n            return val.slice(1);\n        });\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate () {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d';\n    var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal (number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future : 'in %s',\n        past   : '%s ago',\n        s  : 'a few seconds',\n        ss : '%d seconds',\n        m  : 'a minute',\n        mm : '%d minutes',\n        h  : 'an hour',\n        hh : '%d hours',\n        d  : 'a day',\n        dd : '%d days',\n        M  : 'a month',\n        MM : '%d months',\n        y  : 'a year',\n        yy : '%d years'\n    };\n\n    function relativeTime (number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return (isFunction(output)) ?\n            output(number, withoutSuffix, string, isFuture) :\n            output.replace(/%d/i, number);\n    }\n\n    function pastFuture (diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias (unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [];\n        for (var u in unitsObj) {\n            units.push({unit: u, priority: priorities[u]});\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n    var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n    var formatFunctions = {};\n\n    var formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken (token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(func.apply(this, arguments), token);\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens), i, length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '', i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var match1         = /\\d/;            //       0 - 9\n    var match2         = /\\d\\d/;          //      00 - 99\n    var match3         = /\\d{3}/;         //     000 - 999\n    var match4         = /\\d{4}/;         //    0000 - 9999\n    var match6         = /[+-]?\\d{6}/;    // -999999 - 999999\n    var match1to2      = /\\d\\d?/;         //       0 - 99\n    var match3to4      = /\\d\\d\\d\\d?/;     //     999 - 9999\n    var match5to6      = /\\d\\d\\d\\d\\d\\d?/; //   99999 - 999999\n    var match1to3      = /\\d{1,3}/;       //       0 - 999\n    var match1to4      = /\\d{1,4}/;       //       0 - 9999\n    var match1to6      = /[+-]?\\d{1,6}/;  // -999999 - 999999\n\n    var matchUnsigned  = /\\d+/;           //       0 - inf\n    var matchSigned    = /[+-]?\\d+/;      //    -inf - inf\n\n    var matchOffset    = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n    var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n    var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n    // any word (or two) characters or numbers including two/three word month in arabic.\n    // includes scottish gaelic two word and hyphenated months\n    var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n    var regexes = {};\n\n    function addRegexToken (token, regex, strictRegex) {\n        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n            return (isStrict && strictRegex) ? strictRegex : regex;\n        };\n    }\n\n    function getParseRegexForToken (token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n            return p1 || p2 || p3 || p4;\n        }));\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken (token, callback) {\n        var i, func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken (token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0;\n    var MONTH = 1;\n    var DATE = 2;\n    var HOUR = 3;\n    var MINUTE = 4;\n    var SECOND = 5;\n    var MILLISECOND = 6;\n    var WEEK = 7;\n    var WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? '' + y : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY',   4],       0, 'year');\n    addFormatToken(0, ['YYYYY',  5],       0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y',      matchSigned);\n    addRegexToken('YY',     match1to2, match2);\n    addRegexToken('YYYY',   match1to4, match4);\n    addRegexToken('YYYYY',  match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear () {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet (unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get (mom, unit) {\n        return mom.isValid() ?\n            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n    }\n\n    function set$1 (mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n            }\n            else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet (units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n\n    function stringSet (units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units);\n            for (var i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M',    match1to2);\n    addRegexToken('MM',   match1to2, match2);\n    addRegexToken('MMM',  function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n    function localeMonths (m, format) {\n        if (!m) {\n            return isArray(this._months) ? this._months :\n                this._months['standalone'];\n        }\n        return isArray(this._months) ? this._months[m.month()] :\n            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n    function localeMonthsShort (m, format) {\n        if (!m) {\n            return isArray(this._monthsShort) ? this._monthsShort :\n                this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i, ii, mom, llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse (monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth (mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth (value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth () {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    var defaultMonthsShortRegex = matchWord;\n    function monthsShortRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict ?\n                this._monthsShortStrictRegex : this._monthsShortRegex;\n        }\n    }\n\n    var defaultMonthsRegex = matchWord;\n    function monthsRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict ?\n                this._monthsStrictRegex : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    }\n\n    function createDate (y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date = new Date(y, m, d, h, M, s, ms);\n\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n            date.setFullYear(y);\n        }\n        return date;\n    }\n\n    function createUTCDate (y) {\n        var date = new Date(Date.UTC.apply(null, arguments));\n\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n            date.setUTCFullYear(y);\n        }\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear, resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek, resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w',  match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W',  match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek (mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow : 0, // Sunday is the first day of the week.\n        doy : 6  // The week that contains Jan 1st is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek () {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear () {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek (input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek (input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d',    match1to2);\n    addRegexToken('e',    match1to2);\n    addRegexToken('E',    match1to2);\n    addRegexToken('dd',   function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd',   function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd',   function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n    function localeWeekdays (m, format) {\n        if (!m) {\n            return isArray(this._weekdays) ? this._weekdays :\n                this._weekdays['standalone'];\n        }\n        return isArray(this._weekdays) ? this._weekdays[m.day()] :\n            this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n    }\n\n    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n    function localeWeekdaysShort (m) {\n        return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n    }\n\n    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n    function localeWeekdaysMin (m) {\n        return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse (weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n            }\n            if (!this._weekdaysParse[i]) {\n                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    var defaultWeekdaysRegex = matchWord;\n    function weekdaysRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict ?\n                this._weekdaysStrictRegex : this._weekdaysRegex;\n        }\n    }\n\n    var defaultWeekdaysShortRegex = matchWord;\n    function weekdaysShortRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict ?\n                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n        }\n    }\n\n    var defaultWeekdaysMinRegex = matchWord;\n    function weekdaysMinRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict ?\n                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n        }\n    }\n\n\n    function computeWeekdaysParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom, minp, shortp, longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = this.weekdaysMin(mom, '');\n            shortp = this.weekdaysShort(mom, '');\n            longp = this.weekdays(mom, '');\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 7; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    function meridiem (token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem (isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a',  matchMeridiem);\n    addRegexToken('A',  matchMeridiem);\n    addRegexToken('H',  match1to2);\n    addRegexToken('h',  match1to2);\n    addRegexToken('k',  match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM (input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return ((input + '').toLowerCase().charAt(0) === 'p');\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n    function localeMeridiem (hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n\n    // MOMENTS\n\n    // Setting the hour should keep the time, because the user explicitly\n    // specified which hour they want. So trying to maintain the same hour (in\n    // a new timezone) makes sense. Adding/subtracting hours does not follow\n    // this rule.\n    var getSetHour = makeGetSet('Hours', true);\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse\n    };\n\n    // internal storage for locale config files\n    var locales = {};\n    var localeFamilies = {};\n    var globalLocale;\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0, j, next, locale, split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (!locales[name] && (typeof module !== 'undefined') &&\n                module && module.exports) {\n            try {\n                oldLocale = globalLocale._abbr;\n                var aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {}\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale (key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            }\n            else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            }\n            else {\n                if ((typeof console !==  'undefined') && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn('Locale ' + key +  ' not found. Did you forget to load it?');\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale (name, config) {\n        if (config !== null) {\n            var locale, parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple('defineLocaleOverride',\n                        'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale, tmpLocale, parentConfig = baseConfig;\n            // MERGE\n            tmpLocale = loadLocale(name);\n            if (tmpLocale != null) {\n                parentConfig = tmpLocale._config;\n            }\n            config = mergeConfigs(parentConfig, config);\n            locale = new Locale(config);\n            locale.parentLocale = locales[name];\n            locales[name] = locale;\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale (key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow (m) {\n        var overflow;\n        var a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :\n                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :\n                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :\n                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n                -1;\n\n            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray (config) {\n        var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (config._a[HOUR] === 24 &&\n                config._a[MINUTE] === 0 &&\n                config._a[SECOND] === 0 &&\n                config._a[MILLISECOND] === 0) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n        expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            var curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from begining of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to begining of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n    var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n    var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n    var isoDates = [\n        ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n        ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n        ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n        ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n        ['YYYY-DDD', /\\d{4}-\\d{3}/],\n        ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n        ['YYYYYYMMDD', /[+-]\\d{10}/],\n        ['YYYYMMDD', /\\d{8}/],\n        // YYYYMM is NOT allowed by the standard\n        ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n        ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n        ['YYYYDDD', /\\d{7}/]\n    ];\n\n    // iso time formats and regexes\n    var isoTimes = [\n        ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n        ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n        ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n        ['HH:mm', /\\d\\d:\\d\\d/],\n        ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n        ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n        ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n        ['HHmm', /\\d\\d\\d\\d/],\n        ['HH', /\\d\\d/]\n    ];\n\n    var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n    // date from iso format\n    function configFromISO(config) {\n        var i, l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime, dateFormat, timeFormat, tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n    var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n    function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10)\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').trim();\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    var obsOffsets = {\n        UT: 0,\n        GMT: 0,\n        EDT: -4 * 60,\n        EST: -5 * 60,\n        CDT: -5 * 60,\n        CST: -6 * 60,\n        MDT: -6 * 60,\n        MST: -7 * 60,\n        PDT: -7 * 60,\n        PST: -8 * 60\n    };\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10);\n            var m = hm % 100, h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i));\n        if (match) {\n            var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from iso format or fallback\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        // Final attempt, use Input Fallback\n        hooks.createFromInputFallback(config);\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n        'discouraged and will be removed in an upcoming major release. Please refer to ' +\n        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i, parsedInput, tokens, token, skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0;\n\n        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n            // console.log('token', token, 'parsedInput', parsedInput,\n            //         'regex', getParseRegexForToken(token, config));\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                }\n                else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            }\n            else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n\n    function meridiemFixWrap (locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n\n            scoreToBeat,\n            i,\n            currentScore;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (!isValid(tempConfig)) {\n                continue;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (scoreToBeat == null || currentScore < scoreToBeat) {\n                scoreToBeat = currentScore;\n                bestMoment = tempConfig;\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i);\n        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n            return obj && parseInt(obj, 10);\n        });\n\n        configFromArray(config);\n    }\n\n    function createFromConfig (config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig (config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({nullInput: true});\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        }  else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC (input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if ((isObject(input) && isObjectEmpty(input)) ||\n                (isArray(input) && input.length === 0)) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other < this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    var prototypeMax = deprecate(\n        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other > this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +(new Date());\n    };\n\n    var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n    function isDurationValid(m) {\n        for (var key in m) {\n            if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n                return false;\n            }\n        }\n\n        var unitHasDecimal = false;\n        for (var i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration (duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds = +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days +\n            weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months +\n            quarters * 3 +\n            years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration (obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound (number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // FORMATTING\n\n    function offset (token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset();\n            var sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z',  matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher);\n\n        if (matches === null) {\n            return null;\n        }\n\n        var chunk   = matches[matches.length - 1] || [];\n        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ?\n          0 :\n          parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset (m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset (input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone (input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC (keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal (keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset () {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            }\n            else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset (input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime () {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted () {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {};\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted = this.isValid() &&\n                compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal () {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset () {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc () {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n    // and further modified to allow for strings containing both week and day\n    var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration (input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms : input._milliseconds,\n                d  : input._days,\n                M  : input._months\n            };\n        } else if (isNumber(input)) {\n            duration = {};\n            if (key) {\n                duration[key] = input;\n            } else {\n                duration.milliseconds = input;\n            }\n        } else if (!!(match = aspNetRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : 1;\n            duration = {\n                y  : 0,\n                d  : toInt(match[DATE])                         * sign,\n                h  : toInt(match[HOUR])                         * sign,\n                m  : toInt(match[MINUTE])                       * sign,\n                s  : toInt(match[SECOND])                       * sign,\n                ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n            };\n        } else if (!!(match = isoRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n            duration = {\n                y : parseIso(match[2], sign),\n                M : parseIso(match[3], sign),\n                w : parseIso(match[4], sign),\n                d : parseIso(match[5], sign),\n                h : parseIso(match[6], sign),\n                m : parseIso(match[7], sign),\n                s : parseIso(match[8], sign)\n            };\n        } else if (duration == null) {// checks for null or undefined\n            duration = {};\n        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso (inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {milliseconds: 0, months: 0};\n\n        res.months = other.month() - base.month() +\n            (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return {milliseconds: 0, months: 0};\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n                tmp = val; val = period; period = tmp;\n            }\n\n            val = typeof val === 'string' ? +val : val;\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract (mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add      = createAdder(1, 'add');\n    var subtract = createAdder(-1, 'subtract');\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6 ? 'sameElse' :\n                diff < -1 ? 'lastWeek' :\n                diff < 0 ? 'lastDay' :\n                diff < 1 ? 'sameDay' :\n                diff < 2 ? 'nextDay' :\n                diff < 7 ? 'nextWeek' : 'sameElse';\n    }\n\n    function calendar$1 (time, formats) {\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n    }\n\n    function clone () {\n        return new Moment(this);\n    }\n\n    function isAfter (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween (from, to, units, inclusivity) {\n        inclusivity = inclusivity || '()';\n        return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n            (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n    }\n\n    function isSame (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units || 'millisecond');\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n        }\n    }\n\n    function isSameOrAfter (input, units) {\n        return this.isSame(input, units) || this.isAfter(input,units);\n    }\n\n    function isSameOrBefore (input, units) {\n        return this.isSame(input, units) || this.isBefore(input,units);\n    }\n\n    function diff (input, units, asFloat) {\n        var that,\n            zoneDelta,\n            output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year': output = monthDiff(this, that) / 12; break;\n            case 'month': output = monthDiff(this, that); break;\n            case 'quarter': output = monthDiff(this, that) / 3; break;\n            case 'second': output = (this - that) / 1e3; break; // 1000\n            case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n            case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n            case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default: output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff (a, b) {\n        // difference in months\n        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2, adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString () {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true;\n        var m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect () {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment';\n        var zone = '';\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        var prefix = '[' + func + '(\"]';\n        var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n        var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        var suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format (inputString) {\n        if (!inputString) {\n            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow (withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow (withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale (key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData () {\n        return this._locale;\n    }\n\n    function startOf (units) {\n        units = normalizeUnits(units);\n        // the following switch intentionally omits break keywords\n        // to utilize falling through the cases.\n        switch (units) {\n            case 'year':\n                this.month(0);\n                /* falls through */\n            case 'quarter':\n            case 'month':\n                this.date(1);\n                /* falls through */\n            case 'week':\n            case 'isoWeek':\n            case 'day':\n            case 'date':\n                this.hours(0);\n                /* falls through */\n            case 'hour':\n                this.minutes(0);\n                /* falls through */\n            case 'minute':\n                this.seconds(0);\n                /* falls through */\n            case 'second':\n                this.milliseconds(0);\n        }\n\n        // weeks are a special case\n        if (units === 'week') {\n            this.weekday(0);\n        }\n        if (units === 'isoWeek') {\n            this.isoWeekday(1);\n        }\n\n        // quarters are also special\n        if (units === 'quarter') {\n            this.month(Math.floor(this.month() / 3) * 3);\n        }\n\n        return this;\n    }\n\n    function endOf (units) {\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond') {\n            return this;\n        }\n\n        // 'date' is an alias for 'day', so it should be considered as such.\n        if (units === 'date') {\n            units = 'day';\n        }\n\n        return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n    }\n\n    function valueOf () {\n        return this._d.valueOf() - ((this._offset || 0) * 60000);\n    }\n\n    function unix () {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate () {\n        return new Date(this.valueOf());\n    }\n\n    function toArray () {\n        var m = this;\n        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n    }\n\n    function toObject () {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds()\n        };\n    }\n\n    function toJSON () {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2 () {\n        return isValid(this);\n    }\n\n    function parsingFlags () {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt () {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict\n        };\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken (token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg',     'weekYear');\n    addWeekYearFormatToken('ggggg',    'weekYear');\n    addWeekYearFormatToken('GGGG',  'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n\n    // PARSING\n\n    addRegexToken('G',      matchSigned);\n    addRegexToken('g',      matchSigned);\n    addRegexToken('GG',     match1to2, match2);\n    addRegexToken('gg',     match1to2, match2);\n    addRegexToken('GGGG',   match1to4, match4);\n    addRegexToken('gggg',   match1to4, match4);\n    addRegexToken('GGGGG',  match1to6, match6);\n    addRegexToken('ggggg',  match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input,\n                this.week(),\n                this.weekday(),\n                this.localeData()._week.dow,\n                this.localeData()._week.doy);\n    }\n\n    function getSetISOWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input, this.isoWeek(), this.isoWeekday(), 1, 4);\n    }\n\n    function getISOWeeksInYear () {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getWeeksInYear () {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter (input) {\n        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D',  match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict ?\n          (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n          locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD',  match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear (input) {\n        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m',  match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s',  match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S',    match1to3, match1);\n    addRegexToken('SS',   match1to3, match2);\n    addRegexToken('SSS',  match1to3, match3);\n\n    var token;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n    // MOMENTS\n\n    var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z',  0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr () {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName () {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add               = add;\n    proto.calendar          = calendar$1;\n    proto.clone             = clone;\n    proto.diff              = diff;\n    proto.endOf             = endOf;\n    proto.format            = format;\n    proto.from              = from;\n    proto.fromNow           = fromNow;\n    proto.to                = to;\n    proto.toNow             = toNow;\n    proto.get               = stringGet;\n    proto.invalidAt         = invalidAt;\n    proto.isAfter           = isAfter;\n    proto.isBefore          = isBefore;\n    proto.isBetween         = isBetween;\n    proto.isSame            = isSame;\n    proto.isSameOrAfter     = isSameOrAfter;\n    proto.isSameOrBefore    = isSameOrBefore;\n    proto.isValid           = isValid$2;\n    proto.lang              = lang;\n    proto.locale            = locale;\n    proto.localeData        = localeData;\n    proto.max               = prototypeMax;\n    proto.min               = prototypeMin;\n    proto.parsingFlags      = parsingFlags;\n    proto.set               = stringSet;\n    proto.startOf           = startOf;\n    proto.subtract          = subtract;\n    proto.toArray           = toArray;\n    proto.toObject          = toObject;\n    proto.toDate            = toDate;\n    proto.toISOString       = toISOString;\n    proto.inspect           = inspect;\n    proto.toJSON            = toJSON;\n    proto.toString          = toString;\n    proto.unix              = unix;\n    proto.valueOf           = valueOf;\n    proto.creationData      = creationData;\n    proto.year       = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear    = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month       = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week           = proto.weeks        = getSetWeek;\n    proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;\n    proto.weeksInYear    = getWeeksInYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.date       = getSetDayOfMonth;\n    proto.day        = proto.days             = getSetDayOfWeek;\n    proto.weekday    = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear  = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset            = getSetOffset;\n    proto.utc                  = setOffsetToUTC;\n    proto.local                = setOffsetToLocal;\n    proto.parseZone            = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST                = isDaylightSavingTime;\n    proto.isLocal              = isLocal;\n    proto.isUtcOffset          = isUtcOffset;\n    proto.isUtc                = isUtc;\n    proto.isUTC                = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n    proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n    proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n    function createUnix (input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone () {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat (string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar        = calendar;\n    proto$1.longDateFormat  = longDateFormat;\n    proto$1.invalidDate     = invalidDate;\n    proto$1.ordinal         = ordinal;\n    proto$1.preparse        = preParsePostFormat;\n    proto$1.postformat      = preParsePostFormat;\n    proto$1.relativeTime    = relativeTime;\n    proto$1.pastFuture      = pastFuture;\n    proto$1.set             = set;\n\n    proto$1.months            =        localeMonths;\n    proto$1.monthsShort       =        localeMonthsShort;\n    proto$1.monthsParse       =        localeMonthsParse;\n    proto$1.monthsRegex       = monthsRegex;\n    proto$1.monthsShortRegex  = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays       =        localeWeekdays;\n    proto$1.weekdaysMin    =        localeWeekdaysMin;\n    proto$1.weekdaysShort  =        localeWeekdaysShort;\n    proto$1.weekdaysParse  =        localeWeekdaysParse;\n\n    proto$1.weekdaysRegex       =        weekdaysRegex;\n    proto$1.weekdaysShortRegex  =        weekdaysShortRegex;\n    proto$1.weekdaysMinRegex    =        weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1 (format, index, field, setter) {\n        var locale = getLocale();\n        var utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl (format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl (localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0;\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths (format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort (format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (toInt(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n    var mathAbs = Math.abs;\n\n    function abs () {\n        var data           = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days         = mathAbs(this._days);\n        this._months       = mathAbs(this._months);\n\n        data.milliseconds  = mathAbs(data.milliseconds);\n        data.seconds       = mathAbs(data.seconds);\n        data.minutes       = mathAbs(data.minutes);\n        data.hours         = mathAbs(data.hours);\n        data.months        = mathAbs(data.months);\n        data.years         = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1 (duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days         += direction * other._days;\n        duration._months       += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1 (input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1 (input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil (number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble () {\n        var milliseconds = this._milliseconds;\n        var days         = this._days;\n        var months       = this._months;\n        var data         = this._data;\n        var seconds, minutes, hours, years, monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0))) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds           = absFloor(milliseconds / 1000);\n        data.seconds      = seconds % 60;\n\n        minutes           = absFloor(seconds / 60);\n        data.minutes      = minutes % 60;\n\n        hours             = absFloor(minutes / 60);\n        data.hours        = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days   = days;\n        data.months = months;\n        data.years  = years;\n\n        return this;\n    }\n\n    function daysToMonths (days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return days * 4800 / 146097;\n    }\n\n    function monthsToDays (months) {\n        // the reverse of daysToMonths\n        return months * 146097 / 4800;\n    }\n\n    function as (units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days;\n        var months;\n        var milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'year') {\n            days   = this._days   + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            return units === 'month' ? months : months / 12;\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week'   : return days / 7     + milliseconds / 6048e5;\n                case 'day'    : return days         + milliseconds / 864e5;\n                case 'hour'   : return days * 24    + milliseconds / 36e5;\n                case 'minute' : return days * 1440  + milliseconds / 6e4;\n                case 'second' : return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n                default: throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1 () {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs (alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms');\n    var asSeconds      = makeAs('s');\n    var asMinutes      = makeAs('m');\n    var asHours        = makeAs('h');\n    var asDays         = makeAs('d');\n    var asWeeks        = makeAs('w');\n    var asMonths       = makeAs('M');\n    var asYears        = makeAs('y');\n\n    function clone$1 () {\n        return createDuration(this);\n    }\n\n    function get$2 (units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds');\n    var seconds      = makeGetter('seconds');\n    var minutes      = makeGetter('minutes');\n    var hours        = makeGetter('hours');\n    var days         = makeGetter('days');\n    var months       = makeGetter('months');\n    var years        = makeGetter('years');\n\n    function weeks () {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round;\n    var thresholds = {\n        ss: 44,         // a few seconds to seconds\n        s : 45,         // seconds to minute\n        m : 45,         // minutes to hour\n        h : 22,         // hours to day\n        d : 26,         // days to month\n        M : 11          // months to year\n    };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n        var duration = createDuration(posNegDuration).abs();\n        var seconds  = round(duration.as('s'));\n        var minutes  = round(duration.as('m'));\n        var hours    = round(duration.as('h'));\n        var days     = round(duration.as('d'));\n        var months   = round(duration.as('M'));\n        var years    = round(duration.as('y'));\n\n        var a = seconds <= thresholds.ss && ['s', seconds]  ||\n                seconds < thresholds.s   && ['ss', seconds] ||\n                minutes <= 1             && ['m']           ||\n                minutes < thresholds.m   && ['mm', minutes] ||\n                hours   <= 1             && ['h']           ||\n                hours   < thresholds.h   && ['hh', hours]   ||\n                days    <= 1             && ['d']           ||\n                days    < thresholds.d   && ['dd', days]    ||\n                months  <= 1             && ['M']           ||\n                months  < thresholds.M   && ['MM', months]  ||\n                years   <= 1             && ['y']           || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding (roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof(roundingFunction) === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold (threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize (withSuffix) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var locale = this.localeData();\n        var output = relativeTime$1(this, !withSuffix, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return ((x > 0) - (x < 0)) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000;\n        var days         = abs$1(this._days);\n        var months       = abs$1(this._months);\n        var minutes, hours, years;\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes           = absFloor(seconds / 60);\n        hours             = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years  = absFloor(months / 12);\n        months %= 12;\n\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        var Y = years;\n        var M = months;\n        var D = days;\n        var h = hours;\n        var m = minutes;\n        var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n        var total = this.asSeconds();\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        var totalSign = total < 0 ? '-' : '';\n        var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return totalSign + 'P' +\n            (Y ? ymSign + Y + 'Y' : '') +\n            (M ? ymSign + M + 'M' : '') +\n            (D ? daysSign + D + 'D' : '') +\n            ((h || m || s) ? 'T' : '') +\n            (h ? hmsSign + h + 'H' : '') +\n            (m ? hmsSign + m + 'M' : '') +\n            (s ? hmsSign + s + 'S' : '');\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid        = isValid$1;\n    proto$2.abs            = abs;\n    proto$2.add            = add$1;\n    proto$2.subtract       = subtract$1;\n    proto$2.as             = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds      = asSeconds;\n    proto$2.asMinutes      = asMinutes;\n    proto$2.asHours        = asHours;\n    proto$2.asDays         = asDays;\n    proto$2.asWeeks        = asWeeks;\n    proto$2.asMonths       = asMonths;\n    proto$2.asYears        = asYears;\n    proto$2.valueOf        = valueOf$1;\n    proto$2._bubble        = bubble;\n    proto$2.clone          = clone$1;\n    proto$2.get            = get$2;\n    proto$2.milliseconds   = milliseconds;\n    proto$2.seconds        = seconds;\n    proto$2.minutes        = minutes;\n    proto$2.hours          = hours;\n    proto$2.days           = days;\n    proto$2.weeks          = weeks;\n    proto$2.months         = months;\n    proto$2.years          = years;\n    proto$2.humanize       = humanize;\n    proto$2.toISOString    = toISOString$1;\n    proto$2.toString       = toISOString$1;\n    proto$2.toJSON         = toISOString$1;\n    proto$2.locale         = locale;\n    proto$2.localeData     = localeData;\n\n    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n    proto$2.lang = lang;\n\n    // Side effect imports\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input, 10) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    // Side effect imports\n\n\n    hooks.version = '2.22.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn                    = proto;\n    hooks.min                   = min;\n    hooks.max                   = max;\n    hooks.now                   = now;\n    hooks.utc                   = createUTC;\n    hooks.unix                  = createUnix;\n    hooks.months                = listMonths;\n    hooks.isDate                = isDate;\n    hooks.locale                = getSetGlobalLocale;\n    hooks.invalid               = createInvalid;\n    hooks.duration              = createDuration;\n    hooks.isMoment              = isMoment;\n    hooks.weekdays              = listWeekdays;\n    hooks.parseZone             = createInZone;\n    hooks.localeData            = getLocale;\n    hooks.isDuration            = isDuration;\n    hooks.monthsShort           = listMonthsShort;\n    hooks.weekdaysMin           = listWeekdaysMin;\n    hooks.defineLocale          = defineLocale;\n    hooks.updateLocale          = updateLocale;\n    hooks.locales               = listLocales;\n    hooks.weekdaysShort         = listWeekdaysShort;\n    hooks.normalizeUnits        = normalizeUnits;\n    hooks.relativeTimeRounding  = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat        = getCalendarFormat;\n    hooks.prototype             = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD',                             // <input type=\"date\" />\n        TIME: 'HH:mm',                                  // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss',                       // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS',                        // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'YYYY-[W]WW',                             // <input type=\"week\" />\n        MONTH: 'YYYY-MM'                                // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n"
  },
  {
    "path": "public/admin-panel/assets/libs/moment/package.js",
    "content": "var profile = {\n    resourceTags: {\n        ignore: function(filename, mid){\n            // only include moment/moment\n            return mid != \"moment/moment\";\n        },\n        amd: function(filename, mid){\n            return /\\.js$/.test(filename);\n        }\n    }\n};\n"
  },
  {
    "path": "public/admin-panel/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.common.js",
    "content": "/*!\n * perfect-scrollbar v1.3.0\n * (c) 2017 Hyunje Jun\n * @license MIT\n */\n'use strict';\n\nfunction get(element) {\n  return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n  for (var key in obj) {\n    var val = obj[key];\n    if (typeof val === 'number') {\n      val = val + \"px\";\n    }\n    element.style[key] = val;\n  }\n  return element;\n}\n\nfunction div(className) {\n  var div = document.createElement('div');\n  div.className = className;\n  return div;\n}\n\nvar elMatches =\n  typeof Element !== 'undefined' &&\n  (Element.prototype.matches ||\n    Element.prototype.webkitMatchesSelector ||\n    Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n  if (!elMatches) {\n    throw new Error('No element matching method supported');\n  }\n\n  return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n  if (element.remove) {\n    element.remove();\n  } else {\n    if (element.parentNode) {\n      element.parentNode.removeChild(element);\n    }\n  }\n}\n\nfunction queryChildren(element, selector) {\n  return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n  );\n}\n\nvar cls = {\n  main: 'ps',\n  element: {\n    thumb: function (x) { return (\"ps__thumb-\" + x); },\n    rail: function (x) { return (\"ps__rail-\" + x); },\n    consuming: 'ps__child--consume',\n  },\n  state: {\n    focus: 'ps--focus',\n    active: function (x) { return (\"ps--active-\" + x); },\n    scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n  },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n  var classList = i.element.classList;\n  var className = cls.state.scrolling(x);\n\n  if (classList.contains(className)) {\n    clearTimeout(scrollingClassTimeout[x]);\n  } else {\n    classList.add(className);\n  }\n}\n\nfunction removeScrollingClass(i, x) {\n  scrollingClassTimeout[x] = setTimeout(\n    function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n    i.settings.scrollingThreshold\n  );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n  addScrollingClass(i, x);\n  removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n  this.element = element;\n  this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n  if (typeof this.handlers[eventName] === 'undefined') {\n    this.handlers[eventName] = [];\n  }\n  this.handlers[eventName].push(handler);\n  this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n    var this$1 = this;\n\n  this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n    if (target && handler !== target) {\n      return true;\n    }\n    this$1.element.removeEventListener(eventName, handler, false);\n    return false;\n  });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n    var this$1 = this;\n\n  for (var name in this$1.handlers) {\n    this$1.unbind(name);\n  }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n    var this$1 = this;\n\n  return Object.keys(this.handlers).every(\n    function (key) { return this$1.handlers[key].length === 0; }\n  );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n  this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n  var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n  if (!ee) {\n    ee = new EventElement(element);\n    this.eventElements.push(ee);\n  }\n  return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n  this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n  var ee = this.eventElement(element);\n  ee.unbind(eventName, handler);\n\n  if (ee.isEmpty) {\n    // remove\n    this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n  }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n  this.eventElements.forEach(function (e) { return e.unbindAll(); });\n  this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n  var ee = this.eventElement(element);\n  var onceHandler = function (evt) {\n    ee.unbind(eventName, onceHandler);\n    handler(evt);\n  };\n  ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n  if (typeof window.CustomEvent === 'function') {\n    return new CustomEvent(name);\n  } else {\n    var evt = document.createEvent('CustomEvent');\n    evt.initCustomEvent(name, false, false, undefined);\n    return evt;\n  }\n}\n\nvar processScrollDiff = function(\n  i,\n  axis,\n  diff,\n  useScrollingClass,\n  forceFireReachEvent\n) {\n  if ( useScrollingClass === void 0 ) useScrollingClass = true;\n  if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n  var fields;\n  if (axis === 'top') {\n    fields = [\n      'contentHeight',\n      'containerHeight',\n      'scrollTop',\n      'y',\n      'up',\n      'down' ];\n  } else if (axis === 'left') {\n    fields = [\n      'contentWidth',\n      'containerWidth',\n      'scrollLeft',\n      'x',\n      'left',\n      'right' ];\n  } else {\n    throw new Error('A proper axis should be provided');\n  }\n\n  processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n  i,\n  diff,\n  ref,\n  useScrollingClass,\n  forceFireReachEvent\n) {\n  var contentHeight = ref[0];\n  var containerHeight = ref[1];\n  var scrollTop = ref[2];\n  var y = ref[3];\n  var up = ref[4];\n  var down = ref[5];\n  if ( useScrollingClass === void 0 ) useScrollingClass = true;\n  if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n  var element = i.element;\n\n  // reset reach\n  i.reach[y] = null;\n\n  // 1 for subpixel rounding\n  if (element[scrollTop] < 1) {\n    i.reach[y] = 'start';\n  }\n\n  // 1 for subpixel rounding\n  if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n    i.reach[y] = 'end';\n  }\n\n  if (diff) {\n    element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n    if (diff < 0) {\n      element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n    } else if (diff > 0) {\n      element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n    }\n\n    if (useScrollingClass) {\n      setScrollingClassInstantly(i, y);\n    }\n  }\n\n  if (i.reach[y] && (diff || forceFireReachEvent)) {\n    element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n  }\n}\n\nfunction toInt(x) {\n  return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n  return (\n    matches(el, 'input,[contenteditable]') ||\n    matches(el, 'select,[contenteditable]') ||\n    matches(el, 'textarea,[contenteditable]') ||\n    matches(el, 'button,[contenteditable]')\n  );\n}\n\nfunction outerWidth(element) {\n  var styles = get(element);\n  return (\n    toInt(styles.width) +\n    toInt(styles.paddingLeft) +\n    toInt(styles.paddingRight) +\n    toInt(styles.borderLeftWidth) +\n    toInt(styles.borderRightWidth)\n  );\n}\n\nvar env = {\n  isWebKit:\n    typeof document !== 'undefined' &&\n    'WebkitAppearance' in document.documentElement.style,\n  supportsTouch:\n    typeof window !== 'undefined' &&\n    ('ontouchstart' in window ||\n      (window.DocumentTouch && document instanceof window.DocumentTouch)),\n  supportsIePointer:\n    typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n  isChrome:\n    typeof navigator !== 'undefined' &&\n    /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n  var element = i.element;\n\n  i.containerWidth = element.clientWidth;\n  i.containerHeight = element.clientHeight;\n  i.contentWidth = element.scrollWidth;\n  i.contentHeight = element.scrollHeight;\n\n  if (!element.contains(i.scrollbarXRail)) {\n    // clean up and append\n    queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n    );\n    element.appendChild(i.scrollbarXRail);\n  }\n  if (!element.contains(i.scrollbarYRail)) {\n    // clean up and append\n    queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n    );\n    element.appendChild(i.scrollbarYRail);\n  }\n\n  if (\n    !i.settings.suppressScrollX &&\n    i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n  ) {\n    i.scrollbarXActive = true;\n    i.railXWidth = i.containerWidth - i.railXMarginWidth;\n    i.railXRatio = i.containerWidth / i.railXWidth;\n    i.scrollbarXWidth = getThumbSize(\n      i,\n      toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n    );\n    i.scrollbarXLeft = toInt(\n      (i.negativeScrollAdjustment + element.scrollLeft) *\n        (i.railXWidth - i.scrollbarXWidth) /\n        (i.contentWidth - i.containerWidth)\n    );\n  } else {\n    i.scrollbarXActive = false;\n  }\n\n  if (\n    !i.settings.suppressScrollY &&\n    i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n  ) {\n    i.scrollbarYActive = true;\n    i.railYHeight = i.containerHeight - i.railYMarginHeight;\n    i.railYRatio = i.containerHeight / i.railYHeight;\n    i.scrollbarYHeight = getThumbSize(\n      i,\n      toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n    );\n    i.scrollbarYTop = toInt(\n      element.scrollTop *\n        (i.railYHeight - i.scrollbarYHeight) /\n        (i.contentHeight - i.containerHeight)\n    );\n  } else {\n    i.scrollbarYActive = false;\n  }\n\n  if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n    i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n  }\n  if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n    i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n  }\n\n  updateCss(element, i);\n\n  if (i.scrollbarXActive) {\n    element.classList.add(cls.state.active('x'));\n  } else {\n    element.classList.remove(cls.state.active('x'));\n    i.scrollbarXWidth = 0;\n    i.scrollbarXLeft = 0;\n    element.scrollLeft = 0;\n  }\n  if (i.scrollbarYActive) {\n    element.classList.add(cls.state.active('y'));\n  } else {\n    element.classList.remove(cls.state.active('y'));\n    i.scrollbarYHeight = 0;\n    i.scrollbarYTop = 0;\n    element.scrollTop = 0;\n  }\n};\n\nfunction getThumbSize(i, thumbSize) {\n  if (i.settings.minScrollbarLength) {\n    thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n  }\n  if (i.settings.maxScrollbarLength) {\n    thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n  }\n  return thumbSize;\n}\n\nfunction updateCss(element, i) {\n  var xRailOffset = { width: i.railXWidth };\n  if (i.isRtl) {\n    xRailOffset.left =\n      i.negativeScrollAdjustment +\n      element.scrollLeft +\n      i.containerWidth -\n      i.contentWidth;\n  } else {\n    xRailOffset.left = element.scrollLeft;\n  }\n  if (i.isScrollbarXUsingBottom) {\n    xRailOffset.bottom = i.scrollbarXBottom - element.scrollTop;\n  } else {\n    xRailOffset.top = i.scrollbarXTop + element.scrollTop;\n  }\n  set(i.scrollbarXRail, xRailOffset);\n\n  var yRailOffset = { top: element.scrollTop, height: i.railYHeight };\n  if (i.isScrollbarYUsingRight) {\n    if (i.isRtl) {\n      yRailOffset.right =\n        i.contentWidth -\n        (i.negativeScrollAdjustment + element.scrollLeft) -\n        i.scrollbarYRight -\n        i.scrollbarYOuterWidth;\n    } else {\n      yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n    }\n  } else {\n    if (i.isRtl) {\n      yRailOffset.left =\n        i.negativeScrollAdjustment +\n        element.scrollLeft +\n        i.containerWidth * 2 -\n        i.contentWidth -\n        i.scrollbarYLeft -\n        i.scrollbarYOuterWidth;\n    } else {\n      yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n    }\n  }\n  set(i.scrollbarYRail, yRailOffset);\n\n  set(i.scrollbarX, {\n    left: i.scrollbarXLeft,\n    width: i.scrollbarXWidth - i.railBorderXWidth,\n  });\n  set(i.scrollbarY, {\n    top: i.scrollbarYTop,\n    height: i.scrollbarYHeight - i.railBorderYWidth,\n  });\n}\n\nvar clickRail = function(i) {\n  i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n  i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n    var positionTop =\n      e.pageY -\n      window.pageYOffset -\n      i.scrollbarYRail.getBoundingClientRect().top;\n    var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n    i.element.scrollTop += direction * i.containerHeight;\n    updateGeometry(i);\n\n    e.stopPropagation();\n  });\n\n  i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n  i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n    var positionLeft =\n      e.pageX -\n      window.pageXOffset -\n      i.scrollbarXRail.getBoundingClientRect().left;\n    var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n    i.element.scrollLeft += direction * i.containerWidth;\n    updateGeometry(i);\n\n    e.stopPropagation();\n  });\n};\n\nvar dragThumb = function(i) {\n  bindMouseScrollHandler(i, [\n    'containerWidth',\n    'contentWidth',\n    'pageX',\n    'railXWidth',\n    'scrollbarX',\n    'scrollbarXWidth',\n    'scrollLeft',\n    'x' ]);\n  bindMouseScrollHandler(i, [\n    'containerHeight',\n    'contentHeight',\n    'pageY',\n    'railYHeight',\n    'scrollbarY',\n    'scrollbarYHeight',\n    'scrollTop',\n    'y' ]);\n};\n\nfunction bindMouseScrollHandler(\n  i,\n  ref\n) {\n  var containerHeight = ref[0];\n  var contentHeight = ref[1];\n  var pageY = ref[2];\n  var railYHeight = ref[3];\n  var scrollbarY = ref[4];\n  var scrollbarYHeight = ref[5];\n  var scrollTop = ref[6];\n  var y = ref[7];\n\n  var element = i.element;\n\n  var startingScrollTop = null;\n  var startingMousePageY = null;\n  var scrollBy = null;\n\n  function mouseMoveHandler(e) {\n    element[scrollTop] =\n      startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n    addScrollingClass(i, y);\n    updateGeometry(i);\n\n    e.stopPropagation();\n    e.preventDefault();\n  }\n\n  function mouseUpHandler() {\n    removeScrollingClass(i, y);\n    i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n  }\n\n  i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n    startingScrollTop = element[scrollTop];\n    startingMousePageY = e[pageY];\n    scrollBy =\n      (i[contentHeight] - i[containerHeight]) /\n      (i[railYHeight] - i[scrollbarYHeight]);\n\n    i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n    i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n    e.stopPropagation();\n    e.preventDefault();\n  });\n}\n\nvar keyboard = function(i) {\n  var element = i.element;\n\n  var elementHovered = function () { return matches(element, ':hover'); };\n  var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n  function shouldPreventDefault(deltaX, deltaY) {\n    var scrollTop = element.scrollTop;\n    if (deltaX === 0) {\n      if (!i.scrollbarYActive) {\n        return false;\n      }\n      if (\n        (scrollTop === 0 && deltaY > 0) ||\n        (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n      ) {\n        return !i.settings.wheelPropagation;\n      }\n    }\n\n    var scrollLeft = element.scrollLeft;\n    if (deltaY === 0) {\n      if (!i.scrollbarXActive) {\n        return false;\n      }\n      if (\n        (scrollLeft === 0 && deltaX < 0) ||\n        (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n      ) {\n        return !i.settings.wheelPropagation;\n      }\n    }\n    return true;\n  }\n\n  i.event.bind(i.ownerDocument, 'keydown', function (e) {\n    if (\n      (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n      e.defaultPrevented\n    ) {\n      return;\n    }\n\n    if (!elementHovered() && !scrollbarFocused()) {\n      return;\n    }\n\n    var activeElement = document.activeElement\n      ? document.activeElement\n      : i.ownerDocument.activeElement;\n    if (activeElement) {\n      if (activeElement.tagName === 'IFRAME') {\n        activeElement = activeElement.contentDocument.activeElement;\n      } else {\n        // go deeper if element is a webcomponent\n        while (activeElement.shadowRoot) {\n          activeElement = activeElement.shadowRoot.activeElement;\n        }\n      }\n      if (isEditable(activeElement)) {\n        return;\n      }\n    }\n\n    var deltaX = 0;\n    var deltaY = 0;\n\n    switch (e.which) {\n      case 37: // left\n        if (e.metaKey) {\n          deltaX = -i.contentWidth;\n        } else if (e.altKey) {\n          deltaX = -i.containerWidth;\n        } else {\n          deltaX = -30;\n        }\n        break;\n      case 38: // up\n        if (e.metaKey) {\n          deltaY = i.contentHeight;\n        } else if (e.altKey) {\n          deltaY = i.containerHeight;\n        } else {\n          deltaY = 30;\n        }\n        break;\n      case 39: // right\n        if (e.metaKey) {\n          deltaX = i.contentWidth;\n        } else if (e.altKey) {\n          deltaX = i.containerWidth;\n        } else {\n          deltaX = 30;\n        }\n        break;\n      case 40: // down\n        if (e.metaKey) {\n          deltaY = -i.contentHeight;\n        } else if (e.altKey) {\n          deltaY = -i.containerHeight;\n        } else {\n          deltaY = -30;\n        }\n        break;\n      case 32: // space bar\n        if (e.shiftKey) {\n          deltaY = i.containerHeight;\n        } else {\n          deltaY = -i.containerHeight;\n        }\n        break;\n      case 33: // page up\n        deltaY = i.containerHeight;\n        break;\n      case 34: // page down\n        deltaY = -i.containerHeight;\n        break;\n      case 36: // home\n        deltaY = i.contentHeight;\n        break;\n      case 35: // end\n        deltaY = -i.contentHeight;\n        break;\n      default:\n        return;\n    }\n\n    if (i.settings.suppressScrollX && deltaX !== 0) {\n      return;\n    }\n    if (i.settings.suppressScrollY && deltaY !== 0) {\n      return;\n    }\n\n    element.scrollTop -= deltaY;\n    element.scrollLeft += deltaX;\n    updateGeometry(i);\n\n    if (shouldPreventDefault(deltaX, deltaY)) {\n      e.preventDefault();\n    }\n  });\n};\n\nvar wheel = function(i) {\n  var element = i.element;\n\n  function shouldPreventDefault(deltaX, deltaY) {\n    var isTop = element.scrollTop === 0;\n    var isBottom =\n      element.scrollTop + element.offsetHeight === element.scrollHeight;\n    var isLeft = element.scrollLeft === 0;\n    var isRight =\n      element.scrollLeft + element.offsetWidth === element.offsetWidth;\n\n    var hitsBound;\n\n    // pick axis with primary direction\n    if (Math.abs(deltaY) > Math.abs(deltaX)) {\n      hitsBound = isTop || isBottom;\n    } else {\n      hitsBound = isLeft || isRight;\n    }\n\n    return hitsBound ? !i.settings.wheelPropagation : true;\n  }\n\n  function getDeltaFromEvent(e) {\n    var deltaX = e.deltaX;\n    var deltaY = -1 * e.deltaY;\n\n    if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n      // OS X Safari\n      deltaX = -1 * e.wheelDeltaX / 6;\n      deltaY = e.wheelDeltaY / 6;\n    }\n\n    if (e.deltaMode && e.deltaMode === 1) {\n      // Firefox in deltaMode 1: Line scrolling\n      deltaX *= 10;\n      deltaY *= 10;\n    }\n\n    if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n      // IE in some mouse drivers\n      deltaX = 0;\n      deltaY = e.wheelDelta;\n    }\n\n    if (e.shiftKey) {\n      // reverse axis with shift key\n      return [-deltaY, -deltaX];\n    }\n    return [deltaX, deltaY];\n  }\n\n  function shouldBeConsumedByChild(target, deltaX, deltaY) {\n    // FIXME: this is a workaround for <select> issue in FF and IE #571\n    if (!env.isWebKit && element.querySelector('select:focus')) {\n      return true;\n    }\n\n    if (!element.contains(target)) {\n      return false;\n    }\n\n    var cursor = target;\n\n    while (cursor && cursor !== element) {\n      if (cursor.classList.contains(cls.element.consuming)) {\n        return true;\n      }\n\n      var style = get(cursor);\n      var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n        ''\n      );\n\n      // if scrollable\n      if (overflow.match(/(scroll|auto)/)) {\n        var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n        if (maxScrollTop > 0) {\n          if (\n            !(cursor.scrollTop === 0 && deltaY > 0) &&\n            !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n          ) {\n            return true;\n          }\n        }\n        var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n        if (maxScrollLeft > 0) {\n          if (\n            !(cursor.scrollLeft === 0 && deltaX < 0) &&\n            !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n\n      cursor = cursor.parentNode;\n    }\n\n    return false;\n  }\n\n  function mousewheelHandler(e) {\n    var ref = getDeltaFromEvent(e);\n    var deltaX = ref[0];\n    var deltaY = ref[1];\n\n    if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n      return;\n    }\n\n    var shouldPrevent = false;\n    if (!i.settings.useBothWheelAxes) {\n      // deltaX will only be used for horizontal scrolling and deltaY will\n      // only be used for vertical scrolling - this is the default\n      element.scrollTop -= deltaY * i.settings.wheelSpeed;\n      element.scrollLeft += deltaX * i.settings.wheelSpeed;\n    } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n      // only vertical scrollbar is active and useBothWheelAxes option is\n      // active, so let's scroll vertical bar using both mouse wheel axes\n      if (deltaY) {\n        element.scrollTop -= deltaY * i.settings.wheelSpeed;\n      } else {\n        element.scrollTop += deltaX * i.settings.wheelSpeed;\n      }\n      shouldPrevent = true;\n    } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n      // useBothWheelAxes and only horizontal bar is active, so use both\n      // wheel axes for horizontal bar\n      if (deltaX) {\n        element.scrollLeft += deltaX * i.settings.wheelSpeed;\n      } else {\n        element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n      }\n      shouldPrevent = true;\n    }\n\n    updateGeometry(i);\n\n    shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n    if (shouldPrevent && !e.ctrlKey) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  if (typeof window.onwheel !== 'undefined') {\n    i.event.bind(element, 'wheel', mousewheelHandler);\n  } else if (typeof window.onmousewheel !== 'undefined') {\n    i.event.bind(element, 'mousewheel', mousewheelHandler);\n  }\n};\n\nvar touch = function(i) {\n  if (!env.supportsTouch && !env.supportsIePointer) {\n    return;\n  }\n\n  var element = i.element;\n\n  function shouldPrevent(deltaX, deltaY) {\n    var scrollTop = element.scrollTop;\n    var scrollLeft = element.scrollLeft;\n    var magnitudeX = Math.abs(deltaX);\n    var magnitudeY = Math.abs(deltaY);\n\n    if (magnitudeY > magnitudeX) {\n      // user is perhaps trying to swipe up/down the page\n\n      if (\n        (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n        (deltaY > 0 && scrollTop === 0)\n      ) {\n        // set prevent for mobile Chrome refresh\n        return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n      }\n    } else if (magnitudeX > magnitudeY) {\n      // user is perhaps trying to swipe left/right across the page\n\n      if (\n        (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n        (deltaX > 0 && scrollLeft === 0)\n      ) {\n        return true;\n      }\n    }\n\n    return true;\n  }\n\n  function applyTouchMove(differenceX, differenceY) {\n    element.scrollTop -= differenceY;\n    element.scrollLeft -= differenceX;\n\n    updateGeometry(i);\n  }\n\n  var startOffset = {};\n  var startTime = 0;\n  var speed = {};\n  var easingLoop = null;\n\n  function getTouch(e) {\n    if (e.targetTouches) {\n      return e.targetTouches[0];\n    } else {\n      // Maybe IE pointer\n      return e;\n    }\n  }\n\n  function shouldHandle(e) {\n    if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n      return false;\n    }\n    if (e.targetTouches && e.targetTouches.length === 1) {\n      return true;\n    }\n    if (\n      e.pointerType &&\n      e.pointerType !== 'mouse' &&\n      e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  function touchStart(e) {\n    if (!shouldHandle(e)) {\n      return;\n    }\n\n    var touch = getTouch(e);\n\n    startOffset.pageX = touch.pageX;\n    startOffset.pageY = touch.pageY;\n\n    startTime = new Date().getTime();\n\n    if (easingLoop !== null) {\n      clearInterval(easingLoop);\n    }\n  }\n\n  function shouldBeConsumedByChild(target, deltaX, deltaY) {\n    if (!element.contains(target)) {\n      return false;\n    }\n\n    var cursor = target;\n\n    while (cursor && cursor !== element) {\n      if (cursor.classList.contains(cls.element.consuming)) {\n        return true;\n      }\n\n      var style = get(cursor);\n      var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n        ''\n      );\n\n      // if scrollable\n      if (overflow.match(/(scroll|auto)/)) {\n        var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n        if (maxScrollTop > 0) {\n          if (\n            !(cursor.scrollTop === 0 && deltaY > 0) &&\n            !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n          ) {\n            return true;\n          }\n        }\n        var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n        if (maxScrollLeft > 0) {\n          if (\n            !(cursor.scrollLeft === 0 && deltaX < 0) &&\n            !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n\n      cursor = cursor.parentNode;\n    }\n\n    return false;\n  }\n\n  function touchMove(e) {\n    if (shouldHandle(e)) {\n      var touch = getTouch(e);\n\n      var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n      var differenceX = currentOffset.pageX - startOffset.pageX;\n      var differenceY = currentOffset.pageY - startOffset.pageY;\n\n      if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n        return;\n      }\n\n      applyTouchMove(differenceX, differenceY);\n      startOffset = currentOffset;\n\n      var currentTime = new Date().getTime();\n\n      var timeGap = currentTime - startTime;\n      if (timeGap > 0) {\n        speed.x = differenceX / timeGap;\n        speed.y = differenceY / timeGap;\n        startTime = currentTime;\n      }\n\n      if (shouldPrevent(differenceX, differenceY)) {\n        e.preventDefault();\n      }\n    }\n  }\n  function touchEnd() {\n    if (i.settings.swipeEasing) {\n      clearInterval(easingLoop);\n      easingLoop = setInterval(function() {\n        if (i.isInitialized) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        if (!speed.x && !speed.y) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        applyTouchMove(speed.x * 30, speed.y * 30);\n\n        speed.x *= 0.8;\n        speed.y *= 0.8;\n      }, 10);\n    }\n  }\n\n  if (env.supportsTouch) {\n    i.event.bind(element, 'touchstart', touchStart);\n    i.event.bind(element, 'touchmove', touchMove);\n    i.event.bind(element, 'touchend', touchEnd);\n  } else if (env.supportsIePointer) {\n    if (window.PointerEvent) {\n      i.event.bind(element, 'pointerdown', touchStart);\n      i.event.bind(element, 'pointermove', touchMove);\n      i.event.bind(element, 'pointerup', touchEnd);\n    } else if (window.MSPointerEvent) {\n      i.event.bind(element, 'MSPointerDown', touchStart);\n      i.event.bind(element, 'MSPointerMove', touchMove);\n      i.event.bind(element, 'MSPointerUp', touchEnd);\n    }\n  }\n};\n\nvar defaultSettings = function () { return ({\n  handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n  maxScrollbarLength: null,\n  minScrollbarLength: null,\n  scrollingThreshold: 1000,\n  scrollXMarginOffset: 0,\n  scrollYMarginOffset: 0,\n  suppressScrollX: false,\n  suppressScrollY: false,\n  swipeEasing: true,\n  useBothWheelAxes: false,\n  wheelPropagation: false,\n  wheelSpeed: 1,\n}); };\n\nvar handlers = {\n  'click-rail': clickRail,\n  'drag-thumb': dragThumb,\n  keyboard: keyboard,\n  wheel: wheel,\n  touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n  var this$1 = this;\n  if ( userSettings === void 0 ) userSettings = {};\n\n  if (typeof element === 'string') {\n    element = document.querySelector(element);\n  }\n\n  if (!element || !element.nodeName) {\n    throw new Error('no element is specified to initialize PerfectScrollbar');\n  }\n\n  this.element = element;\n\n  element.classList.add(cls.main);\n\n  this.settings = defaultSettings();\n  for (var key in userSettings) {\n    this$1.settings[key] = userSettings[key];\n  }\n\n  this.containerWidth = null;\n  this.containerHeight = null;\n  this.contentWidth = null;\n  this.contentHeight = null;\n\n  var focus = function () { return element.classList.add(cls.state.focus); };\n  var blur = function () { return element.classList.remove(cls.state.focus); };\n\n  this.isRtl = get(element).direction === 'rtl';\n  this.isNegativeScroll = (function () {\n    var originalScrollLeft = element.scrollLeft;\n    var result = null;\n    element.scrollLeft = -1;\n    result = element.scrollLeft < 0;\n    element.scrollLeft = originalScrollLeft;\n    return result;\n  })();\n  this.negativeScrollAdjustment = this.isNegativeScroll\n    ? element.scrollWidth - element.clientWidth\n    : 0;\n  this.event = new EventManager();\n  this.ownerDocument = element.ownerDocument || document;\n\n  this.scrollbarXRail = div(cls.element.rail('x'));\n  element.appendChild(this.scrollbarXRail);\n  this.scrollbarX = div(cls.element.thumb('x'));\n  this.scrollbarXRail.appendChild(this.scrollbarX);\n  this.scrollbarX.setAttribute('tabindex', 0);\n  this.event.bind(this.scrollbarX, 'focus', focus);\n  this.event.bind(this.scrollbarX, 'blur', blur);\n  this.scrollbarXActive = null;\n  this.scrollbarXWidth = null;\n  this.scrollbarXLeft = null;\n  var railXStyle = get(this.scrollbarXRail);\n  this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n  if (isNaN(this.scrollbarXBottom)) {\n    this.isScrollbarXUsingBottom = false;\n    this.scrollbarXTop = toInt(railXStyle.top);\n  } else {\n    this.isScrollbarXUsingBottom = true;\n  }\n  this.railBorderXWidth =\n    toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n  // Set rail to display:block to calculate margins\n  set(this.scrollbarXRail, { display: 'block' });\n  this.railXMarginWidth =\n    toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n  set(this.scrollbarXRail, { display: '' });\n  this.railXWidth = null;\n  this.railXRatio = null;\n\n  this.scrollbarYRail = div(cls.element.rail('y'));\n  element.appendChild(this.scrollbarYRail);\n  this.scrollbarY = div(cls.element.thumb('y'));\n  this.scrollbarYRail.appendChild(this.scrollbarY);\n  this.scrollbarY.setAttribute('tabindex', 0);\n  this.event.bind(this.scrollbarY, 'focus', focus);\n  this.event.bind(this.scrollbarY, 'blur', blur);\n  this.scrollbarYActive = null;\n  this.scrollbarYHeight = null;\n  this.scrollbarYTop = null;\n  var railYStyle = get(this.scrollbarYRail);\n  this.scrollbarYRight = parseInt(railYStyle.right, 10);\n  if (isNaN(this.scrollbarYRight)) {\n    this.isScrollbarYUsingRight = false;\n    this.scrollbarYLeft = toInt(railYStyle.left);\n  } else {\n    this.isScrollbarYUsingRight = true;\n  }\n  this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n  this.railBorderYWidth =\n    toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n  set(this.scrollbarYRail, { display: 'block' });\n  this.railYMarginHeight =\n    toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n  set(this.scrollbarYRail, { display: '' });\n  this.railYHeight = null;\n  this.railYRatio = null;\n\n  this.reach = {\n    x:\n      element.scrollLeft <= 0\n        ? 'start'\n        : element.scrollLeft >= this.contentWidth - this.containerWidth\n          ? 'end'\n          : null,\n    y:\n      element.scrollTop <= 0\n        ? 'start'\n        : element.scrollTop >= this.contentHeight - this.containerHeight\n          ? 'end'\n          : null,\n  };\n\n  this.isAlive = true;\n\n  this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n  this.lastScrollTop = element.scrollTop; // for onScroll only\n  this.lastScrollLeft = element.scrollLeft; // for onScroll only\n  this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n  updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n  if (!this.isAlive) {\n    return;\n  }\n\n  // Recalcuate negative scrollLeft adjustment\n  this.negativeScrollAdjustment = this.isNegativeScroll\n    ? this.element.scrollWidth - this.element.clientWidth\n    : 0;\n\n  // Recalculate rail margins\n  set(this.scrollbarXRail, { display: 'block' });\n  set(this.scrollbarYRail, { display: 'block' });\n  this.railXMarginWidth =\n    toInt(get(this.scrollbarXRail).marginLeft) +\n    toInt(get(this.scrollbarXRail).marginRight);\n  this.railYMarginHeight =\n    toInt(get(this.scrollbarYRail).marginTop) +\n    toInt(get(this.scrollbarYRail).marginBottom);\n\n  // Hide scrollbars not to affect scrollWidth and scrollHeight\n  set(this.scrollbarXRail, { display: 'none' });\n  set(this.scrollbarYRail, { display: 'none' });\n\n  updateGeometry(this);\n\n  processScrollDiff(this, 'top', 0, false, true);\n  processScrollDiff(this, 'left', 0, false, true);\n\n  set(this.scrollbarXRail, { display: '' });\n  set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n  if (!this.isAlive) {\n    return;\n  }\n\n  updateGeometry(this);\n  processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n  processScrollDiff(\n    this,\n    'left',\n    this.element.scrollLeft - this.lastScrollLeft\n  );\n\n  this.lastScrollTop = this.element.scrollTop;\n  this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n  if (!this.isAlive) {\n    return;\n  }\n\n  this.event.unbindAll();\n  remove(this.scrollbarX);\n  remove(this.scrollbarY);\n  remove(this.scrollbarXRail);\n  remove(this.scrollbarYRail);\n  this.removePsClasses();\n\n  // unset elements\n  this.element = null;\n  this.scrollbarX = null;\n  this.scrollbarY = null;\n  this.scrollbarXRail = null;\n  this.scrollbarYRail = null;\n\n  this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n  this.element.className = this.element.className\n    .split(' ')\n    .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n    .join(' ');\n};\n\nmodule.exports = PerfectScrollbar;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.esm.js",
    "content": "/*!\n * perfect-scrollbar v1.3.0\n * (c) 2017 Hyunje Jun\n * @license MIT\n */\nfunction get(element) {\n  return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n  for (var key in obj) {\n    var val = obj[key];\n    if (typeof val === 'number') {\n      val = val + \"px\";\n    }\n    element.style[key] = val;\n  }\n  return element;\n}\n\nfunction div(className) {\n  var div = document.createElement('div');\n  div.className = className;\n  return div;\n}\n\nvar elMatches =\n  typeof Element !== 'undefined' &&\n  (Element.prototype.matches ||\n    Element.prototype.webkitMatchesSelector ||\n    Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n  if (!elMatches) {\n    throw new Error('No element matching method supported');\n  }\n\n  return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n  if (element.remove) {\n    element.remove();\n  } else {\n    if (element.parentNode) {\n      element.parentNode.removeChild(element);\n    }\n  }\n}\n\nfunction queryChildren(element, selector) {\n  return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n  );\n}\n\nvar cls = {\n  main: 'ps',\n  element: {\n    thumb: function (x) { return (\"ps__thumb-\" + x); },\n    rail: function (x) { return (\"ps__rail-\" + x); },\n    consuming: 'ps__child--consume',\n  },\n  state: {\n    focus: 'ps--focus',\n    active: function (x) { return (\"ps--active-\" + x); },\n    scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n  },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n  var classList = i.element.classList;\n  var className = cls.state.scrolling(x);\n\n  if (classList.contains(className)) {\n    clearTimeout(scrollingClassTimeout[x]);\n  } else {\n    classList.add(className);\n  }\n}\n\nfunction removeScrollingClass(i, x) {\n  scrollingClassTimeout[x] = setTimeout(\n    function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n    i.settings.scrollingThreshold\n  );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n  addScrollingClass(i, x);\n  removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n  this.element = element;\n  this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n  if (typeof this.handlers[eventName] === 'undefined') {\n    this.handlers[eventName] = [];\n  }\n  this.handlers[eventName].push(handler);\n  this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n    var this$1 = this;\n\n  this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n    if (target && handler !== target) {\n      return true;\n    }\n    this$1.element.removeEventListener(eventName, handler, false);\n    return false;\n  });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n    var this$1 = this;\n\n  for (var name in this$1.handlers) {\n    this$1.unbind(name);\n  }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n    var this$1 = this;\n\n  return Object.keys(this.handlers).every(\n    function (key) { return this$1.handlers[key].length === 0; }\n  );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n  this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n  var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n  if (!ee) {\n    ee = new EventElement(element);\n    this.eventElements.push(ee);\n  }\n  return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n  this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n  var ee = this.eventElement(element);\n  ee.unbind(eventName, handler);\n\n  if (ee.isEmpty) {\n    // remove\n    this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n  }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n  this.eventElements.forEach(function (e) { return e.unbindAll(); });\n  this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n  var ee = this.eventElement(element);\n  var onceHandler = function (evt) {\n    ee.unbind(eventName, onceHandler);\n    handler(evt);\n  };\n  ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n  if (typeof window.CustomEvent === 'function') {\n    return new CustomEvent(name);\n  } else {\n    var evt = document.createEvent('CustomEvent');\n    evt.initCustomEvent(name, false, false, undefined);\n    return evt;\n  }\n}\n\nvar processScrollDiff = function(\n  i,\n  axis,\n  diff,\n  useScrollingClass,\n  forceFireReachEvent\n) {\n  if ( useScrollingClass === void 0 ) useScrollingClass = true;\n  if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n  var fields;\n  if (axis === 'top') {\n    fields = [\n      'contentHeight',\n      'containerHeight',\n      'scrollTop',\n      'y',\n      'up',\n      'down' ];\n  } else if (axis === 'left') {\n    fields = [\n      'contentWidth',\n      'containerWidth',\n      'scrollLeft',\n      'x',\n      'left',\n      'right' ];\n  } else {\n    throw new Error('A proper axis should be provided');\n  }\n\n  processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n  i,\n  diff,\n  ref,\n  useScrollingClass,\n  forceFireReachEvent\n) {\n  var contentHeight = ref[0];\n  var containerHeight = ref[1];\n  var scrollTop = ref[2];\n  var y = ref[3];\n  var up = ref[4];\n  var down = ref[5];\n  if ( useScrollingClass === void 0 ) useScrollingClass = true;\n  if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n  var element = i.element;\n\n  // reset reach\n  i.reach[y] = null;\n\n  // 1 for subpixel rounding\n  if (element[scrollTop] < 1) {\n    i.reach[y] = 'start';\n  }\n\n  // 1 for subpixel rounding\n  if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n    i.reach[y] = 'end';\n  }\n\n  if (diff) {\n    element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n    if (diff < 0) {\n      element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n    } else if (diff > 0) {\n      element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n    }\n\n    if (useScrollingClass) {\n      setScrollingClassInstantly(i, y);\n    }\n  }\n\n  if (i.reach[y] && (diff || forceFireReachEvent)) {\n    element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n  }\n}\n\nfunction toInt(x) {\n  return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n  return (\n    matches(el, 'input,[contenteditable]') ||\n    matches(el, 'select,[contenteditable]') ||\n    matches(el, 'textarea,[contenteditable]') ||\n    matches(el, 'button,[contenteditable]')\n  );\n}\n\nfunction outerWidth(element) {\n  var styles = get(element);\n  return (\n    toInt(styles.width) +\n    toInt(styles.paddingLeft) +\n    toInt(styles.paddingRight) +\n    toInt(styles.borderLeftWidth) +\n    toInt(styles.borderRightWidth)\n  );\n}\n\nvar env = {\n  isWebKit:\n    typeof document !== 'undefined' &&\n    'WebkitAppearance' in document.documentElement.style,\n  supportsTouch:\n    typeof window !== 'undefined' &&\n    ('ontouchstart' in window ||\n      (window.DocumentTouch && document instanceof window.DocumentTouch)),\n  supportsIePointer:\n    typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n  isChrome:\n    typeof navigator !== 'undefined' &&\n    /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n  var element = i.element;\n\n  i.containerWidth = element.clientWidth;\n  i.containerHeight = element.clientHeight;\n  i.contentWidth = element.scrollWidth;\n  i.contentHeight = element.scrollHeight;\n\n  if (!element.contains(i.scrollbarXRail)) {\n    // clean up and append\n    queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n    );\n    element.appendChild(i.scrollbarXRail);\n  }\n  if (!element.contains(i.scrollbarYRail)) {\n    // clean up and append\n    queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n    );\n    element.appendChild(i.scrollbarYRail);\n  }\n\n  if (\n    !i.settings.suppressScrollX &&\n    i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n  ) {\n    i.scrollbarXActive = true;\n    i.railXWidth = i.containerWidth - i.railXMarginWidth;\n    i.railXRatio = i.containerWidth / i.railXWidth;\n    i.scrollbarXWidth = getThumbSize(\n      i,\n      toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n    );\n    i.scrollbarXLeft = toInt(\n      (i.negativeScrollAdjustment + element.scrollLeft) *\n        (i.railXWidth - i.scrollbarXWidth) /\n        (i.contentWidth - i.containerWidth)\n    );\n  } else {\n    i.scrollbarXActive = false;\n  }\n\n  if (\n    !i.settings.suppressScrollY &&\n    i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n  ) {\n    i.scrollbarYActive = true;\n    i.railYHeight = i.containerHeight - i.railYMarginHeight;\n    i.railYRatio = i.containerHeight / i.railYHeight;\n    i.scrollbarYHeight = getThumbSize(\n      i,\n      toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n    );\n    i.scrollbarYTop = toInt(\n      element.scrollTop *\n        (i.railYHeight - i.scrollbarYHeight) /\n        (i.contentHeight - i.containerHeight)\n    );\n  } else {\n    i.scrollbarYActive = false;\n  }\n\n  if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n    i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n  }\n  if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n    i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n  }\n\n  updateCss(element, i);\n\n  if (i.scrollbarXActive) {\n    element.classList.add(cls.state.active('x'));\n  } else {\n    element.classList.remove(cls.state.active('x'));\n    i.scrollbarXWidth = 0;\n    i.scrollbarXLeft = 0;\n    element.scrollLeft = 0;\n  }\n  if (i.scrollbarYActive) {\n    element.classList.add(cls.state.active('y'));\n  } else {\n    element.classList.remove(cls.state.active('y'));\n    i.scrollbarYHeight = 0;\n    i.scrollbarYTop = 0;\n    element.scrollTop = 0;\n  }\n};\n\nfunction getThumbSize(i, thumbSize) {\n  if (i.settings.minScrollbarLength) {\n    thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n  }\n  if (i.settings.maxScrollbarLength) {\n    thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n  }\n  return thumbSize;\n}\n\nfunction updateCss(element, i) {\n  var xRailOffset = { width: i.railXWidth };\n  if (i.isRtl) {\n    xRailOffset.left =\n      i.negativeScrollAdjustment +\n      element.scrollLeft +\n      i.containerWidth -\n      i.contentWidth;\n  } else {\n    xRailOffset.left = element.scrollLeft;\n  }\n  if (i.isScrollbarXUsingBottom) {\n    xRailOffset.bottom = i.scrollbarXBottom - element.scrollTop;\n  } else {\n    xRailOffset.top = i.scrollbarXTop + element.scrollTop;\n  }\n  set(i.scrollbarXRail, xRailOffset);\n\n  var yRailOffset = { top: element.scrollTop, height: i.railYHeight };\n  if (i.isScrollbarYUsingRight) {\n    if (i.isRtl) {\n      yRailOffset.right =\n        i.contentWidth -\n        (i.negativeScrollAdjustment + element.scrollLeft) -\n        i.scrollbarYRight -\n        i.scrollbarYOuterWidth;\n    } else {\n      yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n    }\n  } else {\n    if (i.isRtl) {\n      yRailOffset.left =\n        i.negativeScrollAdjustment +\n        element.scrollLeft +\n        i.containerWidth * 2 -\n        i.contentWidth -\n        i.scrollbarYLeft -\n        i.scrollbarYOuterWidth;\n    } else {\n      yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n    }\n  }\n  set(i.scrollbarYRail, yRailOffset);\n\n  set(i.scrollbarX, {\n    left: i.scrollbarXLeft,\n    width: i.scrollbarXWidth - i.railBorderXWidth,\n  });\n  set(i.scrollbarY, {\n    top: i.scrollbarYTop,\n    height: i.scrollbarYHeight - i.railBorderYWidth,\n  });\n}\n\nvar clickRail = function(i) {\n  i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n  i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n    var positionTop =\n      e.pageY -\n      window.pageYOffset -\n      i.scrollbarYRail.getBoundingClientRect().top;\n    var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n    i.element.scrollTop += direction * i.containerHeight;\n    updateGeometry(i);\n\n    e.stopPropagation();\n  });\n\n  i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n  i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n    var positionLeft =\n      e.pageX -\n      window.pageXOffset -\n      i.scrollbarXRail.getBoundingClientRect().left;\n    var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n    i.element.scrollLeft += direction * i.containerWidth;\n    updateGeometry(i);\n\n    e.stopPropagation();\n  });\n};\n\nvar dragThumb = function(i) {\n  bindMouseScrollHandler(i, [\n    'containerWidth',\n    'contentWidth',\n    'pageX',\n    'railXWidth',\n    'scrollbarX',\n    'scrollbarXWidth',\n    'scrollLeft',\n    'x' ]);\n  bindMouseScrollHandler(i, [\n    'containerHeight',\n    'contentHeight',\n    'pageY',\n    'railYHeight',\n    'scrollbarY',\n    'scrollbarYHeight',\n    'scrollTop',\n    'y' ]);\n};\n\nfunction bindMouseScrollHandler(\n  i,\n  ref\n) {\n  var containerHeight = ref[0];\n  var contentHeight = ref[1];\n  var pageY = ref[2];\n  var railYHeight = ref[3];\n  var scrollbarY = ref[4];\n  var scrollbarYHeight = ref[5];\n  var scrollTop = ref[6];\n  var y = ref[7];\n\n  var element = i.element;\n\n  var startingScrollTop = null;\n  var startingMousePageY = null;\n  var scrollBy = null;\n\n  function mouseMoveHandler(e) {\n    element[scrollTop] =\n      startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n    addScrollingClass(i, y);\n    updateGeometry(i);\n\n    e.stopPropagation();\n    e.preventDefault();\n  }\n\n  function mouseUpHandler() {\n    removeScrollingClass(i, y);\n    i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n  }\n\n  i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n    startingScrollTop = element[scrollTop];\n    startingMousePageY = e[pageY];\n    scrollBy =\n      (i[contentHeight] - i[containerHeight]) /\n      (i[railYHeight] - i[scrollbarYHeight]);\n\n    i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n    i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n    e.stopPropagation();\n    e.preventDefault();\n  });\n}\n\nvar keyboard = function(i) {\n  var element = i.element;\n\n  var elementHovered = function () { return matches(element, ':hover'); };\n  var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n  function shouldPreventDefault(deltaX, deltaY) {\n    var scrollTop = element.scrollTop;\n    if (deltaX === 0) {\n      if (!i.scrollbarYActive) {\n        return false;\n      }\n      if (\n        (scrollTop === 0 && deltaY > 0) ||\n        (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n      ) {\n        return !i.settings.wheelPropagation;\n      }\n    }\n\n    var scrollLeft = element.scrollLeft;\n    if (deltaY === 0) {\n      if (!i.scrollbarXActive) {\n        return false;\n      }\n      if (\n        (scrollLeft === 0 && deltaX < 0) ||\n        (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n      ) {\n        return !i.settings.wheelPropagation;\n      }\n    }\n    return true;\n  }\n\n  i.event.bind(i.ownerDocument, 'keydown', function (e) {\n    if (\n      (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n      e.defaultPrevented\n    ) {\n      return;\n    }\n\n    if (!elementHovered() && !scrollbarFocused()) {\n      return;\n    }\n\n    var activeElement = document.activeElement\n      ? document.activeElement\n      : i.ownerDocument.activeElement;\n    if (activeElement) {\n      if (activeElement.tagName === 'IFRAME') {\n        activeElement = activeElement.contentDocument.activeElement;\n      } else {\n        // go deeper if element is a webcomponent\n        while (activeElement.shadowRoot) {\n          activeElement = activeElement.shadowRoot.activeElement;\n        }\n      }\n      if (isEditable(activeElement)) {\n        return;\n      }\n    }\n\n    var deltaX = 0;\n    var deltaY = 0;\n\n    switch (e.which) {\n      case 37: // left\n        if (e.metaKey) {\n          deltaX = -i.contentWidth;\n        } else if (e.altKey) {\n          deltaX = -i.containerWidth;\n        } else {\n          deltaX = -30;\n        }\n        break;\n      case 38: // up\n        if (e.metaKey) {\n          deltaY = i.contentHeight;\n        } else if (e.altKey) {\n          deltaY = i.containerHeight;\n        } else {\n          deltaY = 30;\n        }\n        break;\n      case 39: // right\n        if (e.metaKey) {\n          deltaX = i.contentWidth;\n        } else if (e.altKey) {\n          deltaX = i.containerWidth;\n        } else {\n          deltaX = 30;\n        }\n        break;\n      case 40: // down\n        if (e.metaKey) {\n          deltaY = -i.contentHeight;\n        } else if (e.altKey) {\n          deltaY = -i.containerHeight;\n        } else {\n          deltaY = -30;\n        }\n        break;\n      case 32: // space bar\n        if (e.shiftKey) {\n          deltaY = i.containerHeight;\n        } else {\n          deltaY = -i.containerHeight;\n        }\n        break;\n      case 33: // page up\n        deltaY = i.containerHeight;\n        break;\n      case 34: // page down\n        deltaY = -i.containerHeight;\n        break;\n      case 36: // home\n        deltaY = i.contentHeight;\n        break;\n      case 35: // end\n        deltaY = -i.contentHeight;\n        break;\n      default:\n        return;\n    }\n\n    if (i.settings.suppressScrollX && deltaX !== 0) {\n      return;\n    }\n    if (i.settings.suppressScrollY && deltaY !== 0) {\n      return;\n    }\n\n    element.scrollTop -= deltaY;\n    element.scrollLeft += deltaX;\n    updateGeometry(i);\n\n    if (shouldPreventDefault(deltaX, deltaY)) {\n      e.preventDefault();\n    }\n  });\n};\n\nvar wheel = function(i) {\n  var element = i.element;\n\n  function shouldPreventDefault(deltaX, deltaY) {\n    var isTop = element.scrollTop === 0;\n    var isBottom =\n      element.scrollTop + element.offsetHeight === element.scrollHeight;\n    var isLeft = element.scrollLeft === 0;\n    var isRight =\n      element.scrollLeft + element.offsetWidth === element.offsetWidth;\n\n    var hitsBound;\n\n    // pick axis with primary direction\n    if (Math.abs(deltaY) > Math.abs(deltaX)) {\n      hitsBound = isTop || isBottom;\n    } else {\n      hitsBound = isLeft || isRight;\n    }\n\n    return hitsBound ? !i.settings.wheelPropagation : true;\n  }\n\n  function getDeltaFromEvent(e) {\n    var deltaX = e.deltaX;\n    var deltaY = -1 * e.deltaY;\n\n    if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n      // OS X Safari\n      deltaX = -1 * e.wheelDeltaX / 6;\n      deltaY = e.wheelDeltaY / 6;\n    }\n\n    if (e.deltaMode && e.deltaMode === 1) {\n      // Firefox in deltaMode 1: Line scrolling\n      deltaX *= 10;\n      deltaY *= 10;\n    }\n\n    if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n      // IE in some mouse drivers\n      deltaX = 0;\n      deltaY = e.wheelDelta;\n    }\n\n    if (e.shiftKey) {\n      // reverse axis with shift key\n      return [-deltaY, -deltaX];\n    }\n    return [deltaX, deltaY];\n  }\n\n  function shouldBeConsumedByChild(target, deltaX, deltaY) {\n    // FIXME: this is a workaround for <select> issue in FF and IE #571\n    if (!env.isWebKit && element.querySelector('select:focus')) {\n      return true;\n    }\n\n    if (!element.contains(target)) {\n      return false;\n    }\n\n    var cursor = target;\n\n    while (cursor && cursor !== element) {\n      if (cursor.classList.contains(cls.element.consuming)) {\n        return true;\n      }\n\n      var style = get(cursor);\n      var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n        ''\n      );\n\n      // if scrollable\n      if (overflow.match(/(scroll|auto)/)) {\n        var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n        if (maxScrollTop > 0) {\n          if (\n            !(cursor.scrollTop === 0 && deltaY > 0) &&\n            !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n          ) {\n            return true;\n          }\n        }\n        var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n        if (maxScrollLeft > 0) {\n          if (\n            !(cursor.scrollLeft === 0 && deltaX < 0) &&\n            !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n\n      cursor = cursor.parentNode;\n    }\n\n    return false;\n  }\n\n  function mousewheelHandler(e) {\n    var ref = getDeltaFromEvent(e);\n    var deltaX = ref[0];\n    var deltaY = ref[1];\n\n    if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n      return;\n    }\n\n    var shouldPrevent = false;\n    if (!i.settings.useBothWheelAxes) {\n      // deltaX will only be used for horizontal scrolling and deltaY will\n      // only be used for vertical scrolling - this is the default\n      element.scrollTop -= deltaY * i.settings.wheelSpeed;\n      element.scrollLeft += deltaX * i.settings.wheelSpeed;\n    } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n      // only vertical scrollbar is active and useBothWheelAxes option is\n      // active, so let's scroll vertical bar using both mouse wheel axes\n      if (deltaY) {\n        element.scrollTop -= deltaY * i.settings.wheelSpeed;\n      } else {\n        element.scrollTop += deltaX * i.settings.wheelSpeed;\n      }\n      shouldPrevent = true;\n    } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n      // useBothWheelAxes and only horizontal bar is active, so use both\n      // wheel axes for horizontal bar\n      if (deltaX) {\n        element.scrollLeft += deltaX * i.settings.wheelSpeed;\n      } else {\n        element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n      }\n      shouldPrevent = true;\n    }\n\n    updateGeometry(i);\n\n    shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n    if (shouldPrevent && !e.ctrlKey) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  if (typeof window.onwheel !== 'undefined') {\n    i.event.bind(element, 'wheel', mousewheelHandler);\n  } else if (typeof window.onmousewheel !== 'undefined') {\n    i.event.bind(element, 'mousewheel', mousewheelHandler);\n  }\n};\n\nvar touch = function(i) {\n  if (!env.supportsTouch && !env.supportsIePointer) {\n    return;\n  }\n\n  var element = i.element;\n\n  function shouldPrevent(deltaX, deltaY) {\n    var scrollTop = element.scrollTop;\n    var scrollLeft = element.scrollLeft;\n    var magnitudeX = Math.abs(deltaX);\n    var magnitudeY = Math.abs(deltaY);\n\n    if (magnitudeY > magnitudeX) {\n      // user is perhaps trying to swipe up/down the page\n\n      if (\n        (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n        (deltaY > 0 && scrollTop === 0)\n      ) {\n        // set prevent for mobile Chrome refresh\n        return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n      }\n    } else if (magnitudeX > magnitudeY) {\n      // user is perhaps trying to swipe left/right across the page\n\n      if (\n        (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n        (deltaX > 0 && scrollLeft === 0)\n      ) {\n        return true;\n      }\n    }\n\n    return true;\n  }\n\n  function applyTouchMove(differenceX, differenceY) {\n    element.scrollTop -= differenceY;\n    element.scrollLeft -= differenceX;\n\n    updateGeometry(i);\n  }\n\n  var startOffset = {};\n  var startTime = 0;\n  var speed = {};\n  var easingLoop = null;\n\n  function getTouch(e) {\n    if (e.targetTouches) {\n      return e.targetTouches[0];\n    } else {\n      // Maybe IE pointer\n      return e;\n    }\n  }\n\n  function shouldHandle(e) {\n    if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n      return false;\n    }\n    if (e.targetTouches && e.targetTouches.length === 1) {\n      return true;\n    }\n    if (\n      e.pointerType &&\n      e.pointerType !== 'mouse' &&\n      e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  function touchStart(e) {\n    if (!shouldHandle(e)) {\n      return;\n    }\n\n    var touch = getTouch(e);\n\n    startOffset.pageX = touch.pageX;\n    startOffset.pageY = touch.pageY;\n\n    startTime = new Date().getTime();\n\n    if (easingLoop !== null) {\n      clearInterval(easingLoop);\n    }\n  }\n\n  function shouldBeConsumedByChild(target, deltaX, deltaY) {\n    if (!element.contains(target)) {\n      return false;\n    }\n\n    var cursor = target;\n\n    while (cursor && cursor !== element) {\n      if (cursor.classList.contains(cls.element.consuming)) {\n        return true;\n      }\n\n      var style = get(cursor);\n      var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n        ''\n      );\n\n      // if scrollable\n      if (overflow.match(/(scroll|auto)/)) {\n        var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n        if (maxScrollTop > 0) {\n          if (\n            !(cursor.scrollTop === 0 && deltaY > 0) &&\n            !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n          ) {\n            return true;\n          }\n        }\n        var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n        if (maxScrollLeft > 0) {\n          if (\n            !(cursor.scrollLeft === 0 && deltaX < 0) &&\n            !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n\n      cursor = cursor.parentNode;\n    }\n\n    return false;\n  }\n\n  function touchMove(e) {\n    if (shouldHandle(e)) {\n      var touch = getTouch(e);\n\n      var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n      var differenceX = currentOffset.pageX - startOffset.pageX;\n      var differenceY = currentOffset.pageY - startOffset.pageY;\n\n      if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n        return;\n      }\n\n      applyTouchMove(differenceX, differenceY);\n      startOffset = currentOffset;\n\n      var currentTime = new Date().getTime();\n\n      var timeGap = currentTime - startTime;\n      if (timeGap > 0) {\n        speed.x = differenceX / timeGap;\n        speed.y = differenceY / timeGap;\n        startTime = currentTime;\n      }\n\n      if (shouldPrevent(differenceX, differenceY)) {\n        e.preventDefault();\n      }\n    }\n  }\n  function touchEnd() {\n    if (i.settings.swipeEasing) {\n      clearInterval(easingLoop);\n      easingLoop = setInterval(function() {\n        if (i.isInitialized) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        if (!speed.x && !speed.y) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        applyTouchMove(speed.x * 30, speed.y * 30);\n\n        speed.x *= 0.8;\n        speed.y *= 0.8;\n      }, 10);\n    }\n  }\n\n  if (env.supportsTouch) {\n    i.event.bind(element, 'touchstart', touchStart);\n    i.event.bind(element, 'touchmove', touchMove);\n    i.event.bind(element, 'touchend', touchEnd);\n  } else if (env.supportsIePointer) {\n    if (window.PointerEvent) {\n      i.event.bind(element, 'pointerdown', touchStart);\n      i.event.bind(element, 'pointermove', touchMove);\n      i.event.bind(element, 'pointerup', touchEnd);\n    } else if (window.MSPointerEvent) {\n      i.event.bind(element, 'MSPointerDown', touchStart);\n      i.event.bind(element, 'MSPointerMove', touchMove);\n      i.event.bind(element, 'MSPointerUp', touchEnd);\n    }\n  }\n};\n\nvar defaultSettings = function () { return ({\n  handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n  maxScrollbarLength: null,\n  minScrollbarLength: null,\n  scrollingThreshold: 1000,\n  scrollXMarginOffset: 0,\n  scrollYMarginOffset: 0,\n  suppressScrollX: false,\n  suppressScrollY: false,\n  swipeEasing: true,\n  useBothWheelAxes: false,\n  wheelPropagation: false,\n  wheelSpeed: 1,\n}); };\n\nvar handlers = {\n  'click-rail': clickRail,\n  'drag-thumb': dragThumb,\n  keyboard: keyboard,\n  wheel: wheel,\n  touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n  var this$1 = this;\n  if ( userSettings === void 0 ) userSettings = {};\n\n  if (typeof element === 'string') {\n    element = document.querySelector(element);\n  }\n\n  if (!element || !element.nodeName) {\n    throw new Error('no element is specified to initialize PerfectScrollbar');\n  }\n\n  this.element = element;\n\n  element.classList.add(cls.main);\n\n  this.settings = defaultSettings();\n  for (var key in userSettings) {\n    this$1.settings[key] = userSettings[key];\n  }\n\n  this.containerWidth = null;\n  this.containerHeight = null;\n  this.contentWidth = null;\n  this.contentHeight = null;\n\n  var focus = function () { return element.classList.add(cls.state.focus); };\n  var blur = function () { return element.classList.remove(cls.state.focus); };\n\n  this.isRtl = get(element).direction === 'rtl';\n  this.isNegativeScroll = (function () {\n    var originalScrollLeft = element.scrollLeft;\n    var result = null;\n    element.scrollLeft = -1;\n    result = element.scrollLeft < 0;\n    element.scrollLeft = originalScrollLeft;\n    return result;\n  })();\n  this.negativeScrollAdjustment = this.isNegativeScroll\n    ? element.scrollWidth - element.clientWidth\n    : 0;\n  this.event = new EventManager();\n  this.ownerDocument = element.ownerDocument || document;\n\n  this.scrollbarXRail = div(cls.element.rail('x'));\n  element.appendChild(this.scrollbarXRail);\n  this.scrollbarX = div(cls.element.thumb('x'));\n  this.scrollbarXRail.appendChild(this.scrollbarX);\n  this.scrollbarX.setAttribute('tabindex', 0);\n  this.event.bind(this.scrollbarX, 'focus', focus);\n  this.event.bind(this.scrollbarX, 'blur', blur);\n  this.scrollbarXActive = null;\n  this.scrollbarXWidth = null;\n  this.scrollbarXLeft = null;\n  var railXStyle = get(this.scrollbarXRail);\n  this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n  if (isNaN(this.scrollbarXBottom)) {\n    this.isScrollbarXUsingBottom = false;\n    this.scrollbarXTop = toInt(railXStyle.top);\n  } else {\n    this.isScrollbarXUsingBottom = true;\n  }\n  this.railBorderXWidth =\n    toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n  // Set rail to display:block to calculate margins\n  set(this.scrollbarXRail, { display: 'block' });\n  this.railXMarginWidth =\n    toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n  set(this.scrollbarXRail, { display: '' });\n  this.railXWidth = null;\n  this.railXRatio = null;\n\n  this.scrollbarYRail = div(cls.element.rail('y'));\n  element.appendChild(this.scrollbarYRail);\n  this.scrollbarY = div(cls.element.thumb('y'));\n  this.scrollbarYRail.appendChild(this.scrollbarY);\n  this.scrollbarY.setAttribute('tabindex', 0);\n  this.event.bind(this.scrollbarY, 'focus', focus);\n  this.event.bind(this.scrollbarY, 'blur', blur);\n  this.scrollbarYActive = null;\n  this.scrollbarYHeight = null;\n  this.scrollbarYTop = null;\n  var railYStyle = get(this.scrollbarYRail);\n  this.scrollbarYRight = parseInt(railYStyle.right, 10);\n  if (isNaN(this.scrollbarYRight)) {\n    this.isScrollbarYUsingRight = false;\n    this.scrollbarYLeft = toInt(railYStyle.left);\n  } else {\n    this.isScrollbarYUsingRight = true;\n  }\n  this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n  this.railBorderYWidth =\n    toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n  set(this.scrollbarYRail, { display: 'block' });\n  this.railYMarginHeight =\n    toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n  set(this.scrollbarYRail, { display: '' });\n  this.railYHeight = null;\n  this.railYRatio = null;\n\n  this.reach = {\n    x:\n      element.scrollLeft <= 0\n        ? 'start'\n        : element.scrollLeft >= this.contentWidth - this.containerWidth\n          ? 'end'\n          : null,\n    y:\n      element.scrollTop <= 0\n        ? 'start'\n        : element.scrollTop >= this.contentHeight - this.containerHeight\n          ? 'end'\n          : null,\n  };\n\n  this.isAlive = true;\n\n  this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n  this.lastScrollTop = element.scrollTop; // for onScroll only\n  this.lastScrollLeft = element.scrollLeft; // for onScroll only\n  this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n  updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n  if (!this.isAlive) {\n    return;\n  }\n\n  // Recalcuate negative scrollLeft adjustment\n  this.negativeScrollAdjustment = this.isNegativeScroll\n    ? this.element.scrollWidth - this.element.clientWidth\n    : 0;\n\n  // Recalculate rail margins\n  set(this.scrollbarXRail, { display: 'block' });\n  set(this.scrollbarYRail, { display: 'block' });\n  this.railXMarginWidth =\n    toInt(get(this.scrollbarXRail).marginLeft) +\n    toInt(get(this.scrollbarXRail).marginRight);\n  this.railYMarginHeight =\n    toInt(get(this.scrollbarYRail).marginTop) +\n    toInt(get(this.scrollbarYRail).marginBottom);\n\n  // Hide scrollbars not to affect scrollWidth and scrollHeight\n  set(this.scrollbarXRail, { display: 'none' });\n  set(this.scrollbarYRail, { display: 'none' });\n\n  updateGeometry(this);\n\n  processScrollDiff(this, 'top', 0, false, true);\n  processScrollDiff(this, 'left', 0, false, true);\n\n  set(this.scrollbarXRail, { display: '' });\n  set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n  if (!this.isAlive) {\n    return;\n  }\n\n  updateGeometry(this);\n  processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n  processScrollDiff(\n    this,\n    'left',\n    this.element.scrollLeft - this.lastScrollLeft\n  );\n\n  this.lastScrollTop = this.element.scrollTop;\n  this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n  if (!this.isAlive) {\n    return;\n  }\n\n  this.event.unbindAll();\n  remove(this.scrollbarX);\n  remove(this.scrollbarY);\n  remove(this.scrollbarXRail);\n  remove(this.scrollbarYRail);\n  this.removePsClasses();\n\n  // unset elements\n  this.element = null;\n  this.scrollbarX = null;\n  this.scrollbarY = null;\n  this.scrollbarXRail = null;\n  this.scrollbarYRail = null;\n\n  this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n  this.element.className = this.element.className\n    .split(' ')\n    .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n    .join(' ');\n};\n\nexport default PerfectScrollbar;\n"
  },
  {
    "path": "public/admin-panel/assets/libs/quill/dist/quill.bubble.css",
    "content": "/*!\n * Quill Editor v1.3.6\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n.ql-container {\n  box-sizing: border-box;\n  font-family: Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  height: 100%;\n  margin: 0px;\n  position: relative;\n}\n.ql-container.ql-disabled .ql-tooltip {\n  visibility: hidden;\n}\n.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {\n  pointer-events: none;\n}\n.ql-clipboard {\n  left: -100000px;\n  height: 1px;\n  overflow-y: hidden;\n  position: absolute;\n  top: 50%;\n}\n.ql-clipboard p {\n  margin: 0;\n  padding: 0;\n}\n.ql-editor {\n  box-sizing: border-box;\n  line-height: 1.42;\n  height: 100%;\n  outline: none;\n  overflow-y: auto;\n  padding: 12px 15px;\n  tab-size: 4;\n  -moz-tab-size: 4;\n  text-align: left;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n}\n.ql-editor > * {\n  cursor: text;\n}\n.ql-editor p,\n.ql-editor ol,\n.ql-editor ul,\n.ql-editor pre,\n.ql-editor blockquote,\n.ql-editor h1,\n.ql-editor h2,\n.ql-editor h3,\n.ql-editor h4,\n.ql-editor h5,\n.ql-editor h6 {\n  margin: 0;\n  padding: 0;\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol,\n.ql-editor ul {\n  padding-left: 1.5em;\n}\n.ql-editor ol > li,\n.ql-editor ul > li {\n  list-style-type: none;\n}\n.ql-editor ul > li::before {\n  content: '\\2022';\n}\n.ql-editor ul[data-checked=true],\n.ql-editor ul[data-checked=false] {\n  pointer-events: none;\n}\n.ql-editor ul[data-checked=true] > li *,\n.ql-editor ul[data-checked=false] > li * {\n  pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before,\n.ql-editor ul[data-checked=false] > li::before {\n  color: #777;\n  cursor: pointer;\n  pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before {\n  content: '\\2611';\n}\n.ql-editor ul[data-checked=false] > li::before {\n  content: '\\2610';\n}\n.ql-editor li::before {\n  display: inline-block;\n  white-space: nowrap;\n  width: 1.2em;\n}\n.ql-editor li:not(.ql-direction-rtl)::before {\n  margin-left: -1.5em;\n  margin-right: 0.3em;\n  text-align: right;\n}\n.ql-editor li.ql-direction-rtl::before {\n  margin-left: 0.3em;\n  margin-right: -1.5em;\n}\n.ql-editor ol li:not(.ql-direction-rtl),\n.ql-editor ul li:not(.ql-direction-rtl) {\n  padding-left: 1.5em;\n}\n.ql-editor ol li.ql-direction-rtl,\n.ql-editor ul li.ql-direction-rtl {\n  padding-right: 1.5em;\n}\n.ql-editor ol li {\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n  counter-increment: list-0;\n}\n.ql-editor ol li:before {\n  content: counter(list-0, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n  counter-increment: list-1;\n}\n.ql-editor ol li.ql-indent-1:before {\n  content: counter(list-1, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n  counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-2 {\n  counter-increment: list-2;\n}\n.ql-editor ol li.ql-indent-2:before {\n  content: counter(list-2, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-2 {\n  counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-3 {\n  counter-increment: list-3;\n}\n.ql-editor ol li.ql-indent-3:before {\n  content: counter(list-3, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-3 {\n  counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-4 {\n  counter-increment: list-4;\n}\n.ql-editor ol li.ql-indent-4:before {\n  content: counter(list-4, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-4 {\n  counter-reset: list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-5 {\n  counter-increment: list-5;\n}\n.ql-editor ol li.ql-indent-5:before {\n  content: counter(list-5, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-5 {\n  counter-reset: list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-6 {\n  counter-increment: list-6;\n}\n.ql-editor ol li.ql-indent-6:before {\n  content: counter(list-6, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-6 {\n  counter-reset: list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-7 {\n  counter-increment: list-7;\n}\n.ql-editor ol li.ql-indent-7:before {\n  content: counter(list-7, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-7 {\n  counter-reset: list-8 list-9;\n}\n.ql-editor ol li.ql-indent-8 {\n  counter-increment: list-8;\n}\n.ql-editor ol li.ql-indent-8:before {\n  content: counter(list-8, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-8 {\n  counter-reset: list-9;\n}\n.ql-editor ol li.ql-indent-9 {\n  counter-increment: list-9;\n}\n.ql-editor ol li.ql-indent-9:before {\n  content: counter(list-9, decimal) '. ';\n}\n.ql-editor .ql-indent-1:not(.ql-direction-rtl) {\n  padding-left: 3em;\n}\n.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {\n  padding-left: 4.5em;\n}\n.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {\n  padding-right: 3em;\n}\n.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {\n  padding-right: 4.5em;\n}\n.ql-editor .ql-indent-2:not(.ql-direction-rtl) {\n  padding-left: 6em;\n}\n.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {\n  padding-left: 7.5em;\n}\n.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {\n  padding-right: 6em;\n}\n.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {\n  padding-right: 7.5em;\n}\n.ql-editor .ql-indent-3:not(.ql-direction-rtl) {\n  padding-left: 9em;\n}\n.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {\n  padding-left: 10.5em;\n}\n.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {\n  padding-right: 9em;\n}\n.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {\n  padding-right: 10.5em;\n}\n.ql-editor .ql-indent-4:not(.ql-direction-rtl) {\n  padding-left: 12em;\n}\n.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {\n  padding-left: 13.5em;\n}\n.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {\n  padding-right: 12em;\n}\n.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {\n  padding-right: 13.5em;\n}\n.ql-editor .ql-indent-5:not(.ql-direction-rtl) {\n  padding-left: 15em;\n}\n.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {\n  padding-left: 16.5em;\n}\n.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {\n  padding-right: 15em;\n}\n.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {\n  padding-right: 16.5em;\n}\n.ql-editor .ql-indent-6:not(.ql-direction-rtl) {\n  padding-left: 18em;\n}\n.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {\n  padding-left: 19.5em;\n}\n.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {\n  padding-right: 18em;\n}\n.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {\n  padding-right: 19.5em;\n}\n.ql-editor .ql-indent-7:not(.ql-direction-rtl) {\n  padding-left: 21em;\n}\n.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {\n  padding-left: 22.5em;\n}\n.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {\n  padding-right: 21em;\n}\n.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {\n  padding-right: 22.5em;\n}\n.ql-editor .ql-indent-8:not(.ql-direction-rtl) {\n  padding-left: 24em;\n}\n.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {\n  padding-left: 25.5em;\n}\n.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {\n  padding-right: 24em;\n}\n.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {\n  padding-right: 25.5em;\n}\n.ql-editor .ql-indent-9:not(.ql-direction-rtl) {\n  padding-left: 27em;\n}\n.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {\n  padding-left: 28.5em;\n}\n.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {\n  padding-right: 27em;\n}\n.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {\n  padding-right: 28.5em;\n}\n.ql-editor .ql-video {\n  display: block;\n  max-width: 100%;\n}\n.ql-editor .ql-video.ql-align-center {\n  margin: 0 auto;\n}\n.ql-editor .ql-video.ql-align-right {\n  margin: 0 0 0 auto;\n}\n.ql-editor .ql-bg-black {\n  background-color: #000;\n}\n.ql-editor .ql-bg-red {\n  background-color: #e60000;\n}\n.ql-editor .ql-bg-orange {\n  background-color: #f90;\n}\n.ql-editor .ql-bg-yellow {\n  background-color: #ff0;\n}\n.ql-editor .ql-bg-green {\n  background-color: #008a00;\n}\n.ql-editor .ql-bg-blue {\n  background-color: #06c;\n}\n.ql-editor .ql-bg-purple {\n  background-color: #93f;\n}\n.ql-editor .ql-color-white {\n  color: #fff;\n}\n.ql-editor .ql-color-red {\n  color: #e60000;\n}\n.ql-editor .ql-color-orange {\n  color: #f90;\n}\n.ql-editor .ql-color-yellow {\n  color: #ff0;\n}\n.ql-editor .ql-color-green {\n  color: #008a00;\n}\n.ql-editor .ql-color-blue {\n  color: #06c;\n}\n.ql-editor .ql-color-purple {\n  color: #93f;\n}\n.ql-editor .ql-font-serif {\n  font-family: Georgia, Times New Roman, serif;\n}\n.ql-editor .ql-font-monospace {\n  font-family: Monaco, Courier New, monospace;\n}\n.ql-editor .ql-size-small {\n  font-size: 0.75em;\n}\n.ql-editor .ql-size-large {\n  font-size: 1.5em;\n}\n.ql-editor .ql-size-huge {\n  font-size: 2.5em;\n}\n.ql-editor .ql-direction-rtl {\n  direction: rtl;\n  text-align: inherit;\n}\n.ql-editor .ql-align-center {\n  text-align: center;\n}\n.ql-editor .ql-align-justify {\n  text-align: justify;\n}\n.ql-editor .ql-align-right {\n  text-align: right;\n}\n.ql-editor.ql-blank::before {\n  color: rgba(0,0,0,0.6);\n  content: attr(data-placeholder);\n  font-style: italic;\n  left: 15px;\n  pointer-events: none;\n  position: absolute;\n  right: 15px;\n}\n.ql-bubble.ql-toolbar:after,\n.ql-bubble .ql-toolbar:after {\n  clear: both;\n  content: '';\n  display: table;\n}\n.ql-bubble.ql-toolbar button,\n.ql-bubble .ql-toolbar button {\n  background: none;\n  border: none;\n  cursor: pointer;\n  display: inline-block;\n  float: left;\n  height: 24px;\n  padding: 3px 5px;\n  width: 28px;\n}\n.ql-bubble.ql-toolbar button svg,\n.ql-bubble .ql-toolbar button svg {\n  float: left;\n  height: 100%;\n}\n.ql-bubble.ql-toolbar button:active:hover,\n.ql-bubble .ql-toolbar button:active:hover {\n  outline: none;\n}\n.ql-bubble.ql-toolbar input.ql-image[type=file],\n.ql-bubble .ql-toolbar input.ql-image[type=file] {\n  display: none;\n}\n.ql-bubble.ql-toolbar button:hover,\n.ql-bubble .ql-toolbar button:hover,\n.ql-bubble.ql-toolbar button:focus,\n.ql-bubble .ql-toolbar button:focus,\n.ql-bubble.ql-toolbar button.ql-active,\n.ql-bubble .ql-toolbar button.ql-active,\n.ql-bubble.ql-toolbar .ql-picker-label:hover,\n.ql-bubble .ql-toolbar .ql-picker-label:hover,\n.ql-bubble.ql-toolbar .ql-picker-label.ql-active,\n.ql-bubble .ql-toolbar .ql-picker-label.ql-active,\n.ql-bubble.ql-toolbar .ql-picker-item:hover,\n.ql-bubble .ql-toolbar .ql-picker-item:hover,\n.ql-bubble.ql-toolbar .ql-picker-item.ql-selected,\n.ql-bubble .ql-toolbar .ql-picker-item.ql-selected {\n  color: #fff;\n}\n.ql-bubble.ql-toolbar button:hover .ql-fill,\n.ql-bubble .ql-toolbar button:hover .ql-fill,\n.ql-bubble.ql-toolbar button:focus .ql-fill,\n.ql-bubble .ql-toolbar button:focus .ql-fill,\n.ql-bubble.ql-toolbar button.ql-active .ql-fill,\n.ql-bubble .ql-toolbar button.ql-active .ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill,\n.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill,\n.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill,\n.ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill,\n.ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill,\n.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill,\n.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\n.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,\n.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {\n  fill: #fff;\n}\n.ql-bubble.ql-toolbar button:hover .ql-stroke,\n.ql-bubble .ql-toolbar button:hover .ql-stroke,\n.ql-bubble.ql-toolbar button:focus .ql-stroke,\n.ql-bubble .ql-toolbar button:focus .ql-stroke,\n.ql-bubble.ql-toolbar button.ql-active .ql-stroke,\n.ql-bubble .ql-toolbar button.ql-active .ql-stroke,\n.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke,\n.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke,\n.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke,\n.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke,\n.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke,\n.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke,\n.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\n.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\n.ql-bubble.ql-toolbar button:hover .ql-stroke-miter,\n.ql-bubble .ql-toolbar button:hover .ql-stroke-miter,\n.ql-bubble.ql-toolbar button:focus .ql-stroke-miter,\n.ql-bubble .ql-toolbar button:focus .ql-stroke-miter,\n.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter,\n.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter,\n.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\n.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\n.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\n.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\n.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\n.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\n.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,\n.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {\n  stroke: #fff;\n}\n@media (pointer: coarse) {\n  .ql-bubble.ql-toolbar button:hover:not(.ql-active),\n  .ql-bubble .ql-toolbar button:hover:not(.ql-active) {\n    color: #ccc;\n  }\n  .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill,\n  .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill,\n  .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,\n  .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {\n    fill: #ccc;\n  }\n  .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke,\n  .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke,\n  .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,\n  .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {\n    stroke: #ccc;\n  }\n}\n.ql-bubble {\n  box-sizing: border-box;\n}\n.ql-bubble * {\n  box-sizing: border-box;\n}\n.ql-bubble .ql-hidden {\n  display: none;\n}\n.ql-bubble .ql-out-bottom,\n.ql-bubble .ql-out-top {\n  visibility: hidden;\n}\n.ql-bubble .ql-tooltip {\n  position: absolute;\n  transform: translateY(10px);\n}\n.ql-bubble .ql-tooltip a {\n  cursor: pointer;\n  text-decoration: none;\n}\n.ql-bubble .ql-tooltip.ql-flip {\n  transform: translateY(-10px);\n}\n.ql-bubble .ql-formats {\n  display: inline-block;\n  vertical-align: middle;\n}\n.ql-bubble .ql-formats:after {\n  clear: both;\n  content: '';\n  display: table;\n}\n.ql-bubble .ql-stroke {\n  fill: none;\n  stroke: #ccc;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n  stroke-width: 2;\n}\n.ql-bubble .ql-stroke-miter {\n  fill: none;\n  stroke: #ccc;\n  stroke-miterlimit: 10;\n  stroke-width: 2;\n}\n.ql-bubble .ql-fill,\n.ql-bubble .ql-stroke.ql-fill {\n  fill: #ccc;\n}\n.ql-bubble .ql-empty {\n  fill: none;\n}\n.ql-bubble .ql-even {\n  fill-rule: evenodd;\n}\n.ql-bubble .ql-thin,\n.ql-bubble .ql-stroke.ql-thin {\n  stroke-width: 1;\n}\n.ql-bubble .ql-transparent {\n  opacity: 0.4;\n}\n.ql-bubble .ql-direction svg:last-child {\n  display: none;\n}\n.ql-bubble .ql-direction.ql-active svg:last-child {\n  display: inline;\n}\n.ql-bubble .ql-direction.ql-active svg:first-child {\n  display: none;\n}\n.ql-bubble .ql-editor h1 {\n  font-size: 2em;\n}\n.ql-bubble .ql-editor h2 {\n  font-size: 1.5em;\n}\n.ql-bubble .ql-editor h3 {\n  font-size: 1.17em;\n}\n.ql-bubble .ql-editor h4 {\n  font-size: 1em;\n}\n.ql-bubble .ql-editor h5 {\n  font-size: 0.83em;\n}\n.ql-bubble .ql-editor h6 {\n  font-size: 0.67em;\n}\n.ql-bubble .ql-editor a {\n  text-decoration: underline;\n}\n.ql-bubble .ql-editor blockquote {\n  border-left: 4px solid #ccc;\n  margin-bottom: 5px;\n  margin-top: 5px;\n  padding-left: 16px;\n}\n.ql-bubble .ql-editor code,\n.ql-bubble .ql-editor pre {\n  background-color: #f0f0f0;\n  border-radius: 3px;\n}\n.ql-bubble .ql-editor pre {\n  white-space: pre-wrap;\n  margin-bottom: 5px;\n  margin-top: 5px;\n  padding: 5px 10px;\n}\n.ql-bubble .ql-editor code {\n  font-size: 85%;\n  padding: 2px 4px;\n}\n.ql-bubble .ql-editor pre.ql-syntax {\n  background-color: #23241f;\n  color: #f8f8f2;\n  overflow: visible;\n}\n.ql-bubble .ql-editor img {\n  max-width: 100%;\n}\n.ql-bubble .ql-picker {\n  color: #ccc;\n  display: inline-block;\n  float: left;\n  font-size: 14px;\n  font-weight: 500;\n  height: 24px;\n  position: relative;\n  vertical-align: middle;\n}\n.ql-bubble .ql-picker-label {\n  cursor: pointer;\n  display: inline-block;\n  height: 100%;\n  padding-left: 8px;\n  padding-right: 2px;\n  position: relative;\n  width: 100%;\n}\n.ql-bubble .ql-picker-label::before {\n  display: inline-block;\n  line-height: 22px;\n}\n.ql-bubble .ql-picker-options {\n  background-color: #444;\n  display: none;\n  min-width: 100%;\n  padding: 4px 8px;\n  position: absolute;\n  white-space: nowrap;\n}\n.ql-bubble .ql-picker-options .ql-picker-item {\n  cursor: pointer;\n  display: block;\n  padding-bottom: 5px;\n  padding-top: 5px;\n}\n.ql-bubble .ql-picker.ql-expanded .ql-picker-label {\n  color: #777;\n  z-index: 2;\n}\n.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill {\n  fill: #777;\n}\n.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke {\n  stroke: #777;\n}\n.ql-bubble .ql-picker.ql-expanded .ql-picker-options {\n  display: block;\n  margin-top: -1px;\n  top: 100%;\n  z-index: 1;\n}\n.ql-bubble .ql-color-picker,\n.ql-bubble .ql-icon-picker {\n  width: 28px;\n}\n.ql-bubble .ql-color-picker .ql-picker-label,\n.ql-bubble .ql-icon-picker .ql-picker-label {\n  padding: 2px 4px;\n}\n.ql-bubble .ql-color-picker .ql-picker-label svg,\n.ql-bubble .ql-icon-picker .ql-picker-label svg {\n  right: 4px;\n}\n.ql-bubble .ql-icon-picker .ql-picker-options {\n  padding: 4px 0px;\n}\n.ql-bubble .ql-icon-picker .ql-picker-item {\n  height: 24px;\n  width: 24px;\n  padding: 2px 4px;\n}\n.ql-bubble .ql-color-picker .ql-picker-options {\n  padding: 3px 5px;\n  width: 152px;\n}\n.ql-bubble .ql-color-picker .ql-picker-item {\n  border: 1px solid transparent;\n  float: left;\n  height: 16px;\n  margin: 2px;\n  padding: 0px;\n  width: 16px;\n}\n.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {\n  position: absolute;\n  margin-top: -9px;\n  right: 0;\n  top: 50%;\n  width: 18px;\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,\n.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,\n.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {\n  content: attr(data-label);\n}\n.ql-bubble .ql-picker.ql-header {\n  width: 98px;\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item::before {\n  content: 'Normal';\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]::before {\n  content: 'Heading 1';\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]::before {\n  content: 'Heading 2';\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]::before {\n  content: 'Heading 3';\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]::before {\n  content: 'Heading 4';\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]::before {\n  content: 'Heading 5';\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]::before,\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]::before {\n  content: 'Heading 6';\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]::before {\n  font-size: 2em;\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]::before {\n  font-size: 1.5em;\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]::before {\n  font-size: 1.17em;\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]::before {\n  font-size: 1em;\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]::before {\n  font-size: 0.83em;\n}\n.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]::before {\n  font-size: 0.67em;\n}\n.ql-bubble .ql-picker.ql-font {\n  width: 108px;\n}\n.ql-bubble .ql-picker.ql-font .ql-picker-label::before,\n.ql-bubble .ql-picker.ql-font .ql-picker-item::before {\n  content: 'Sans Serif';\n}\n.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,\n.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\n  content: 'Serif';\n}\n.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,\n.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\n  content: 'Monospace';\n}\n.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\n  font-family: Georgia, Times New Roman, serif;\n}\n.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\n  font-family: Monaco, Courier New, monospace;\n}\n.ql-bubble .ql-picker.ql-size {\n  width: 98px;\n}\n.ql-bubble .ql-picker.ql-size .ql-picker-label::before,\n.ql-bubble .ql-picker.ql-size .ql-picker-item::before {\n  content: 'Normal';\n}\n.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]::before,\n.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\n  content: 'Small';\n}\n.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]::before,\n.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\n  content: 'Large';\n}\n.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,\n.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\n  content: 'Huge';\n}\n.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\n  font-size: 10px;\n}\n.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\n  font-size: 18px;\n}\n.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\n  font-size: 32px;\n}\n.ql-bubble .ql-color-picker.ql-background .ql-picker-item {\n  background-color: #fff;\n}\n.ql-bubble .ql-color-picker.ql-color .ql-picker-item {\n  background-color: #000;\n}\n.ql-bubble .ql-toolbar .ql-formats {\n  margin: 8px 12px 8px 0px;\n}\n.ql-bubble .ql-toolbar .ql-formats:first-child {\n  margin-left: 12px;\n}\n.ql-bubble .ql-color-picker svg {\n  margin: 1px;\n}\n.ql-bubble .ql-color-picker .ql-picker-item.ql-selected,\n.ql-bubble .ql-color-picker .ql-picker-item:hover {\n  border-color: #fff;\n}\n.ql-bubble .ql-tooltip {\n  background-color: #444;\n  border-radius: 25px;\n  color: #fff;\n}\n.ql-bubble .ql-tooltip-arrow {\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  content: \" \";\n  display: block;\n  left: 50%;\n  margin-left: -6px;\n  position: absolute;\n}\n.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow {\n  border-bottom: 6px solid #444;\n  top: -6px;\n}\n.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow {\n  border-top: 6px solid #444;\n  bottom: -6px;\n}\n.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor {\n  display: block;\n}\n.ql-bubble .ql-tooltip.ql-editing .ql-formats {\n  visibility: hidden;\n}\n.ql-bubble .ql-tooltip-editor {\n  display: none;\n}\n.ql-bubble .ql-tooltip-editor input[type=text] {\n  background: transparent;\n  border: none;\n  color: #fff;\n  font-size: 13px;\n  height: 100%;\n  outline: none;\n  padding: 10px 20px;\n  position: absolute;\n  width: 100%;\n}\n.ql-bubble .ql-tooltip-editor a {\n  top: 10px;\n  position: absolute;\n  right: 20px;\n}\n.ql-bubble .ql-tooltip-editor a:before {\n  color: #ccc;\n  content: \"\\D7\";\n  font-size: 16px;\n  font-weight: bold;\n}\n.ql-container.ql-bubble:not(.ql-disabled) a {\n  position: relative;\n  white-space: nowrap;\n}\n.ql-container.ql-bubble:not(.ql-disabled) a::before {\n  background-color: #444;\n  border-radius: 15px;\n  top: -5px;\n  font-size: 12px;\n  color: #fff;\n  content: attr(href);\n  font-weight: normal;\n  overflow: hidden;\n  padding: 5px 15px;\n  text-decoration: none;\n  z-index: 1;\n}\n.ql-container.ql-bubble:not(.ql-disabled) a::after {\n  border-top: 6px solid #444;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  top: 0;\n  content: \" \";\n  height: 0;\n  width: 0;\n}\n.ql-container.ql-bubble:not(.ql-disabled) a::before,\n.ql-container.ql-bubble:not(.ql-disabled) a::after {\n  left: 0;\n  margin-left: 50%;\n  position: absolute;\n  transform: translate(-50%, -100%);\n  transition: visibility 0s ease 200ms;\n  visibility: hidden;\n}\n.ql-container.ql-bubble:not(.ql-disabled) a:hover::before,\n.ql-container.ql-bubble:not(.ql-disabled) a:hover::after {\n  visibility: visible;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/quill/dist/quill.core.css",
    "content": "/*!\n * Quill Editor v1.3.6\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n.ql-container {\n  box-sizing: border-box;\n  font-family: Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  height: 100%;\n  margin: 0px;\n  position: relative;\n}\n.ql-container.ql-disabled .ql-tooltip {\n  visibility: hidden;\n}\n.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {\n  pointer-events: none;\n}\n.ql-clipboard {\n  left: -100000px;\n  height: 1px;\n  overflow-y: hidden;\n  position: absolute;\n  top: 50%;\n}\n.ql-clipboard p {\n  margin: 0;\n  padding: 0;\n}\n.ql-editor {\n  box-sizing: border-box;\n  line-height: 1.42;\n  height: 100%;\n  outline: none;\n  overflow-y: auto;\n  padding: 12px 15px;\n  tab-size: 4;\n  -moz-tab-size: 4;\n  text-align: left;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n}\n.ql-editor > * {\n  cursor: text;\n}\n.ql-editor p,\n.ql-editor ol,\n.ql-editor ul,\n.ql-editor pre,\n.ql-editor blockquote,\n.ql-editor h1,\n.ql-editor h2,\n.ql-editor h3,\n.ql-editor h4,\n.ql-editor h5,\n.ql-editor h6 {\n  margin: 0;\n  padding: 0;\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol,\n.ql-editor ul {\n  padding-left: 1.5em;\n}\n.ql-editor ol > li,\n.ql-editor ul > li {\n  list-style-type: none;\n}\n.ql-editor ul > li::before {\n  content: '\\2022';\n}\n.ql-editor ul[data-checked=true],\n.ql-editor ul[data-checked=false] {\n  pointer-events: none;\n}\n.ql-editor ul[data-checked=true] > li *,\n.ql-editor ul[data-checked=false] > li * {\n  pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before,\n.ql-editor ul[data-checked=false] > li::before {\n  color: #777;\n  cursor: pointer;\n  pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before {\n  content: '\\2611';\n}\n.ql-editor ul[data-checked=false] > li::before {\n  content: '\\2610';\n}\n.ql-editor li::before {\n  display: inline-block;\n  white-space: nowrap;\n  width: 1.2em;\n}\n.ql-editor li:not(.ql-direction-rtl)::before {\n  margin-left: -1.5em;\n  margin-right: 0.3em;\n  text-align: right;\n}\n.ql-editor li.ql-direction-rtl::before {\n  margin-left: 0.3em;\n  margin-right: -1.5em;\n}\n.ql-editor ol li:not(.ql-direction-rtl),\n.ql-editor ul li:not(.ql-direction-rtl) {\n  padding-left: 1.5em;\n}\n.ql-editor ol li.ql-direction-rtl,\n.ql-editor ul li.ql-direction-rtl {\n  padding-right: 1.5em;\n}\n.ql-editor ol li {\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n  counter-increment: list-0;\n}\n.ql-editor ol li:before {\n  content: counter(list-0, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n  counter-increment: list-1;\n}\n.ql-editor ol li.ql-indent-1:before {\n  content: counter(list-1, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n  counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-2 {\n  counter-increment: list-2;\n}\n.ql-editor ol li.ql-indent-2:before {\n  content: counter(list-2, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-2 {\n  counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-3 {\n  counter-increment: list-3;\n}\n.ql-editor ol li.ql-indent-3:before {\n  content: counter(list-3, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-3 {\n  counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-4 {\n  counter-increment: list-4;\n}\n.ql-editor ol li.ql-indent-4:before {\n  content: counter(list-4, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-4 {\n  counter-reset: list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-5 {\n  counter-increment: list-5;\n}\n.ql-editor ol li.ql-indent-5:before {\n  content: counter(list-5, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-5 {\n  counter-reset: list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-6 {\n  counter-increment: list-6;\n}\n.ql-editor ol li.ql-indent-6:before {\n  content: counter(list-6, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-6 {\n  counter-reset: list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-7 {\n  counter-increment: list-7;\n}\n.ql-editor ol li.ql-indent-7:before {\n  content: counter(list-7, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-7 {\n  counter-reset: list-8 list-9;\n}\n.ql-editor ol li.ql-indent-8 {\n  counter-increment: list-8;\n}\n.ql-editor ol li.ql-indent-8:before {\n  content: counter(list-8, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-8 {\n  counter-reset: list-9;\n}\n.ql-editor ol li.ql-indent-9 {\n  counter-increment: list-9;\n}\n.ql-editor ol li.ql-indent-9:before {\n  content: counter(list-9, decimal) '. ';\n}\n.ql-editor .ql-indent-1:not(.ql-direction-rtl) {\n  padding-left: 3em;\n}\n.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {\n  padding-left: 4.5em;\n}\n.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {\n  padding-right: 3em;\n}\n.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {\n  padding-right: 4.5em;\n}\n.ql-editor .ql-indent-2:not(.ql-direction-rtl) {\n  padding-left: 6em;\n}\n.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {\n  padding-left: 7.5em;\n}\n.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {\n  padding-right: 6em;\n}\n.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {\n  padding-right: 7.5em;\n}\n.ql-editor .ql-indent-3:not(.ql-direction-rtl) {\n  padding-left: 9em;\n}\n.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {\n  padding-left: 10.5em;\n}\n.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {\n  padding-right: 9em;\n}\n.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {\n  padding-right: 10.5em;\n}\n.ql-editor .ql-indent-4:not(.ql-direction-rtl) {\n  padding-left: 12em;\n}\n.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {\n  padding-left: 13.5em;\n}\n.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {\n  padding-right: 12em;\n}\n.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {\n  padding-right: 13.5em;\n}\n.ql-editor .ql-indent-5:not(.ql-direction-rtl) {\n  padding-left: 15em;\n}\n.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {\n  padding-left: 16.5em;\n}\n.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {\n  padding-right: 15em;\n}\n.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {\n  padding-right: 16.5em;\n}\n.ql-editor .ql-indent-6:not(.ql-direction-rtl) {\n  padding-left: 18em;\n}\n.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {\n  padding-left: 19.5em;\n}\n.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {\n  padding-right: 18em;\n}\n.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {\n  padding-right: 19.5em;\n}\n.ql-editor .ql-indent-7:not(.ql-direction-rtl) {\n  padding-left: 21em;\n}\n.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {\n  padding-left: 22.5em;\n}\n.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {\n  padding-right: 21em;\n}\n.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {\n  padding-right: 22.5em;\n}\n.ql-editor .ql-indent-8:not(.ql-direction-rtl) {\n  padding-left: 24em;\n}\n.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {\n  padding-left: 25.5em;\n}\n.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {\n  padding-right: 24em;\n}\n.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {\n  padding-right: 25.5em;\n}\n.ql-editor .ql-indent-9:not(.ql-direction-rtl) {\n  padding-left: 27em;\n}\n.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {\n  padding-left: 28.5em;\n}\n.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {\n  padding-right: 27em;\n}\n.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {\n  padding-right: 28.5em;\n}\n.ql-editor .ql-video {\n  display: block;\n  max-width: 100%;\n}\n.ql-editor .ql-video.ql-align-center {\n  margin: 0 auto;\n}\n.ql-editor .ql-video.ql-align-right {\n  margin: 0 0 0 auto;\n}\n.ql-editor .ql-bg-black {\n  background-color: #000;\n}\n.ql-editor .ql-bg-red {\n  background-color: #e60000;\n}\n.ql-editor .ql-bg-orange {\n  background-color: #f90;\n}\n.ql-editor .ql-bg-yellow {\n  background-color: #ff0;\n}\n.ql-editor .ql-bg-green {\n  background-color: #008a00;\n}\n.ql-editor .ql-bg-blue {\n  background-color: #06c;\n}\n.ql-editor .ql-bg-purple {\n  background-color: #93f;\n}\n.ql-editor .ql-color-white {\n  color: #fff;\n}\n.ql-editor .ql-color-red {\n  color: #e60000;\n}\n.ql-editor .ql-color-orange {\n  color: #f90;\n}\n.ql-editor .ql-color-yellow {\n  color: #ff0;\n}\n.ql-editor .ql-color-green {\n  color: #008a00;\n}\n.ql-editor .ql-color-blue {\n  color: #06c;\n}\n.ql-editor .ql-color-purple {\n  color: #93f;\n}\n.ql-editor .ql-font-serif {\n  font-family: Georgia, Times New Roman, serif;\n}\n.ql-editor .ql-font-monospace {\n  font-family: Monaco, Courier New, monospace;\n}\n.ql-editor .ql-size-small {\n  font-size: 0.75em;\n}\n.ql-editor .ql-size-large {\n  font-size: 1.5em;\n}\n.ql-editor .ql-size-huge {\n  font-size: 2.5em;\n}\n.ql-editor .ql-direction-rtl {\n  direction: rtl;\n  text-align: inherit;\n}\n.ql-editor .ql-align-center {\n  text-align: center;\n}\n.ql-editor .ql-align-justify {\n  text-align: justify;\n}\n.ql-editor .ql-align-right {\n  text-align: right;\n}\n.ql-editor.ql-blank::before {\n  color: rgba(0,0,0,0.6);\n  content: attr(data-placeholder);\n  font-style: italic;\n  left: 15px;\n  pointer-events: none;\n  position: absolute;\n  right: 15px;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/quill/dist/quill.core.js",
    "content": "/*!\n * Quill Editor v1.3.6\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 110);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n    Scope: Registry.Scope,\n    create: Registry.create,\n    find: Registry.find,\n    query: Registry.query,\n    register: Registry.register,\n    Container: container_1.default,\n    Format: format_1.default,\n    Leaf: leaf_1.default,\n    Embed: embed_1.default,\n    Scroll: scroll_1.default,\n    Block: block_1.default,\n    Inline: inline_1.default,\n    Text: text_1.default,\n    Attributor: {\n        Attribute: attributor_1.default,\n        Class: class_1.default,\n        Style: style_1.default,\n        Store: store_1.default,\n    },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n    __extends(ParchmentError, _super);\n    function ParchmentError(message) {\n        var _this = this;\n        message = '[Parchment] ' + message;\n        _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = _this.constructor.name;\n        return _this;\n    }\n    return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n    var match = query(input);\n    if (match == null) {\n        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n    }\n    var BlotClass = match;\n    var node = \n    // @ts-ignore\n    input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n    return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n    if (bubble === void 0) { bubble = false; }\n    if (node == null)\n        return null;\n    // @ts-ignore\n    if (node[exports.DATA_KEY] != null)\n        return node[exports.DATA_KEY].blot;\n    if (bubble)\n        return find(node.parentNode, bubble);\n    return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n    if (scope === void 0) { scope = Scope.ANY; }\n    var match;\n    if (typeof query === 'string') {\n        match = types[query] || attributes[query];\n        // @ts-ignore\n    }\n    else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n        match = types['text'];\n    }\n    else if (typeof query === 'number') {\n        if (query & Scope.LEVEL & Scope.BLOCK) {\n            match = types['block'];\n        }\n        else if (query & Scope.LEVEL & Scope.INLINE) {\n            match = types['inline'];\n        }\n    }\n    else if (query instanceof HTMLElement) {\n        var names = (query.getAttribute('class') || '').split(/\\s+/);\n        for (var i in names) {\n            match = classes[names[i]];\n            if (match)\n                break;\n        }\n        match = match || tags[query.tagName];\n    }\n    if (match == null)\n        return null;\n    // @ts-ignore\n    if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n        return match;\n    return null;\n}\nexports.query = query;\nfunction register() {\n    var Definitions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        Definitions[_i] = arguments[_i];\n    }\n    if (Definitions.length > 1) {\n        return Definitions.map(function (d) {\n            return register(d);\n        });\n    }\n    var Definition = Definitions[0];\n    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n        throw new ParchmentError('Invalid definition');\n    }\n    else if (Definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n    }\n    types[Definition.blotName || Definition.attrName] = Definition;\n    if (typeof Definition.keyName === 'string') {\n        attributes[Definition.keyName] = Definition;\n    }\n    else {\n        if (Definition.className != null) {\n            classes[Definition.className] = Definition;\n        }\n        if (Definition.tagName != null) {\n            if (Array.isArray(Definition.tagName)) {\n                Definition.tagName = Definition.tagName.map(function (tagName) {\n                    return tagName.toUpperCase();\n                });\n            }\n            else {\n                Definition.tagName = Definition.tagName.toUpperCase();\n            }\n            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n            tagNames.forEach(function (tag) {\n                if (tags[tag] == null || Definition.className == null) {\n                    tags[tag] = Definition;\n                }\n            });\n        }\n    }\n    return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n  // Assume we are given a well formed ops\n  if (Array.isArray(ops)) {\n    this.ops = ops;\n  } else if (ops != null && Array.isArray(ops.ops)) {\n    this.ops = ops.ops;\n  } else {\n    this.ops = [];\n  }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n  var newOp = {};\n  if (text.length === 0) return this;\n  newOp.insert = text;\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n  if (length <= 0) return this;\n  return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n  if (length <= 0) return this;\n  var newOp = { retain: length };\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n  var index = this.ops.length;\n  var lastOp = this.ops[index - 1];\n  newOp = extend(true, {}, newOp);\n  if (typeof lastOp === 'object') {\n    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n      return this;\n    }\n    // Since it does not matter if we insert before or after deleting at the same index,\n    // always prefer to insert first\n    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n      index -= 1;\n      lastOp = this.ops[index - 1];\n      if (typeof lastOp !== 'object') {\n        this.ops.unshift(newOp);\n        return this;\n      }\n    }\n    if (equal(newOp.attributes, lastOp.attributes)) {\n      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      }\n    }\n  }\n  if (index === this.ops.length) {\n    this.ops.push(newOp);\n  } else {\n    this.ops.splice(index, 0, newOp);\n  }\n  return this;\n};\n\nDelta.prototype.chop = function () {\n  var lastOp = this.ops[this.ops.length - 1];\n  if (lastOp && lastOp.retain && !lastOp.attributes) {\n    this.ops.pop();\n  }\n  return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n  return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n  this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n  return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n  var passed = [], failed = [];\n  this.forEach(function(op) {\n    var target = predicate(op) ? passed : failed;\n    target.push(op);\n  });\n  return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n  return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n  return this.reduce(function (length, elem) {\n    if (elem.insert) {\n      return length + op.length(elem);\n    } else if (elem.delete) {\n      return length - elem.delete;\n    }\n    return length;\n  }, 0);\n};\n\nDelta.prototype.length = function () {\n  return this.reduce(function (length, elem) {\n    return length + op.length(elem);\n  }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n  start = start || 0;\n  if (typeof end !== 'number') end = Infinity;\n  var ops = [];\n  var iter = op.iterator(this.ops);\n  var index = 0;\n  while (index < end && iter.hasNext()) {\n    var nextOp;\n    if (index < start) {\n      nextOp = iter.next(start - index);\n    } else {\n      nextOp = iter.next(end - index);\n      ops.push(nextOp);\n    }\n    index += op.length(nextOp);\n  }\n  return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else if (thisIter.peekType() === 'delete') {\n      delta.push(thisIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (typeof otherOp.retain === 'number') {\n        var newOp = {};\n        if (typeof thisOp.retain === 'number') {\n          newOp.retain = length;\n        } else {\n          newOp.insert = thisOp.insert;\n        }\n        // Preserve null when composing with a retain, otherwise remove it for inserts\n        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n        if (attributes) newOp.attributes = attributes;\n        delta.push(newOp);\n      // Other op should be delete, we could be an insert or retain\n      // Insert + delete cancels out\n      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n        delta.push(otherOp);\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n  var delta = new Delta(this.ops.slice());\n  if (other.ops.length > 0) {\n    delta.push(other.ops[0]);\n    delta.ops = delta.ops.concat(other.ops.slice(1));\n  }\n  return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n  if (this.ops === other.ops) {\n    return new Delta();\n  }\n  var strings = [this, other].map(function (delta) {\n    return delta.map(function (op) {\n      if (op.insert != null) {\n        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n      }\n      var prep = (delta === other) ? 'on' : 'with';\n      throw new Error('diff() called ' + prep + ' non-document');\n    }).join('');\n  });\n  var delta = new Delta();\n  var diffResult = diff(strings[0], strings[1], index);\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  diffResult.forEach(function (component) {\n    var length = component[1].length;\n    while (length > 0) {\n      var opLength = 0;\n      switch (component[0]) {\n        case diff.INSERT:\n          opLength = Math.min(otherIter.peekLength(), length);\n          delta.push(otherIter.next(opLength));\n          break;\n        case diff.DELETE:\n          opLength = Math.min(length, thisIter.peekLength());\n          thisIter.next(opLength);\n          delta['delete'](opLength);\n          break;\n        case diff.EQUAL:\n          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n          var thisOp = thisIter.next(opLength);\n          var otherOp = otherIter.next(opLength);\n          if (equal(thisOp.insert, otherOp.insert)) {\n            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n          } else {\n            delta.push(otherOp)['delete'](opLength);\n          }\n          break;\n      }\n      length -= opLength;\n    }\n  });\n  return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n  newline = newline || '\\n';\n  var iter = op.iterator(this.ops);\n  var line = new Delta();\n  var i = 0;\n  while (iter.hasNext()) {\n    if (iter.peekType() !== 'insert') return;\n    var thisOp = iter.peek();\n    var start = op.length(thisOp) - iter.peekLength();\n    var index = typeof thisOp.insert === 'string' ?\n      thisOp.insert.indexOf(newline, start) - start : -1;\n    if (index < 0) {\n      line.push(iter.next());\n    } else if (index > 0) {\n      line.push(iter.next(index));\n    } else {\n      if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n        return;\n      }\n      i += 1;\n      line = new Delta();\n    }\n  }\n  if (line.length() > 0) {\n    predicate(line, {}, i);\n  }\n};\n\nDelta.prototype.transform = function (other, priority) {\n  priority = !!priority;\n  if (typeof other === 'number') {\n    return this.transformPosition(other, priority);\n  }\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n      delta.retain(op.length(thisIter.next()));\n    } else if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (thisOp['delete']) {\n        // Our delete either makes their delete redundant or removes their retain\n        continue;\n      } else if (otherOp['delete']) {\n        delta.push(otherOp);\n      } else {\n        // We retain either their retain or insert\n        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n  priority = !!priority;\n  var thisIter = op.iterator(this.ops);\n  var offset = 0;\n  while (thisIter.hasNext() && offset <= index) {\n    var length = thisIter.peekLength();\n    var nextType = thisIter.peekType();\n    thisIter.next();\n    if (nextType === 'delete') {\n      index -= Math.min(length, index - offset);\n      continue;\n    } else if (nextType === 'insert' && (offset < index || !priority)) {\n      index += length;\n    }\n    offset += length;\n  }\n  return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n  _inherits(BlockEmbed, _Parchment$Embed);\n\n  function BlockEmbed() {\n    _classCallCheck(this, BlockEmbed);\n\n    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n  }\n\n  _createClass(BlockEmbed, [{\n    key: 'attach',\n    value: function attach() {\n      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n    }\n  }, {\n    key: 'delta',\n    value: function delta() {\n      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n      if (attribute != null) {\n        this.attributes.attribute(attribute, value);\n      }\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      this.format(name, value);\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (typeof value === 'string' && value.endsWith('\\n')) {\n        var block = _parchment2.default.create(Block.blotName);\n        this.parent.insertBefore(block, index === 0 ? this : this.next);\n        block.insertAt(0, value.slice(0, -1));\n      } else {\n        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n    }\n  }]);\n\n  return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n  _inherits(Block, _Parchment$Block);\n\n  function Block(domNode) {\n    _classCallCheck(this, Block);\n\n    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n    _this2.cache = {};\n    return _this2;\n  }\n\n  _createClass(Block, [{\n    key: 'delta',\n    value: function delta() {\n      if (this.cache.delta == null) {\n        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n          if (leaf.length() === 0) {\n            return delta;\n          } else {\n            return delta.insert(leaf.value(), bubbleFormats(leaf));\n          }\n        }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n      }\n      return this.cache.delta;\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n      this.cache = {};\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length <= 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n        if (index + length === this.length()) {\n          this.format(name, value);\n        }\n      } else {\n        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n      if (value.length === 0) return;\n      var lines = value.split('\\n');\n      var text = lines.shift();\n      if (text.length > 0) {\n        if (index < this.length() - 1 || this.children.tail == null) {\n          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n        } else {\n          this.children.tail.insertAt(this.children.tail.length(), text);\n        }\n        this.cache = {};\n      }\n      var block = this;\n      lines.reduce(function (index, line) {\n        block = block.split(index, true);\n        block.insertAt(0, line);\n        return line.length;\n      }, index + text.length);\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      var head = this.children.head;\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n      if (head instanceof _break2.default) {\n        head.remove();\n      }\n      this.cache = {};\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      if (this.cache.length == null) {\n        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n      }\n      return this.cache.length;\n    }\n  }, {\n    key: 'moveChildren',\n    value: function moveChildren(target, ref) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n      this.cache = {};\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n      this.cache = {};\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n    }\n  }, {\n    key: 'removeChild',\n    value: function removeChild(child) {\n      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n      this.cache = {};\n    }\n  }, {\n    key: 'split',\n    value: function split(index) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n        var clone = this.clone();\n        if (index === 0) {\n          this.parent.insertBefore(clone, this);\n          return this;\n        } else {\n          this.parent.insertBefore(clone, this.next);\n          return clone;\n        }\n      } else {\n        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n        this.cache = {};\n        return next;\n      }\n    }\n  }]);\n\n  return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (blot == null) return formats;\n  if (typeof blot.formats === 'function') {\n    formats = (0, _extend2.default)(formats, blot.formats());\n  }\n  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n  _createClass(Quill, null, [{\n    key: 'debug',\n    value: function debug(limit) {\n      if (limit === true) {\n        limit = 'log';\n      }\n      _logger2.default.level(limit);\n    }\n  }, {\n    key: 'find',\n    value: function find(node) {\n      return node.__quill || _parchment2.default.find(node);\n    }\n  }, {\n    key: 'import',\n    value: function _import(name) {\n      if (this.imports[name] == null) {\n        debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n      }\n      return this.imports[name];\n    }\n  }, {\n    key: 'register',\n    value: function register(path, target) {\n      var _this = this;\n\n      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (typeof path !== 'string') {\n        var name = path.attrName || path.blotName;\n        if (typeof name === 'string') {\n          // register(Blot | Attributor, overwrite)\n          this.register('formats/' + name, path, target);\n        } else {\n          Object.keys(path).forEach(function (key) {\n            _this.register(key, path[key], target);\n          });\n        }\n      } else {\n        if (this.imports[path] != null && !overwrite) {\n          debug.warn('Overwriting ' + path + ' with', target);\n        }\n        this.imports[path] = target;\n        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n          _parchment2.default.register(target);\n        } else if (path.startsWith('modules') && typeof target.register === 'function') {\n          target.register();\n        }\n      }\n    }\n  }]);\n\n  function Quill(container) {\n    var _this2 = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Quill);\n\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    var html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    this.container.__quill = this;\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.root.setAttribute('data-gramm', false);\n    this.scrollingContainer = this.options.scrollingContainer || this.root;\n    this.emitter = new _emitter4.default();\n    this.scroll = _parchment2.default.create(this.root, {\n      emitter: this.emitter,\n      whitelist: this.options.formats\n    });\n    this.editor = new _editor2.default(this.scroll);\n    this.selection = new _selection2.default(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.theme.init();\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n      if (type === _emitter4.default.events.TEXT_CHANGE) {\n        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n      var range = _this2.selection.lastRange;\n      var index = range && range.length === 0 ? range.index : undefined;\n      modify.call(_this2, function () {\n        return _this2.editor.update(null, mutations, index);\n      }, source);\n    });\n    var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n    this.setContents(contents);\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n  }\n\n  _createClass(Quill, [{\n    key: 'addContainer',\n    value: function addContainer(container) {\n      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (typeof container === 'string') {\n        var className = container;\n        container = document.createElement('div');\n        container.classList.add(className);\n      }\n      this.container.insertBefore(container, refNode);\n      return container;\n    }\n  }, {\n    key: 'blur',\n    value: function blur() {\n      this.selection.setRange(null);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length, source) {\n      var _this3 = this;\n\n      var _overload = overload(index, length, source);\n\n      var _overload2 = _slicedToArray(_overload, 4);\n\n      index = _overload2[0];\n      length = _overload2[1];\n      source = _overload2[3];\n\n      return modify.call(this, function () {\n        return _this3.editor.deleteText(index, length);\n      }, source, index, -1 * length);\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.enable(false);\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.scroll.enable(enabled);\n      this.container.classList.toggle('ql-disabled', !enabled);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      var scrollTop = this.scrollingContainer.scrollTop;\n      this.selection.focus();\n      this.scrollingContainer.scrollTop = scrollTop;\n      this.scrollIntoView();\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      var _this4 = this;\n\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        var range = _this4.getSelection(true);\n        var change = new _quillDelta2.default();\n        if (range == null) {\n          return change;\n        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n        } else if (range.length === 0) {\n          _this4.selection.format(name, value);\n          return change;\n        } else {\n          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n        }\n        _this4.setSelection(range, _emitter4.default.sources.SILENT);\n        return change;\n      }, source);\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length, name, value, source) {\n      var _this5 = this;\n\n      var formats = void 0;\n\n      var _overload3 = overload(index, length, name, value, source);\n\n      var _overload4 = _slicedToArray(_overload3, 4);\n\n      index = _overload4[0];\n      length = _overload4[1];\n      formats = _overload4[2];\n      source = _overload4[3];\n\n      return modify.call(this, function () {\n        return _this5.editor.formatLine(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length, name, value, source) {\n      var _this6 = this;\n\n      var formats = void 0;\n\n      var _overload5 = overload(index, length, name, value, source);\n\n      var _overload6 = _slicedToArray(_overload5, 4);\n\n      index = _overload6[0];\n      length = _overload6[1];\n      formats = _overload6[2];\n      source = _overload6[3];\n\n      return modify.call(this, function () {\n        return _this6.editor.formatText(index, length, formats);\n      }, source, index, 0);\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var bounds = void 0;\n      if (typeof index === 'number') {\n        bounds = this.selection.getBounds(index, length);\n      } else {\n        bounds = this.selection.getBounds(index.index, index.length);\n      }\n      var containerBounds = this.container.getBoundingClientRect();\n      return {\n        bottom: bounds.bottom - containerBounds.top,\n        height: bounds.height,\n        left: bounds.left - containerBounds.left,\n        right: bounds.right - containerBounds.left,\n        top: bounds.top - containerBounds.top,\n        width: bounds.width\n      };\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload7 = overload(index, length);\n\n      var _overload8 = _slicedToArray(_overload7, 2);\n\n      index = _overload8[0];\n      length = _overload8[1];\n\n      return this.editor.getContents(index, length);\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      if (typeof index === 'number') {\n        return this.editor.getFormat(index, length);\n      } else {\n        return this.editor.getFormat(index.index, index.length);\n      }\n    }\n  }, {\n    key: 'getIndex',\n    value: function getIndex(blot) {\n      return blot.offset(this.scroll);\n    }\n  }, {\n    key: 'getLength',\n    value: function getLength() {\n      return this.scroll.length();\n    }\n  }, {\n    key: 'getLeaf',\n    value: function getLeaf(index) {\n      return this.scroll.leaf(index);\n    }\n  }, {\n    key: 'getLine',\n    value: function getLine(index) {\n      return this.scroll.line(index);\n    }\n  }, {\n    key: 'getLines',\n    value: function getLines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      if (typeof index !== 'number') {\n        return this.scroll.lines(index.index, index.length);\n      } else {\n        return this.scroll.lines(index, length);\n      }\n    }\n  }, {\n    key: 'getModule',\n    value: function getModule(name) {\n      return this.theme.modules[name];\n    }\n  }, {\n    key: 'getSelection',\n    value: function getSelection() {\n      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (focus) this.focus();\n      this.update(); // Make sure we access getRange with editor in consistent state\n      return this.selection.getRange()[0];\n    }\n  }, {\n    key: 'getText',\n    value: function getText() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n      var _overload9 = overload(index, length);\n\n      var _overload10 = _slicedToArray(_overload9, 2);\n\n      index = _overload10[0];\n      length = _overload10[1];\n\n      return this.editor.getText(index, length);\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return this.selection.hasFocus();\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      var _this7 = this;\n\n      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n      return modify.call(this, function () {\n        return _this7.editor.insertEmbed(index, embed, value);\n      }, source, index);\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text, name, value, source) {\n      var _this8 = this;\n\n      var formats = void 0;\n\n      var _overload11 = overload(index, 0, name, value, source);\n\n      var _overload12 = _slicedToArray(_overload11, 4);\n\n      index = _overload12[0];\n      formats = _overload12[2];\n      source = _overload12[3];\n\n      return modify.call(this, function () {\n        return _this8.editor.insertText(index, text, formats);\n      }, source, index, text.length);\n    }\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return !this.container.classList.contains('ql-disabled');\n    }\n  }, {\n    key: 'off',\n    value: function off() {\n      return this.emitter.off.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'on',\n    value: function on() {\n      return this.emitter.on.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'once',\n    value: function once() {\n      return this.emitter.once.apply(this.emitter, arguments);\n    }\n  }, {\n    key: 'pasteHTML',\n    value: function pasteHTML(index, html, source) {\n      this.clipboard.dangerouslyPasteHTML(index, html, source);\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length, source) {\n      var _this9 = this;\n\n      var _overload13 = overload(index, length, source);\n\n      var _overload14 = _slicedToArray(_overload13, 4);\n\n      index = _overload14[0];\n      length = _overload14[1];\n      source = _overload14[3];\n\n      return modify.call(this, function () {\n        return _this9.editor.removeFormat(index, length);\n      }, source, index);\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView() {\n      this.selection.scrollIntoView(this.scrollingContainer);\n    }\n  }, {\n    key: 'setContents',\n    value: function setContents(delta) {\n      var _this10 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        var length = _this10.getLength();\n        var deleted = _this10.editor.deleteText(0, length);\n        var applied = _this10.editor.applyDelta(delta);\n        var lastOp = applied.ops[applied.ops.length - 1];\n        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n          _this10.editor.deleteText(_this10.getLength() - 1, 1);\n          applied.delete(1);\n        }\n        var ret = deleted.compose(applied);\n        return ret;\n      }, source);\n    }\n  }, {\n    key: 'setSelection',\n    value: function setSelection(index, length, source) {\n      if (index == null) {\n        this.selection.setRange(null, length || Quill.sources.API);\n      } else {\n        var _overload15 = overload(index, length, source);\n\n        var _overload16 = _slicedToArray(_overload15, 4);\n\n        index = _overload16[0];\n        length = _overload16[1];\n        source = _overload16[3];\n\n        this.selection.setRange(new _selection.Range(index, length), source);\n        if (source !== _emitter4.default.sources.SILENT) {\n          this.selection.scrollIntoView(this.scrollingContainer);\n        }\n      }\n    }\n  }, {\n    key: 'setText',\n    value: function setText(text) {\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      var delta = new _quillDelta2.default().insert(text);\n      return this.setContents(delta, source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n      this.selection.update(source);\n      return change;\n    }\n  }, {\n    key: 'updateContents',\n    value: function updateContents(delta) {\n      var _this11 = this;\n\n      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n      return modify.call(this, function () {\n        delta = new _quillDelta2.default(delta);\n        return _this11.editor.applyDelta(delta, source);\n      }, source, true);\n    }\n  }]);\n\n  return Quill;\n}();\n\nQuill.DEFAULTS = {\n  bounds: null,\n  formats: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  scrollingContainer: null,\n  strict: true,\n  theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version =  false ? 'dev' : \"1.3.6\";\n\nQuill.imports = {\n  'delta': _quillDelta2.default,\n  'parchment': _parchment2.default,\n  'core/module': _module2.default,\n  'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n  userConfig = (0, _extend2.default)(true, {\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true\n    }\n  }, userConfig);\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = _theme2.default;\n  } else {\n    userConfig.theme = Quill.import('themes/' + userConfig.theme);\n    if (userConfig.theme == null) {\n      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n    }\n  }\n  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function (config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function (module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  var moduleConfig = moduleNames.reduce(function (config, name) {\n    var moduleClass = Quill.import('modules/' + name);\n    if (moduleClass == null) {\n      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n    return config;\n  }, {});\n  // Special case toolbar shorthand\n  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n  ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n    return config;\n  }, {});\n  return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n  if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n    return new _quillDelta2.default();\n  }\n  var range = index == null ? null : this.getSelection();\n  var oldDelta = this.editor.delta;\n  var change = modifier();\n  if (range != null) {\n    if (index === true) index = range.index;\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, _emitter4.default.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    var _emitter;\n\n    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n    if (source !== _emitter4.default.sources.SILENT) {\n      var _emitter2;\n\n      (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n    }\n  }\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  var formats = {};\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value, value = name, name = length, length = index.length, index = index.index;\n    } else {\n      length = index.length, index = index.index;\n    }\n  } else if (typeof length !== 'number') {\n    source = value, value = name, name = length, length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || _emitter4.default.sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  var start = void 0,\n      end = void 0;\n  if (index instanceof _quillDelta2.default) {\n    var _map = [range.index, range.index + range.length].map(function (pos) {\n      return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n    });\n\n    var _map2 = _slicedToArray(_map, 2);\n\n    start = _map2[0];\n    end = _map2[1];\n  } else {\n    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n      if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n      if (length >= 0) {\n        return pos + length;\n      } else {\n        return Math.max(index, pos + length);\n      }\n    });\n\n    var _map4 = _slicedToArray(_map3, 2);\n\n    start = _map4[0];\n    end = _map4[1];\n  }\n  return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n  _inherits(Inline, _Parchment$Inline);\n\n  function Inline() {\n    _classCallCheck(this, Inline);\n\n    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n  }\n\n  _createClass(Inline, [{\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n        var blot = this.isolate(index, length);\n        if (value) {\n          blot.wrap(name, value);\n        }\n      } else {\n        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n        var parent = this.parent.isolate(this.offset(), this.length());\n        this.moveChildren(parent);\n        parent.wrap(this);\n      }\n    }\n  }], [{\n    key: 'compare',\n    value: function compare(self, other) {\n      var selfIndex = Inline.order.indexOf(self);\n      var otherIndex = Inline.order.indexOf(other);\n      if (selfIndex >= 0 || otherIndex >= 0) {\n        return selfIndex - otherIndex;\n      } else if (self === other) {\n        return 0;\n      } else if (self < other) {\n        return -1;\n      } else {\n        return 1;\n      }\n    }\n  }]);\n\n  return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n  _inherits(TextBlot, _Parchment$Text);\n\n  function TextBlot() {\n    _classCallCheck(this, TextBlot);\n\n    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n  }\n\n  return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n  document.addEventListener(eventName, function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n      // TODO use WeakMap\n      if (node.__quill && node.__quill.emitter) {\n        var _node$__quill$emitter;\n\n        (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n      }\n    });\n  });\n});\n\nvar Emitter = function (_EventEmitter) {\n  _inherits(Emitter, _EventEmitter);\n\n  function Emitter() {\n    _classCallCheck(this, Emitter);\n\n    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n    _this.listeners = {};\n    _this.on('error', debug.error);\n    return _this;\n  }\n\n  _createClass(Emitter, [{\n    key: 'emit',\n    value: function emit() {\n      debug.log.apply(debug, arguments);\n      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n    }\n  }, {\n    key: 'handleDOM',\n    value: function handleDOM(event) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      (this.listeners[event.type] || []).forEach(function (_ref) {\n        var node = _ref.node,\n            handler = _ref.handler;\n\n        if (event.target === node || node.contains(event.target)) {\n          handler.apply(undefined, [event].concat(args));\n        }\n      });\n    }\n  }, {\n    key: 'listenDOM',\n    value: function listenDOM(eventName, node, handler) {\n      if (!this.listeners[eventName]) {\n        this.listeners[eventName] = [];\n      }\n      this.listeners[eventName].push({ node: node, handler: handler });\n    }\n  }]);\n\n  return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n  EDITOR_CHANGE: 'editor-change',\n  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n  SCROLL_OPTIMIZE: 'scroll-optimize',\n  SCROLL_UPDATE: 'scroll-update',\n  SELECTION_CHANGE: 'selection-change',\n  TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n  API: 'api',\n  SILENT: 'silent',\n  USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  _classCallCheck(this, Module);\n\n  this.quill = quill;\n  this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    var _console;\n\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function (logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n  level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n    function Attributor(attrName, keyName, options) {\n        if (options === void 0) { options = {}; }\n        this.attrName = attrName;\n        this.keyName = keyName;\n        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n        if (options.scope != null) {\n            // Ignore type bits, force attribute bit\n            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n        }\n        else {\n            this.scope = Registry.Scope.ATTRIBUTE;\n        }\n        if (options.whitelist != null)\n            this.whitelist = options.whitelist;\n    }\n    Attributor.keys = function (node) {\n        return [].map.call(node.attributes, function (item) {\n            return item.name;\n        });\n    };\n    Attributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.setAttribute(this.keyName, value);\n        return true;\n    };\n    Attributor.prototype.canAdd = function (node, value) {\n        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n        if (match == null)\n            return false;\n        if (this.whitelist == null)\n            return true;\n        if (typeof value === 'string') {\n            return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n        }\n        else {\n            return this.whitelist.indexOf(value) > -1;\n        }\n    };\n    Attributor.prototype.remove = function (node) {\n        node.removeAttribute(this.keyName);\n    };\n    Attributor.prototype.value = function (node) {\n        var value = node.getAttribute(this.keyName);\n        if (this.canAdd(node, value) && value) {\n            return value;\n        }\n        return '';\n    };\n    return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n  _inherits(Code, _Inline);\n\n  function Code() {\n    _classCallCheck(this, Code);\n\n    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n  }\n\n  return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n  _inherits(CodeBlock, _Block);\n\n  function CodeBlock() {\n    _classCallCheck(this, CodeBlock);\n\n    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n  }\n\n  _createClass(CodeBlock, [{\n    key: 'delta',\n    value: function delta() {\n      var _this3 = this;\n\n      var text = this.domNode.textContent;\n      if (text.endsWith('\\n')) {\n        // Should always be true\n        text = text.slice(0, -1);\n      }\n      return text.split('\\n').reduce(function (delta, frag) {\n        return delta.insert(frag).insert('\\n', _this3.formats());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (name === this.statics.blotName && value) return;\n\n      var _descendant = this.descendant(_text2.default, this.length() - 1),\n          _descendant2 = _slicedToArray(_descendant, 1),\n          text = _descendant2[0];\n\n      if (text != null) {\n        text.deleteAt(text.length() - 1, 1);\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, name, value) {\n      if (length === 0) return;\n      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n        return;\n      }\n      var nextNewline = this.newlineIndex(index);\n      if (nextNewline < 0 || nextNewline >= index + length) return;\n      var prevNewline = this.newlineIndex(index, true) + 1;\n      var isolateLength = nextNewline - prevNewline + 1;\n      var blot = this.isolate(prevNewline, isolateLength);\n      var next = blot.next;\n      blot.format(name, value);\n      if (next instanceof CodeBlock) {\n        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n      }\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null) return;\n\n      var _descendant3 = this.descendant(_text2.default, index),\n          _descendant4 = _slicedToArray(_descendant3, 2),\n          text = _descendant4[0],\n          offset = _descendant4[1];\n\n      text.insertAt(offset, value);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      var length = this.domNode.textContent.length;\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        return length + 1;\n      }\n      return length;\n    }\n  }, {\n    key: 'newlineIndex',\n    value: function newlineIndex(searchIndex) {\n      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!reverse) {\n        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n        return offset > -1 ? searchIndex + offset : -1;\n      } else {\n        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n      }\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize(context) {\n      if (!this.domNode.textContent.endsWith('\\n')) {\n        this.appendChild(_parchment2.default.create('text', '\\n'));\n      }\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n      var next = this.next;\n      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n        next.optimize(context);\n        next.moveChildren(this);\n        next.remove();\n      }\n    }\n  }, {\n    key: 'replace',\n    value: function replace(target) {\n      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n        var blot = _parchment2.default.find(node);\n        if (blot == null) {\n          node.parentNode.removeChild(node);\n        } else if (blot instanceof _parchment2.default.Embed) {\n          blot.remove();\n        } else {\n          blot.unwrap();\n        }\n      });\n    }\n  }], [{\n    key: 'create',\n    value: function create(value) {\n      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n      domNode.setAttribute('spellcheck', false);\n      return domNode;\n    }\n  }, {\n    key: 'formats',\n    value: function formats() {\n      return true;\n    }\n  }]);\n\n  return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = '  ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n  function Editor(scroll) {\n    _classCallCheck(this, Editor);\n\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  _createClass(Editor, [{\n    key: 'applyDelta',\n    value: function applyDelta(delta) {\n      var _this = this;\n\n      var consumeNextNewline = false;\n      this.scroll.update();\n      var scrollLength = this.scroll.length();\n      this.scroll.batchStart();\n      delta = normalizeDelta(delta);\n      delta.reduce(function (index, op) {\n        var length = op.retain || op.delete || op.insert.length || 1;\n        var attributes = op.attributes || {};\n        if (op.insert != null) {\n          if (typeof op.insert === 'string') {\n            var text = op.insert;\n            if (text.endsWith('\\n') && consumeNextNewline) {\n              consumeNextNewline = false;\n              text = text.slice(0, -1);\n            }\n            if (index >= scrollLength && !text.endsWith('\\n')) {\n              consumeNextNewline = true;\n            }\n            _this.scroll.insertAt(index, text);\n\n            var _scroll$line = _this.scroll.line(index),\n                _scroll$line2 = _slicedToArray(_scroll$line, 2),\n                line = _scroll$line2[0],\n                offset = _scroll$line2[1];\n\n            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n            if (line instanceof _block2.default) {\n              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n                  leaf = _line$descendant2[0];\n\n              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n            }\n            attributes = _op2.default.attributes.diff(formats, attributes) || {};\n          } else if (_typeof(op.insert) === 'object') {\n            var key = Object.keys(op.insert)[0]; // There should only be one key\n            if (key == null) return index;\n            _this.scroll.insertAt(index, key, op.insert[key]);\n          }\n          scrollLength += length;\n        }\n        Object.keys(attributes).forEach(function (name) {\n          _this.scroll.formatAt(index, length, name, attributes[name]);\n        });\n        return index + length;\n      }, 0);\n      delta.reduce(function (index, op) {\n        if (typeof op.delete === 'number') {\n          _this.scroll.deleteAt(index, op.delete);\n          return index;\n        }\n        return index + (op.retain || op.insert.length || 1);\n      }, 0);\n      this.scroll.batchEnd();\n      return this.update(delta);\n    }\n  }, {\n    key: 'deleteText',\n    value: function deleteText(index, length) {\n      this.scroll.deleteAt(index, length);\n      return this.update(new _quillDelta2.default().retain(index).delete(length));\n    }\n  }, {\n    key: 'formatLine',\n    value: function formatLine(index, length) {\n      var _this2 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      this.scroll.update();\n      Object.keys(formats).forEach(function (format) {\n        if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n        var lines = _this2.scroll.lines(index, Math.max(length, 1));\n        var lengthRemaining = length;\n        lines.forEach(function (line) {\n          var lineLength = line.length();\n          if (!(line instanceof _code2.default)) {\n            line.format(format, formats[format]);\n          } else {\n            var codeIndex = index - line.offset(_this2.scroll);\n            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n            line.formatAt(codeIndex, codeLength, format, formats[format]);\n          }\n          lengthRemaining -= lineLength;\n        });\n      });\n      this.scroll.optimize();\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'formatText',\n    value: function formatText(index, length) {\n      var _this3 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      Object.keys(formats).forEach(function (format) {\n        _this3.scroll.formatAt(index, length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'getContents',\n    value: function getContents(index, length) {\n      return this.delta.slice(index, index + length);\n    }\n  }, {\n    key: 'getDelta',\n    value: function getDelta() {\n      return this.scroll.lines().reduce(function (delta, line) {\n        return delta.concat(line.delta());\n      }, new _quillDelta2.default());\n    }\n  }, {\n    key: 'getFormat',\n    value: function getFormat(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var lines = [],\n          leaves = [];\n      if (length === 0) {\n        this.scroll.path(index).forEach(function (path) {\n          var _path = _slicedToArray(path, 1),\n              blot = _path[0];\n\n          if (blot instanceof _block2.default) {\n            lines.push(blot);\n          } else if (blot instanceof _parchment2.default.Leaf) {\n            leaves.push(blot);\n          }\n        });\n      } else {\n        lines = this.scroll.lines(index, length);\n        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n      }\n      var formatsArr = [lines, leaves].map(function (blots) {\n        if (blots.length === 0) return {};\n        var formats = (0, _block.bubbleFormats)(blots.shift());\n        while (Object.keys(formats).length > 0) {\n          var blot = blots.shift();\n          if (blot == null) return formats;\n          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n        }\n        return formats;\n      });\n      return _extend2.default.apply(_extend2.default, formatsArr);\n    }\n  }, {\n    key: 'getText',\n    value: function getText(index, length) {\n      return this.getContents(index, length).filter(function (op) {\n        return typeof op.insert === 'string';\n      }).map(function (op) {\n        return op.insert;\n      }).join('');\n    }\n  }, {\n    key: 'insertEmbed',\n    value: function insertEmbed(index, embed, value) {\n      this.scroll.insertAt(index, embed, value);\n      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n    }\n  }, {\n    key: 'insertText',\n    value: function insertText(index, text) {\n      var _this4 = this;\n\n      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      this.scroll.insertAt(index, text);\n      Object.keys(formats).forEach(function (format) {\n        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n      });\n      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n    }\n  }, {\n    key: 'isBlank',\n    value: function isBlank() {\n      if (this.scroll.children.length == 0) return true;\n      if (this.scroll.children.length > 1) return false;\n      var block = this.scroll.children.head;\n      if (block.statics.blotName !== _block2.default.blotName) return false;\n      if (block.children.length > 1) return false;\n      return block.children.head instanceof _break2.default;\n    }\n  }, {\n    key: 'removeFormat',\n    value: function removeFormat(index, length) {\n      var text = this.getText(index, length);\n\n      var _scroll$line3 = this.scroll.line(index + length),\n          _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n          line = _scroll$line4[0],\n          offset = _scroll$line4[1];\n\n      var suffixLength = 0,\n          suffix = new _quillDelta2.default();\n      if (line != null) {\n        if (!(line instanceof _code2.default)) {\n          suffixLength = line.length() - offset;\n        } else {\n          suffixLength = line.newlineIndex(offset) - offset + 1;\n        }\n        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n      }\n      var contents = this.getContents(index, length + suffixLength);\n      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n      var delta = new _quillDelta2.default().retain(index).concat(diff);\n      return this.applyDelta(delta);\n    }\n  }, {\n    key: 'update',\n    value: function update(change) {\n      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n      var oldDelta = this.delta;\n      if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n        // Optimization for character changes\n        var textBlot = _parchment2.default.find(mutations[0].target);\n        var formats = (0, _block.bubbleFormats)(textBlot);\n        var index = textBlot.offset(this.scroll);\n        var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n        var oldText = new _quillDelta2.default().insert(oldValue);\n        var newText = new _quillDelta2.default().insert(textBlot.value());\n        var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n        change = diffDelta.reduce(function (delta, op) {\n          if (op.insert) {\n            return delta.insert(op.insert, formats);\n          } else {\n            return delta.push(op);\n          }\n        }, new _quillDelta2.default());\n        this.delta = oldDelta.compose(change);\n      } else {\n        this.delta = this.getDelta();\n        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n          change = oldDelta.diff(this.delta, cursorIndex);\n        }\n      }\n      return change;\n    }\n  }]);\n\n  return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function (merged, name) {\n    if (formats[name] == null) return merged;\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n    return merged;\n  }, {});\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function (delta, op) {\n    if (op.insert === 1) {\n      var attributes = (0, _clone2.default)(op.attributes);\n      delete attributes['image'];\n      return delta.insert({ image: op.attributes.image }, attributes);\n    }\n    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n      op = (0, _clone2.default)(op);\n      if (op.attributes.list) {\n        op.attributes.list = 'ordered';\n      } else {\n        op.attributes.list = 'bullet';\n        delete op.attributes.bullet;\n      }\n    }\n    if (typeof op.insert === 'string') {\n      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return delta.insert(text, op.attributes);\n    }\n    return delta.push(op);\n  }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  _classCallCheck(this, Range);\n\n  this.index = index;\n  this.length = length;\n};\n\nvar Selection = function () {\n  function Selection(scroll, emitter) {\n    var _this = this;\n\n    _classCallCheck(this, Selection);\n\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = _parchment2.default.create('cursor', this);\n    // savedRange is last non-null range\n    this.lastRange = this.savedRange = new Range(0, 0);\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM('selectionchange', document, function () {\n      if (!_this.mouseDown) {\n        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n        _this.update(_emitter4.default.sources.SILENT);\n      }\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n      if (!_this.hasFocus()) return;\n      var native = _this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n      // TODO unclear if this has negative side effects\n      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n        try {\n          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n        } catch (ignored) {}\n      });\n    });\n    this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n      if (context.range) {\n        var _context$range = context.range,\n            startNode = _context$range.startNode,\n            startOffset = _context$range.startOffset,\n            endNode = _context$range.endNode,\n            endOffset = _context$range.endOffset;\n\n        _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n      }\n    });\n    this.update(_emitter4.default.sources.SILENT);\n  }\n\n  _createClass(Selection, [{\n    key: 'handleComposition',\n    value: function handleComposition() {\n      var _this2 = this;\n\n      this.root.addEventListener('compositionstart', function () {\n        _this2.composing = true;\n      });\n      this.root.addEventListener('compositionend', function () {\n        _this2.composing = false;\n        if (_this2.cursor.parent) {\n          var range = _this2.cursor.restore();\n          if (!range) return;\n          setTimeout(function () {\n            _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n          }, 1);\n        }\n      });\n    }\n  }, {\n    key: 'handleDragging',\n    value: function handleDragging() {\n      var _this3 = this;\n\n      this.emitter.listenDOM('mousedown', document.body, function () {\n        _this3.mouseDown = true;\n      });\n      this.emitter.listenDOM('mouseup', document.body, function () {\n        _this3.mouseDown = false;\n        _this3.update(_emitter4.default.sources.USER);\n      });\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      if (this.hasFocus()) return;\n      this.root.focus();\n      this.setRange(this.savedRange);\n    }\n  }, {\n    key: 'format',\n    value: function format(_format, value) {\n      if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n      this.scroll.update();\n      var nativeRange = this.getNativeRange();\n      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n      if (nativeRange.start.node !== this.cursor.textNode) {\n        var blot = _parchment2.default.find(nativeRange.start.node, false);\n        if (blot == null) return;\n        // TODO Give blot ability to not split\n        if (blot instanceof _parchment2.default.Leaf) {\n          var after = blot.split(nativeRange.start.offset);\n          blot.parent.insertBefore(this.cursor, after);\n        } else {\n          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n        }\n        this.cursor.attach();\n      }\n      this.cursor.format(_format, value);\n      this.scroll.optimize();\n      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n      this.update();\n    }\n  }, {\n    key: 'getBounds',\n    value: function getBounds(index) {\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n      var scrollLength = this.scroll.length();\n      index = Math.min(index, scrollLength - 1);\n      length = Math.min(index + length, scrollLength - 1) - index;\n      var node = void 0,\n          _scroll$leaf = this.scroll.leaf(index),\n          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n          leaf = _scroll$leaf2[0],\n          offset = _scroll$leaf2[1];\n      if (leaf == null) return null;\n\n      var _leaf$position = leaf.position(offset, true);\n\n      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n      node = _leaf$position2[0];\n      offset = _leaf$position2[1];\n\n      var range = document.createRange();\n      if (length > 0) {\n        range.setStart(node, offset);\n\n        var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n        leaf = _scroll$leaf4[0];\n        offset = _scroll$leaf4[1];\n\n        if (leaf == null) return null;\n\n        var _leaf$position3 = leaf.position(offset, true);\n\n        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n        node = _leaf$position4[0];\n        offset = _leaf$position4[1];\n\n        range.setEnd(node, offset);\n        return range.getBoundingClientRect();\n      } else {\n        var side = 'left';\n        var rect = void 0;\n        if (node instanceof Text) {\n          if (offset < node.data.length) {\n            range.setStart(node, offset);\n            range.setEnd(node, offset + 1);\n          } else {\n            range.setStart(node, offset - 1);\n            range.setEnd(node, offset);\n            side = 'right';\n          }\n          rect = range.getBoundingClientRect();\n        } else {\n          rect = leaf.domNode.getBoundingClientRect();\n          if (offset > 0) side = 'right';\n        }\n        return {\n          bottom: rect.top + rect.height,\n          height: rect.height,\n          left: rect[side],\n          right: rect[side],\n          top: rect.top,\n          width: 0\n        };\n      }\n    }\n  }, {\n    key: 'getNativeRange',\n    value: function getNativeRange() {\n      var selection = document.getSelection();\n      if (selection == null || selection.rangeCount <= 0) return null;\n      var nativeRange = selection.getRangeAt(0);\n      if (nativeRange == null) return null;\n      var range = this.normalizeNative(nativeRange);\n      debug.info('getNativeRange', range);\n      return range;\n    }\n  }, {\n    key: 'getRange',\n    value: function getRange() {\n      var normalized = this.getNativeRange();\n      if (normalized == null) return [null, null];\n      var range = this.normalizedToRange(normalized);\n      return [range, normalized];\n    }\n  }, {\n    key: 'hasFocus',\n    value: function hasFocus() {\n      return document.activeElement === this.root;\n    }\n  }, {\n    key: 'normalizedToRange',\n    value: function normalizedToRange(range) {\n      var _this4 = this;\n\n      var positions = [[range.start.node, range.start.offset]];\n      if (!range.native.collapsed) {\n        positions.push([range.end.node, range.end.offset]);\n      }\n      var indexes = positions.map(function (position) {\n        var _position = _slicedToArray(position, 2),\n            node = _position[0],\n            offset = _position[1];\n\n        var blot = _parchment2.default.find(node, true);\n        var index = blot.offset(_this4.scroll);\n        if (offset === 0) {\n          return index;\n        } else if (blot instanceof _parchment2.default.Container) {\n          return index + blot.length();\n        } else {\n          return index + blot.index(node, offset);\n        }\n      });\n      var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n      var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n      return new Range(start, end - start);\n    }\n  }, {\n    key: 'normalizeNative',\n    value: function normalizeNative(nativeRange) {\n      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n        return null;\n      }\n      var range = {\n        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n        native: nativeRange\n      };\n      [range.start, range.end].forEach(function (position) {\n        var node = position.node,\n            offset = position.offset;\n        while (!(node instanceof Text) && node.childNodes.length > 0) {\n          if (node.childNodes.length > offset) {\n            node = node.childNodes[offset];\n            offset = 0;\n          } else if (node.childNodes.length === offset) {\n            node = node.lastChild;\n            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n          } else {\n            break;\n          }\n        }\n        position.node = node, position.offset = offset;\n      });\n      return range;\n    }\n  }, {\n    key: 'rangeToNative',\n    value: function rangeToNative(range) {\n      var _this5 = this;\n\n      var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      var args = [];\n      var scrollLength = this.scroll.length();\n      indexes.forEach(function (index, i) {\n        index = Math.min(scrollLength - 1, index);\n        var node = void 0,\n            _scroll$leaf5 = _this5.scroll.leaf(index),\n            _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n            leaf = _scroll$leaf6[0],\n            offset = _scroll$leaf6[1];\n        var _leaf$position5 = leaf.position(offset, i !== 0);\n\n        var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n        node = _leaf$position6[0];\n        offset = _leaf$position6[1];\n\n        args.push(node, offset);\n      });\n      if (args.length < 2) {\n        args = args.concat(args);\n      }\n      return args;\n    }\n  }, {\n    key: 'scrollIntoView',\n    value: function scrollIntoView(scrollingContainer) {\n      var range = this.lastRange;\n      if (range == null) return;\n      var bounds = this.getBounds(range.index, range.length);\n      if (bounds == null) return;\n      var limit = this.scroll.length() - 1;\n\n      var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n          _scroll$line2 = _slicedToArray(_scroll$line, 1),\n          first = _scroll$line2[0];\n\n      var last = first;\n      if (range.length > 0) {\n        var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n        var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n        last = _scroll$line4[0];\n      }\n      if (first == null || last == null) return;\n      var scrollBounds = scrollingContainer.getBoundingClientRect();\n      if (bounds.top < scrollBounds.top) {\n        scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n      } else if (bounds.bottom > scrollBounds.bottom) {\n        scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n      }\n    }\n  }, {\n    key: 'setNativeRange',\n    value: function setNativeRange(startNode, startOffset) {\n      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n        return;\n      }\n      var selection = document.getSelection();\n      if (selection == null) return;\n      if (startNode != null) {\n        if (!this.hasFocus()) this.root.focus();\n        var native = (this.getNativeRange() || {}).native;\n        if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n          if (startNode.tagName == \"BR\") {\n            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n            startNode = startNode.parentNode;\n          }\n          if (endNode.tagName == \"BR\") {\n            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n            endNode = endNode.parentNode;\n          }\n          var range = document.createRange();\n          range.setStart(startNode, startOffset);\n          range.setEnd(endNode, endOffset);\n          selection.removeAllRanges();\n          selection.addRange(range);\n        }\n      } else {\n        selection.removeAllRanges();\n        this.root.blur();\n        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n      }\n    }\n  }, {\n    key: 'setRange',\n    value: function setRange(range) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n      if (typeof force === 'string') {\n        source = force;\n        force = false;\n      }\n      debug.info('setRange', range);\n      if (range != null) {\n        var args = this.rangeToNative(range);\n        this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n      } else {\n        this.setNativeRange(null);\n      }\n      this.update(source);\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n      var oldRange = this.lastRange;\n\n      var _getRange = this.getRange(),\n          _getRange2 = _slicedToArray(_getRange, 2),\n          lastRange = _getRange2[0],\n          nativeRange = _getRange2[1];\n\n      this.lastRange = lastRange;\n      if (this.lastRange != null) {\n        this.savedRange = this.lastRange;\n      }\n      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n        var _emitter;\n\n        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n          this.cursor.restore();\n        }\n        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n        if (source !== _emitter4.default.sources.SILENT) {\n          var _emitter2;\n\n          (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n        }\n      }\n    }\n  }]);\n\n  return Selection;\n}();\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode;\n  } catch (e) {\n    return false;\n  }\n  // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n  return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n  _inherits(Break, _Parchment$Embed);\n\n  function Break() {\n    _classCallCheck(this, Break);\n\n    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n  }\n\n  _createClass(Break, [{\n    key: 'insertInto',\n    value: function insertInto(parent, ref) {\n      if (parent.children.length === 0) {\n        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n      } else {\n        this.remove();\n      }\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return 0;\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }], [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n    __extends(ContainerBlot, _super);\n    function ContainerBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.build();\n        return _this;\n    }\n    ContainerBlot.prototype.appendChild = function (other) {\n        this.insertBefore(other);\n    };\n    ContainerBlot.prototype.attach = function () {\n        _super.prototype.attach.call(this);\n        this.children.forEach(function (child) {\n            child.attach();\n        });\n    };\n    ContainerBlot.prototype.build = function () {\n        var _this = this;\n        this.children = new linked_list_1.default();\n        // Need to be reversed for if DOM nodes already in order\n        [].slice\n            .call(this.domNode.childNodes)\n            .reverse()\n            .forEach(function (node) {\n            try {\n                var child = makeBlot(node);\n                _this.insertBefore(child, _this.children.head || undefined);\n            }\n            catch (err) {\n                if (err instanceof Registry.ParchmentError)\n                    return;\n                else\n                    throw err;\n            }\n        });\n    };\n    ContainerBlot.prototype.deleteAt = function (index, length) {\n        if (index === 0 && length === this.length()) {\n            return this.remove();\n        }\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.deleteAt(offset, length);\n        });\n    };\n    ContainerBlot.prototype.descendant = function (criteria, index) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if ((criteria.blotName == null && criteria(child)) ||\n            (criteria.blotName != null && child instanceof criteria)) {\n            return [child, offset];\n        }\n        else if (child instanceof ContainerBlot) {\n            return child.descendant(criteria, offset);\n        }\n        else {\n            return [null, -1];\n        }\n    };\n    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n        if (index === void 0) { index = 0; }\n        if (length === void 0) { length = Number.MAX_VALUE; }\n        var descendants = [];\n        var lengthLeft = length;\n        this.children.forEachAt(index, length, function (child, index, length) {\n            if ((criteria.blotName == null && criteria(child)) ||\n                (criteria.blotName != null && child instanceof criteria)) {\n                descendants.push(child);\n            }\n            if (child instanceof ContainerBlot) {\n                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n            }\n            lengthLeft -= length;\n        });\n        return descendants;\n    };\n    ContainerBlot.prototype.detach = function () {\n        this.children.forEach(function (child) {\n            child.detach();\n        });\n        _super.prototype.detach.call(this);\n    };\n    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.formatAt(offset, length, name, value);\n        });\n    };\n    ContainerBlot.prototype.insertAt = function (index, value, def) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if (child) {\n            child.insertAt(offset, value, def);\n        }\n        else {\n            var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n            this.appendChild(blot);\n        }\n    };\n    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n        if (this.statics.allowedChildren != null &&\n            !this.statics.allowedChildren.some(function (child) {\n                return childBlot instanceof child;\n            })) {\n            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n        }\n        childBlot.insertInto(this, refBlot);\n    };\n    ContainerBlot.prototype.length = function () {\n        return this.children.reduce(function (memo, child) {\n            return memo + child.length();\n        }, 0);\n    };\n    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n        this.children.forEach(function (child) {\n            targetParent.insertBefore(child, refNode);\n        });\n    };\n    ContainerBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        if (this.children.length === 0) {\n            if (this.statics.defaultChild != null) {\n                var child = Registry.create(this.statics.defaultChild);\n                this.appendChild(child);\n                child.optimize(context);\n            }\n            else {\n                this.remove();\n            }\n        }\n    };\n    ContainerBlot.prototype.path = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n        var position = [[this, index]];\n        if (child instanceof ContainerBlot) {\n            return position.concat(child.path(offset, inclusive));\n        }\n        else if (child != null) {\n            position.push([child, offset]);\n        }\n        return position;\n    };\n    ContainerBlot.prototype.removeChild = function (child) {\n        this.children.remove(child);\n    };\n    ContainerBlot.prototype.replace = function (target) {\n        if (target instanceof ContainerBlot) {\n            target.moveChildren(this);\n        }\n        _super.prototype.replace.call(this, target);\n    };\n    ContainerBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = this.clone();\n        this.parent.insertBefore(after, this.next);\n        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n            child = child.split(offset, force);\n            after.appendChild(child);\n        });\n        return after;\n    };\n    ContainerBlot.prototype.unwrap = function () {\n        this.moveChildren(this.parent, this.next);\n        this.remove();\n    };\n    ContainerBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        var addedNodes = [];\n        var removedNodes = [];\n        mutations.forEach(function (mutation) {\n            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n            }\n        });\n        removedNodes.forEach(function (node) {\n            // Check node has actually been removed\n            // One exception is Chrome does not immediately remove IFRAMEs\n            // from DOM but MutationRecord is correct in its reported removal\n            if (node.parentNode != null &&\n                // @ts-ignore\n                node.tagName !== 'IFRAME' &&\n                document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n                return;\n            }\n            var blot = Registry.find(node);\n            if (blot == null)\n                return;\n            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n                blot.detach();\n            }\n        });\n        addedNodes\n            .filter(function (node) {\n            return node.parentNode == _this.domNode;\n        })\n            .sort(function (a, b) {\n            if (a === b)\n                return 0;\n            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n                return 1;\n            }\n            return -1;\n        })\n            .forEach(function (node) {\n            var refBlot = null;\n            if (node.nextSibling != null) {\n                refBlot = Registry.find(node.nextSibling);\n            }\n            var blot = makeBlot(node);\n            if (blot.next != refBlot || blot.next == null) {\n                if (blot.parent != null) {\n                    blot.parent.removeChild(_this);\n                }\n                _this.insertBefore(blot, refBlot || undefined);\n            }\n        });\n    };\n    return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n    var blot = Registry.find(node);\n    if (blot == null) {\n        try {\n            blot = Registry.create(node);\n        }\n        catch (e) {\n            blot = Registry.create(Registry.Scope.INLINE);\n            [].slice.call(node.childNodes).forEach(function (child) {\n                // @ts-ignore\n                blot.domNode.appendChild(child);\n            });\n            if (node.parentNode) {\n                node.parentNode.replaceChild(blot.domNode, node);\n            }\n            blot.attach();\n        }\n    }\n    return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n    __extends(FormatBlot, _super);\n    function FormatBlot(domNode) {\n        var _this = _super.call(this, domNode) || this;\n        _this.attributes = new store_1.default(_this.domNode);\n        return _this;\n    }\n    FormatBlot.formats = function (domNode) {\n        if (typeof this.tagName === 'string') {\n            return true;\n        }\n        else if (Array.isArray(this.tagName)) {\n            return domNode.tagName.toLowerCase();\n        }\n        return undefined;\n    };\n    FormatBlot.prototype.format = function (name, value) {\n        var format = Registry.query(name);\n        if (format instanceof attributor_1.default) {\n            this.attributes.attribute(format, value);\n        }\n        else if (value) {\n            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n                this.replaceWith(name, value);\n            }\n        }\n    };\n    FormatBlot.prototype.formats = function () {\n        var formats = this.attributes.values();\n        var format = this.statics.formats(this.domNode);\n        if (format != null) {\n            formats[this.statics.blotName] = format;\n        }\n        return formats;\n    };\n    FormatBlot.prototype.replaceWith = function (name, value) {\n        var replacement = _super.prototype.replaceWith.call(this, name, value);\n        this.attributes.copy(replacement);\n        return replacement;\n    };\n    FormatBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        _super.prototype.update.call(this, mutations, context);\n        if (mutations.some(function (mutation) {\n            return mutation.target === _this.domNode && mutation.type === 'attributes';\n        })) {\n            this.attributes.build();\n        }\n    };\n    FormatBlot.prototype.wrap = function (name, value) {\n        var wrapper = _super.prototype.wrap.call(this, name, value);\n        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n            this.attributes.move(wrapper);\n        }\n        return wrapper;\n    };\n    return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n    __extends(LeafBlot, _super);\n    function LeafBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    LeafBlot.value = function (domNode) {\n        return true;\n    };\n    LeafBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node ||\n            this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n            return Math.min(offset, 1);\n        }\n        return -1;\n    };\n    LeafBlot.prototype.position = function (index, inclusive) {\n        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n        if (index > 0)\n            offset += 1;\n        return [this.parent.domNode, offset];\n    };\n    LeafBlot.prototype.value = function () {\n        return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n        var _a;\n    };\n    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n    return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n  attributes: {\n    compose: function (a, b, keepNull) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = extend(true, {}, b);\n      if (!keepNull) {\n        attributes = Object.keys(attributes).reduce(function (copy, key) {\n          if (attributes[key] != null) {\n            copy[key] = attributes[key];\n          }\n          return copy;\n        }, {});\n      }\n      for (var key in a) {\n        if (a[key] !== undefined && b[key] === undefined) {\n          attributes[key] = a[key];\n        }\n      }\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    diff: function(a, b) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n        if (!equal(a[key], b[key])) {\n          attributes[key] = b[key] === undefined ? null : b[key];\n        }\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    transform: function (a, b, priority) {\n      if (typeof a !== 'object') return b;\n      if (typeof b !== 'object') return undefined;\n      if (!priority) return b;  // b simply overwrites us without priority\n      var attributes = Object.keys(b).reduce(function (attributes, key) {\n        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    }\n  },\n\n  iterator: function (ops) {\n    return new Iterator(ops);\n  },\n\n  length: function (op) {\n    if (typeof op['delete'] === 'number') {\n      return op['delete'];\n    } else if (typeof op.retain === 'number') {\n      return op.retain;\n    } else {\n      return typeof op.insert === 'string' ? op.insert.length : 1;\n    }\n  }\n};\n\n\nfunction Iterator(ops) {\n  this.ops = ops;\n  this.index = 0;\n  this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n  return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n  if (!length) length = Infinity;\n  var nextOp = this.ops[this.index];\n  if (nextOp) {\n    var offset = this.offset;\n    var opLength = lib.length(nextOp)\n    if (length >= opLength - offset) {\n      length = opLength - offset;\n      this.index += 1;\n      this.offset = 0;\n    } else {\n      this.offset += length;\n    }\n    if (typeof nextOp['delete'] === 'number') {\n      return { 'delete': length };\n    } else {\n      var retOp = {};\n      if (nextOp.attributes) {\n        retOp.attributes = nextOp.attributes;\n      }\n      if (typeof nextOp.retain === 'number') {\n        retOp.retain = length;\n      } else if (typeof nextOp.insert === 'string') {\n        retOp.insert = nextOp.insert.substr(offset, length);\n      } else {\n        // offset should === 0, length should === 1\n        retOp.insert = nextOp.insert;\n      }\n      return retOp;\n    }\n  } else {\n    return { retain: Infinity };\n  }\n};\n\nIterator.prototype.peek = function () {\n  return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n  if (this.ops[this.index]) {\n    // Should never return 0 if our index is being managed correctly\n    return lib.length(this.ops[this.index]) - this.offset;\n  } else {\n    return Infinity;\n  }\n};\n\nIterator.prototype.peekType = function () {\n  if (this.ops[this.index]) {\n    if (typeof this.ops[this.index]['delete'] === 'number') {\n      return 'delete';\n    } else if (typeof this.ops[this.index].retain === 'number') {\n      return 'retain';\n    } else {\n      return 'insert';\n    }\n  }\n  return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n  return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n *    should be cloned as well. Non-enumerable properties on the prototype\n *    chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    includeNonEnumerable = circular.includeNonEnumerable;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      child = new nativeMap();\n    } else if (_instanceof(parent, nativeSet)) {\n      child = new nativeSet();\n    } else if (_instanceof(parent, nativePromise)) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      child = new Buffer(parent.length);\n      parent.copy(child);\n      return child;\n    } else if (_instanceof(parent, Error)) {\n      child = Object.create(parent);\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (_instanceof(parent, nativeMap)) {\n      parent.forEach(function(value, key) {\n        var keyChild = _clone(key, depth - 1);\n        var valueChild = _clone(value, depth - 1);\n        child.set(keyChild, valueChild);\n      });\n    }\n    if (_instanceof(parent, nativeSet)) {\n      parent.forEach(function(value) {\n        var entryChild = _clone(value, depth - 1);\n        child.add(entryChild);\n      });\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n        if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n          continue;\n        }\n        child[symbol] = _clone(parent[symbol], depth - 1);\n        if (!descriptor.enumerable) {\n          Object.defineProperty(child, symbol, {\n            enumerable: false\n          });\n        }\n      }\n    }\n\n    if (includeNonEnumerable) {\n      var allPropertyNames = Object.getOwnPropertyNames(parent);\n      for (var i = 0; i < allPropertyNames.length; i++) {\n        var propertyName = allPropertyNames[i];\n        var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n        if (descriptor && descriptor.enumerable) {\n          continue;\n        }\n        child[propertyName] = _clone(parent[propertyName], depth - 1);\n        Object.defineProperty(child, propertyName, {\n          enumerable: false\n        });\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n  _inherits(Scroll, _Parchment$Scroll);\n\n  function Scroll(domNode, config) {\n    _classCallCheck(this, Scroll);\n\n    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n    _this.emitter = config.emitter;\n    if (Array.isArray(config.whitelist)) {\n      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n        whitelist[format] = true;\n        return whitelist;\n      }, {});\n    }\n    // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n    _this.domNode.addEventListener('DOMNodeInserted', function () {});\n    _this.optimize();\n    _this.enable();\n    return _this;\n  }\n\n  _createClass(Scroll, [{\n    key: 'batchStart',\n    value: function batchStart() {\n      this.batch = true;\n    }\n  }, {\n    key: 'batchEnd',\n    value: function batchEnd() {\n      this.batch = false;\n      this.optimize();\n    }\n  }, {\n    key: 'deleteAt',\n    value: function deleteAt(index, length) {\n      var _line = this.line(index),\n          _line2 = _slicedToArray(_line, 2),\n          first = _line2[0],\n          offset = _line2[1];\n\n      var _line3 = this.line(index + length),\n          _line4 = _slicedToArray(_line3, 1),\n          last = _line4[0];\n\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n      if (last != null && first !== last && offset > 0) {\n        if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n          this.optimize();\n          return;\n        }\n        if (first instanceof _code2.default) {\n          var newlineIndex = first.newlineIndex(first.length(), true);\n          if (newlineIndex > -1) {\n            first = first.split(newlineIndex + 1);\n            if (first === last) {\n              this.optimize();\n              return;\n            }\n          }\n        } else if (last instanceof _code2.default) {\n          var _newlineIndex = last.newlineIndex(0);\n          if (_newlineIndex > -1) {\n            last.split(_newlineIndex + 1);\n          }\n        }\n        var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n        first.moveChildren(last, ref);\n        first.remove();\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      this.domNode.setAttribute('contenteditable', enabled);\n    }\n  }, {\n    key: 'formatAt',\n    value: function formatAt(index, length, format, value) {\n      if (this.whitelist != null && !this.whitelist[format]) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n      this.optimize();\n    }\n  }, {\n    key: 'insertAt',\n    value: function insertAt(index, value, def) {\n      if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n      if (index >= this.length()) {\n        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n          var blot = _parchment2.default.create(this.statics.defaultChild);\n          this.appendChild(blot);\n          if (def == null && value.endsWith('\\n')) {\n            value = value.slice(0, -1);\n          }\n          blot.insertAt(0, value, def);\n        } else {\n          var embed = _parchment2.default.create(value, def);\n          this.appendChild(embed);\n        }\n      } else {\n        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n      }\n      this.optimize();\n    }\n  }, {\n    key: 'insertBefore',\n    value: function insertBefore(blot, ref) {\n      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n        var wrapper = _parchment2.default.create(this.statics.defaultChild);\n        wrapper.appendChild(blot);\n        blot = wrapper;\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n    }\n  }, {\n    key: 'leaf',\n    value: function leaf(index) {\n      return this.path(index).pop() || [null, -1];\n    }\n  }, {\n    key: 'line',\n    value: function line(index) {\n      if (index === this.length()) {\n        return this.line(index - 1);\n      }\n      return this.descendant(isLine, index);\n    }\n  }, {\n    key: 'lines',\n    value: function lines() {\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n      var getLines = function getLines(blot, index, length) {\n        var lines = [],\n            lengthLeft = length;\n        blot.children.forEachAt(index, length, function (child, index, length) {\n          if (isLine(child)) {\n            lines.push(child);\n          } else if (child instanceof _parchment2.default.Container) {\n            lines = lines.concat(getLines(child, index, lengthLeft));\n          }\n          lengthLeft -= length;\n        });\n        return lines;\n      };\n      return getLines(this, index, length);\n    }\n  }, {\n    key: 'optimize',\n    value: function optimize() {\n      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.batch === true) return;\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n      }\n    }\n  }, {\n    key: 'path',\n    value: function path(index) {\n      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations) {\n      if (this.batch === true) return;\n      var source = _emitter2.default.sources.USER;\n      if (typeof mutations === 'string') {\n        source = mutations;\n      }\n      if (!Array.isArray(mutations)) {\n        mutations = this.observer.takeRecords();\n      }\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n      }\n      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n      if (mutations.length > 0) {\n        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n      }\n    }\n  }]);\n\n  return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n  _inherits(Keyboard, _Module);\n\n  _createClass(Keyboard, null, [{\n    key: 'match',\n    value: function match(evt, binding) {\n      binding = normalize(binding);\n      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n        return !!binding[key] !== evt[key] && binding[key] !== null;\n      })) {\n        return false;\n      }\n      return binding.key === (evt.which || evt.keyCode);\n    }\n  }]);\n\n  function Keyboard(quill, options) {\n    _classCallCheck(this, Keyboard);\n\n    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n    _this.bindings = {};\n    Object.keys(_this.options.bindings).forEach(function (name) {\n      if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n        return;\n      }\n      if (_this.options.bindings[name]) {\n        _this.addBinding(_this.options.bindings[name]);\n      }\n    });\n    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n    if (/Firefox/i.test(navigator.userAgent)) {\n      // Need to handle delete and backspace for Firefox in the general case #1171\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n    } else {\n      _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n      _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n    }\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n    _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n    _this.listen();\n    return _this;\n  }\n\n  _createClass(Keyboard, [{\n    key: 'addBinding',\n    value: function addBinding(key) {\n      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var binding = normalize(key);\n      if (binding == null || binding.key == null) {\n        return debug.warn('Attempted to add invalid keyboard binding', binding);\n      }\n      if (typeof context === 'function') {\n        context = { handler: context };\n      }\n      if (typeof handler === 'function') {\n        handler = { handler: handler };\n      }\n      binding = (0, _extend2.default)(binding, context, handler);\n      this.bindings[binding.key] = this.bindings[binding.key] || [];\n      this.bindings[binding.key].push(binding);\n    }\n  }, {\n    key: 'listen',\n    value: function listen() {\n      var _this2 = this;\n\n      this.quill.root.addEventListener('keydown', function (evt) {\n        if (evt.defaultPrevented) return;\n        var which = evt.which || evt.keyCode;\n        var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n          return Keyboard.match(evt, binding);\n        });\n        if (bindings.length === 0) return;\n        var range = _this2.quill.getSelection();\n        if (range == null || !_this2.quill.hasFocus()) return;\n\n        var _quill$getLine = _this2.quill.getLine(range.index),\n            _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n            line = _quill$getLine2[0],\n            offset = _quill$getLine2[1];\n\n        var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n            _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n            leafStart = _quill$getLeaf2[0],\n            offsetStart = _quill$getLeaf2[1];\n\n        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n            _ref2 = _slicedToArray(_ref, 2),\n            leafEnd = _ref2[0],\n            offsetEnd = _ref2[1];\n\n        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n        var curContext = {\n          collapsed: range.length === 0,\n          empty: range.length === 0 && line.length() <= 1,\n          format: _this2.quill.getFormat(range),\n          offset: offset,\n          prefix: prefixText,\n          suffix: suffixText\n        };\n        var prevented = bindings.some(function (binding) {\n          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n          if (binding.empty != null && binding.empty !== curContext.empty) return false;\n          if (binding.offset != null && binding.offset !== curContext.offset) return false;\n          if (Array.isArray(binding.format)) {\n            // any format is present\n            if (binding.format.every(function (name) {\n              return curContext.format[name] == null;\n            })) {\n              return false;\n            }\n          } else if (_typeof(binding.format) === 'object') {\n            // all formats must match\n            if (!Object.keys(binding.format).every(function (name) {\n              if (binding.format[name] === true) return curContext.format[name] != null;\n              if (binding.format[name] === false) return curContext.format[name] == null;\n              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n            })) {\n              return false;\n            }\n          }\n          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n          return binding.handler.call(_this2, range, curContext) !== true;\n        });\n        if (prevented) {\n          evt.preventDefault();\n        }\n      });\n    }\n  }]);\n\n  return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n  BACKSPACE: 8,\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    'bold': makeFormatHandler('bold'),\n    'italic': makeFormatHandler('italic'),\n    'underline': makeFormatHandler('underline'),\n    'indent': {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: Keyboard.keys.TAB,\n      format: ['blockquote', 'indent', 'list'],\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function handler(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', _quill2.default.sources.USER);\n      }\n    },\n    'outdent backspace': {\n      key: Keyboard.keys.BACKSPACE,\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: ['indent', 'list'],\n      offset: 0,\n      handler: function handler(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', _quill2.default.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function handler(range) {\n        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n      }\n    },\n    'tab': {\n      key: Keyboard.keys.TAB,\n      handler: function handler(range) {\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n      }\n    },\n    'list empty enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function handler(range, context) {\n        this.quill.format('list', false, _quill2.default.sources.USER);\n        if (context.format.indent) {\n          this.quill.format('indent', false, _quill2.default.sources.USER);\n        }\n      }\n    },\n    'checklist enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: { list: 'checked' },\n      handler: function handler(range) {\n        var _quill$getLine3 = this.quill.getLine(range.index),\n            _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n            line = _quill$getLine4[0],\n            offset = _quill$getLine4[1];\n\n        var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'header enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function handler(range, context) {\n        var _quill$getLine5 = this.quill.getLine(range.index),\n            _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n            line = _quill$getLine6[0],\n            offset = _quill$getLine6[1];\n\n        var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n        this.quill.scrollIntoView();\n      }\n    },\n    'list autofill': {\n      key: ' ',\n      collapsed: true,\n      format: { list: false },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler: function handler(range, context) {\n        var length = context.prefix.length;\n\n        var _quill$getLine7 = this.quill.getLine(range.index),\n            _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n            line = _quill$getLine8[0],\n            offset = _quill$getLine8[1];\n\n        if (offset > length) return true;\n        var value = void 0;\n        switch (context.prefix.trim()) {\n          case '[]':case '[ ]':\n            value = 'unchecked';\n            break;\n          case '[x]':\n            value = 'checked';\n            break;\n          case '-':case '*':\n            value = 'bullet';\n            break;\n          default:\n            value = 'ordered';\n        }\n        this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n      }\n    },\n    'code exit': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['code-block'],\n      prefix: /\\n\\n$/,\n      suffix: /^\\s+$/,\n      handler: function handler(range) {\n        var _quill$getLine9 = this.quill.getLine(range.index),\n            _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n            line = _quill$getLine10[0],\n            offset = _quill$getLine10[1];\n\n        var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n        this.quill.updateContents(delta, _quill2.default.sources.USER);\n      }\n    },\n    'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n    'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n    'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n    'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n  }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  var _ref3;\n\n  var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n  return _ref3 = {\n    key: key,\n    shiftKey: shiftKey,\n    altKey: null\n  }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n    var index = range.index;\n    if (key === Keyboard.keys.RIGHT) {\n      index += range.length + 1;\n    }\n\n    var _quill$getLeaf3 = this.quill.getLeaf(index),\n        _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n        leaf = _quill$getLeaf4[0];\n\n    if (!(leaf instanceof _parchment2.default.Embed)) return true;\n    if (key === Keyboard.keys.LEFT) {\n      if (shiftKey) {\n        this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n      }\n    } else {\n      if (shiftKey) {\n        this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n      } else {\n        this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n      }\n    }\n    return false;\n  }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n  if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n  var _quill$getLine11 = this.quill.getLine(range.index),\n      _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n      line = _quill$getLine12[0];\n\n  var formats = {};\n  if (context.offset === 0) {\n    var _quill$getLine13 = this.quill.getLine(range.index - 1),\n        _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n        prev = _quill$getLine14[0];\n\n    if (prev != null && prev.length() > 1) {\n      var curFormats = line.formats();\n      var prevFormats = this.quill.getFormat(range.index - 1, 1);\n      formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n    }\n  }\n  // Check for astral symbols\n  var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n  this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n  }\n  this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n  // Check for astral symbols\n  var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n  if (range.index >= this.quill.getLength() - length) return;\n  var formats = {},\n      nextLength = 0;\n\n  var _quill$getLine15 = this.quill.getLine(range.index),\n      _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n      line = _quill$getLine16[0];\n\n  if (context.offset >= line.length() - 1) {\n    var _quill$getLine17 = this.quill.getLine(range.index + 1),\n        _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n        next = _quill$getLine18[0];\n\n    if (next) {\n      var curFormats = line.formats();\n      var nextFormats = this.quill.getFormat(range.index, 1);\n      formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n      nextLength = next.length();\n    }\n  }\n  this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n  }\n}\n\nfunction handleDeleteRange(range) {\n  var lines = this.quill.getLines(range);\n  var formats = {};\n  if (lines.length > 1) {\n    var firstFormats = lines[0].formats();\n    var lastFormats = lines[lines.length - 1].formats();\n    formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n  }\n  this.quill.deleteText(range, _quill2.default.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n  }\n  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n  this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n  var _this3 = this;\n\n  if (range.length > 0) {\n    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n  }\n  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n      lineFormats[format] = context.format[format];\n    }\n    return lineFormats;\n  }, {});\n  this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n  // Earlier scroll.deleteAt might have messed up our selection,\n  // so insertText's built in selection preservation is not reliable\n  this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n  this.quill.focus();\n  Object.keys(context.format).forEach(function (name) {\n    if (lineFormats[name] != null) return;\n    if (Array.isArray(context.format[name])) return;\n    if (name === 'link') return;\n    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n  });\n}\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: Keyboard.keys.TAB,\n    shiftKey: !indent,\n    format: { 'code-block': true },\n    handler: function handler(range) {\n      var CodeBlock = _parchment2.default.query('code-block');\n      var index = range.index,\n          length = range.length;\n\n      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n          block = _quill$scroll$descend2[0],\n          offset = _quill$scroll$descend2[1];\n\n      if (block == null) return;\n      var scrollIndex = this.quill.getIndex(block);\n      var start = block.newlineIndex(offset, true) + 1;\n      var end = block.newlineIndex(scrollIndex + offset + length);\n      var lines = block.domNode.textContent.slice(start, end).split('\\n');\n      offset = 0;\n      lines.forEach(function (line, i) {\n        if (indent) {\n          block.insertAt(start + offset, CodeBlock.TAB);\n          offset += CodeBlock.TAB.length;\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.startsWith(CodeBlock.TAB)) {\n          block.deleteAt(start + offset, CodeBlock.TAB.length);\n          offset -= CodeBlock.TAB.length;\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n        offset += line.length + 1;\n      });\n      this.quill.update(_quill2.default.sources.USER);\n      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n    }\n  };\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0].toUpperCase(),\n    shortKey: true,\n    handler: function handler(range, context) {\n      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    return normalize({ key: binding });\n  }\n  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n    binding = (0, _clone2.default)(binding, false);\n  }\n  if (typeof binding.key === 'string') {\n    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n    } else if (binding.key.length === 1) {\n      binding.key = binding.key.toUpperCase().charCodeAt(0);\n    } else {\n      return null;\n    }\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n  _inherits(Cursor, _Parchment$Embed);\n\n  _createClass(Cursor, null, [{\n    key: 'value',\n    value: function value() {\n      return undefined;\n    }\n  }]);\n\n  function Cursor(domNode, selection) {\n    _classCallCheck(this, Cursor);\n\n    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n    _this.selection = selection;\n    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n    _this.domNode.appendChild(_this.textNode);\n    _this._length = 0;\n    return _this;\n  }\n\n  _createClass(Cursor, [{\n    key: 'detach',\n    value: function detach() {\n      // super.detach() will also clear domNode.__blot\n      if (this.parent != null) this.parent.removeChild(this);\n    }\n  }, {\n    key: 'format',\n    value: function format(name, value) {\n      if (this._length !== 0) {\n        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n      }\n      var target = this,\n          index = 0;\n      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n        index += target.offset(target.parent);\n        target = target.parent;\n      }\n      if (target != null) {\n        this._length = Cursor.CONTENTS.length;\n        target.optimize();\n        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n        this._length = 0;\n      }\n    }\n  }, {\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.textNode) return 0;\n      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'length',\n    value: function length() {\n      return this._length;\n    }\n  }, {\n    key: 'position',\n    value: function position() {\n      return [this.textNode, this.textNode.data.length];\n    }\n  }, {\n    key: 'remove',\n    value: function remove() {\n      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n      this.parent = null;\n    }\n  }, {\n    key: 'restore',\n    value: function restore() {\n      if (this.selection.composing || this.parent == null) return;\n      var textNode = this.textNode;\n      var range = this.selection.getNativeRange();\n      var restoreText = void 0,\n          start = void 0,\n          end = void 0;\n      if (range != null && range.start.node === textNode && range.end.node === textNode) {\n        var _ref = [textNode, range.start.offset, range.end.offset];\n        restoreText = _ref[0];\n        start = _ref[1];\n        end = _ref[2];\n      }\n      // Link format will insert text outside of anchor tag\n      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n      }\n      if (this.textNode.data !== Cursor.CONTENTS) {\n        var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n        if (this.next instanceof _text2.default) {\n          restoreText = this.next.domNode;\n          this.next.insertAt(0, text);\n          this.textNode.data = Cursor.CONTENTS;\n        } else {\n          this.textNode.data = text;\n          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n          this.textNode = document.createTextNode(Cursor.CONTENTS);\n          this.domNode.appendChild(this.textNode);\n        }\n      }\n      this.remove();\n      if (start != null) {\n        var _map = [start, end].map(function (offset) {\n          return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n        });\n\n        var _map2 = _slicedToArray(_map, 2);\n\n        start = _map2[0];\n        end = _map2[1];\n\n        return {\n          startNode: restoreText,\n          startOffset: start,\n          endNode: restoreText,\n          endOffset: end\n        };\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      if (mutations.some(function (mutation) {\n        return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n      })) {\n        var range = this.restore();\n        if (range) context.range = range;\n      }\n    }\n  }, {\n    key: 'value',\n    value: function value() {\n      return '';\n    }\n  }]);\n\n  return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n  _inherits(Container, _Parchment$Container);\n\n  function Container() {\n    _classCallCheck(this, Container);\n\n    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n  }\n\n  return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n  _inherits(ColorAttributor, _Parchment$Attributor);\n\n  function ColorAttributor() {\n    _classCallCheck(this, ColorAttributor);\n\n    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n  }\n\n  _createClass(ColorAttributor, [{\n    key: 'value',\n    value: function value(domNode) {\n      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n      if (!value.startsWith('rgb(')) return value;\n      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n      return '#' + value.split(',').map(function (component) {\n        return ('00' + parseInt(component).toString(16)).slice(-2);\n      }).join('');\n    }\n  }]);\n\n  return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */,\n/* 28 */,\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n  'blots/block': _block2.default,\n  'blots/block/embed': _block.BlockEmbed,\n  'blots/break': _break2.default,\n  'blots/container': _container2.default,\n  'blots/cursor': _cursor2.default,\n  'blots/embed': _embed2.default,\n  'blots/inline': _inline2.default,\n  'blots/scroll': _scroll2.default,\n  'blots/text': _text2.default,\n\n  'modules/clipboard': _clipboard2.default,\n  'modules/history': _history2.default,\n  'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n    function ShadowBlot(domNode) {\n        this.domNode = domNode;\n        // @ts-ignore\n        this.domNode[Registry.DATA_KEY] = { blot: this };\n    }\n    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n        // Hack for accessing inherited static methods\n        get: function () {\n            return this.constructor;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ShadowBlot.create = function (value) {\n        if (this.tagName == null) {\n            throw new Registry.ParchmentError('Blot definition missing tagName');\n        }\n        var node;\n        if (Array.isArray(this.tagName)) {\n            if (typeof value === 'string') {\n                value = value.toUpperCase();\n                if (parseInt(value).toString() === value) {\n                    value = parseInt(value);\n                }\n            }\n            if (typeof value === 'number') {\n                node = document.createElement(this.tagName[value - 1]);\n            }\n            else if (this.tagName.indexOf(value) > -1) {\n                node = document.createElement(value);\n            }\n            else {\n                node = document.createElement(this.tagName[0]);\n            }\n        }\n        else {\n            node = document.createElement(this.tagName);\n        }\n        if (this.className) {\n            node.classList.add(this.className);\n        }\n        return node;\n    };\n    ShadowBlot.prototype.attach = function () {\n        if (this.parent != null) {\n            this.scroll = this.parent.scroll;\n        }\n    };\n    ShadowBlot.prototype.clone = function () {\n        var domNode = this.domNode.cloneNode(false);\n        return Registry.create(domNode);\n    };\n    ShadowBlot.prototype.detach = function () {\n        if (this.parent != null)\n            this.parent.removeChild(this);\n        // @ts-ignore\n        delete this.domNode[Registry.DATA_KEY];\n    };\n    ShadowBlot.prototype.deleteAt = function (index, length) {\n        var blot = this.isolate(index, length);\n        blot.remove();\n    };\n    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n        var blot = this.isolate(index, length);\n        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n            blot.wrap(name, value);\n        }\n        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n            var parent = Registry.create(this.statics.scope);\n            blot.wrap(parent);\n            parent.format(name, value);\n        }\n    };\n    ShadowBlot.prototype.insertAt = function (index, value, def) {\n        var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n        var ref = this.split(index);\n        this.parent.insertBefore(blot, ref);\n    };\n    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n        if (refBlot === void 0) { refBlot = null; }\n        if (this.parent != null) {\n            this.parent.children.remove(this);\n        }\n        var refDomNode = null;\n        parentBlot.children.insertBefore(this, refBlot);\n        if (refBlot != null) {\n            refDomNode = refBlot.domNode;\n        }\n        if (this.domNode.parentNode != parentBlot.domNode ||\n            this.domNode.nextSibling != refDomNode) {\n            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n        }\n        this.parent = parentBlot;\n        this.attach();\n    };\n    ShadowBlot.prototype.isolate = function (index, length) {\n        var target = this.split(index);\n        target.split(length);\n        return target;\n    };\n    ShadowBlot.prototype.length = function () {\n        return 1;\n    };\n    ShadowBlot.prototype.offset = function (root) {\n        if (root === void 0) { root = this.parent; }\n        if (this.parent == null || this == root)\n            return 0;\n        return this.parent.children.offset(this) + this.parent.offset(root);\n    };\n    ShadowBlot.prototype.optimize = function (context) {\n        // TODO clean up once we use WeakMap\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY] != null) {\n            // @ts-ignore\n            delete this.domNode[Registry.DATA_KEY].mutations;\n        }\n    };\n    ShadowBlot.prototype.remove = function () {\n        if (this.domNode.parentNode != null) {\n            this.domNode.parentNode.removeChild(this.domNode);\n        }\n        this.detach();\n    };\n    ShadowBlot.prototype.replace = function (target) {\n        if (target.parent == null)\n            return;\n        target.parent.insertBefore(this, target.next);\n        target.remove();\n    };\n    ShadowBlot.prototype.replaceWith = function (name, value) {\n        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n        replacement.replace(this);\n        return replacement;\n    };\n    ShadowBlot.prototype.split = function (index, force) {\n        return index === 0 ? this : this.next;\n    };\n    ShadowBlot.prototype.update = function (mutations, context) {\n        // Nothing to do by default\n    };\n    ShadowBlot.prototype.wrap = function (name, value) {\n        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n        if (this.parent != null) {\n            this.parent.insertBefore(wrapper, this.next);\n        }\n        wrapper.appendChild(this);\n        return wrapper;\n    };\n    ShadowBlot.blotName = 'abstract';\n    return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n    function AttributorStore(domNode) {\n        this.attributes = {};\n        this.domNode = domNode;\n        this.build();\n    }\n    AttributorStore.prototype.attribute = function (attribute, value) {\n        // verb\n        if (value) {\n            if (attribute.add(this.domNode, value)) {\n                if (attribute.value(this.domNode) != null) {\n                    this.attributes[attribute.attrName] = attribute;\n                }\n                else {\n                    delete this.attributes[attribute.attrName];\n                }\n            }\n        }\n        else {\n            attribute.remove(this.domNode);\n            delete this.attributes[attribute.attrName];\n        }\n    };\n    AttributorStore.prototype.build = function () {\n        var _this = this;\n        this.attributes = {};\n        var attributes = attributor_1.default.keys(this.domNode);\n        var classes = class_1.default.keys(this.domNode);\n        var styles = style_1.default.keys(this.domNode);\n        attributes\n            .concat(classes)\n            .concat(styles)\n            .forEach(function (name) {\n            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n            if (attr instanceof attributor_1.default) {\n                _this.attributes[attr.attrName] = attr;\n            }\n        });\n    };\n    AttributorStore.prototype.copy = function (target) {\n        var _this = this;\n        Object.keys(this.attributes).forEach(function (key) {\n            var value = _this.attributes[key].value(_this.domNode);\n            target.format(key, value);\n        });\n    };\n    AttributorStore.prototype.move = function (target) {\n        var _this = this;\n        this.copy(target);\n        Object.keys(this.attributes).forEach(function (key) {\n            _this.attributes[key].remove(_this.domNode);\n        });\n        this.attributes = {};\n    };\n    AttributorStore.prototype.values = function () {\n        var _this = this;\n        return Object.keys(this.attributes).reduce(function (attributes, name) {\n            attributes[name] = _this.attributes[name].value(_this.domNode);\n            return attributes;\n        }, {});\n    };\n    return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n    var className = node.getAttribute('class') || '';\n    return className.split(/\\s+/).filter(function (name) {\n        return name.indexOf(prefix + \"-\") === 0;\n    });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n    __extends(ClassAttributor, _super);\n    function ClassAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ClassAttributor.keys = function (node) {\n        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n            return name\n                .split('-')\n                .slice(0, -1)\n                .join('-');\n        });\n    };\n    ClassAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        this.remove(node);\n        node.classList.add(this.keyName + \"-\" + value);\n        return true;\n    };\n    ClassAttributor.prototype.remove = function (node) {\n        var matches = match(node, this.keyName);\n        matches.forEach(function (name) {\n            node.classList.remove(name);\n        });\n        if (node.classList.length === 0) {\n            node.removeAttribute('class');\n        }\n    };\n    ClassAttributor.prototype.value = function (node) {\n        var result = match(node, this.keyName)[0] || '';\n        var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n        return this.canAdd(node, value) ? value : '';\n    };\n    return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n    var parts = name.split('-');\n    var rest = parts\n        .slice(1)\n        .map(function (part) {\n        return part[0].toUpperCase() + part.slice(1);\n    })\n        .join('');\n    return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n    __extends(StyleAttributor, _super);\n    function StyleAttributor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    StyleAttributor.keys = function (node) {\n        return (node.getAttribute('style') || '').split(';').map(function (value) {\n            var arr = value.split(':');\n            return arr[0].trim();\n        });\n    };\n    StyleAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = value;\n        return true;\n    };\n    StyleAttributor.prototype.remove = function (node) {\n        // @ts-ignore\n        node.style[camelize(this.keyName)] = '';\n        if (!node.getAttribute('style')) {\n            node.removeAttribute('style');\n        }\n    };\n    StyleAttributor.prototype.value = function (node) {\n        // @ts-ignore\n        var value = node.style[camelize(this.keyName)];\n        return this.canAdd(node, value) ? value : '';\n    };\n    return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n  function Theme(quill, options) {\n    _classCallCheck(this, Theme);\n\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  _createClass(Theme, [{\n    key: 'init',\n    value: function init() {\n      var _this = this;\n\n      Object.keys(this.options.modules).forEach(function (name) {\n        if (_this.modules[name] == null) {\n          _this.addModule(name);\n        }\n      });\n    }\n  }, {\n    key: 'addModule',\n    value: function addModule(name) {\n      var moduleClass = this.quill.constructor.import('modules/' + name);\n      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n      return this.modules[name];\n    }\n  }]);\n\n  return Theme;\n}();\n\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n  _inherits(Embed, _Parchment$Embed);\n\n  function Embed(node) {\n    _classCallCheck(this, Embed);\n\n    var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n    _this.contentNode = document.createElement('span');\n    _this.contentNode.setAttribute('contenteditable', false);\n    [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n      _this.contentNode.appendChild(childNode);\n    });\n    _this.leftGuard = document.createTextNode(GUARD_TEXT);\n    _this.rightGuard = document.createTextNode(GUARD_TEXT);\n    _this.domNode.appendChild(_this.leftGuard);\n    _this.domNode.appendChild(_this.contentNode);\n    _this.domNode.appendChild(_this.rightGuard);\n    return _this;\n  }\n\n  _createClass(Embed, [{\n    key: 'index',\n    value: function index(node, offset) {\n      if (node === this.leftGuard) return 0;\n      if (node === this.rightGuard) return 1;\n      return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n    }\n  }, {\n    key: 'restore',\n    value: function restore(node) {\n      var range = void 0,\n          textNode = void 0;\n      var text = node.data.split(GUARD_TEXT).join('');\n      if (node === this.leftGuard) {\n        if (this.prev instanceof _text2.default) {\n          var prevLength = this.prev.length();\n          this.prev.insertAt(prevLength, text);\n          range = {\n            startNode: this.prev.domNode,\n            startOffset: prevLength + text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      } else if (node === this.rightGuard) {\n        if (this.next instanceof _text2.default) {\n          this.next.insertAt(0, text);\n          range = {\n            startNode: this.next.domNode,\n            startOffset: text.length\n          };\n        } else {\n          textNode = document.createTextNode(text);\n          this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n          range = {\n            startNode: textNode,\n            startOffset: text.length\n          };\n        }\n      }\n      node.data = GUARD_TEXT;\n      return range;\n    }\n  }, {\n    key: 'update',\n    value: function update(mutations, context) {\n      var _this2 = this;\n\n      mutations.forEach(function (mutation) {\n        if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n          var range = _this2.restore(mutation.target);\n          if (range) context.range = range;\n        }\n      });\n    }\n  }]);\n\n  return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n  scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n  scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n  scope: _parchment2.default.Scope.BLOCK,\n  whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n  _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n  function FontStyleAttributor() {\n    _classCallCheck(this, FontStyleAttributor);\n\n    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n  }\n\n  _createClass(FontStyleAttributor, [{\n    key: 'value',\n    value: function value(node) {\n      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n    }\n  }]);\n\n  return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n  scope: _parchment2.default.Scope.INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */,\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n  _inherits(History, _Module);\n\n  function History(quill, options) {\n    _classCallCheck(this, History);\n\n    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n    _this.lastRecorded = 0;\n    _this.ignoreChange = false;\n    _this.clear();\n    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n        _this.record(delta, oldDelta);\n      } else {\n        _this.transform(delta);\n      }\n    });\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n    if (/Win/i.test(navigator.platform)) {\n      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n    }\n    return _this;\n  }\n\n  _createClass(History, [{\n    key: 'change',\n    value: function change(source, dest) {\n      if (this.stack[source].length === 0) return;\n      var delta = this.stack[source].pop();\n      this.stack[dest].push(delta);\n      this.lastRecorded = 0;\n      this.ignoreChange = true;\n      this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n      this.ignoreChange = false;\n      var index = getLastChangeIndex(delta[source]);\n      this.quill.setSelection(index);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.stack = { undo: [], redo: [] };\n    }\n  }, {\n    key: 'cutoff',\n    value: function cutoff() {\n      this.lastRecorded = 0;\n    }\n  }, {\n    key: 'record',\n    value: function record(changeDelta, oldDelta) {\n      if (changeDelta.ops.length === 0) return;\n      this.stack.redo = [];\n      var undoDelta = this.quill.getContents().diff(oldDelta);\n      var timestamp = Date.now();\n      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n        var delta = this.stack.undo.pop();\n        undoDelta = undoDelta.compose(delta.undo);\n        changeDelta = delta.redo.compose(changeDelta);\n      } else {\n        this.lastRecorded = timestamp;\n      }\n      this.stack.undo.push({\n        redo: changeDelta,\n        undo: undoDelta\n      });\n      if (this.stack.undo.length > this.options.maxStack) {\n        this.stack.undo.shift();\n      }\n    }\n  }, {\n    key: 'redo',\n    value: function redo() {\n      this.change('redo', 'undo');\n    }\n  }, {\n    key: 'transform',\n    value: function transform(delta) {\n      this.stack.undo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n      this.stack.redo.forEach(function (change) {\n        change.undo = delta.transform(change.undo, true);\n        change.redo = delta.transform(change.redo, true);\n      });\n    }\n  }, {\n    key: 'undo',\n    value: function undo() {\n      this.change('undo', 'redo');\n    }\n  }]);\n\n  return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n  var lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function (attr) {\n      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(delta) {\n  var deleteLength = delta.reduce(function (length, op) {\n    length += op.delete || 0;\n    return length;\n  }, 0);\n  var changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */,\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n    function LinkedList() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n    LinkedList.prototype.append = function () {\n        var nodes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            nodes[_i] = arguments[_i];\n        }\n        this.insertBefore(nodes[0], null);\n        if (nodes.length > 1) {\n            this.append.apply(this, nodes.slice(1));\n        }\n    };\n    LinkedList.prototype.contains = function (node) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            if (cur === node)\n                return true;\n        }\n        return false;\n    };\n    LinkedList.prototype.insertBefore = function (node, refNode) {\n        if (!node)\n            return;\n        node.next = refNode;\n        if (refNode != null) {\n            node.prev = refNode.prev;\n            if (refNode.prev != null) {\n                refNode.prev.next = node;\n            }\n            refNode.prev = node;\n            if (refNode === this.head) {\n                this.head = node;\n            }\n        }\n        else if (this.tail != null) {\n            this.tail.next = node;\n            node.prev = this.tail;\n            this.tail = node;\n        }\n        else {\n            node.prev = null;\n            this.head = this.tail = node;\n        }\n        this.length += 1;\n    };\n    LinkedList.prototype.offset = function (target) {\n        var index = 0, cur = this.head;\n        while (cur != null) {\n            if (cur === target)\n                return index;\n            index += cur.length();\n            cur = cur.next;\n        }\n        return -1;\n    };\n    LinkedList.prototype.remove = function (node) {\n        if (!this.contains(node))\n            return;\n        if (node.prev != null)\n            node.prev.next = node.next;\n        if (node.next != null)\n            node.next.prev = node.prev;\n        if (node === this.head)\n            this.head = node.next;\n        if (node === this.tail)\n            this.tail = node.prev;\n        this.length -= 1;\n    };\n    LinkedList.prototype.iterator = function (curNode) {\n        if (curNode === void 0) { curNode = this.head; }\n        // TODO use yield when we can\n        return function () {\n            var ret = curNode;\n            if (curNode != null)\n                curNode = curNode.next;\n            return ret;\n        };\n    };\n    LinkedList.prototype.find = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            var length = cur.length();\n            if (index < length ||\n                (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n                return [cur, index];\n            }\n            index -= length;\n        }\n        return [null, 0];\n    };\n    LinkedList.prototype.forEach = function (callback) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            callback(cur);\n        }\n    };\n    LinkedList.prototype.forEachAt = function (index, length, callback) {\n        if (length <= 0)\n            return;\n        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n        var cur, curIndex = index - offset, next = this.iterator(startNode);\n        while ((cur = next()) && curIndex < index + length) {\n            var curLength = cur.length();\n            if (index > curIndex) {\n                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n            }\n            else {\n                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n            }\n            curIndex += curLength;\n        }\n    };\n    LinkedList.prototype.map = function (callback) {\n        return this.reduce(function (memo, cur) {\n            memo.push(callback(cur));\n            return memo;\n        }, []);\n    };\n    LinkedList.prototype.reduce = function (callback, memo) {\n        var cur, next = this.iterator();\n        while ((cur = next())) {\n            memo = callback(memo, cur);\n        }\n        return memo;\n    };\n    return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n    attributes: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n    __extends(ScrollBlot, _super);\n    function ScrollBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.scroll = _this;\n        _this.observer = new MutationObserver(function (mutations) {\n            _this.update(mutations);\n        });\n        _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n        _this.attach();\n        return _this;\n    }\n    ScrollBlot.prototype.detach = function () {\n        _super.prototype.detach.call(this);\n        this.observer.disconnect();\n    };\n    ScrollBlot.prototype.deleteAt = function (index, length) {\n        this.update();\n        if (index === 0 && length === this.length()) {\n            this.children.forEach(function (child) {\n                child.remove();\n            });\n        }\n        else {\n            _super.prototype.deleteAt.call(this, index, length);\n        }\n    };\n    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n        this.update();\n        _super.prototype.formatAt.call(this, index, length, name, value);\n    };\n    ScrollBlot.prototype.insertAt = function (index, value, def) {\n        this.update();\n        _super.prototype.insertAt.call(this, index, value, def);\n    };\n    ScrollBlot.prototype.optimize = function (mutations, context) {\n        var _this = this;\n        if (mutations === void 0) { mutations = []; }\n        if (context === void 0) { context = {}; }\n        _super.prototype.optimize.call(this, context);\n        // We must modify mutations directly, cannot make copy and then modify\n        var records = [].slice.call(this.observer.takeRecords());\n        // Array.push currently seems to be implemented by a non-tail recursive function\n        // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n        while (records.length > 0)\n            mutations.push(records.pop());\n        // TODO use WeakMap\n        var mark = function (blot, markParent) {\n            if (markParent === void 0) { markParent = true; }\n            if (blot == null || blot === _this)\n                return;\n            if (blot.domNode.parentNode == null)\n                return;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [];\n            }\n            if (markParent)\n                mark(blot.parent);\n        };\n        var optimize = function (blot) {\n            // Post-order traversal\n            if (\n            // @ts-ignore\n            blot.domNode[Registry.DATA_KEY] == null ||\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations == null) {\n                return;\n            }\n            if (blot instanceof container_1.default) {\n                blot.children.forEach(optimize);\n            }\n            blot.optimize(context);\n        };\n        var remaining = mutations;\n        for (var i = 0; remaining.length > 0; i += 1) {\n            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n                throw new Error('[Parchment] Maximum optimize iterations reached');\n            }\n            remaining.forEach(function (mutation) {\n                var blot = Registry.find(mutation.target, true);\n                if (blot == null)\n                    return;\n                if (blot.domNode === mutation.target) {\n                    if (mutation.type === 'childList') {\n                        mark(Registry.find(mutation.previousSibling, false));\n                        [].forEach.call(mutation.addedNodes, function (node) {\n                            var child = Registry.find(node, false);\n                            mark(child, false);\n                            if (child instanceof container_1.default) {\n                                child.children.forEach(function (grandChild) {\n                                    mark(grandChild, false);\n                                });\n                            }\n                        });\n                    }\n                    else if (mutation.type === 'attributes') {\n                        mark(blot.prev);\n                    }\n                }\n                mark(blot);\n            });\n            this.children.forEach(optimize);\n            remaining = [].slice.call(this.observer.takeRecords());\n            records = remaining.slice();\n            while (records.length > 0)\n                mutations.push(records.pop());\n        }\n    };\n    ScrollBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (context === void 0) { context = {}; }\n        mutations = mutations || this.observer.takeRecords();\n        // TODO use WeakMap\n        mutations\n            .map(function (mutation) {\n            var blot = Registry.find(mutation.target, true);\n            if (blot == null)\n                return null;\n            // @ts-ignore\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n                return blot;\n            }\n            else {\n                // @ts-ignore\n                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n                return null;\n            }\n        })\n            .forEach(function (blot) {\n            if (blot == null ||\n                blot === _this ||\n                //@ts-ignore\n                blot.domNode[Registry.DATA_KEY] == null)\n                return;\n            // @ts-ignore\n            blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n        });\n        // @ts-ignore\n        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n            // @ts-ignore\n            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n        }\n        this.optimize(mutations, context);\n    };\n    ScrollBlot.blotName = 'scroll';\n    ScrollBlot.defaultChild = 'block';\n    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n    ScrollBlot.tagName = 'DIV';\n    return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n        return false;\n    // @ts-ignore\n    for (var prop in obj1) {\n        // @ts-ignore\n        if (obj1[prop] !== obj2[prop])\n            return false;\n    }\n    return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n    __extends(InlineBlot, _super);\n    function InlineBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    InlineBlot.formats = function (domNode) {\n        if (domNode.tagName === InlineBlot.tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    InlineBlot.prototype.format = function (name, value) {\n        var _this = this;\n        if (name === this.statics.blotName && !value) {\n            this.children.forEach(function (child) {\n                if (!(child instanceof format_1.default)) {\n                    child = child.wrap(InlineBlot.blotName, true);\n                }\n                _this.attributes.copy(child);\n            });\n            this.unwrap();\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n            var blot = this.isolate(index, length);\n            blot.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    InlineBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        var formats = this.formats();\n        if (Object.keys(formats).length === 0) {\n            return this.unwrap(); // unformatted span\n        }\n        var next = this.next;\n        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n            next.moveChildren(this);\n            next.remove();\n        }\n    };\n    InlineBlot.blotName = 'inline';\n    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n    InlineBlot.tagName = 'SPAN';\n    return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n    __extends(BlockBlot, _super);\n    function BlockBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BlockBlot.formats = function (domNode) {\n        var tagName = Registry.query(BlockBlot.blotName).tagName;\n        if (domNode.tagName === tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    BlockBlot.prototype.format = function (name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n            return;\n        }\n        else if (name === this.statics.blotName && !value) {\n            this.replaceWith(BlockBlot.blotName);\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    BlockBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n            // Insert text or inline\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n        else {\n            var after = this.split(index);\n            var blot = Registry.create(value, def);\n            after.parent.insertBefore(blot, after);\n        }\n    };\n    BlockBlot.prototype.update = function (mutations, context) {\n        if (navigator.userAgent.match(/Trident/)) {\n            this.build();\n        }\n        else {\n            _super.prototype.update.call(this, mutations, context);\n        }\n    };\n    BlockBlot.blotName = 'block';\n    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n    BlockBlot.tagName = 'P';\n    return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n    __extends(EmbedBlot, _super);\n    function EmbedBlot() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    EmbedBlot.formats = function (domNode) {\n        return undefined;\n    };\n    EmbedBlot.prototype.format = function (name, value) {\n        // super.formatAt wraps, which is what we want in general,\n        // but this allows subclasses to overwrite for formats\n        // that just apply to particular embeds\n        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n    };\n    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n        if (index === 0 && length === this.length()) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    EmbedBlot.prototype.formats = function () {\n        return this.statics.formats(this.domNode);\n    };\n    return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n    __extends(TextBlot, _super);\n    function TextBlot(node) {\n        var _this = _super.call(this, node) || this;\n        _this.text = _this.statics.value(_this.domNode);\n        return _this;\n    }\n    TextBlot.create = function (value) {\n        return document.createTextNode(value);\n    };\n    TextBlot.value = function (domNode) {\n        var text = domNode.data;\n        // @ts-ignore\n        if (text['normalize'])\n            text = text['normalize']();\n        return text;\n    };\n    TextBlot.prototype.deleteAt = function (index, length) {\n        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n    };\n    TextBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node) {\n            return offset;\n        }\n        return -1;\n    };\n    TextBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null) {\n            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n            this.domNode.data = this.text;\n        }\n        else {\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n    };\n    TextBlot.prototype.length = function () {\n        return this.text.length;\n    };\n    TextBlot.prototype.optimize = function (context) {\n        _super.prototype.optimize.call(this, context);\n        this.text = this.statics.value(this.domNode);\n        if (this.text.length === 0) {\n            this.remove();\n        }\n        else if (this.next instanceof TextBlot && this.next.prev === this) {\n            this.insertAt(this.length(), this.next.value());\n            this.next.remove();\n        }\n    };\n    TextBlot.prototype.position = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        return [this.domNode, index];\n    };\n    TextBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = Registry.create(this.domNode.splitText(index));\n        this.parent.insertBefore(after, this.next);\n        this.text = this.statics.value(this.domNode);\n        return after;\n    };\n    TextBlot.prototype.update = function (mutations, context) {\n        var _this = this;\n        if (mutations.some(function (mutation) {\n            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n        })) {\n            this.text = this.statics.value(this.domNode);\n        }\n    };\n    TextBlot.prototype.value = function () {\n        return this.text;\n    };\n    TextBlot.blotName = 'text';\n    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n    return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n  var _toggle = DOMTokenList.prototype.toggle;\n  DOMTokenList.prototype.toggle = function (token, force) {\n    if (arguments.length > 1 && !this.contains(token) === !force) {\n      return force;\n    } else {\n      return _toggle.call(this, token);\n    }\n  };\n}\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function (searchString, position) {\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function (searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, \"find\", {\n    value: function value(predicate) {\n      if (this === null) {\n        throw new TypeError('Array.prototype.find called on null or undefined');\n      }\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n      var list = Object(this);\n      var length = list.length >>> 0;\n      var thisArg = arguments[1];\n      var value;\n\n      for (var i = 0; i < length; i++) {\n        value = list[i];\n        if (predicate.call(thisArg, value, i, list)) {\n          return value;\n        }\n      }\n      return undefined;\n    }\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  // Disable resizing in Firefox\n  document.execCommand(\"enableObjectResizing\", false, false);\n  // Disable automatic linkifying in IE11\n  document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\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\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  // Check cursor_pos within bounds\n  if (cursor_pos < 0 || text1.length < cursor_pos) {\n    cursor_pos = null;\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs);\n  if (cursor_pos != null) {\n    diffs = fix_cursor(diffs, cursor_pos);\n  }\n  diffs = fix_emoji(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = diff_commonPrefix(longtext.substring(i),\n                                           shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n                                           shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n  if (cursor_pos === 0) {\n    return [DIFF_EQUAL, diffs];\n  }\n  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n    var d = diffs[i];\n    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n      var next_pos = current_pos + d[1].length;\n      if (cursor_pos === next_pos) {\n        return [i + 1, diffs];\n      } else if (cursor_pos < next_pos) {\n        // copy to prevent side effects\n        diffs = diffs.slice();\n        // split d into two diff changes\n        var split_pos = cursor_pos - current_pos;\n        var d_left = [d[0], d[1].slice(0, split_pos)];\n        var d_right = [d[0], d[1].slice(split_pos)];\n        diffs.splice(i, 1, d_left, d_right);\n        return [i + 1, diffs];\n      } else {\n        current_pos = next_pos;\n      }\n    }\n  }\n  throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n *   Check if a naive shift is possible:\n *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n * Case 2)\n *   Check if the following shifts are possible:\n *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n *         ^            ^\n *         d          d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n  var norm = cursor_normalize_diff(diffs, cursor_pos);\n  var ndiffs = norm[1];\n  var cursor_pointer = norm[0];\n  var d = ndiffs[cursor_pointer];\n  var d_next = ndiffs[cursor_pointer + 1];\n\n  if (d == null) {\n    // Text was deleted from end of original string,\n    // cursor is now out of bounds in new string\n    return diffs;\n  } else if (d[0] !== DIFF_EQUAL) {\n    // A modification happened at the cursor location.\n    // This is the expected outcome, so we can return the original diff.\n    return diffs;\n  } else {\n    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n      // Case 1)\n      // It is possible to perform a naive shift\n      ndiffs.splice(cursor_pointer, 2, d_next, d)\n      return merge_tuples(ndiffs, cursor_pointer, 2)\n    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n      // Case 2)\n      // d[1] is a prefix of d_next[1]\n      // We can assume that d_next[0] !== 0, since d[0] === 0\n      // Shift edit locations..\n      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n      var suffix = d_next[1].slice(d[1].length);\n      if (suffix.length > 0) {\n        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n      }\n      return merge_tuples(ndiffs, cursor_pointer, 3)\n    } else {\n      // Not possible to perform any modification\n      return diffs;\n    }\n  }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n *     '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n  var compact = false;\n  var starts_with_pair_end = function(str) {\n    return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n  }\n  var ends_with_pair_start = function(str) {\n    return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n  }\n  for (var i = 2; i < diffs.length; i += 1) {\n    if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n        diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n        diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n      compact = true;\n\n      diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n      diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n      diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n    }\n  }\n  if (!compact) {\n    return diffs;\n  }\n  var fixed_diffs = [];\n  for (var i = 0; i < diffs.length; i += 1) {\n    if (diffs[i][1].length > 0) {\n      fixed_diffs.push(diffs[i]);\n    }\n  }\n  return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n  // Check from (start-1) to (start+length).\n  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n    if (i + 1 < diffs.length) {\n      var left_d = diffs[i];\n      var right_d = diffs[i+1];\n      if (left_d[0] === right_d[1]) {\n        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n      }\n    }\n  }\n  return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n  _inherits(Clipboard, _Module);\n\n  function Clipboard(quill, options) {\n    _classCallCheck(this, Clipboard);\n\n    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n    _this.container = _this.quill.addContainer('ql-clipboard');\n    _this.container.setAttribute('contenteditable', true);\n    _this.container.setAttribute('tabindex', -1);\n    _this.matchers = [];\n    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          selector = _ref2[0],\n          matcher = _ref2[1];\n\n      if (!options.matchVisual && matcher === matchSpacing) return;\n      _this.addMatcher(selector, matcher);\n    });\n    return _this;\n  }\n\n  _createClass(Clipboard, [{\n    key: 'addMatcher',\n    value: function addMatcher(selector, matcher) {\n      this.matchers.push([selector, matcher]);\n    }\n  }, {\n    key: 'convert',\n    value: function convert(html) {\n      if (typeof html === 'string') {\n        this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n        return this.convert();\n      }\n      var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n      if (formats[_code2.default.blotName]) {\n        var text = this.container.innerText;\n        this.container.innerHTML = '';\n        return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n      }\n\n      var _prepareMatching = this.prepareMatching(),\n          _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n          elementMatchers = _prepareMatching2[0],\n          textMatchers = _prepareMatching2[1];\n\n      var delta = traverse(this.container, elementMatchers, textMatchers);\n      // Remove trailing newline\n      if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n      }\n      debug.log('convert', this.container.innerHTML, delta);\n      this.container.innerHTML = '';\n      return delta;\n    }\n  }, {\n    key: 'dangerouslyPasteHTML',\n    value: function dangerouslyPasteHTML(index, html) {\n      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n      if (typeof index === 'string') {\n        this.quill.setContents(this.convert(index), html);\n        this.quill.setSelection(0, _quill2.default.sources.SILENT);\n      } else {\n        var paste = this.convert(html);\n        this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n        this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n      }\n    }\n  }, {\n    key: 'onPaste',\n    value: function onPaste(e) {\n      var _this2 = this;\n\n      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n      var range = this.quill.getSelection();\n      var delta = new _quillDelta2.default().retain(range.index);\n      var scrollTop = this.quill.scrollingContainer.scrollTop;\n      this.container.focus();\n      this.quill.selection.update(_quill2.default.sources.SILENT);\n      setTimeout(function () {\n        delta = delta.concat(_this2.convert()).delete(range.length);\n        _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n        // range.length contributes to delta.length()\n        _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n        _this2.quill.scrollingContainer.scrollTop = scrollTop;\n        _this2.quill.focus();\n      }, 1);\n    }\n  }, {\n    key: 'prepareMatching',\n    value: function prepareMatching() {\n      var _this3 = this;\n\n      var elementMatchers = [],\n          textMatchers = [];\n      this.matchers.forEach(function (pair) {\n        var _pair = _slicedToArray(pair, 2),\n            selector = _pair[0],\n            matcher = _pair[1];\n\n        switch (selector) {\n          case Node.TEXT_NODE:\n            textMatchers.push(matcher);\n            break;\n          case Node.ELEMENT_NODE:\n            elementMatchers.push(matcher);\n            break;\n          default:\n            [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n              // TODO use weakmap\n              node[DOM_KEY] = node[DOM_KEY] || [];\n              node[DOM_KEY].push(matcher);\n            });\n            break;\n        }\n      });\n      return [elementMatchers, textMatchers];\n    }\n  }]);\n\n  return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n  matchers: [],\n  matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n  if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n    return Object.keys(format).reduce(function (delta, key) {\n      return applyFormat(delta, key, format[key]);\n    }, delta);\n  } else {\n    return delta.reduce(function (delta, op) {\n      if (op.attributes && op.attributes[format]) {\n        return delta.push(op);\n      } else {\n        return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n      }\n    }, new _quillDelta2.default());\n  }\n}\n\nfunction computeStyle(node) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n  var DOM_KEY = '__ql-computed-style';\n  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n  var endText = \"\";\n  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n    var op = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n  var style = computeStyle(node);\n  return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n  // Post-order\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce(function (delta, matcher) {\n      return matcher(node, delta);\n    }, new _quillDelta2.default());\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n      var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n        childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n          return matcher(childNode, childrenDelta);\n        }, childrenDelta);\n      }\n      return delta.concat(childrenDelta);\n    }, new _quillDelta2.default());\n  } else {\n    return new _quillDelta2.default();\n  }\n}\n\nfunction matchAlias(format, node, delta) {\n  return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n  var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n  var classes = _parchment2.default.Attributor.Class.keys(node);\n  var styles = _parchment2.default.Attributor.Style.keys(node);\n  var formats = {};\n  attributes.concat(classes).concat(styles).forEach(function (name) {\n    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n    attr = STYLE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || undefined;\n    }\n  });\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  return delta;\n}\n\nfunction matchBlot(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null) return delta;\n  if (match.prototype instanceof _parchment2.default.Embed) {\n    var embed = {};\n    var value = match.value(node);\n    if (value != null) {\n      embed[match.blotName] = value;\n      delta = new _quillDelta2.default().insert(embed, match.formats(node));\n    }\n  } else if (typeof match.formats === 'function') {\n    delta = applyFormat(delta, match.blotName, match.formats(node));\n  }\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchIgnore() {\n  return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n  var match = _parchment2.default.query(node);\n  if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n    return delta;\n  }\n  var indent = -1,\n      parent = node.parentNode;\n  while (!parent.classList.contains('ql-clipboard')) {\n    if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchSpacing(node, delta) {\n  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  var formats = {};\n  var style = node.style || {};\n  if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n    formats.italic = true;\n  }\n  if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n    formats.bold = true;\n  }\n  if (Object.keys(formats).length > 0) {\n    delta = applyFormat(delta, formats);\n  }\n  if (parseFloat(style.textIndent || 0) > 0) {\n    // Could be 0.5in\n    delta = new _quillDelta2.default().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchText(node, delta) {\n  var text = node.data;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n    return delta;\n  }\n  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n    // eslint-disable-next-line func-style\n    var replacer = function replacer(collapse, match) {\n      match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n      return match.length < 1 && collapse ? ' ' : match;\n    };\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n  return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */,\n/* 68 */,\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */,\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */,\n/* 97 */,\n/* 98 */,\n/* 99 */,\n/* 100 */,\n/* 101 */,\n/* 102 */,\n/* 103 */,\n/* 104 */,\n/* 105 */,\n/* 106 */,\n/* 107 */,\n/* 108 */,\n/* 109 */,\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(29);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});"
  },
  {
    "path": "public/admin-panel/assets/libs/quill/dist/quill.snow.css",
    "content": "/*!\n * Quill Editor v1.3.6\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n.ql-container {\n  box-sizing: border-box;\n  font-family: Helvetica, Arial, sans-serif;\n  font-size: 13px;\n  height: 100%;\n  margin: 0px;\n  position: relative;\n}\n.ql-container.ql-disabled .ql-tooltip {\n  visibility: hidden;\n}\n.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {\n  pointer-events: none;\n}\n.ql-clipboard {\n  left: -100000px;\n  height: 1px;\n  overflow-y: hidden;\n  position: absolute;\n  top: 50%;\n}\n.ql-clipboard p {\n  margin: 0;\n  padding: 0;\n}\n.ql-editor {\n  box-sizing: border-box;\n  line-height: 1.42;\n  height: 100%;\n  outline: none;\n  overflow-y: auto;\n  padding: 12px 15px;\n  tab-size: 4;\n  -moz-tab-size: 4;\n  text-align: left;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n}\n.ql-editor > * {\n  cursor: text;\n}\n.ql-editor p,\n.ql-editor ol,\n.ql-editor ul,\n.ql-editor pre,\n.ql-editor blockquote,\n.ql-editor h1,\n.ql-editor h2,\n.ql-editor h3,\n.ql-editor h4,\n.ql-editor h5,\n.ql-editor h6 {\n  margin: 0;\n  padding: 0;\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol,\n.ql-editor ul {\n  padding-left: 1.5em;\n}\n.ql-editor ol > li,\n.ql-editor ul > li {\n  list-style-type: none;\n}\n.ql-editor ul > li::before {\n  content: '\\2022';\n}\n.ql-editor ul[data-checked=true],\n.ql-editor ul[data-checked=false] {\n  pointer-events: none;\n}\n.ql-editor ul[data-checked=true] > li *,\n.ql-editor ul[data-checked=false] > li * {\n  pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before,\n.ql-editor ul[data-checked=false] > li::before {\n  color: #777;\n  cursor: pointer;\n  pointer-events: all;\n}\n.ql-editor ul[data-checked=true] > li::before {\n  content: '\\2611';\n}\n.ql-editor ul[data-checked=false] > li::before {\n  content: '\\2610';\n}\n.ql-editor li::before {\n  display: inline-block;\n  white-space: nowrap;\n  width: 1.2em;\n}\n.ql-editor li:not(.ql-direction-rtl)::before {\n  margin-left: -1.5em;\n  margin-right: 0.3em;\n  text-align: right;\n}\n.ql-editor li.ql-direction-rtl::before {\n  margin-left: 0.3em;\n  margin-right: -1.5em;\n}\n.ql-editor ol li:not(.ql-direction-rtl),\n.ql-editor ul li:not(.ql-direction-rtl) {\n  padding-left: 1.5em;\n}\n.ql-editor ol li.ql-direction-rtl,\n.ql-editor ul li.ql-direction-rtl {\n  padding-right: 1.5em;\n}\n.ql-editor ol li {\n  counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n  counter-increment: list-0;\n}\n.ql-editor ol li:before {\n  content: counter(list-0, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n  counter-increment: list-1;\n}\n.ql-editor ol li.ql-indent-1:before {\n  content: counter(list-1, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-1 {\n  counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-2 {\n  counter-increment: list-2;\n}\n.ql-editor ol li.ql-indent-2:before {\n  content: counter(list-2, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-2 {\n  counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-3 {\n  counter-increment: list-3;\n}\n.ql-editor ol li.ql-indent-3:before {\n  content: counter(list-3, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-3 {\n  counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-4 {\n  counter-increment: list-4;\n}\n.ql-editor ol li.ql-indent-4:before {\n  content: counter(list-4, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-4 {\n  counter-reset: list-5 list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-5 {\n  counter-increment: list-5;\n}\n.ql-editor ol li.ql-indent-5:before {\n  content: counter(list-5, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-5 {\n  counter-reset: list-6 list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-6 {\n  counter-increment: list-6;\n}\n.ql-editor ol li.ql-indent-6:before {\n  content: counter(list-6, decimal) '. ';\n}\n.ql-editor ol li.ql-indent-6 {\n  counter-reset: list-7 list-8 list-9;\n}\n.ql-editor ol li.ql-indent-7 {\n  counter-increment: list-7;\n}\n.ql-editor ol li.ql-indent-7:before {\n  content: counter(list-7, lower-alpha) '. ';\n}\n.ql-editor ol li.ql-indent-7 {\n  counter-reset: list-8 list-9;\n}\n.ql-editor ol li.ql-indent-8 {\n  counter-increment: list-8;\n}\n.ql-editor ol li.ql-indent-8:before {\n  content: counter(list-8, lower-roman) '. ';\n}\n.ql-editor ol li.ql-indent-8 {\n  counter-reset: list-9;\n}\n.ql-editor ol li.ql-indent-9 {\n  counter-increment: list-9;\n}\n.ql-editor ol li.ql-indent-9:before {\n  content: counter(list-9, decimal) '. ';\n}\n.ql-editor .ql-indent-1:not(.ql-direction-rtl) {\n  padding-left: 3em;\n}\n.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {\n  padding-left: 4.5em;\n}\n.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {\n  padding-right: 3em;\n}\n.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {\n  padding-right: 4.5em;\n}\n.ql-editor .ql-indent-2:not(.ql-direction-rtl) {\n  padding-left: 6em;\n}\n.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {\n  padding-left: 7.5em;\n}\n.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {\n  padding-right: 6em;\n}\n.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {\n  padding-right: 7.5em;\n}\n.ql-editor .ql-indent-3:not(.ql-direction-rtl) {\n  padding-left: 9em;\n}\n.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {\n  padding-left: 10.5em;\n}\n.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {\n  padding-right: 9em;\n}\n.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {\n  padding-right: 10.5em;\n}\n.ql-editor .ql-indent-4:not(.ql-direction-rtl) {\n  padding-left: 12em;\n}\n.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {\n  padding-left: 13.5em;\n}\n.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {\n  padding-right: 12em;\n}\n.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {\n  padding-right: 13.5em;\n}\n.ql-editor .ql-indent-5:not(.ql-direction-rtl) {\n  padding-left: 15em;\n}\n.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {\n  padding-left: 16.5em;\n}\n.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {\n  padding-right: 15em;\n}\n.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {\n  padding-right: 16.5em;\n}\n.ql-editor .ql-indent-6:not(.ql-direction-rtl) {\n  padding-left: 18em;\n}\n.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {\n  padding-left: 19.5em;\n}\n.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {\n  padding-right: 18em;\n}\n.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {\n  padding-right: 19.5em;\n}\n.ql-editor .ql-indent-7:not(.ql-direction-rtl) {\n  padding-left: 21em;\n}\n.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {\n  padding-left: 22.5em;\n}\n.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {\n  padding-right: 21em;\n}\n.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {\n  padding-right: 22.5em;\n}\n.ql-editor .ql-indent-8:not(.ql-direction-rtl) {\n  padding-left: 24em;\n}\n.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {\n  padding-left: 25.5em;\n}\n.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {\n  padding-right: 24em;\n}\n.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {\n  padding-right: 25.5em;\n}\n.ql-editor .ql-indent-9:not(.ql-direction-rtl) {\n  padding-left: 27em;\n}\n.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {\n  padding-left: 28.5em;\n}\n.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {\n  padding-right: 27em;\n}\n.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {\n  padding-right: 28.5em;\n}\n.ql-editor .ql-video {\n  display: block;\n  max-width: 100%;\n}\n.ql-editor .ql-video.ql-align-center {\n  margin: 0 auto;\n}\n.ql-editor .ql-video.ql-align-right {\n  margin: 0 0 0 auto;\n}\n.ql-editor .ql-bg-black {\n  background-color: #000;\n}\n.ql-editor .ql-bg-red {\n  background-color: #e60000;\n}\n.ql-editor .ql-bg-orange {\n  background-color: #f90;\n}\n.ql-editor .ql-bg-yellow {\n  background-color: #ff0;\n}\n.ql-editor .ql-bg-green {\n  background-color: #008a00;\n}\n.ql-editor .ql-bg-blue {\n  background-color: #06c;\n}\n.ql-editor .ql-bg-purple {\n  background-color: #93f;\n}\n.ql-editor .ql-color-white {\n  color: #fff;\n}\n.ql-editor .ql-color-red {\n  color: #e60000;\n}\n.ql-editor .ql-color-orange {\n  color: #f90;\n}\n.ql-editor .ql-color-yellow {\n  color: #ff0;\n}\n.ql-editor .ql-color-green {\n  color: #008a00;\n}\n.ql-editor .ql-color-blue {\n  color: #06c;\n}\n.ql-editor .ql-color-purple {\n  color: #93f;\n}\n.ql-editor .ql-font-serif {\n  font-family: Georgia, Times New Roman, serif;\n}\n.ql-editor .ql-font-monospace {\n  font-family: Monaco, Courier New, monospace;\n}\n.ql-editor .ql-size-small {\n  font-size: 0.75em;\n}\n.ql-editor .ql-size-large {\n  font-size: 1.5em;\n}\n.ql-editor .ql-size-huge {\n  font-size: 2.5em;\n}\n.ql-editor .ql-direction-rtl {\n  direction: rtl;\n  text-align: inherit;\n}\n.ql-editor .ql-align-center {\n  text-align: center;\n}\n.ql-editor .ql-align-justify {\n  text-align: justify;\n}\n.ql-editor .ql-align-right {\n  text-align: right;\n}\n.ql-editor.ql-blank::before {\n  color: rgba(0,0,0,0.6);\n  content: attr(data-placeholder);\n  font-style: italic;\n  left: 15px;\n  pointer-events: none;\n  position: absolute;\n  right: 15px;\n}\n.ql-snow.ql-toolbar:after,\n.ql-snow .ql-toolbar:after {\n  clear: both;\n  content: '';\n  display: table;\n}\n.ql-snow.ql-toolbar button,\n.ql-snow .ql-toolbar button {\n  background: none;\n  border: none;\n  cursor: pointer;\n  display: inline-block;\n  float: left;\n  height: 24px;\n  padding: 3px 5px;\n  width: 28px;\n}\n.ql-snow.ql-toolbar button svg,\n.ql-snow .ql-toolbar button svg {\n  float: left;\n  height: 100%;\n}\n.ql-snow.ql-toolbar button:active:hover,\n.ql-snow .ql-toolbar button:active:hover {\n  outline: none;\n}\n.ql-snow.ql-toolbar input.ql-image[type=file],\n.ql-snow .ql-toolbar input.ql-image[type=file] {\n  display: none;\n}\n.ql-snow.ql-toolbar button:hover,\n.ql-snow .ql-toolbar button:hover,\n.ql-snow.ql-toolbar button:focus,\n.ql-snow .ql-toolbar button:focus,\n.ql-snow.ql-toolbar button.ql-active,\n.ql-snow .ql-toolbar button.ql-active,\n.ql-snow.ql-toolbar .ql-picker-label:hover,\n.ql-snow .ql-toolbar .ql-picker-label:hover,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active,\n.ql-snow.ql-toolbar .ql-picker-item:hover,\n.ql-snow .ql-toolbar .ql-picker-item:hover,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected {\n  color: #06c;\n}\n.ql-snow.ql-toolbar button:hover .ql-fill,\n.ql-snow .ql-toolbar button:hover .ql-fill,\n.ql-snow.ql-toolbar button:focus .ql-fill,\n.ql-snow .ql-toolbar button:focus .ql-fill,\n.ql-snow.ql-toolbar button.ql-active .ql-fill,\n.ql-snow .ql-toolbar button.ql-active .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,\n.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {\n  fill: #06c;\n}\n.ql-snow.ql-toolbar button:hover .ql-stroke,\n.ql-snow .ql-toolbar button:hover .ql-stroke,\n.ql-snow.ql-toolbar button:focus .ql-stroke,\n.ql-snow .ql-toolbar button:focus .ql-stroke,\n.ql-snow.ql-toolbar button.ql-active .ql-stroke,\n.ql-snow .ql-toolbar button.ql-active .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,\n.ql-snow.ql-toolbar button:hover .ql-stroke-miter,\n.ql-snow .ql-toolbar button:hover .ql-stroke-miter,\n.ql-snow.ql-toolbar button:focus .ql-stroke-miter,\n.ql-snow .ql-toolbar button:focus .ql-stroke-miter,\n.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,\n.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,\n.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,\n.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {\n  stroke: #06c;\n}\n@media (pointer: coarse) {\n  .ql-snow.ql-toolbar button:hover:not(.ql-active),\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) {\n    color: #444;\n  }\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {\n    fill: #444;\n  }\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,\n  .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,\n  .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {\n    stroke: #444;\n  }\n}\n.ql-snow {\n  box-sizing: border-box;\n}\n.ql-snow * {\n  box-sizing: border-box;\n}\n.ql-snow .ql-hidden {\n  display: none;\n}\n.ql-snow .ql-out-bottom,\n.ql-snow .ql-out-top {\n  visibility: hidden;\n}\n.ql-snow .ql-tooltip {\n  position: absolute;\n  transform: translateY(10px);\n}\n.ql-snow .ql-tooltip a {\n  cursor: pointer;\n  text-decoration: none;\n}\n.ql-snow .ql-tooltip.ql-flip {\n  transform: translateY(-10px);\n}\n.ql-snow .ql-formats {\n  display: inline-block;\n  vertical-align: middle;\n}\n.ql-snow .ql-formats:after {\n  clear: both;\n  content: '';\n  display: table;\n}\n.ql-snow .ql-stroke {\n  fill: none;\n  stroke: #444;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n  stroke-width: 2;\n}\n.ql-snow .ql-stroke-miter {\n  fill: none;\n  stroke: #444;\n  stroke-miterlimit: 10;\n  stroke-width: 2;\n}\n.ql-snow .ql-fill,\n.ql-snow .ql-stroke.ql-fill {\n  fill: #444;\n}\n.ql-snow .ql-empty {\n  fill: none;\n}\n.ql-snow .ql-even {\n  fill-rule: evenodd;\n}\n.ql-snow .ql-thin,\n.ql-snow .ql-stroke.ql-thin {\n  stroke-width: 1;\n}\n.ql-snow .ql-transparent {\n  opacity: 0.4;\n}\n.ql-snow .ql-direction svg:last-child {\n  display: none;\n}\n.ql-snow .ql-direction.ql-active svg:last-child {\n  display: inline;\n}\n.ql-snow .ql-direction.ql-active svg:first-child {\n  display: none;\n}\n.ql-snow .ql-editor h1 {\n  font-size: 2em;\n}\n.ql-snow .ql-editor h2 {\n  font-size: 1.5em;\n}\n.ql-snow .ql-editor h3 {\n  font-size: 1.17em;\n}\n.ql-snow .ql-editor h4 {\n  font-size: 1em;\n}\n.ql-snow .ql-editor h5 {\n  font-size: 0.83em;\n}\n.ql-snow .ql-editor h6 {\n  font-size: 0.67em;\n}\n.ql-snow .ql-editor a {\n  text-decoration: underline;\n}\n.ql-snow .ql-editor blockquote {\n  border-left: 4px solid #ccc;\n  margin-bottom: 5px;\n  margin-top: 5px;\n  padding-left: 16px;\n}\n.ql-snow .ql-editor code,\n.ql-snow .ql-editor pre {\n  background-color: #f0f0f0;\n  border-radius: 3px;\n}\n.ql-snow .ql-editor pre {\n  white-space: pre-wrap;\n  margin-bottom: 5px;\n  margin-top: 5px;\n  padding: 5px 10px;\n}\n.ql-snow .ql-editor code {\n  font-size: 85%;\n  padding: 2px 4px;\n}\n.ql-snow .ql-editor pre.ql-syntax {\n  background-color: #23241f;\n  color: #f8f8f2;\n  overflow: visible;\n}\n.ql-snow .ql-editor img {\n  max-width: 100%;\n}\n.ql-snow .ql-picker {\n  color: #444;\n  display: inline-block;\n  float: left;\n  font-size: 14px;\n  font-weight: 500;\n  height: 24px;\n  position: relative;\n  vertical-align: middle;\n}\n.ql-snow .ql-picker-label {\n  cursor: pointer;\n  display: inline-block;\n  height: 100%;\n  padding-left: 8px;\n  padding-right: 2px;\n  position: relative;\n  width: 100%;\n}\n.ql-snow .ql-picker-label::before {\n  display: inline-block;\n  line-height: 22px;\n}\n.ql-snow .ql-picker-options {\n  background-color: #fff;\n  display: none;\n  min-width: 100%;\n  padding: 4px 8px;\n  position: absolute;\n  white-space: nowrap;\n}\n.ql-snow .ql-picker-options .ql-picker-item {\n  cursor: pointer;\n  display: block;\n  padding-bottom: 5px;\n  padding-top: 5px;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-label {\n  color: #ccc;\n  z-index: 2;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {\n  fill: #ccc;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {\n  stroke: #ccc;\n}\n.ql-snow .ql-picker.ql-expanded .ql-picker-options {\n  display: block;\n  margin-top: -1px;\n  top: 100%;\n  z-index: 1;\n}\n.ql-snow .ql-color-picker,\n.ql-snow .ql-icon-picker {\n  width: 28px;\n}\n.ql-snow .ql-color-picker .ql-picker-label,\n.ql-snow .ql-icon-picker .ql-picker-label {\n  padding: 2px 4px;\n}\n.ql-snow .ql-color-picker .ql-picker-label svg,\n.ql-snow .ql-icon-picker .ql-picker-label svg {\n  right: 4px;\n}\n.ql-snow .ql-icon-picker .ql-picker-options {\n  padding: 4px 0px;\n}\n.ql-snow .ql-icon-picker .ql-picker-item {\n  height: 24px;\n  width: 24px;\n  padding: 2px 4px;\n}\n.ql-snow .ql-color-picker .ql-picker-options {\n  padding: 3px 5px;\n  width: 152px;\n}\n.ql-snow .ql-color-picker .ql-picker-item {\n  border: 1px solid transparent;\n  float: left;\n  height: 16px;\n  margin: 2px;\n  padding: 0px;\n  width: 16px;\n}\n.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {\n  position: absolute;\n  margin-top: -9px;\n  right: 0;\n  top: 50%;\n  width: 18px;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {\n  content: attr(data-label);\n}\n.ql-snow .ql-picker.ql-header {\n  width: 98px;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item::before {\n  content: 'Normal';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]::before {\n  content: 'Heading 1';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]::before {\n  content: 'Heading 2';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]::before {\n  content: 'Heading 3';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]::before {\n  content: 'Heading 4';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]::before {\n  content: 'Heading 5';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]::before,\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]::before {\n  content: 'Heading 6';\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]::before {\n  font-size: 2em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]::before {\n  font-size: 1.5em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]::before {\n  font-size: 1.17em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]::before {\n  font-size: 1em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]::before {\n  font-size: 0.83em;\n}\n.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]::before {\n  font-size: 0.67em;\n}\n.ql-snow .ql-picker.ql-font {\n  width: 108px;\n}\n.ql-snow .ql-picker.ql-font .ql-picker-label::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item::before {\n  content: 'Sans Serif';\n}\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\n  content: 'Serif';\n}\n.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\n  content: 'Monospace';\n}\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {\n  font-family: Georgia, Times New Roman, serif;\n}\n.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {\n  font-family: Monaco, Courier New, monospace;\n}\n.ql-snow .ql-picker.ql-size {\n  width: 98px;\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item::before {\n  content: 'Normal';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\n  content: 'Small';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\n  content: 'Large';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\n  content: 'Huge';\n}\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {\n  font-size: 10px;\n}\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {\n  font-size: 18px;\n}\n.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {\n  font-size: 32px;\n}\n.ql-snow .ql-color-picker.ql-background .ql-picker-item {\n  background-color: #fff;\n}\n.ql-snow .ql-color-picker.ql-color .ql-picker-item {\n  background-color: #000;\n}\n.ql-toolbar.ql-snow {\n  border: 1px solid #ccc;\n  box-sizing: border-box;\n  font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;\n  padding: 8px;\n}\n.ql-toolbar.ql-snow .ql-formats {\n  margin-right: 15px;\n}\n.ql-toolbar.ql-snow .ql-picker-label {\n  border: 1px solid transparent;\n}\n.ql-toolbar.ql-snow .ql-picker-options {\n  border: 1px solid transparent;\n  box-shadow: rgba(0,0,0,0.2) 0 2px 8px;\n}\n.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {\n  border-color: #ccc;\n}\n.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {\n  border-color: #ccc;\n}\n.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,\n.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {\n  border-color: #000;\n}\n.ql-toolbar.ql-snow + .ql-container.ql-snow {\n  border-top: 0px;\n}\n.ql-snow .ql-tooltip {\n  background-color: #fff;\n  border: 1px solid #ccc;\n  box-shadow: 0px 0px 5px #ddd;\n  color: #444;\n  padding: 5px 12px;\n  white-space: nowrap;\n}\n.ql-snow .ql-tooltip::before {\n  content: \"Visit URL:\";\n  line-height: 26px;\n  margin-right: 8px;\n}\n.ql-snow .ql-tooltip input[type=text] {\n  display: none;\n  border: 1px solid #ccc;\n  font-size: 13px;\n  height: 26px;\n  margin: 0px;\n  padding: 3px 5px;\n  width: 170px;\n}\n.ql-snow .ql-tooltip a.ql-preview {\n  display: inline-block;\n  max-width: 200px;\n  overflow-x: hidden;\n  text-overflow: ellipsis;\n  vertical-align: top;\n}\n.ql-snow .ql-tooltip a.ql-action::after {\n  border-right: 1px solid #ccc;\n  content: 'Edit';\n  margin-left: 16px;\n  padding-right: 8px;\n}\n.ql-snow .ql-tooltip a.ql-remove::before {\n  content: 'Remove';\n  margin-left: 8px;\n}\n.ql-snow .ql-tooltip a {\n  line-height: 26px;\n}\n.ql-snow .ql-tooltip.ql-editing a.ql-preview,\n.ql-snow .ql-tooltip.ql-editing a.ql-remove {\n  display: none;\n}\n.ql-snow .ql-tooltip.ql-editing input[type=text] {\n  display: inline-block;\n}\n.ql-snow .ql-tooltip.ql-editing a.ql-action::after {\n  border-right: 0px;\n  content: 'Save';\n  padding-right: 0px;\n}\n.ql-snow .ql-tooltip[data-mode=link]::before {\n  content: \"Enter link:\";\n}\n.ql-snow .ql-tooltip[data-mode=formula]::before {\n  content: \"Enter formula:\";\n}\n.ql-snow .ql-tooltip[data-mode=video]::before {\n  content: \"Enter video:\";\n}\n.ql-snow a {\n  color: #06c;\n}\n.ql-container.ql-snow {\n  border: 1px solid #ccc;\n}\n"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/af.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/af\",[],function(){return{errorLoading:function(){return\"Die resultate kon nie gelaai word nie.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Verwyders asseblief \"+t+\" character\";return t!=1&&(n+=\"s\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Voer asseblief \"+t+\" of meer karakters\";return n},loadingMore:function(){return\"Meer resultate word gelaai…\"},maximumSelected:function(e){var t=\"Kies asseblief net \"+e.maximum+\" item\";return e.maximum!=1&&(t+=\"s\"),t},noResults:function(){return\"Geen resultate gevind\"},searching:function(){return\"Besig…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ar.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ar\",[],function(){return{errorLoading:function(){return\"لا يمكن تحميل النتائج\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"الرجاء حذف \"+t+\" عناصر\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"الرجاء إضافة \"+t+\" عناصر\"},loadingMore:function(){return\"جاري تحميل نتائج إضافية...\"},maximumSelected:function(e){return\"تستطيع إختيار \"+e.maximum+\" بنود فقط\"},noResults:function(){return\"لم يتم العثور على أي نتائج\"},searching:function(){return\"جاري البحث…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/az.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/az\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+\" simvol silin\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+\" simvol daxil edin\"},loadingMore:function(){return\"Daha çox nəticə yüklənir…\"},maximumSelected:function(e){return\"Sadəcə \"+e.maximum+\" element seçə bilərsiniz\"},noResults:function(){return\"Nəticə tapılmadı\"},searching:function(){return\"Axtarılır…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/bg.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/bg\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Моля въведете с \"+t+\" по-малко символ\";return t>1&&(n+=\"a\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Моля въведете още \"+t+\" символ\";return t>1&&(n+=\"a\"),n},loadingMore:function(){return\"Зареждат се още…\"},maximumSelected:function(e){var t=\"Можете да направите до \"+e.maximum+\" \";return e.maximum>1?t+=\"избора\":t+=\"избор\",t},noResults:function(){return\"Няма намерени съвпадения\"},searching:function(){return\"Търсене…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/bs.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/bs\",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return\"Preuzimanje nije uspijelo.\"},inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Obrišite \"+n+\" simbol\";return r+=e(n,\"\",\"a\",\"a\"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Ukucajte bar još \"+n+\" simbol\";return r+=e(n,\"\",\"a\",\"a\"),r},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(t){var n=\"Možete izabrati samo \"+t.maximum+\" stavk\";return n+=e(t.maximum,\"u\",\"e\",\"i\"),n},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/build.txt",
    "content": "\naf.js\n----------------\naf.js\n\nar.js\n----------------\nar.js\n\naz.js\n----------------\naz.js\n\nbg.js\n----------------\nbg.js\n\nbs.js\n----------------\nbs.js\n\nca.js\n----------------\nca.js\n\ncs.js\n----------------\ncs.js\n\nda.js\n----------------\nda.js\n\nde.js\n----------------\nde.js\n\ndsb.js\n----------------\ndsb.js\n\nel.js\n----------------\nel.js\n\nen.js\n----------------\nen.js\n\nes.js\n----------------\nes.js\n\net.js\n----------------\net.js\n\neu.js\n----------------\neu.js\n\nfa.js\n----------------\nfa.js\n\nfi.js\n----------------\nfi.js\n\nfr.js\n----------------\nfr.js\n\ngl.js\n----------------\ngl.js\n\nhe.js\n----------------\nhe.js\n\nhi.js\n----------------\nhi.js\n\nhr.js\n----------------\nhr.js\n\nhsb.js\n----------------\nhsb.js\n\nhu.js\n----------------\nhu.js\n\nhy.js\n----------------\nhy.js\n\nid.js\n----------------\nid.js\n\nis.js\n----------------\nis.js\n\nit.js\n----------------\nit.js\n\nja.js\n----------------\nja.js\n\nkm.js\n----------------\nkm.js\n\nko.js\n----------------\nko.js\n\nlt.js\n----------------\nlt.js\n\nlv.js\n----------------\nlv.js\n\nmk.js\n----------------\nmk.js\n\nms.js\n----------------\nms.js\n\nnb.js\n----------------\nnb.js\n\nnl.js\n----------------\nnl.js\n\npl.js\n----------------\npl.js\n\nps.js\n----------------\nps.js\n\npt-BR.js\n----------------\npt-BR.js\n\npt.js\n----------------\npt.js\n\nro.js\n----------------\nro.js\n\nru.js\n----------------\nru.js\n\nsk.js\n----------------\nsk.js\n\nsl.js\n----------------\nsl.js\n\nsr-Cyrl.js\n----------------\nsr-Cyrl.js\n\nsr.js\n----------------\nsr.js\n\nsv.js\n----------------\nsv.js\n\nth.js\n----------------\nth.js\n\ntk.js\n----------------\ntk.js\n\ntr.js\n----------------\ntr.js\n\nuk.js\n----------------\nuk.js\n\nvi.js\n----------------\nvi.js\n\nzh-CN.js\n----------------\nzh-CN.js\n\nzh-TW.js\n----------------\nzh-TW.js\n"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ca.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ca\",[],function(){return{errorLoading:function(){return\"La càrrega ha fallat\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Si us plau, elimina \"+t+\" car\";return t==1?n+=\"àcter\":n+=\"àcters\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Si us plau, introdueix \"+t+\" car\";return t==1?n+=\"àcter\":n+=\"àcters\",n},loadingMore:function(){return\"Carregant més resultats…\"},maximumSelected:function(e){var t=\"Només es pot seleccionar \"+e.maximum+\" element\";return e.maximum!=1&&(t+=\"s\"),t},noResults:function(){return\"No s'han trobat resultats\"},searching:function(){return\"Cercant…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/cs.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/cs\",[],function(){function e(e,t){switch(e){case 2:return t?\"dva\":\"dvě\";case 3:return\"tři\";case 4:return\"čtyři\"}return\"\"}return{errorLoading:function(){return\"Výsledky nemohly být načteny.\"},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?\"Prosím, zadejte o jeden znak méně.\":n<=4?\"Prosím, zadejte o \"+e(n,!0)+\" znaky méně.\":\"Prosím, zadejte o \"+n+\" znaků méně.\"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?\"Prosím, zadejte ještě jeden znak.\":n<=4?\"Prosím, zadejte ještě další \"+e(n,!0)+\" znaky.\":\"Prosím, zadejte ještě dalších \"+n+\" znaků.\"},loadingMore:function(){return\"Načítají se další výsledky…\"},maximumSelected:function(t){var n=t.maximum;return n==1?\"Můžete zvolit jen jednu položku.\":n<=4?\"Můžete zvolit maximálně \"+e(n,!1)+\" položky.\":\"Můžete zvolit maximálně \"+n+\" položek.\"},noResults:function(){return\"Nenalezeny žádné položky.\"},searching:function(){return\"Vyhledávání…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/da.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/da\",[],function(){return{errorLoading:function(){return\"Resultaterne kunne ikke indlæses.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Angiv venligst \"+t+\" tegn mindre\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Angiv venligst \"+t+\" tegn mere\"},loadingMore:function(){return\"Indlæser flere resultater…\"},maximumSelected:function(e){var t=\"Du kan kun vælge \"+e.maximum+\" emne\";return e.maximum!=1&&(t+=\"r\"),t},noResults:function(){return\"Ingen resultater fundet\"},searching:function(){return\"Søger…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/de.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/de\",[],function(){return{errorLoading:function(){return\"Die Ergebnisse konnten nicht geladen werden.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Bitte \"+t+\" Zeichen weniger eingeben\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Bitte \"+t+\" Zeichen mehr eingeben\"},loadingMore:function(){return\"Lade mehr Ergebnisse…\"},maximumSelected:function(e){var t=\"Sie können nur \"+e.maximum+\" Eintr\";return e.maximum===1?t+=\"ag\":t+=\"äge\",t+=\" auswählen\",t},noResults:function(){return\"Keine Übereinstimmungen gefunden\"},searching:function(){return\"Suche…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/dsb.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/dsb\",[],function(){var e=[\"znamuško\",\"znamušce\",\"znamuška\",\"znamuškow\"],t=[\"zapisk\",\"zapiska\",\"zapiski\",\"zapiskow\"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return\"Wuslědki njejsu se dali zacytaś.\"},inputTooLong:function(t){var r=t.input.length-t.maximum;return\"Pšosym lašuj \"+r+\" \"+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return\"Pšosym zapódaj nanejmjenjej \"+r+\" \"+n(r,e)},loadingMore:function(){return\"Dalšne wuslědki se zacytaju…\"},maximumSelected:function(e){return\"Móžoš jano \"+e.maximum+\" \"+n(e.maximum,t)+\"wubraś.\"},noResults:function(){return\"Žedne wuslědki namakane\"},searching:function(){return\"Pyta se…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/el.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/el\",[],function(){return{errorLoading:function(){return\"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Παρακαλώ διαγράψτε \"+t+\" χαρακτήρ\";return t==1&&(n+=\"α\"),t!=1&&(n+=\"ες\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Παρακαλώ συμπληρώστε \"+t+\" ή περισσότερους χαρακτήρες\";return n},loadingMore:function(){return\"Φόρτωση περισσότερων αποτελεσμάτων…\"},maximumSelected:function(e){var t=\"Μπορείτε να επιλέξετε μόνο \"+e.maximum+\" επιλογ\";return e.maximum==1&&(t+=\"ή\"),e.maximum!=1&&(t+=\"ές\"),t},noResults:function(){return\"Δεν βρέθηκαν αποτελέσματα\"},searching:function(){return\"Αναζήτηση…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/en.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/en\",[],function(){return{errorLoading:function(){return\"The results could not be loaded.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Please delete \"+t+\" character\";return t!=1&&(n+=\"s\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Please enter \"+t+\" or more characters\";return n},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(e){var t=\"You can only select \"+e.maximum+\" item\";return e.maximum!=1&&(t+=\"s\"),t},noResults:function(){return\"No results found\"},searching:function(){return\"Searching…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/es.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/es\",[],function(){return{errorLoading:function(){return\"No se pudieron cargar los resultados\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Por favor, elimine \"+t+\" car\";return t==1?n+=\"ácter\":n+=\"acteres\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Por favor, introduzca \"+t+\" car\";return t==1?n+=\"ácter\":n+=\"acteres\",n},loadingMore:function(){return\"Cargando más resultados…\"},maximumSelected:function(e){var t=\"Sólo puede seleccionar \"+e.maximum+\" elemento\";return e.maximum!=1&&(t+=\"s\"),t},noResults:function(){return\"No se encontraron resultados\"},searching:function(){return\"Buscando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/et.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/et\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Sisesta \"+t+\" täht\";return t!=1&&(n+=\"e\"),n+=\" vähem\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Sisesta \"+t+\" täht\";return t!=1&&(n+=\"e\"),n+=\" rohkem\",n},loadingMore:function(){return\"Laen tulemusi…\"},maximumSelected:function(e){var t=\"Saad vaid \"+e.maximum+\" tulemus\";return e.maximum==1?t+=\"e\":t+=\"t\",t+=\" valida\",t},noResults:function(){return\"Tulemused puuduvad\"},searching:function(){return\"Otsin…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/eu.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/eu\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Idatzi \";return t==1?n+=\"karaktere bat\":n+=t+\" karaktere\",n+=\" gutxiago\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Idatzi \";return t==1?n+=\"karaktere bat\":n+=t+\" karaktere\",n+=\" gehiago\",n},loadingMore:function(){return\"Emaitza gehiago kargatzen…\"},maximumSelected:function(e){return e.maximum===1?\"Elementu bakarra hauta dezakezu\":e.maximum+\" elementu hauta ditzakezu soilik\"},noResults:function(){return\"Ez da bat datorrenik aurkitu\"},searching:function(){return\"Bilatzen…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/fa.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/fa\",[],function(){return{errorLoading:function(){return\"امکان بارگذاری نتایج وجود ندارد.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"لطفاً \"+t+\" کاراکتر را حذف نمایید\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"لطفاً تعداد \"+t+\" کاراکتر یا بیشتر وارد نمایید\";return n},loadingMore:function(){return\"در حال بارگذاری نتایج بیشتر...\"},maximumSelected:function(e){var t=\"شما تنها می‌توانید \"+e.maximum+\" آیتم را انتخاب نمایید\";return t},noResults:function(){return\"هیچ نتیجه‌ای یافت نشد\"},searching:function(){return\"در حال جستجو...\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/fi.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/fi\",[],function(){return{errorLoading:function(){return\"Tuloksia ei saatu ladattua.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Ole hyvä ja anna \"+t+\" merkkiä vähemmän\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Ole hyvä ja anna \"+t+\" merkkiä lisää\"},loadingMore:function(){return\"Ladataan lisää tuloksia…\"},maximumSelected:function(e){return\"Voit valita ainoastaan \"+e.maximum+\" kpl\"},noResults:function(){return\"Ei tuloksia\"},searching:function(){return\"Haetaan…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/fr.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/fr\",[],function(){return{errorLoading:function(){return\"Les résultats ne peuvent pas être chargés.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Supprimez \"+t+\" caractère\"+(t>1?\"s\":\"\")},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Saisissez au moins \"+t+\" caractère\"+(t>1?\"s\":\"\")},loadingMore:function(){return\"Chargement de résultats supplémentaires…\"},maximumSelected:function(e){return\"Vous pouvez seulement sélectionner \"+e.maximum+\" élément\"+(e.maximum>1?\"s\":\"\")},noResults:function(){return\"Aucun résultat trouvé\"},searching:function(){return\"Recherche en cours…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/gl.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/gl\",[],function(){return{errorLoading:function(){return\"Non foi posíbel cargar os resultados.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return t===1?\"Elimine un carácter\":\"Elimine \"+t+\" caracteres\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t===1?\"Engada un carácter\":\"Engada \"+t+\" caracteres\"},loadingMore:function(){return\"Cargando máis resultados…\"},maximumSelected:function(e){return e.maximum===1?\"Só pode seleccionar un elemento\":\"Só pode seleccionar \"+e.maximum+\" elementos\"},noResults:function(){return\"Non se atoparon resultados\"},searching:function(){return\"Buscando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/he.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/he\",[],function(){return{errorLoading:function(){return\"שגיאה בטעינת התוצאות\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"נא למחוק \";return t===1?n+=\"תו אחד\":n+=t+\" תווים\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"נא להכניס \";return t===1?n+=\"תו אחד\":n+=t+\" תווים\",n+=\" או יותר\",n},loadingMore:function(){return\"טוען תוצאות נוספות…\"},maximumSelected:function(e){var t=\"באפשרותך לבחור עד \";return e.maximum===1?t+=\"פריט אחד\":t+=e.maximum+\" פריטים\",t},noResults:function(){return\"לא נמצאו תוצאות\"},searching:function(){return\"מחפש…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/hi.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hi\",[],function(){return{errorLoading:function(){return\"परिणामों को लोड नहीं किया जा सका।\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+\" अक्षर को हटा दें\";return t>1&&(n=t+\" अक्षरों को हटा दें \"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"कृपया \"+t+\" या अधिक अक्षर दर्ज करें\";return n},loadingMore:function(){return\"अधिक परिणाम लोड हो रहे है...\"},maximumSelected:function(e){var t=\"आप केवल \"+e.maximum+\" आइटम का चयन कर सकते हैं\";return t},noResults:function(){return\"कोई परिणाम नहीं मिला\"},searching:function(){return\"खोज रहा है...\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/hr.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hr\",[],function(){function e(e){var t=\" \"+e+\" znak\";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+=\"a\"):t+=\"ova\",t}return{errorLoading:function(){return\"Preuzimanje nije uspjelo.\"},inputTooLong:function(t){var n=t.input.length-t.maximum;return\"Unesite \"+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return\"Unesite još \"+e(n)},loadingMore:function(){return\"Učitavanje rezultata…\"},maximumSelected:function(e){return\"Maksimalan broj odabranih stavki je \"+e.maximum},noResults:function(){return\"Nema rezultata\"},searching:function(){return\"Pretraga…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/hsb.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hsb\",[],function(){var e=[\"znamješko\",\"znamješce\",\"znamješka\",\"znamješkow\"],t=[\"zapisk\",\"zapiskaj\",\"zapiski\",\"zapiskow\"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return\"Wuslědki njedachu so začitać.\"},inputTooLong:function(t){var r=t.input.length-t.maximum;return\"Prošu zhašej \"+r+\" \"+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return\"Prošu zapodaj znajmjeńša \"+r+\" \"+n(r,e)},loadingMore:function(){return\"Dalše wuslědki so začitaja…\"},maximumSelected:function(e){return\"Móžeš jenož \"+e.maximum+\" \"+n(e.maximum,t)+\"wubrać\"},noResults:function(){return\"Žane wuslědki namakane\"},searching:function(){return\"Pyta so…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/hu.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hu\",[],function(){return{errorLoading:function(){return\"Az eredmények betöltése nem sikerült.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Túl hosszú. \"+t+\" karakterrel több, mint kellene.\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Túl rövid. Még \"+t+\" karakter hiányzik.\"},loadingMore:function(){return\"Töltés…\"},maximumSelected:function(e){return\"Csak \"+e.maximum+\" elemet lehet kiválasztani.\"},noResults:function(){return\"Nincs találat.\"},searching:function(){return\"Keresés…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/hy.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/hy\",[],function(){return{errorLoading:function(){return\"Արդյունքները հնարավոր չէ բեռնել։\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Խնդրում ենք հեռացնել \"+t+\" նշան\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Խնդրում ենք մուտքագրել \"+t+\" կամ ավել նշաններ\";return n},loadingMore:function(){return\"Բեռնվում են նոր արդյունքներ․․․\"},maximumSelected:function(e){var t=\"Դուք կարող եք ընտրել առավելագույնը \"+e.maximum+\" կետ\";return t},noResults:function(){return\"Արդյունքներ չեն գտնվել\"},searching:function(){return\"Որոնում․․․\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/id.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/id\",[],function(){return{errorLoading:function(){return\"Data tidak boleh diambil.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Hapuskan \"+t+\" huruf\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Masukkan \"+t+\" huruf lagi\"},loadingMore:function(){return\"Mengambil data…\"},maximumSelected:function(e){return\"Anda hanya dapat memilih \"+e.maximum+\" pilihan\"},noResults:function(){return\"Tidak ada data yang sesuai\"},searching:function(){return\"Mencari…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/is.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/is\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vinsamlegast styttið texta um \"+t+\" staf\";return t<=1?n:n+\"i\"},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vinsamlegast skrifið \"+t+\" staf\";return t>1&&(n+=\"i\"),n+=\" í viðbót\",n},loadingMore:function(){return\"Sæki fleiri niðurstöður…\"},maximumSelected:function(e){return\"Þú getur aðeins valið \"+e.maximum+\" atriði\"},noResults:function(){return\"Ekkert fannst\"},searching:function(){return\"Leita…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/it.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/it\",[],function(){return{errorLoading:function(){return\"I risultati non possono essere caricati.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Per favore cancella \"+t+\" caratter\";return t!==1?n+=\"i\":n+=\"e\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Per favore inserisci \"+t+\" o più caratteri\";return n},loadingMore:function(){return\"Caricando più risultati…\"},maximumSelected:function(e){var t=\"Puoi selezionare solo \"+e.maximum+\" element\";return e.maximum!==1?t+=\"i\":t+=\"o\",t},noResults:function(){return\"Nessun risultato trovato\"},searching:function(){return\"Sto cercando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ja.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ja\",[],function(){return{errorLoading:function(){return\"結果が読み込まれませんでした\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+\" 文字を削除してください\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"少なくとも \"+t+\" 文字を入力してください\";return n},loadingMore:function(){return\"読み込み中…\"},maximumSelected:function(e){var t=e.maximum+\" 件しか選択できません\";return t},noResults:function(){return\"対象が見つかりません\"},searching:function(){return\"検索しています…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/km.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/km\",[],function(){return{errorLoading:function(){return\"មិនអាចទាញយកទិន្នន័យ\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"សូមលុបចេញ  \"+t+\" អក្សរ\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"សូមបញ្ចូល\"+t+\" អក្សរ រឺ ច្រើនជាងនេះ\";return n},loadingMore:function(){return\"កំពុងទាញយកទិន្នន័យបន្ថែម...\"},maximumSelected:function(e){var t=\"អ្នកអាចជ្រើសរើសបានតែ \"+e.maximum+\" ជម្រើសប៉ុណ្ណោះ\";return t},noResults:function(){return\"មិនមានលទ្ធផល\"},searching:function(){return\"កំពុងស្វែងរក...\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ko.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ko\",[],function(){return{errorLoading:function(){return\"결과를 불러올 수 없습니다.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"너무 깁니다. \"+t+\" 글자 지워주세요.\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"너무 짧습니다. \"+t+\" 글자 더 입력해주세요.\";return n},loadingMore:function(){return\"불러오는 중…\"},maximumSelected:function(e){var t=\"최대 \"+e.maximum+\"개까지만 선택 가능합니다.\";return t},noResults:function(){return\"결과가 없습니다.\"},searching:function(){return\"검색 중…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/lt.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/lt\",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Pašalinkite \"+n+\" simbol\";return r+=e(n,\"į\",\"ius\",\"ių\"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Įrašykite dar \"+n+\" simbol\";return r+=e(n,\"į\",\"ius\",\"ių\"),r},loadingMore:function(){return\"Kraunama daugiau rezultatų…\"},maximumSelected:function(t){var n=\"Jūs galite pasirinkti tik \"+t.maximum+\" element\";return n+=e(t.maximum,\"ą\",\"us\",\"ų\"),n},noResults:function(){return\"Atitikmenų nerasta\"},searching:function(){return\"Ieškoma…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/lv.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/lv\",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Lūdzu ievadiet par  \"+n;return r+=\" simbol\"+e(n,\"iem\",\"u\",\"iem\"),r+\" mazāk\"},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Lūdzu ievadiet vēl \"+n;return r+=\" simbol\"+e(n,\"us\",\"u\",\"us\"),r},loadingMore:function(){return\"Datu ielāde…\"},maximumSelected:function(t){var n=\"Jūs varat izvēlēties ne vairāk kā \"+t.maximum;return n+=\" element\"+e(t.maximum,\"us\",\"u\",\"us\"),n},noResults:function(){return\"Sakritību nav\"},searching:function(){return\"Meklēšana…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/mk.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/mk\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Ве молиме внесете \"+e.maximum+\" помалку карактер\";return e.maximum!==1&&(n+=\"и\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Ве молиме внесете уште \"+e.maximum+\" карактер\";return e.maximum!==1&&(n+=\"и\"),n},loadingMore:function(){return\"Вчитување резултати…\"},maximumSelected:function(e){var t=\"Можете да изберете само \"+e.maximum+\" ставк\";return e.maximum===1?t+=\"а\":t+=\"и\",t},noResults:function(){return\"Нема пронајдено совпаѓања\"},searching:function(){return\"Пребарување…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ms.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ms\",[],function(){return{errorLoading:function(){return\"Keputusan tidak berjaya dimuatkan.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Sila hapuskan \"+t+\" aksara\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Sila masukkan \"+t+\" atau lebih aksara\"},loadingMore:function(){return\"Sedang memuatkan keputusan…\"},maximumSelected:function(e){return\"Anda hanya boleh memilih \"+e.maximum+\" pilihan\"},noResults:function(){return\"Tiada padanan yang ditemui\"},searching:function(){return\"Mencari…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/nb.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/nb\",[],function(){return{errorLoading:function(){return\"Kunne ikke hente resultater.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Vennligst fjern \"+t+\" tegn\"},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Vennligst skriv inn \"+t+\" tegn til\"},loadingMore:function(){return\"Laster flere resultater…\"},maximumSelected:function(e){return\"Du kan velge maks \"+e.maximum+\" elementer\"},noResults:function(){return\"Ingen treff\"},searching:function(){return\"Søker…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/nl.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/nl\",[],function(){return{errorLoading:function(){return\"De resultaten konden niet worden geladen.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Gelieve \"+t+\" karakters te verwijderen\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Gelieve \"+t+\" of meer karakters in te voeren\";return n},loadingMore:function(){return\"Meer resultaten laden…\"},maximumSelected:function(e){var t=e.maximum==1?\"kan\":\"kunnen\",n=\"Er \"+t+\" maar \"+e.maximum+\" item\";return e.maximum!=1&&(n+=\"s\"),n+=\" worden geselecteerd\",n},noResults:function(){return\"Geen resultaten gevonden…\"},searching:function(){return\"Zoeken…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/pl.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/pl\",[],function(){var e=[\"znak\",\"znaki\",\"znaków\"],t=[\"element\",\"elementy\",\"elementów\"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return\"Nie można załadować wyników.\"},inputTooLong:function(t){var r=t.input.length-t.maximum;return\"Usuń \"+r+\" \"+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return\"Podaj przynajmniej \"+r+\" \"+n(r,e)},loadingMore:function(){return\"Trwa ładowanie…\"},maximumSelected:function(e){return\"Możesz zaznaczyć tylko \"+e.maximum+\" \"+n(e.maximum,t)},noResults:function(){return\"Brak wyników\"},searching:function(){return\"Trwa wyszukiwanie…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ps.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ps\",[],function(){return{errorLoading:function(){return\"پايلي نه سي ترلاسه کېدای\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"د مهربانۍ لمخي \"+t+\" توری ړنګ کړئ\";return t!=1&&(n=n.replace(\"توری\",\"توري\")),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"لږ تر لږه \"+t+\" يا ډېر توري وليکئ\";return n},loadingMore:function(){return\"نوري پايلي ترلاسه کيږي...\"},maximumSelected:function(e){var t=\"تاسو يوازي \"+e.maximum+\" قلم په نښه کولای سی\";return e.maximum!=1&&(t=t.replace(\"قلم\",\"قلمونه\")),t},noResults:function(){return\"پايلي و نه موندل سوې\"},searching:function(){return\"لټول کيږي...\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/pt-BR.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/pt-BR\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Apague \"+t+\" caracter\";return t!=1&&(n+=\"es\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Digite \"+t+\" ou mais caracteres\";return n},loadingMore:function(){return\"Carregando mais resultados…\"},maximumSelected:function(e){var t=\"Você só pode selecionar \"+e.maximum+\" ite\";return e.maximum==1?t+=\"m\":t+=\"ns\",t},noResults:function(){return\"Nenhum resultado encontrado\"},searching:function(){return\"Buscando…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/pt.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/pt\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Por favor apague \"+t+\" \";return n+=t!=1?\"caracteres\":\"caractere\",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Introduza \"+t+\" ou mais caracteres\";return n},loadingMore:function(){return\"A carregar mais resultados…\"},maximumSelected:function(e){var t=\"Apenas pode seleccionar \"+e.maximum+\" \";return t+=e.maximum!=1?\"itens\":\"item\",t},noResults:function(){return\"Sem resultados\"},searching:function(){return\"A procurar…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ro.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ro\",[],function(){return{errorLoading:function(){return\"Rezultatele nu au putut fi incărcate.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vă rugăm să ștergeți\"+t+\" caracter\";return t!==1&&(n+=\"e\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vă rugăm să introduceți \"+t+\" sau mai multe caractere\";return n},loadingMore:function(){return\"Se încarcă mai multe rezultate…\"},maximumSelected:function(e){var t=\"Aveți voie să selectați cel mult \"+e.maximum;return t+=\" element\",e.maximum!==1&&(t+=\"e\"),t},noResults:function(){return\"Nu au fost găsite rezultate\"},searching:function(){return\"Căutare…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/ru.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/ru\",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return\"Невозможно загрузить результаты\"},inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Пожалуйста, введите на \"+n+\" символ\";return r+=e(n,\"\",\"a\",\"ов\"),r+=\" меньше\",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Пожалуйста, введите еще хотя бы \"+n+\" символ\";return r+=e(n,\"\",\"a\",\"ов\"),r},loadingMore:function(){return\"Загрузка данных…\"},maximumSelected:function(t){var n=\"Вы можете выбрать не более \"+t.maximum+\" элемент\";return n+=e(t.maximum,\"\",\"a\",\"ов\"),n},noResults:function(){return\"Совпадений не найдено\"},searching:function(){return\"Поиск…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/sk.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sk\",[],function(){var e={2:function(e){return e?\"dva\":\"dve\"},3:function(){return\"tri\"},4:function(){return\"štyri\"}};return{errorLoading:function(){return\"Výsledky sa nepodarilo načítať.\"},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?\"Prosím, zadajte o jeden znak menej\":n>=2&&n<=4?\"Prosím, zadajte o \"+e[n](!0)+\" znaky menej\":\"Prosím, zadajte o \"+n+\" znakov menej\"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?\"Prosím, zadajte ešte jeden znak\":n<=4?\"Prosím, zadajte ešte ďalšie \"+e[n](!0)+\" znaky\":\"Prosím, zadajte ešte ďalších \"+n+\" znakov\"},loadingMore:function(){return\"Načítanie ďalších výsledkov…\"},maximumSelected:function(t){return t.maximum==1?\"Môžete zvoliť len jednu položku\":t.maximum>=2&&t.maximum<=4?\"Môžete zvoliť najviac \"+e[t.maximum](!1)+\" položky\":\"Môžete zvoliť najviac \"+t.maximum+\" položiek\"},noResults:function(){return\"Nenašli sa žiadne položky\"},searching:function(){return\"Vyhľadávanie…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/sl.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sl\",[],function(){return{errorLoading:function(){return\"Zadetkov iskanja ni bilo mogoče naložiti.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Prosim zbrišite \"+t+\" znak\";return t==2?n+=\"a\":t!=1&&(n+=\"e\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Prosim vpišite še \"+t+\" znak\";return t==2?n+=\"a\":t!=1&&(n+=\"e\"),n},loadingMore:function(){return\"Nalagam več zadetkov…\"},maximumSelected:function(e){var t=\"Označite lahko največ \"+e.maximum+\" predmet\";return e.maximum==2?t+=\"a\":e.maximum!=1&&(t+=\"e\"),t},noResults:function(){return\"Ni zadetkov.\"},searching:function(){return\"Iščem…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/sr-Cyrl.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sr-Cyrl\",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return\"Преузимање није успело.\"},inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Обришите \"+n+\" симбол\";return r+=e(n,\"\",\"а\",\"а\"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Укуцајте бар још \"+n+\" симбол\";return r+=e(n,\"\",\"а\",\"а\"),r},loadingMore:function(){return\"Преузимање још резултата…\"},maximumSelected:function(t){var n=\"Можете изабрати само \"+t.maximum+\" ставк\";return n+=e(t.maximum,\"у\",\"е\",\"и\"),n},noResults:function(){return\"Ништа није пронађено\"},searching:function(){return\"Претрага…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/sr.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sr\",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return\"Preuzimanje nije uspelo.\"},inputTooLong:function(t){var n=t.input.length-t.maximum,r=\"Obrišite \"+n+\" simbol\";return r+=e(n,\"\",\"a\",\"a\"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r=\"Ukucajte bar još \"+n+\" simbol\";return r+=e(n,\"\",\"a\",\"a\"),r},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(t){var n=\"Možete izabrati samo \"+t.maximum+\" stavk\";return n+=e(t.maximum,\"u\",\"e\",\"i\"),n},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/sv.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/sv\",[],function(){return{errorLoading:function(){return\"Resultat kunde inte laddas.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vänligen sudda ut \"+t+\" tecken\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vänligen skriv in \"+t+\" eller fler tecken\";return n},loadingMore:function(){return\"Laddar fler resultat…\"},maximumSelected:function(e){var t=\"Du kan max välja \"+e.maximum+\" element\";return t},noResults:function(){return\"Inga träffar\"},searching:function(){return\"Söker…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/th.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/th\",[],function(){return{errorLoading:function(){return\"ไม่สามารถค้นข้อมูลได้\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"โปรดลบออก \"+t+\" ตัวอักษร\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"โปรดพิมพ์เพิ่มอีก \"+t+\" ตัวอักษร\";return n},loadingMore:function(){return\"กำลังค้นข้อมูลเพิ่ม…\"},maximumSelected:function(e){var t=\"คุณสามารถเลือกได้ไม่เกิน \"+e.maximum+\" รายการ\";return t},noResults:function(){return\"ไม่พบข้อมูล\"},searching:function(){return\"กำลังค้นข้อมูล…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/tk.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/tk\",[],function(){return{errorLoading:function(){return\"Netije ýüklenmedi.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+\" harp bozuň.\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Ýene-de iň az \"+t+\" harp ýazyň.\";return n},loadingMore:function(){return\"Köpräk netije görkezilýär…\"},maximumSelected:function(e){var t=\"Diňe \"+e.maximum+\" sanysyny saýlaň.\";return t},noResults:function(){return\"Netije tapylmady.\"},searching:function(){return\"Gözlenýär…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/tr.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/tr\",[],function(){return{errorLoading:function(){return\"Sonuç yüklenemedi\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+\" karakter daha girmelisiniz\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"En az \"+t+\" karakter daha girmelisiniz\";return n},loadingMore:function(){return\"Daha fazla…\"},maximumSelected:function(e){var t=\"Sadece \"+e.maximum+\" seçim yapabilirsiniz\";return t},noResults:function(){return\"Sonuç bulunamadı\"},searching:function(){return\"Aranıyor…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/uk.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/uk\",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return\"Неможливо завантажити результати\"},inputTooLong:function(t){var n=t.input.length-t.maximum;return\"Будь ласка, видаліть \"+n+\" \"+e(t.maximum,\"літеру\",\"літери\",\"літер\")},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Будь ласка, введіть \"+t+\" або більше літер\"},loadingMore:function(){return\"Завантаження інших результатів…\"},maximumSelected:function(t){return\"Ви можете вибрати лише \"+t.maximum+\" \"+e(t.maximum,\"пункт\",\"пункти\",\"пунктів\")},noResults:function(){return\"Нічого не знайдено\"},searching:function(){return\"Пошук…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/vi.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/vi\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vui lòng nhập ít hơn \"+t+\" ký tự\";return t!=1&&(n+=\"s\"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Vui lòng nhập nhiều hơn \"+t+\" ký tự\";return n},loadingMore:function(){return\"Đang lấy thêm kết quả…\"},maximumSelected:function(e){var t=\"Chỉ có thể chọn được \"+e.maximum+\" lựa chọn\";return t},noResults:function(){return\"Không tìm thấy kết quả\"},searching:function(){return\"Đang tìm…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/zh-CN.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/zh-CN\",[],function(){return{errorLoading:function(){return\"无法载入结果。\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"请删除\"+t+\"个字符\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"请再输入至少\"+t+\"个字符\";return n},loadingMore:function(){return\"载入更多结果…\"},maximumSelected:function(e){var t=\"最多只能选择\"+e.maximum+\"个项目\";return t},noResults:function(){return\"未找到结果\"},searching:function(){return\"搜索中…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/select2/dist/js/i18n/zh-TW.js",
    "content": "/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/zh-TW\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"請刪掉\"+t+\"個字元\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"請再輸入\"+t+\"個字元\";return n},loadingMore:function(){return\"載入中…\"},maximumSelected:function(e){var t=\"你只能選擇最多\"+e.maximum+\"項\";return t},noResults:function(){return\"沒有找到相符的項目\"},searching:function(){return\"搜尋中…\"}}}),{define:e.define,require:e.require}})();"
  },
  {
    "path": "public/admin-panel/assets/libs/toastr/toastr.js",
    "content": "/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n    define(['jquery'], function ($) {\n        return (function () {\n            var $container;\n            var listener;\n            var toastId = 0;\n            var toastType = {\n                error: 'error',\n                info: 'info',\n                success: 'success',\n                warning: 'warning'\n            };\n\n            var toastr = {\n                clear: clear,\n                remove: remove,\n                error: error,\n                getContainer: getContainer,\n                info: info,\n                options: {},\n                subscribe: subscribe,\n                success: success,\n                version: '2.1.4',\n                warning: warning\n            };\n\n            var previousToast;\n\n            return toastr;\n\n            ////////////////\n\n            function error(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.error,\n                    iconClass: getOptions().iconClasses.error,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function getContainer(options, create) {\n                if (!options) { options = getOptions(); }\n                $container = $('#' + options.containerId);\n                if ($container.length) {\n                    return $container;\n                }\n                if (create) {\n                    $container = createContainer(options);\n                }\n                return $container;\n            }\n\n            function info(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.info,\n                    iconClass: getOptions().iconClasses.info,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function subscribe(callback) {\n                listener = callback;\n            }\n\n            function success(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.success,\n                    iconClass: getOptions().iconClasses.success,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function warning(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.warning,\n                    iconClass: getOptions().iconClasses.warning,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function clear($toastElement, clearOptions) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if (!clearToast($toastElement, options, clearOptions)) {\n                    clearContainer(options);\n                }\n            }\n\n            function remove($toastElement) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if ($toastElement && $(':focus', $toastElement).length === 0) {\n                    removeToast($toastElement);\n                    return;\n                }\n                if ($container.children().length) {\n                    $container.remove();\n                }\n            }\n\n            // internal functions\n\n            function clearContainer (options) {\n                var toastsToClear = $container.children();\n                for (var i = toastsToClear.length - 1; i >= 0; i--) {\n                    clearToast($(toastsToClear[i]), options);\n                }\n            }\n\n            function clearToast ($toastElement, options, clearOptions) {\n                var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n                if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n                    $toastElement[options.hideMethod]({\n                        duration: options.hideDuration,\n                        easing: options.hideEasing,\n                        complete: function () { removeToast($toastElement); }\n                    });\n                    return true;\n                }\n                return false;\n            }\n\n            function createContainer(options) {\n                $container = $('<div/>')\n                    .attr('id', options.containerId)\n                    .addClass(options.positionClass);\n\n                $container.appendTo($(options.target));\n                return $container;\n            }\n\n            function getDefaults() {\n                return {\n                    tapToDismiss: true,\n                    toastClass: 'toast',\n                    containerId: 'toast-container',\n                    debug: false,\n\n                    showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n                    showDuration: 300,\n                    showEasing: 'swing', //swing and linear are built into jQuery\n                    onShown: undefined,\n                    hideMethod: 'fadeOut',\n                    hideDuration: 1000,\n                    hideEasing: 'swing',\n                    onHidden: undefined,\n                    closeMethod: false,\n                    closeDuration: false,\n                    closeEasing: false,\n                    closeOnHover: true,\n\n                    extendedTimeOut: 1000,\n                    iconClasses: {\n                        error: 'toast-error',\n                        info: 'toast-info',\n                        success: 'toast-success',\n                        warning: 'toast-warning'\n                    },\n                    iconClass: 'toast-info',\n                    positionClass: 'toast-top-right',\n                    timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n                    titleClass: 'toast-title',\n                    messageClass: 'toast-message',\n                    escapeHtml: false,\n                    target: 'body',\n                    closeHtml: '<button type=\"button\">&times;</button>',\n                    closeClass: 'toast-close-button',\n                    newestOnTop: true,\n                    preventDuplicates: false,\n                    progressBar: false,\n                    progressClass: 'toast-progress',\n                    rtl: false\n                };\n            }\n\n            function publish(args) {\n                if (!listener) { return; }\n                listener(args);\n            }\n\n            function notify(map) {\n                var options = getOptions();\n                var iconClass = map.iconClass || options.iconClass;\n\n                if (typeof (map.optionsOverride) !== 'undefined') {\n                    options = $.extend(options, map.optionsOverride);\n                    iconClass = map.optionsOverride.iconClass || iconClass;\n                }\n\n                if (shouldExit(options, map)) { return; }\n\n                toastId++;\n\n                $container = getContainer(options, true);\n\n                var intervalId = null;\n                var $toastElement = $('<div/>');\n                var $titleElement = $('<div/>');\n                var $messageElement = $('<div/>');\n                var $progressElement = $('<div/>');\n                var $closeElement = $(options.closeHtml);\n                var progressBar = {\n                    intervalId: null,\n                    hideEta: null,\n                    maxHideTime: null\n                };\n                var response = {\n                    toastId: toastId,\n                    state: 'visible',\n                    startTime: new Date(),\n                    options: options,\n                    map: map\n                };\n\n                personalizeToast();\n\n                displayToast();\n\n                handleEvents();\n\n                publish(response);\n\n                if (options.debug && console) {\n                    console.log(response);\n                }\n\n                return $toastElement;\n\n                function escapeHtml(source) {\n                    if (source == null) {\n                        source = '';\n                    }\n\n                    return source\n                        .replace(/&/g, '&amp;')\n                        .replace(/\"/g, '&quot;')\n                        .replace(/'/g, '&#39;')\n                        .replace(/</g, '&lt;')\n                        .replace(/>/g, '&gt;');\n                }\n\n                function personalizeToast() {\n                    setIcon();\n                    setTitle();\n                    setMessage();\n                    setCloseButton();\n                    setProgressBar();\n                    setRTL();\n                    setSequence();\n                    setAria();\n                }\n\n                function setAria() {\n                    var ariaValue = '';\n                    switch (map.iconClass) {\n                        case 'toast-success':\n                        case 'toast-info':\n                            ariaValue =  'polite';\n                            break;\n                        default:\n                            ariaValue = 'assertive';\n                    }\n                    $toastElement.attr('aria-live', ariaValue);\n                }\n\n                function handleEvents() {\n                    if (options.closeOnHover) {\n                        $toastElement.hover(stickAround, delayedHideToast);\n                    }\n\n                    if (!options.onclick && options.tapToDismiss) {\n                        $toastElement.click(hideToast);\n                    }\n\n                    if (options.closeButton && $closeElement) {\n                        $closeElement.click(function (event) {\n                            if (event.stopPropagation) {\n                                event.stopPropagation();\n                            } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n                                event.cancelBubble = true;\n                            }\n\n                            if (options.onCloseClick) {\n                                options.onCloseClick(event);\n                            }\n\n                            hideToast(true);\n                        });\n                    }\n\n                    if (options.onclick) {\n                        $toastElement.click(function (event) {\n                            options.onclick(event);\n                            hideToast();\n                        });\n                    }\n                }\n\n                function displayToast() {\n                    $toastElement.hide();\n\n                    $toastElement[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n                    );\n\n                    if (options.timeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.timeOut);\n                        progressBar.maxHideTime = parseFloat(options.timeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                        if (options.progressBar) {\n                            progressBar.intervalId = setInterval(updateProgress, 10);\n                        }\n                    }\n                }\n\n                function setIcon() {\n                    if (map.iconClass) {\n                        $toastElement.addClass(options.toastClass).addClass(iconClass);\n                    }\n                }\n\n                function setSequence() {\n                    if (options.newestOnTop) {\n                        $container.prepend($toastElement);\n                    } else {\n                        $container.append($toastElement);\n                    }\n                }\n\n                function setTitle() {\n                    if (map.title) {\n                        var suffix = map.title;\n                        if (options.escapeHtml) {\n                            suffix = escapeHtml(map.title);\n                        }\n                        $titleElement.append(suffix).addClass(options.titleClass);\n                        $toastElement.append($titleElement);\n                    }\n                }\n\n                function setMessage() {\n                    if (map.message) {\n                        var suffix = map.message;\n                        if (options.escapeHtml) {\n                            suffix = escapeHtml(map.message);\n                        }\n                        $messageElement.append(suffix).addClass(options.messageClass);\n                        $toastElement.append($messageElement);\n                    }\n                }\n\n                function setCloseButton() {\n                    if (options.closeButton) {\n                        $closeElement.addClass(options.closeClass).attr('role', 'button');\n                        $toastElement.prepend($closeElement);\n                    }\n                }\n\n                function setProgressBar() {\n                    if (options.progressBar) {\n                        $progressElement.addClass(options.progressClass);\n                        $toastElement.prepend($progressElement);\n                    }\n                }\n\n                function setRTL() {\n                    if (options.rtl) {\n                        $toastElement.addClass('rtl');\n                    }\n                }\n\n                function shouldExit(options, map) {\n                    if (options.preventDuplicates) {\n                        if (map.message === previousToast) {\n                            return true;\n                        } else {\n                            previousToast = map.message;\n                        }\n                    }\n                    return false;\n                }\n\n                function hideToast(override) {\n                    var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n                    var duration = override && options.closeDuration !== false ?\n                        options.closeDuration : options.hideDuration;\n                    var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n                    if ($(':focus', $toastElement).length && !override) {\n                        return;\n                    }\n                    clearTimeout(progressBar.intervalId);\n                    return $toastElement[method]({\n                        duration: duration,\n                        easing: easing,\n                        complete: function () {\n                            removeToast($toastElement);\n                            clearTimeout(intervalId);\n                            if (options.onHidden && response.state !== 'hidden') {\n                                options.onHidden();\n                            }\n                            response.state = 'hidden';\n                            response.endTime = new Date();\n                            publish(response);\n                        }\n                    });\n                }\n\n                function delayedHideToast() {\n                    if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.extendedTimeOut);\n                        progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                    }\n                }\n\n                function stickAround() {\n                    clearTimeout(intervalId);\n                    progressBar.hideEta = 0;\n                    $toastElement.stop(true, true)[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing}\n                    );\n                }\n\n                function updateProgress() {\n                    var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n                    $progressElement.width(percentage + '%');\n                }\n            }\n\n            function getOptions() {\n                return $.extend({}, getDefaults(), toastr.options);\n            }\n\n            function removeToast($toastElement) {\n                if (!$container) { $container = getContainer(); }\n                if ($toastElement.is(':visible')) {\n                    return;\n                }\n                $toastElement.remove();\n                $toastElement = null;\n                if ($container.children().length === 0) {\n                    $container.remove();\n                    previousToast = undefined;\n                }\n            }\n\n        })();\n    });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n    if (typeof module !== 'undefined' && module.exports) { //Node\n        module.exports = factory(require('jquery'));\n    } else {\n        window.toastr = factory(window.jQuery);\n    }\n}));\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/css/fa-brands.css",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@font-face {\n  font-family: 'Font Awesome 5 Brands';\n  font-style: normal;\n  font-weight: normal;\n  src: url(\"../webfonts/fa-brands-400.eot\");\n  src: url(\"../webfonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-brands-400.woff\") format(\"woff\"), url(\"../webfonts/fa-brands-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n  font-family: 'Font Awesome 5 Brands'; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/css/fa-regular.css",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 400;\n  src: url(\"../webfonts/fa-regular-400.eot\");\n  src: url(\"../webfonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-regular-400.woff\") format(\"woff\"), url(\"../webfonts/fa-regular-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/css/fa-solid.css",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 900;\n  src: url(\"../webfonts/fa-solid-900.eot\");\n  src: url(\"../webfonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../webfonts/fa-solid-900.woff\") format(\"woff\"), url(\"../webfonts/fa-solid-900.ttf\") format(\"truetype\"), url(\"../webfonts/fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 900; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/css/fontawesome-all.css",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fab {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  text-rendering: auto;\n  line-height: 1; }\n\n.fa-lg {\n  font-size: 1.33333em;\n  line-height: 0.75em;\n  vertical-align: -.0667em; }\n\n.fa-xs {\n  font-size: .75em; }\n\n.fa-sm {\n  font-size: .875em; }\n\n.fa-1x {\n  font-size: 1em; }\n\n.fa-2x {\n  font-size: 2em; }\n\n.fa-3x {\n  font-size: 3em; }\n\n.fa-4x {\n  font-size: 4em; }\n\n.fa-5x {\n  font-size: 5em; }\n\n.fa-6x {\n  font-size: 6em; }\n\n.fa-7x {\n  font-size: 7em; }\n\n.fa-8x {\n  font-size: 8em; }\n\n.fa-9x {\n  font-size: 9em; }\n\n.fa-10x {\n  font-size: 10em; }\n\n.fa-fw {\n  text-align: center;\n  width: 1.25em; }\n\n.fa-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0; }\n  .fa-ul > li {\n    position: relative; }\n\n.fa-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit; }\n\n.fa-border {\n  border: solid 0.08em #eee;\n  border-radius: .1em;\n  padding: .2em .25em .15em; }\n\n.fa-pull-left {\n  float: left; }\n\n.fa-pull-right {\n  float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n  margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n  margin-left: .3em; }\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n          transform: rotate(90deg); }\n\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n          transform: rotate(180deg); }\n\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n          transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n          transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n          transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(-1, -1);\n          transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n  -webkit-filter: none;\n          filter: none; }\n\n.fa-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: middle;\n  width: 2em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%; }\n\n.fa-stack-1x {\n  line-height: inherit; }\n\n.fa-stack-2x {\n  font-size: 2em; }\n\n.fa-inverse {\n  color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n  content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n  content: \"\\f368\"; }\n\n.fa-accusoft:before {\n  content: \"\\f369\"; }\n\n.fa-address-book:before {\n  content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n  content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n  content: \"\\f042\"; }\n\n.fa-adn:before {\n  content: \"\\f170\"; }\n\n.fa-adversal:before {\n  content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n  content: \"\\f36b\"; }\n\n.fa-algolia:before {\n  content: \"\\f36c\"; }\n\n.fa-align-center:before {\n  content: \"\\f037\"; }\n\n.fa-align-justify:before {\n  content: \"\\f039\"; }\n\n.fa-align-left:before {\n  content: \"\\f036\"; }\n\n.fa-align-right:before {\n  content: \"\\f038\"; }\n\n.fa-allergies:before {\n  content: \"\\f461\"; }\n\n.fa-amazon:before {\n  content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n  content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n  content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n  content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n  content: \"\\f36d\"; }\n\n.fa-anchor:before {\n  content: \"\\f13d\"; }\n\n.fa-android:before {\n  content: \"\\f17b\"; }\n\n.fa-angellist:before {\n  content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n  content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n  content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n  content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n  content: \"\\f102\"; }\n\n.fa-angle-down:before {\n  content: \"\\f107\"; }\n\n.fa-angle-left:before {\n  content: \"\\f104\"; }\n\n.fa-angle-right:before {\n  content: \"\\f105\"; }\n\n.fa-angle-up:before {\n  content: \"\\f106\"; }\n\n.fa-angrycreative:before {\n  content: \"\\f36e\"; }\n\n.fa-angular:before {\n  content: \"\\f420\"; }\n\n.fa-app-store:before {\n  content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n  content: \"\\f370\"; }\n\n.fa-apper:before {\n  content: \"\\f371\"; }\n\n.fa-apple:before {\n  content: \"\\f179\"; }\n\n.fa-apple-pay:before {\n  content: \"\\f415\"; }\n\n.fa-archive:before {\n  content: \"\\f187\"; }\n\n.fa-arrow-alt-circle-down:before {\n  content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n  content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n  content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n  content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n  content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n  content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n  content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n  content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n  content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n  content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n  content: \"\\f338\"; }\n\n.fa-assistive-listening-systems:before {\n  content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n  content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n  content: \"\\f372\"; }\n\n.fa-at:before {\n  content: \"\\f1fa\"; }\n\n.fa-audible:before {\n  content: \"\\f373\"; }\n\n.fa-audio-description:before {\n  content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n  content: \"\\f41c\"; }\n\n.fa-avianex:before {\n  content: \"\\f374\"; }\n\n.fa-aviato:before {\n  content: \"\\f421\"; }\n\n.fa-aws:before {\n  content: \"\\f375\"; }\n\n.fa-backward:before {\n  content: \"\\f04a\"; }\n\n.fa-balance-scale:before {\n  content: \"\\f24e\"; }\n\n.fa-ban:before {\n  content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n  content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n  content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n  content: \"\\f02a\"; }\n\n.fa-bars:before {\n  content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n  content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n  content: \"\\f434\"; }\n\n.fa-bath:before {\n  content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n  content: \"\\f244\"; }\n\n.fa-battery-full:before {\n  content: \"\\f240\"; }\n\n.fa-battery-half:before {\n  content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n  content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n  content: \"\\f241\"; }\n\n.fa-bed:before {\n  content: \"\\f236\"; }\n\n.fa-beer:before {\n  content: \"\\f0fc\"; }\n\n.fa-behance:before {\n  content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n  content: \"\\f1b5\"; }\n\n.fa-bell:before {\n  content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n  content: \"\\f1f6\"; }\n\n.fa-bicycle:before {\n  content: \"\\f206\"; }\n\n.fa-bimobject:before {\n  content: \"\\f378\"; }\n\n.fa-binoculars:before {\n  content: \"\\f1e5\"; }\n\n.fa-birthday-cake:before {\n  content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n  content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n  content: \"\\f379\"; }\n\n.fa-bity:before {\n  content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n  content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n  content: \"\\f37b\"; }\n\n.fa-blind:before {\n  content: \"\\f29d\"; }\n\n.fa-blogger:before {\n  content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n  content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n  content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n  content: \"\\f294\"; }\n\n.fa-bold:before {\n  content: \"\\f032\"; }\n\n.fa-bolt:before {\n  content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n  content: \"\\f1e2\"; }\n\n.fa-book:before {\n  content: \"\\f02d\"; }\n\n.fa-bookmark:before {\n  content: \"\\f02e\"; }\n\n.fa-bowling-ball:before {\n  content: \"\\f436\"; }\n\n.fa-box:before {\n  content: \"\\f466\"; }\n\n.fa-box-open:before {\n  content: \"\\f49e\"; }\n\n.fa-boxes:before {\n  content: \"\\f468\"; }\n\n.fa-braille:before {\n  content: \"\\f2a1\"; }\n\n.fa-briefcase:before {\n  content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n  content: \"\\f469\"; }\n\n.fa-btc:before {\n  content: \"\\f15a\"; }\n\n.fa-bug:before {\n  content: \"\\f188\"; }\n\n.fa-building:before {\n  content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n  content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n  content: \"\\f140\"; }\n\n.fa-burn:before {\n  content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n  content: \"\\f37f\"; }\n\n.fa-bus:before {\n  content: \"\\f207\"; }\n\n.fa-buysellads:before {\n  content: \"\\f20d\"; }\n\n.fa-calculator:before {\n  content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n  content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n  content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n  content: \"\\f274\"; }\n\n.fa-calendar-minus:before {\n  content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n  content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n  content: \"\\f273\"; }\n\n.fa-camera:before {\n  content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n  content: \"\\f083\"; }\n\n.fa-capsules:before {\n  content: \"\\f46b\"; }\n\n.fa-car:before {\n  content: \"\\f1b9\"; }\n\n.fa-caret-down:before {\n  content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n  content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n  content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n  content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n  content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n  content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n  content: \"\\f151\"; }\n\n.fa-caret-up:before {\n  content: \"\\f0d8\"; }\n\n.fa-cart-arrow-down:before {\n  content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n  content: \"\\f217\"; }\n\n.fa-cc-amazon-pay:before {\n  content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n  content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n  content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n  content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n  content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n  content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n  content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n  content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n  content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n  content: \"\\f380\"; }\n\n.fa-certificate:before {\n  content: \"\\f0a3\"; }\n\n.fa-chart-area:before {\n  content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n  content: \"\\f080\"; }\n\n.fa-chart-line:before {\n  content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n  content: \"\\f200\"; }\n\n.fa-check:before {\n  content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n  content: \"\\f058\"; }\n\n.fa-check-square:before {\n  content: \"\\f14a\"; }\n\n.fa-chess:before {\n  content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n  content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n  content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n  content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n  content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n  content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n  content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n  content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n  content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n  content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n  content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n  content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n  content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n  content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n  content: \"\\f077\"; }\n\n.fa-child:before {\n  content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n  content: \"\\f268\"; }\n\n.fa-circle:before {\n  content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n  content: \"\\f1ce\"; }\n\n.fa-clipboard:before {\n  content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n  content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n  content: \"\\f46d\"; }\n\n.fa-clock:before {\n  content: \"\\f017\"; }\n\n.fa-clone:before {\n  content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n  content: \"\\f20a\"; }\n\n.fa-cloud:before {\n  content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n  content: \"\\f381\"; }\n\n.fa-cloud-upload-alt:before {\n  content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n  content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n  content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n  content: \"\\f385\"; }\n\n.fa-code:before {\n  content: \"\\f121\"; }\n\n.fa-code-branch:before {\n  content: \"\\f126\"; }\n\n.fa-codepen:before {\n  content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n  content: \"\\f284\"; }\n\n.fa-coffee:before {\n  content: \"\\f0f4\"; }\n\n.fa-cog:before {\n  content: \"\\f013\"; }\n\n.fa-cogs:before {\n  content: \"\\f085\"; }\n\n.fa-columns:before {\n  content: \"\\f0db\"; }\n\n.fa-comment:before {\n  content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n  content: \"\\f27a\"; }\n\n.fa-comment-dots:before {\n  content: \"\\f4ad\"; }\n\n.fa-comment-slash:before {\n  content: \"\\f4b3\"; }\n\n.fa-comments:before {\n  content: \"\\f086\"; }\n\n.fa-compass:before {\n  content: \"\\f14e\"; }\n\n.fa-compress:before {\n  content: \"\\f066\"; }\n\n.fa-connectdevelop:before {\n  content: \"\\f20e\"; }\n\n.fa-contao:before {\n  content: \"\\f26d\"; }\n\n.fa-copy:before {\n  content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n  content: \"\\f1f9\"; }\n\n.fa-couch:before {\n  content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n  content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n  content: \"\\f25e\"; }\n\n.fa-credit-card:before {\n  content: \"\\f09d\"; }\n\n.fa-crop:before {\n  content: \"\\f125\"; }\n\n.fa-crosshairs:before {\n  content: \"\\f05b\"; }\n\n.fa-css3:before {\n  content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n  content: \"\\f38b\"; }\n\n.fa-cube:before {\n  content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n  content: \"\\f1b3\"; }\n\n.fa-cut:before {\n  content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n  content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n  content: \"\\f38d\"; }\n\n.fa-dashcube:before {\n  content: \"\\f210\"; }\n\n.fa-database:before {\n  content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n  content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n  content: \"\\f1a5\"; }\n\n.fa-deploydog:before {\n  content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n  content: \"\\f38f\"; }\n\n.fa-desktop:before {\n  content: \"\\f108\"; }\n\n.fa-deviantart:before {\n  content: \"\\f1bd\"; }\n\n.fa-diagnoses:before {\n  content: \"\\f470\"; }\n\n.fa-digg:before {\n  content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n  content: \"\\f391\"; }\n\n.fa-discord:before {\n  content: \"\\f392\"; }\n\n.fa-discourse:before {\n  content: \"\\f393\"; }\n\n.fa-dna:before {\n  content: \"\\f471\"; }\n\n.fa-dochub:before {\n  content: \"\\f394\"; }\n\n.fa-docker:before {\n  content: \"\\f395\"; }\n\n.fa-dollar-sign:before {\n  content: \"\\f155\"; }\n\n.fa-dolly:before {\n  content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n  content: \"\\f474\"; }\n\n.fa-donate:before {\n  content: \"\\f4b9\"; }\n\n.fa-dot-circle:before {\n  content: \"\\f192\"; }\n\n.fa-dove:before {\n  content: \"\\f4ba\"; }\n\n.fa-download:before {\n  content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n  content: \"\\f396\"; }\n\n.fa-dribbble:before {\n  content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n  content: \"\\f397\"; }\n\n.fa-dropbox:before {\n  content: \"\\f16b\"; }\n\n.fa-drupal:before {\n  content: \"\\f1a9\"; }\n\n.fa-dyalog:before {\n  content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n  content: \"\\f39a\"; }\n\n.fa-edge:before {\n  content: \"\\f282\"; }\n\n.fa-edit:before {\n  content: \"\\f044\"; }\n\n.fa-eject:before {\n  content: \"\\f052\"; }\n\n.fa-elementor:before {\n  content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n  content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n  content: \"\\f142\"; }\n\n.fa-ember:before {\n  content: \"\\f423\"; }\n\n.fa-empire:before {\n  content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n  content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n  content: \"\\f2b6\"; }\n\n.fa-envelope-square:before {\n  content: \"\\f199\"; }\n\n.fa-envira:before {\n  content: \"\\f299\"; }\n\n.fa-eraser:before {\n  content: \"\\f12d\"; }\n\n.fa-erlang:before {\n  content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n  content: \"\\f42e\"; }\n\n.fa-etsy:before {\n  content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n  content: \"\\f153\"; }\n\n.fa-exchange-alt:before {\n  content: \"\\f362\"; }\n\n.fa-exclamation:before {\n  content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n  content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n  content: \"\\f071\"; }\n\n.fa-expand:before {\n  content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n  content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n  content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n  content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n  content: \"\\f360\"; }\n\n.fa-eye:before {\n  content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n  content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n  content: \"\\f070\"; }\n\n.fa-facebook:before {\n  content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n  content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n  content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n  content: \"\\f082\"; }\n\n.fa-fast-backward:before {\n  content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n  content: \"\\f050\"; }\n\n.fa-fax:before {\n  content: \"\\f1ac\"; }\n\n.fa-female:before {\n  content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n  content: \"\\f0fb\"; }\n\n.fa-file:before {\n  content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n  content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n  content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n  content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n  content: \"\\f1c9\"; }\n\n.fa-file-excel:before {\n  content: \"\\f1c3\"; }\n\n.fa-file-image:before {\n  content: \"\\f1c5\"; }\n\n.fa-file-medical:before {\n  content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n  content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n  content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n  content: \"\\f1c4\"; }\n\n.fa-file-video:before {\n  content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n  content: \"\\f1c2\"; }\n\n.fa-film:before {\n  content: \"\\f008\"; }\n\n.fa-filter:before {\n  content: \"\\f0b0\"; }\n\n.fa-fire:before {\n  content: \"\\f06d\"; }\n\n.fa-fire-extinguisher:before {\n  content: \"\\f134\"; }\n\n.fa-firefox:before {\n  content: \"\\f269\"; }\n\n.fa-first-aid:before {\n  content: \"\\f479\"; }\n\n.fa-first-order:before {\n  content: \"\\f2b0\"; }\n\n.fa-firstdraft:before {\n  content: \"\\f3a1\"; }\n\n.fa-flag:before {\n  content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n  content: \"\\f11e\"; }\n\n.fa-flask:before {\n  content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n  content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n  content: \"\\f44d\"; }\n\n.fa-fly:before {\n  content: \"\\f417\"; }\n\n.fa-folder:before {\n  content: \"\\f07b\"; }\n\n.fa-folder-open:before {\n  content: \"\\f07c\"; }\n\n.fa-font:before {\n  content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n  content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n  content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n  content: \"\\f425\"; }\n\n.fa-fonticons:before {\n  content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n  content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n  content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n  content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n  content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n  content: \"\\f211\"; }\n\n.fa-forward:before {\n  content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n  content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n  content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n  content: \"\\f3a4\"; }\n\n.fa-frown:before {\n  content: \"\\f119\"; }\n\n.fa-futbol:before {\n  content: \"\\f1e3\"; }\n\n.fa-gamepad:before {\n  content: \"\\f11b\"; }\n\n.fa-gavel:before {\n  content: \"\\f0e3\"; }\n\n.fa-gem:before {\n  content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n  content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n  content: \"\\f265\"; }\n\n.fa-gg:before {\n  content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n  content: \"\\f261\"; }\n\n.fa-gift:before {\n  content: \"\\f06b\"; }\n\n.fa-git:before {\n  content: \"\\f1d3\"; }\n\n.fa-git-square:before {\n  content: \"\\f1d2\"; }\n\n.fa-github:before {\n  content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n  content: \"\\f113\"; }\n\n.fa-github-square:before {\n  content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n  content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n  content: \"\\f296\"; }\n\n.fa-gitter:before {\n  content: \"\\f426\"; }\n\n.fa-glass-martini:before {\n  content: \"\\f000\"; }\n\n.fa-glide:before {\n  content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n  content: \"\\f2a6\"; }\n\n.fa-globe:before {\n  content: \"\\f0ac\"; }\n\n.fa-gofore:before {\n  content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n  content: \"\\f450\"; }\n\n.fa-goodreads:before {\n  content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n  content: \"\\f3a9\"; }\n\n.fa-google:before {\n  content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n  content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n  content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n  content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n  content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n  content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n  content: \"\\f1ee\"; }\n\n.fa-graduation-cap:before {\n  content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n  content: \"\\f184\"; }\n\n.fa-grav:before {\n  content: \"\\f2d6\"; }\n\n.fa-gripfire:before {\n  content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n  content: \"\\f3ad\"; }\n\n.fa-gulp:before {\n  content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n  content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n  content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n  content: \"\\f3af\"; }\n\n.fa-hand-holding:before {\n  content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n  content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n  content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n  content: \"\\f258\"; }\n\n.fa-hand-paper:before {\n  content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n  content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n  content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n  content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n  content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n  content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n  content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n  content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n  content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n  content: \"\\f259\"; }\n\n.fa-hands:before {\n  content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n  content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n  content: \"\\f2b5\"; }\n\n.fa-hashtag:before {\n  content: \"\\f292\"; }\n\n.fa-hdd:before {\n  content: \"\\f0a0\"; }\n\n.fa-heading:before {\n  content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n  content: \"\\f025\"; }\n\n.fa-heart:before {\n  content: \"\\f004\"; }\n\n.fa-heartbeat:before {\n  content: \"\\f21e\"; }\n\n.fa-hips:before {\n  content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n  content: \"\\f3b0\"; }\n\n.fa-history:before {\n  content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n  content: \"\\f453\"; }\n\n.fa-home:before {\n  content: \"\\f015\"; }\n\n.fa-hooli:before {\n  content: \"\\f427\"; }\n\n.fa-hospital:before {\n  content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n  content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n  content: \"\\f47e\"; }\n\n.fa-hotjar:before {\n  content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n  content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n  content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n  content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n  content: \"\\f251\"; }\n\n.fa-houzz:before {\n  content: \"\\f27c\"; }\n\n.fa-html5:before {\n  content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n  content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n  content: \"\\f246\"; }\n\n.fa-id-badge:before {\n  content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n  content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n  content: \"\\f47f\"; }\n\n.fa-image:before {\n  content: \"\\f03e\"; }\n\n.fa-images:before {\n  content: \"\\f302\"; }\n\n.fa-imdb:before {\n  content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n  content: \"\\f01c\"; }\n\n.fa-indent:before {\n  content: \"\\f03c\"; }\n\n.fa-industry:before {\n  content: \"\\f275\"; }\n\n.fa-info:before {\n  content: \"\\f129\"; }\n\n.fa-info-circle:before {\n  content: \"\\f05a\"; }\n\n.fa-instagram:before {\n  content: \"\\f16d\"; }\n\n.fa-internet-explorer:before {\n  content: \"\\f26b\"; }\n\n.fa-ioxhost:before {\n  content: \"\\f208\"; }\n\n.fa-italic:before {\n  content: \"\\f033\"; }\n\n.fa-itunes:before {\n  content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n  content: \"\\f3b5\"; }\n\n.fa-jenkins:before {\n  content: \"\\f3b6\"; }\n\n.fa-joget:before {\n  content: \"\\f3b7\"; }\n\n.fa-joomla:before {\n  content: \"\\f1aa\"; }\n\n.fa-js:before {\n  content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n  content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n  content: \"\\f1cc\"; }\n\n.fa-key:before {\n  content: \"\\f084\"; }\n\n.fa-keyboard:before {\n  content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n  content: \"\\f3ba\"; }\n\n.fa-kickstarter:before {\n  content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n  content: \"\\f3bc\"; }\n\n.fa-korvue:before {\n  content: \"\\f42f\"; }\n\n.fa-language:before {\n  content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n  content: \"\\f109\"; }\n\n.fa-laravel:before {\n  content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n  content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n  content: \"\\f203\"; }\n\n.fa-leaf:before {\n  content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n  content: \"\\f212\"; }\n\n.fa-lemon:before {\n  content: \"\\f094\"; }\n\n.fa-less:before {\n  content: \"\\f41d\"; }\n\n.fa-level-down-alt:before {\n  content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n  content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n  content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n  content: \"\\f0eb\"; }\n\n.fa-line:before {\n  content: \"\\f3c0\"; }\n\n.fa-link:before {\n  content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n  content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n  content: \"\\f0e1\"; }\n\n.fa-linode:before {\n  content: \"\\f2b8\"; }\n\n.fa-linux:before {\n  content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n  content: \"\\f195\"; }\n\n.fa-list:before {\n  content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n  content: \"\\f022\"; }\n\n.fa-list-ol:before {\n  content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n  content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n  content: \"\\f124\"; }\n\n.fa-lock:before {\n  content: \"\\f023\"; }\n\n.fa-lock-open:before {\n  content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n  content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n  content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n  content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n  content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n  content: \"\\f2a8\"; }\n\n.fa-lyft:before {\n  content: \"\\f3c3\"; }\n\n.fa-magento:before {\n  content: \"\\f3c4\"; }\n\n.fa-magic:before {\n  content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n  content: \"\\f076\"; }\n\n.fa-male:before {\n  content: \"\\f183\"; }\n\n.fa-map:before {\n  content: \"\\f279\"; }\n\n.fa-map-marker:before {\n  content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n  content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n  content: \"\\f276\"; }\n\n.fa-map-signs:before {\n  content: \"\\f277\"; }\n\n.fa-mars:before {\n  content: \"\\f222\"; }\n\n.fa-mars-double:before {\n  content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n  content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\"; }\n\n.fa-maxcdn:before {\n  content: \"\\f136\"; }\n\n.fa-medapps:before {\n  content: \"\\f3c6\"; }\n\n.fa-medium:before {\n  content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n  content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n  content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n  content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n  content: \"\\f2e0\"; }\n\n.fa-meh:before {\n  content: \"\\f11a\"; }\n\n.fa-mercury:before {\n  content: \"\\f223\"; }\n\n.fa-microchip:before {\n  content: \"\\f2db\"; }\n\n.fa-microphone:before {\n  content: \"\\f130\"; }\n\n.fa-microphone-slash:before {\n  content: \"\\f131\"; }\n\n.fa-microsoft:before {\n  content: \"\\f3ca\"; }\n\n.fa-minus:before {\n  content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n  content: \"\\f056\"; }\n\n.fa-minus-square:before {\n  content: \"\\f146\"; }\n\n.fa-mix:before {\n  content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n  content: \"\\f289\"; }\n\n.fa-mizuni:before {\n  content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n  content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n  content: \"\\f3cd\"; }\n\n.fa-modx:before {\n  content: \"\\f285\"; }\n\n.fa-monero:before {\n  content: \"\\f3d0\"; }\n\n.fa-money-bill-alt:before {\n  content: \"\\f3d1\"; }\n\n.fa-moon:before {\n  content: \"\\f186\"; }\n\n.fa-motorcycle:before {\n  content: \"\\f21c\"; }\n\n.fa-mouse-pointer:before {\n  content: \"\\f245\"; }\n\n.fa-music:before {\n  content: \"\\f001\"; }\n\n.fa-napster:before {\n  content: \"\\f3d2\"; }\n\n.fa-neuter:before {\n  content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n  content: \"\\f1ea\"; }\n\n.fa-nintendo-switch:before {\n  content: \"\\f418\"; }\n\n.fa-node:before {\n  content: \"\\f419\"; }\n\n.fa-node-js:before {\n  content: \"\\f3d3\"; }\n\n.fa-notes-medical:before {\n  content: \"\\f481\"; }\n\n.fa-npm:before {\n  content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n  content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n  content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n  content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n  content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n  content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n  content: \"\\f264\"; }\n\n.fa-opencart:before {\n  content: \"\\f23d\"; }\n\n.fa-openid:before {\n  content: \"\\f19b\"; }\n\n.fa-opera:before {\n  content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n  content: \"\\f23c\"; }\n\n.fa-osi:before {\n  content: \"\\f41a\"; }\n\n.fa-outdent:before {\n  content: \"\\f03b\"; }\n\n.fa-page4:before {\n  content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n  content: \"\\f18c\"; }\n\n.fa-paint-brush:before {\n  content: \"\\f1fc\"; }\n\n.fa-palfed:before {\n  content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n  content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n  content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n  content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n  content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n  content: \"\\f1dd\"; }\n\n.fa-paste:before {\n  content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n  content: \"\\f3d9\"; }\n\n.fa-pause:before {\n  content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n  content: \"\\f28b\"; }\n\n.fa-paw:before {\n  content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n  content: \"\\f1ed\"; }\n\n.fa-pen-square:before {\n  content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n  content: \"\\f303\"; }\n\n.fa-people-carry:before {\n  content: \"\\f4ce\"; }\n\n.fa-percent:before {\n  content: \"\\f295\"; }\n\n.fa-periscope:before {\n  content: \"\\f3da\"; }\n\n.fa-phabricator:before {\n  content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n  content: \"\\f3dc\"; }\n\n.fa-phone:before {\n  content: \"\\f095\"; }\n\n.fa-phone-slash:before {\n  content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n  content: \"\\f098\"; }\n\n.fa-phone-volume:before {\n  content: \"\\f2a0\"; }\n\n.fa-php:before {\n  content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n  content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\"; }\n\n.fa-pied-piper-pp:before {\n  content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n  content: \"\\f4d3\"; }\n\n.fa-pills:before {\n  content: \"\\f484\"; }\n\n.fa-pinterest:before {\n  content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n  content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n  content: \"\\f0d3\"; }\n\n.fa-plane:before {\n  content: \"\\f072\"; }\n\n.fa-play:before {\n  content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n  content: \"\\f144\"; }\n\n.fa-playstation:before {\n  content: \"\\f3df\"; }\n\n.fa-plug:before {\n  content: \"\\f1e6\"; }\n\n.fa-plus:before {\n  content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n  content: \"\\f055\"; }\n\n.fa-plus-square:before {\n  content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n  content: \"\\f2ce\"; }\n\n.fa-poo:before {\n  content: \"\\f2fe\"; }\n\n.fa-pound-sign:before {\n  content: \"\\f154\"; }\n\n.fa-power-off:before {\n  content: \"\\f011\"; }\n\n.fa-prescription-bottle:before {\n  content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n  content: \"\\f486\"; }\n\n.fa-print:before {\n  content: \"\\f02f\"; }\n\n.fa-procedures:before {\n  content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n  content: \"\\f288\"; }\n\n.fa-pushed:before {\n  content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n  content: \"\\f12e\"; }\n\n.fa-python:before {\n  content: \"\\f3e2\"; }\n\n.fa-qq:before {\n  content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n  content: \"\\f029\"; }\n\n.fa-question:before {\n  content: \"\\f128\"; }\n\n.fa-question-circle:before {\n  content: \"\\f059\"; }\n\n.fa-quidditch:before {\n  content: \"\\f458\"; }\n\n.fa-quinscape:before {\n  content: \"\\f459\"; }\n\n.fa-quora:before {\n  content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n  content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n  content: \"\\f10e\"; }\n\n.fa-random:before {\n  content: \"\\f074\"; }\n\n.fa-ravelry:before {\n  content: \"\\f2d9\"; }\n\n.fa-react:before {\n  content: \"\\f41b\"; }\n\n.fa-readme:before {\n  content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n  content: \"\\f1d0\"; }\n\n.fa-recycle:before {\n  content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n  content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n  content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n  content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n  content: \"\\f1a2\"; }\n\n.fa-redo:before {\n  content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n  content: \"\\f2f9\"; }\n\n.fa-registered:before {\n  content: \"\\f25d\"; }\n\n.fa-rendact:before {\n  content: \"\\f3e4\"; }\n\n.fa-renren:before {\n  content: \"\\f18b\"; }\n\n.fa-reply:before {\n  content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n  content: \"\\f122\"; }\n\n.fa-replyd:before {\n  content: \"\\f3e6\"; }\n\n.fa-resolving:before {\n  content: \"\\f3e7\"; }\n\n.fa-retweet:before {\n  content: \"\\f079\"; }\n\n.fa-ribbon:before {\n  content: \"\\f4d6\"; }\n\n.fa-road:before {\n  content: \"\\f018\"; }\n\n.fa-rocket:before {\n  content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n  content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n  content: \"\\f3e9\"; }\n\n.fa-rss:before {\n  content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n  content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n  content: \"\\f158\"; }\n\n.fa-rupee-sign:before {\n  content: \"\\f156\"; }\n\n.fa-safari:before {\n  content: \"\\f267\"; }\n\n.fa-sass:before {\n  content: \"\\f41e\"; }\n\n.fa-save:before {\n  content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n  content: \"\\f3ea\"; }\n\n.fa-scribd:before {\n  content: \"\\f28a\"; }\n\n.fa-search:before {\n  content: \"\\f002\"; }\n\n.fa-search-minus:before {\n  content: \"\\f010\"; }\n\n.fa-search-plus:before {\n  content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n  content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n  content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n  content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n  content: \"\\f213\"; }\n\n.fa-server:before {\n  content: \"\\f233\"; }\n\n.fa-servicestack:before {\n  content: \"\\f3ec\"; }\n\n.fa-share:before {\n  content: \"\\f064\"; }\n\n.fa-share-alt:before {\n  content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n  content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n  content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n  content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n  content: \"\\f3ed\"; }\n\n.fa-ship:before {\n  content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n  content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n  content: \"\\f214\"; }\n\n.fa-shopping-bag:before {\n  content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n  content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n  content: \"\\f07a\"; }\n\n.fa-shower:before {\n  content: \"\\f2cc\"; }\n\n.fa-sign:before {\n  content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n  content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n  content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n  content: \"\\f2f5\"; }\n\n.fa-signal:before {\n  content: \"\\f012\"; }\n\n.fa-simplybuilt:before {\n  content: \"\\f215\"; }\n\n.fa-sistrix:before {\n  content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n  content: \"\\f0e8\"; }\n\n.fa-skyatlas:before {\n  content: \"\\f216\"; }\n\n.fa-skype:before {\n  content: \"\\f17e\"; }\n\n.fa-slack:before {\n  content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n  content: \"\\f3ef\"; }\n\n.fa-sliders-h:before {\n  content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n  content: \"\\f1e7\"; }\n\n.fa-smile:before {\n  content: \"\\f118\"; }\n\n.fa-smoking:before {\n  content: \"\\f48d\"; }\n\n.fa-snapchat:before {\n  content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n  content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n  content: \"\\f2ad\"; }\n\n.fa-snowflake:before {\n  content: \"\\f2dc\"; }\n\n.fa-sort:before {\n  content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n  content: \"\\f15d\"; }\n\n.fa-sort-alpha-up:before {\n  content: \"\\f15e\"; }\n\n.fa-sort-amount-down:before {\n  content: \"\\f160\"; }\n\n.fa-sort-amount-up:before {\n  content: \"\\f161\"; }\n\n.fa-sort-down:before {\n  content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n  content: \"\\f162\"; }\n\n.fa-sort-numeric-up:before {\n  content: \"\\f163\"; }\n\n.fa-sort-up:before {\n  content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n  content: \"\\f1be\"; }\n\n.fa-space-shuttle:before {\n  content: \"\\f197\"; }\n\n.fa-speakap:before {\n  content: \"\\f3f3\"; }\n\n.fa-spinner:before {\n  content: \"\\f110\"; }\n\n.fa-spotify:before {\n  content: \"\\f1bc\"; }\n\n.fa-square:before {\n  content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n  content: \"\\f45c\"; }\n\n.fa-stack-exchange:before {\n  content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n  content: \"\\f16c\"; }\n\n.fa-star:before {\n  content: \"\\f005\"; }\n\n.fa-star-half:before {\n  content: \"\\f089\"; }\n\n.fa-staylinked:before {\n  content: \"\\f3f5\"; }\n\n.fa-steam:before {\n  content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n  content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n  content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n  content: \"\\f048\"; }\n\n.fa-step-forward:before {\n  content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n  content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n  content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n  content: \"\\f249\"; }\n\n.fa-stop:before {\n  content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n  content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n  content: \"\\f2f2\"; }\n\n.fa-strava:before {\n  content: \"\\f428\"; }\n\n.fa-street-view:before {\n  content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n  content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n  content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n  content: \"\\f42a\"; }\n\n.fa-studiovinari:before {\n  content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n  content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n  content: \"\\f12c\"; }\n\n.fa-subway:before {\n  content: \"\\f239\"; }\n\n.fa-suitcase:before {\n  content: \"\\f0f2\"; }\n\n.fa-sun:before {\n  content: \"\\f185\"; }\n\n.fa-superpowers:before {\n  content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n  content: \"\\f12b\"; }\n\n.fa-supple:before {\n  content: \"\\f3f9\"; }\n\n.fa-sync:before {\n  content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n  content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n  content: \"\\f48e\"; }\n\n.fa-table:before {\n  content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n  content: \"\\f45d\"; }\n\n.fa-tablet:before {\n  content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n  content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n  content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n  content: \"\\f3fd\"; }\n\n.fa-tag:before {\n  content: \"\\f02b\"; }\n\n.fa-tags:before {\n  content: \"\\f02c\"; }\n\n.fa-tape:before {\n  content: \"\\f4db\"; }\n\n.fa-tasks:before {\n  content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n  content: \"\\f1ba\"; }\n\n.fa-telegram:before {\n  content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n  content: \"\\f3fe\"; }\n\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\"; }\n\n.fa-terminal:before {\n  content: \"\\f120\"; }\n\n.fa-text-height:before {\n  content: \"\\f034\"; }\n\n.fa-text-width:before {\n  content: \"\\f035\"; }\n\n.fa-th:before {\n  content: \"\\f00a\"; }\n\n.fa-th-large:before {\n  content: \"\\f009\"; }\n\n.fa-th-list:before {\n  content: \"\\f00b\"; }\n\n.fa-themeisle:before {\n  content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n  content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n  content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n  content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n  content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n  content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n  content: \"\\f2c8\"; }\n\n.fa-thumbs-down:before {\n  content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n  content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n  content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n  content: \"\\f3ff\"; }\n\n.fa-times:before {\n  content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n  content: \"\\f057\"; }\n\n.fa-tint:before {\n  content: \"\\f043\"; }\n\n.fa-toggle-off:before {\n  content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n  content: \"\\f205\"; }\n\n.fa-trademark:before {\n  content: \"\\f25c\"; }\n\n.fa-train:before {\n  content: \"\\f238\"; }\n\n.fa-transgender:before {\n  content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n  content: \"\\f225\"; }\n\n.fa-trash:before {\n  content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n  content: \"\\f2ed\"; }\n\n.fa-tree:before {\n  content: \"\\f1bb\"; }\n\n.fa-trello:before {\n  content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n  content: \"\\f262\"; }\n\n.fa-trophy:before {\n  content: \"\\f091\"; }\n\n.fa-truck:before {\n  content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n  content: \"\\f4de\"; }\n\n.fa-truck-moving:before {\n  content: \"\\f4df\"; }\n\n.fa-tty:before {\n  content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n  content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n  content: \"\\f174\"; }\n\n.fa-tv:before {\n  content: \"\\f26c\"; }\n\n.fa-twitch:before {\n  content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n  content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n  content: \"\\f081\"; }\n\n.fa-typo3:before {\n  content: \"\\f42b\"; }\n\n.fa-uber:before {\n  content: \"\\f402\"; }\n\n.fa-uikit:before {\n  content: \"\\f403\"; }\n\n.fa-umbrella:before {\n  content: \"\\f0e9\"; }\n\n.fa-underline:before {\n  content: \"\\f0cd\"; }\n\n.fa-undo:before {\n  content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n  content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n  content: \"\\f404\"; }\n\n.fa-universal-access:before {\n  content: \"\\f29a\"; }\n\n.fa-university:before {\n  content: \"\\f19c\"; }\n\n.fa-unlink:before {\n  content: \"\\f127\"; }\n\n.fa-unlock:before {\n  content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n  content: \"\\f13e\"; }\n\n.fa-untappd:before {\n  content: \"\\f405\"; }\n\n.fa-upload:before {\n  content: \"\\f093\"; }\n\n.fa-usb:before {\n  content: \"\\f287\"; }\n\n.fa-user:before {\n  content: \"\\f007\"; }\n\n.fa-user-circle:before {\n  content: \"\\f2bd\"; }\n\n.fa-user-md:before {\n  content: \"\\f0f0\"; }\n\n.fa-user-plus:before {\n  content: \"\\f234\"; }\n\n.fa-user-secret:before {\n  content: \"\\f21b\"; }\n\n.fa-user-times:before {\n  content: \"\\f235\"; }\n\n.fa-users:before {\n  content: \"\\f0c0\"; }\n\n.fa-ussunnah:before {\n  content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n  content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n  content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n  content: \"\\f408\"; }\n\n.fa-venus:before {\n  content: \"\\f221\"; }\n\n.fa-venus-double:before {\n  content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n  content: \"\\f228\"; }\n\n.fa-viacoin:before {\n  content: \"\\f237\"; }\n\n.fa-viadeo:before {\n  content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n  content: \"\\f2aa\"; }\n\n.fa-vial:before {\n  content: \"\\f492\"; }\n\n.fa-vials:before {\n  content: \"\\f493\"; }\n\n.fa-viber:before {\n  content: \"\\f409\"; }\n\n.fa-video:before {\n  content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n  content: \"\\f4e2\"; }\n\n.fa-vimeo:before {\n  content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n  content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n  content: \"\\f27d\"; }\n\n.fa-vine:before {\n  content: \"\\f1ca\"; }\n\n.fa-vk:before {\n  content: \"\\f189\"; }\n\n.fa-vnv:before {\n  content: \"\\f40b\"; }\n\n.fa-volleyball-ball:before {\n  content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n  content: \"\\f027\"; }\n\n.fa-volume-off:before {\n  content: \"\\f026\"; }\n\n.fa-volume-up:before {\n  content: \"\\f028\"; }\n\n.fa-vuejs:before {\n  content: \"\\f41f\"; }\n\n.fa-warehouse:before {\n  content: \"\\f494\"; }\n\n.fa-weibo:before {\n  content: \"\\f18a\"; }\n\n.fa-weight:before {\n  content: \"\\f496\"; }\n\n.fa-weixin:before {\n  content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n  content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n  content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n  content: \"\\f193\"; }\n\n.fa-whmcs:before {\n  content: \"\\f40d\"; }\n\n.fa-wifi:before {\n  content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n  content: \"\\f266\"; }\n\n.fa-window-close:before {\n  content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n  content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n  content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n  content: \"\\f2d2\"; }\n\n.fa-windows:before {\n  content: \"\\f17a\"; }\n\n.fa-wine-glass:before {\n  content: \"\\f4e3\"; }\n\n.fa-won-sign:before {\n  content: \"\\f159\"; }\n\n.fa-wordpress:before {\n  content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n  content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n  content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n  content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n  content: \"\\f298\"; }\n\n.fa-wrench:before {\n  content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n  content: \"\\f497\"; }\n\n.fa-xbox:before {\n  content: \"\\f412\"; }\n\n.fa-xing:before {\n  content: \"\\f168\"; }\n\n.fa-xing-square:before {\n  content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n  content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n  content: \"\\f19e\"; }\n\n.fa-yandex:before {\n  content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n  content: \"\\f414\"; }\n\n.fa-yelp:before {\n  content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n  content: \"\\f157\"; }\n\n.fa-yoast:before {\n  content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n  content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n  content: \"\\f431\"; }\n\n.sr-only {\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.sr-only-focusable:active, .sr-only-focusable:focus {\n  clip: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  position: static;\n  width: auto; }\n@font-face {\n  font-family: 'Font Awesome 5 Brands';\n  font-style: normal;\n  font-weight: normal;\n  src: url(\"../webfonts/fa-brands-400.eot\");\n  src: url(\"../webfonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-brands-400.woff\") format(\"woff\"), url(\"../webfonts/fa-brands-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n  font-family: 'Font Awesome 5 Brands'; }\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 400;\n  src: url(\"../webfonts/fa-regular-400.eot\");\n  src: url(\"../webfonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-regular-400.woff\") format(\"woff\"), url(\"../webfonts/fa-regular-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400; }\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 900;\n  src: url(\"../webfonts/fa-solid-900.eot\");\n  src: url(\"../webfonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../webfonts/fa-solid-900.woff\") format(\"woff\"), url(\"../webfonts/fa-solid-900.ttf\") format(\"truetype\"), url(\"../webfonts/fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 900; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/css/fontawesome.css",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fab {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  text-rendering: auto;\n  line-height: 1; }\n\n.fa-lg {\n  font-size: 1.33333em;\n  line-height: 0.75em;\n  vertical-align: -.0667em; }\n\n.fa-xs {\n  font-size: .75em; }\n\n.fa-sm {\n  font-size: .875em; }\n\n.fa-1x {\n  font-size: 1em; }\n\n.fa-2x {\n  font-size: 2em; }\n\n.fa-3x {\n  font-size: 3em; }\n\n.fa-4x {\n  font-size: 4em; }\n\n.fa-5x {\n  font-size: 5em; }\n\n.fa-6x {\n  font-size: 6em; }\n\n.fa-7x {\n  font-size: 7em; }\n\n.fa-8x {\n  font-size: 8em; }\n\n.fa-9x {\n  font-size: 9em; }\n\n.fa-10x {\n  font-size: 10em; }\n\n.fa-fw {\n  text-align: center;\n  width: 1.25em; }\n\n.fa-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0; }\n  .fa-ul > li {\n    position: relative; }\n\n.fa-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit; }\n\n.fa-border {\n  border: solid 0.08em #eee;\n  border-radius: .1em;\n  padding: .2em .25em .15em; }\n\n.fa-pull-left {\n  float: left; }\n\n.fa-pull-right {\n  float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n  margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n  margin-left: .3em; }\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg); }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n          transform: rotate(90deg); }\n\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n          transform: rotate(180deg); }\n\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n          transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n          transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n          transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(-1, -1);\n          transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n  -webkit-filter: none;\n          filter: none; }\n\n.fa-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: middle;\n  width: 2em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%; }\n\n.fa-stack-1x {\n  line-height: inherit; }\n\n.fa-stack-2x {\n  font-size: 2em; }\n\n.fa-inverse {\n  color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n  content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n  content: \"\\f368\"; }\n\n.fa-accusoft:before {\n  content: \"\\f369\"; }\n\n.fa-address-book:before {\n  content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n  content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n  content: \"\\f042\"; }\n\n.fa-adn:before {\n  content: \"\\f170\"; }\n\n.fa-adversal:before {\n  content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n  content: \"\\f36b\"; }\n\n.fa-algolia:before {\n  content: \"\\f36c\"; }\n\n.fa-align-center:before {\n  content: \"\\f037\"; }\n\n.fa-align-justify:before {\n  content: \"\\f039\"; }\n\n.fa-align-left:before {\n  content: \"\\f036\"; }\n\n.fa-align-right:before {\n  content: \"\\f038\"; }\n\n.fa-allergies:before {\n  content: \"\\f461\"; }\n\n.fa-amazon:before {\n  content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n  content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n  content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n  content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n  content: \"\\f36d\"; }\n\n.fa-anchor:before {\n  content: \"\\f13d\"; }\n\n.fa-android:before {\n  content: \"\\f17b\"; }\n\n.fa-angellist:before {\n  content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n  content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n  content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n  content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n  content: \"\\f102\"; }\n\n.fa-angle-down:before {\n  content: \"\\f107\"; }\n\n.fa-angle-left:before {\n  content: \"\\f104\"; }\n\n.fa-angle-right:before {\n  content: \"\\f105\"; }\n\n.fa-angle-up:before {\n  content: \"\\f106\"; }\n\n.fa-angrycreative:before {\n  content: \"\\f36e\"; }\n\n.fa-angular:before {\n  content: \"\\f420\"; }\n\n.fa-app-store:before {\n  content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n  content: \"\\f370\"; }\n\n.fa-apper:before {\n  content: \"\\f371\"; }\n\n.fa-apple:before {\n  content: \"\\f179\"; }\n\n.fa-apple-pay:before {\n  content: \"\\f415\"; }\n\n.fa-archive:before {\n  content: \"\\f187\"; }\n\n.fa-arrow-alt-circle-down:before {\n  content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n  content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n  content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n  content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n  content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n  content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n  content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n  content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n  content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n  content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n  content: \"\\f338\"; }\n\n.fa-assistive-listening-systems:before {\n  content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n  content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n  content: \"\\f372\"; }\n\n.fa-at:before {\n  content: \"\\f1fa\"; }\n\n.fa-audible:before {\n  content: \"\\f373\"; }\n\n.fa-audio-description:before {\n  content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n  content: \"\\f41c\"; }\n\n.fa-avianex:before {\n  content: \"\\f374\"; }\n\n.fa-aviato:before {\n  content: \"\\f421\"; }\n\n.fa-aws:before {\n  content: \"\\f375\"; }\n\n.fa-backward:before {\n  content: \"\\f04a\"; }\n\n.fa-balance-scale:before {\n  content: \"\\f24e\"; }\n\n.fa-ban:before {\n  content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n  content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n  content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n  content: \"\\f02a\"; }\n\n.fa-bars:before {\n  content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n  content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n  content: \"\\f434\"; }\n\n.fa-bath:before {\n  content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n  content: \"\\f244\"; }\n\n.fa-battery-full:before {\n  content: \"\\f240\"; }\n\n.fa-battery-half:before {\n  content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n  content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n  content: \"\\f241\"; }\n\n.fa-bed:before {\n  content: \"\\f236\"; }\n\n.fa-beer:before {\n  content: \"\\f0fc\"; }\n\n.fa-behance:before {\n  content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n  content: \"\\f1b5\"; }\n\n.fa-bell:before {\n  content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n  content: \"\\f1f6\"; }\n\n.fa-bicycle:before {\n  content: \"\\f206\"; }\n\n.fa-bimobject:before {\n  content: \"\\f378\"; }\n\n.fa-binoculars:before {\n  content: \"\\f1e5\"; }\n\n.fa-birthday-cake:before {\n  content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n  content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n  content: \"\\f379\"; }\n\n.fa-bity:before {\n  content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n  content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n  content: \"\\f37b\"; }\n\n.fa-blind:before {\n  content: \"\\f29d\"; }\n\n.fa-blogger:before {\n  content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n  content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n  content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n  content: \"\\f294\"; }\n\n.fa-bold:before {\n  content: \"\\f032\"; }\n\n.fa-bolt:before {\n  content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n  content: \"\\f1e2\"; }\n\n.fa-book:before {\n  content: \"\\f02d\"; }\n\n.fa-bookmark:before {\n  content: \"\\f02e\"; }\n\n.fa-bowling-ball:before {\n  content: \"\\f436\"; }\n\n.fa-box:before {\n  content: \"\\f466\"; }\n\n.fa-box-open:before {\n  content: \"\\f49e\"; }\n\n.fa-boxes:before {\n  content: \"\\f468\"; }\n\n.fa-braille:before {\n  content: \"\\f2a1\"; }\n\n.fa-briefcase:before {\n  content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n  content: \"\\f469\"; }\n\n.fa-btc:before {\n  content: \"\\f15a\"; }\n\n.fa-bug:before {\n  content: \"\\f188\"; }\n\n.fa-building:before {\n  content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n  content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n  content: \"\\f140\"; }\n\n.fa-burn:before {\n  content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n  content: \"\\f37f\"; }\n\n.fa-bus:before {\n  content: \"\\f207\"; }\n\n.fa-buysellads:before {\n  content: \"\\f20d\"; }\n\n.fa-calculator:before {\n  content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n  content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n  content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n  content: \"\\f274\"; }\n\n.fa-calendar-minus:before {\n  content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n  content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n  content: \"\\f273\"; }\n\n.fa-camera:before {\n  content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n  content: \"\\f083\"; }\n\n.fa-capsules:before {\n  content: \"\\f46b\"; }\n\n.fa-car:before {\n  content: \"\\f1b9\"; }\n\n.fa-caret-down:before {\n  content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n  content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n  content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n  content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n  content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n  content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n  content: \"\\f151\"; }\n\n.fa-caret-up:before {\n  content: \"\\f0d8\"; }\n\n.fa-cart-arrow-down:before {\n  content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n  content: \"\\f217\"; }\n\n.fa-cc-amazon-pay:before {\n  content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n  content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n  content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n  content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n  content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n  content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n  content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n  content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n  content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n  content: \"\\f380\"; }\n\n.fa-certificate:before {\n  content: \"\\f0a3\"; }\n\n.fa-chart-area:before {\n  content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n  content: \"\\f080\"; }\n\n.fa-chart-line:before {\n  content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n  content: \"\\f200\"; }\n\n.fa-check:before {\n  content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n  content: \"\\f058\"; }\n\n.fa-check-square:before {\n  content: \"\\f14a\"; }\n\n.fa-chess:before {\n  content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n  content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n  content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n  content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n  content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n  content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n  content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n  content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n  content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n  content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n  content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n  content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n  content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n  content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n  content: \"\\f077\"; }\n\n.fa-child:before {\n  content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n  content: \"\\f268\"; }\n\n.fa-circle:before {\n  content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n  content: \"\\f1ce\"; }\n\n.fa-clipboard:before {\n  content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n  content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n  content: \"\\f46d\"; }\n\n.fa-clock:before {\n  content: \"\\f017\"; }\n\n.fa-clone:before {\n  content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n  content: \"\\f20a\"; }\n\n.fa-cloud:before {\n  content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n  content: \"\\f381\"; }\n\n.fa-cloud-upload-alt:before {\n  content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n  content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n  content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n  content: \"\\f385\"; }\n\n.fa-code:before {\n  content: \"\\f121\"; }\n\n.fa-code-branch:before {\n  content: \"\\f126\"; }\n\n.fa-codepen:before {\n  content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n  content: \"\\f284\"; }\n\n.fa-coffee:before {\n  content: \"\\f0f4\"; }\n\n.fa-cog:before {\n  content: \"\\f013\"; }\n\n.fa-cogs:before {\n  content: \"\\f085\"; }\n\n.fa-columns:before {\n  content: \"\\f0db\"; }\n\n.fa-comment:before {\n  content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n  content: \"\\f27a\"; }\n\n.fa-comment-dots:before {\n  content: \"\\f4ad\"; }\n\n.fa-comment-slash:before {\n  content: \"\\f4b3\"; }\n\n.fa-comments:before {\n  content: \"\\f086\"; }\n\n.fa-compass:before {\n  content: \"\\f14e\"; }\n\n.fa-compress:before {\n  content: \"\\f066\"; }\n\n.fa-connectdevelop:before {\n  content: \"\\f20e\"; }\n\n.fa-contao:before {\n  content: \"\\f26d\"; }\n\n.fa-copy:before {\n  content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n  content: \"\\f1f9\"; }\n\n.fa-couch:before {\n  content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n  content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n  content: \"\\f25e\"; }\n\n.fa-credit-card:before {\n  content: \"\\f09d\"; }\n\n.fa-crop:before {\n  content: \"\\f125\"; }\n\n.fa-crosshairs:before {\n  content: \"\\f05b\"; }\n\n.fa-css3:before {\n  content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n  content: \"\\f38b\"; }\n\n.fa-cube:before {\n  content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n  content: \"\\f1b3\"; }\n\n.fa-cut:before {\n  content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n  content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n  content: \"\\f38d\"; }\n\n.fa-dashcube:before {\n  content: \"\\f210\"; }\n\n.fa-database:before {\n  content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n  content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n  content: \"\\f1a5\"; }\n\n.fa-deploydog:before {\n  content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n  content: \"\\f38f\"; }\n\n.fa-desktop:before {\n  content: \"\\f108\"; }\n\n.fa-deviantart:before {\n  content: \"\\f1bd\"; }\n\n.fa-diagnoses:before {\n  content: \"\\f470\"; }\n\n.fa-digg:before {\n  content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n  content: \"\\f391\"; }\n\n.fa-discord:before {\n  content: \"\\f392\"; }\n\n.fa-discourse:before {\n  content: \"\\f393\"; }\n\n.fa-dna:before {\n  content: \"\\f471\"; }\n\n.fa-dochub:before {\n  content: \"\\f394\"; }\n\n.fa-docker:before {\n  content: \"\\f395\"; }\n\n.fa-dollar-sign:before {\n  content: \"\\f155\"; }\n\n.fa-dolly:before {\n  content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n  content: \"\\f474\"; }\n\n.fa-donate:before {\n  content: \"\\f4b9\"; }\n\n.fa-dot-circle:before {\n  content: \"\\f192\"; }\n\n.fa-dove:before {\n  content: \"\\f4ba\"; }\n\n.fa-download:before {\n  content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n  content: \"\\f396\"; }\n\n.fa-dribbble:before {\n  content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n  content: \"\\f397\"; }\n\n.fa-dropbox:before {\n  content: \"\\f16b\"; }\n\n.fa-drupal:before {\n  content: \"\\f1a9\"; }\n\n.fa-dyalog:before {\n  content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n  content: \"\\f39a\"; }\n\n.fa-edge:before {\n  content: \"\\f282\"; }\n\n.fa-edit:before {\n  content: \"\\f044\"; }\n\n.fa-eject:before {\n  content: \"\\f052\"; }\n\n.fa-elementor:before {\n  content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n  content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n  content: \"\\f142\"; }\n\n.fa-ember:before {\n  content: \"\\f423\"; }\n\n.fa-empire:before {\n  content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n  content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n  content: \"\\f2b6\"; }\n\n.fa-envelope-square:before {\n  content: \"\\f199\"; }\n\n.fa-envira:before {\n  content: \"\\f299\"; }\n\n.fa-eraser:before {\n  content: \"\\f12d\"; }\n\n.fa-erlang:before {\n  content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n  content: \"\\f42e\"; }\n\n.fa-etsy:before {\n  content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n  content: \"\\f153\"; }\n\n.fa-exchange-alt:before {\n  content: \"\\f362\"; }\n\n.fa-exclamation:before {\n  content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n  content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n  content: \"\\f071\"; }\n\n.fa-expand:before {\n  content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n  content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n  content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n  content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n  content: \"\\f360\"; }\n\n.fa-eye:before {\n  content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n  content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n  content: \"\\f070\"; }\n\n.fa-facebook:before {\n  content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n  content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n  content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n  content: \"\\f082\"; }\n\n.fa-fast-backward:before {\n  content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n  content: \"\\f050\"; }\n\n.fa-fax:before {\n  content: \"\\f1ac\"; }\n\n.fa-female:before {\n  content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n  content: \"\\f0fb\"; }\n\n.fa-file:before {\n  content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n  content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n  content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n  content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n  content: \"\\f1c9\"; }\n\n.fa-file-excel:before {\n  content: \"\\f1c3\"; }\n\n.fa-file-image:before {\n  content: \"\\f1c5\"; }\n\n.fa-file-medical:before {\n  content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n  content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n  content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n  content: \"\\f1c4\"; }\n\n.fa-file-video:before {\n  content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n  content: \"\\f1c2\"; }\n\n.fa-film:before {\n  content: \"\\f008\"; }\n\n.fa-filter:before {\n  content: \"\\f0b0\"; }\n\n.fa-fire:before {\n  content: \"\\f06d\"; }\n\n.fa-fire-extinguisher:before {\n  content: \"\\f134\"; }\n\n.fa-firefox:before {\n  content: \"\\f269\"; }\n\n.fa-first-aid:before {\n  content: \"\\f479\"; }\n\n.fa-first-order:before {\n  content: \"\\f2b0\"; }\n\n.fa-firstdraft:before {\n  content: \"\\f3a1\"; }\n\n.fa-flag:before {\n  content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n  content: \"\\f11e\"; }\n\n.fa-flask:before {\n  content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n  content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n  content: \"\\f44d\"; }\n\n.fa-fly:before {\n  content: \"\\f417\"; }\n\n.fa-folder:before {\n  content: \"\\f07b\"; }\n\n.fa-folder-open:before {\n  content: \"\\f07c\"; }\n\n.fa-font:before {\n  content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n  content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n  content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n  content: \"\\f425\"; }\n\n.fa-fonticons:before {\n  content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n  content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n  content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n  content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n  content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n  content: \"\\f211\"; }\n\n.fa-forward:before {\n  content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n  content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n  content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n  content: \"\\f3a4\"; }\n\n.fa-frown:before {\n  content: \"\\f119\"; }\n\n.fa-futbol:before {\n  content: \"\\f1e3\"; }\n\n.fa-gamepad:before {\n  content: \"\\f11b\"; }\n\n.fa-gavel:before {\n  content: \"\\f0e3\"; }\n\n.fa-gem:before {\n  content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n  content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n  content: \"\\f265\"; }\n\n.fa-gg:before {\n  content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n  content: \"\\f261\"; }\n\n.fa-gift:before {\n  content: \"\\f06b\"; }\n\n.fa-git:before {\n  content: \"\\f1d3\"; }\n\n.fa-git-square:before {\n  content: \"\\f1d2\"; }\n\n.fa-github:before {\n  content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n  content: \"\\f113\"; }\n\n.fa-github-square:before {\n  content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n  content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n  content: \"\\f296\"; }\n\n.fa-gitter:before {\n  content: \"\\f426\"; }\n\n.fa-glass-martini:before {\n  content: \"\\f000\"; }\n\n.fa-glide:before {\n  content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n  content: \"\\f2a6\"; }\n\n.fa-globe:before {\n  content: \"\\f0ac\"; }\n\n.fa-gofore:before {\n  content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n  content: \"\\f450\"; }\n\n.fa-goodreads:before {\n  content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n  content: \"\\f3a9\"; }\n\n.fa-google:before {\n  content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n  content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n  content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n  content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n  content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n  content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n  content: \"\\f1ee\"; }\n\n.fa-graduation-cap:before {\n  content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n  content: \"\\f184\"; }\n\n.fa-grav:before {\n  content: \"\\f2d6\"; }\n\n.fa-gripfire:before {\n  content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n  content: \"\\f3ad\"; }\n\n.fa-gulp:before {\n  content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n  content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n  content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n  content: \"\\f3af\"; }\n\n.fa-hand-holding:before {\n  content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n  content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n  content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n  content: \"\\f258\"; }\n\n.fa-hand-paper:before {\n  content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n  content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n  content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n  content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n  content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n  content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n  content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n  content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n  content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n  content: \"\\f259\"; }\n\n.fa-hands:before {\n  content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n  content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n  content: \"\\f2b5\"; }\n\n.fa-hashtag:before {\n  content: \"\\f292\"; }\n\n.fa-hdd:before {\n  content: \"\\f0a0\"; }\n\n.fa-heading:before {\n  content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n  content: \"\\f025\"; }\n\n.fa-heart:before {\n  content: \"\\f004\"; }\n\n.fa-heartbeat:before {\n  content: \"\\f21e\"; }\n\n.fa-hips:before {\n  content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n  content: \"\\f3b0\"; }\n\n.fa-history:before {\n  content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n  content: \"\\f453\"; }\n\n.fa-home:before {\n  content: \"\\f015\"; }\n\n.fa-hooli:before {\n  content: \"\\f427\"; }\n\n.fa-hospital:before {\n  content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n  content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n  content: \"\\f47e\"; }\n\n.fa-hotjar:before {\n  content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n  content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n  content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n  content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n  content: \"\\f251\"; }\n\n.fa-houzz:before {\n  content: \"\\f27c\"; }\n\n.fa-html5:before {\n  content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n  content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n  content: \"\\f246\"; }\n\n.fa-id-badge:before {\n  content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n  content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n  content: \"\\f47f\"; }\n\n.fa-image:before {\n  content: \"\\f03e\"; }\n\n.fa-images:before {\n  content: \"\\f302\"; }\n\n.fa-imdb:before {\n  content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n  content: \"\\f01c\"; }\n\n.fa-indent:before {\n  content: \"\\f03c\"; }\n\n.fa-industry:before {\n  content: \"\\f275\"; }\n\n.fa-info:before {\n  content: \"\\f129\"; }\n\n.fa-info-circle:before {\n  content: \"\\f05a\"; }\n\n.fa-instagram:before {\n  content: \"\\f16d\"; }\n\n.fa-internet-explorer:before {\n  content: \"\\f26b\"; }\n\n.fa-ioxhost:before {\n  content: \"\\f208\"; }\n\n.fa-italic:before {\n  content: \"\\f033\"; }\n\n.fa-itunes:before {\n  content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n  content: \"\\f3b5\"; }\n\n.fa-jenkins:before {\n  content: \"\\f3b6\"; }\n\n.fa-joget:before {\n  content: \"\\f3b7\"; }\n\n.fa-joomla:before {\n  content: \"\\f1aa\"; }\n\n.fa-js:before {\n  content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n  content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n  content: \"\\f1cc\"; }\n\n.fa-key:before {\n  content: \"\\f084\"; }\n\n.fa-keyboard:before {\n  content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n  content: \"\\f3ba\"; }\n\n.fa-kickstarter:before {\n  content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n  content: \"\\f3bc\"; }\n\n.fa-korvue:before {\n  content: \"\\f42f\"; }\n\n.fa-language:before {\n  content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n  content: \"\\f109\"; }\n\n.fa-laravel:before {\n  content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n  content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n  content: \"\\f203\"; }\n\n.fa-leaf:before {\n  content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n  content: \"\\f212\"; }\n\n.fa-lemon:before {\n  content: \"\\f094\"; }\n\n.fa-less:before {\n  content: \"\\f41d\"; }\n\n.fa-level-down-alt:before {\n  content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n  content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n  content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n  content: \"\\f0eb\"; }\n\n.fa-line:before {\n  content: \"\\f3c0\"; }\n\n.fa-link:before {\n  content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n  content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n  content: \"\\f0e1\"; }\n\n.fa-linode:before {\n  content: \"\\f2b8\"; }\n\n.fa-linux:before {\n  content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n  content: \"\\f195\"; }\n\n.fa-list:before {\n  content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n  content: \"\\f022\"; }\n\n.fa-list-ol:before {\n  content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n  content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n  content: \"\\f124\"; }\n\n.fa-lock:before {\n  content: \"\\f023\"; }\n\n.fa-lock-open:before {\n  content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n  content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n  content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n  content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n  content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n  content: \"\\f2a8\"; }\n\n.fa-lyft:before {\n  content: \"\\f3c3\"; }\n\n.fa-magento:before {\n  content: \"\\f3c4\"; }\n\n.fa-magic:before {\n  content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n  content: \"\\f076\"; }\n\n.fa-male:before {\n  content: \"\\f183\"; }\n\n.fa-map:before {\n  content: \"\\f279\"; }\n\n.fa-map-marker:before {\n  content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n  content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n  content: \"\\f276\"; }\n\n.fa-map-signs:before {\n  content: \"\\f277\"; }\n\n.fa-mars:before {\n  content: \"\\f222\"; }\n\n.fa-mars-double:before {\n  content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n  content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\"; }\n\n.fa-maxcdn:before {\n  content: \"\\f136\"; }\n\n.fa-medapps:before {\n  content: \"\\f3c6\"; }\n\n.fa-medium:before {\n  content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n  content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n  content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n  content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n  content: \"\\f2e0\"; }\n\n.fa-meh:before {\n  content: \"\\f11a\"; }\n\n.fa-mercury:before {\n  content: \"\\f223\"; }\n\n.fa-microchip:before {\n  content: \"\\f2db\"; }\n\n.fa-microphone:before {\n  content: \"\\f130\"; }\n\n.fa-microphone-slash:before {\n  content: \"\\f131\"; }\n\n.fa-microsoft:before {\n  content: \"\\f3ca\"; }\n\n.fa-minus:before {\n  content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n  content: \"\\f056\"; }\n\n.fa-minus-square:before {\n  content: \"\\f146\"; }\n\n.fa-mix:before {\n  content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n  content: \"\\f289\"; }\n\n.fa-mizuni:before {\n  content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n  content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n  content: \"\\f3cd\"; }\n\n.fa-modx:before {\n  content: \"\\f285\"; }\n\n.fa-monero:before {\n  content: \"\\f3d0\"; }\n\n.fa-money-bill-alt:before {\n  content: \"\\f3d1\"; }\n\n.fa-moon:before {\n  content: \"\\f186\"; }\n\n.fa-motorcycle:before {\n  content: \"\\f21c\"; }\n\n.fa-mouse-pointer:before {\n  content: \"\\f245\"; }\n\n.fa-music:before {\n  content: \"\\f001\"; }\n\n.fa-napster:before {\n  content: \"\\f3d2\"; }\n\n.fa-neuter:before {\n  content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n  content: \"\\f1ea\"; }\n\n.fa-nintendo-switch:before {\n  content: \"\\f418\"; }\n\n.fa-node:before {\n  content: \"\\f419\"; }\n\n.fa-node-js:before {\n  content: \"\\f3d3\"; }\n\n.fa-notes-medical:before {\n  content: \"\\f481\"; }\n\n.fa-npm:before {\n  content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n  content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n  content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n  content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n  content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n  content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n  content: \"\\f264\"; }\n\n.fa-opencart:before {\n  content: \"\\f23d\"; }\n\n.fa-openid:before {\n  content: \"\\f19b\"; }\n\n.fa-opera:before {\n  content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n  content: \"\\f23c\"; }\n\n.fa-osi:before {\n  content: \"\\f41a\"; }\n\n.fa-outdent:before {\n  content: \"\\f03b\"; }\n\n.fa-page4:before {\n  content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n  content: \"\\f18c\"; }\n\n.fa-paint-brush:before {\n  content: \"\\f1fc\"; }\n\n.fa-palfed:before {\n  content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n  content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n  content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n  content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n  content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n  content: \"\\f1dd\"; }\n\n.fa-paste:before {\n  content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n  content: \"\\f3d9\"; }\n\n.fa-pause:before {\n  content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n  content: \"\\f28b\"; }\n\n.fa-paw:before {\n  content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n  content: \"\\f1ed\"; }\n\n.fa-pen-square:before {\n  content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n  content: \"\\f303\"; }\n\n.fa-people-carry:before {\n  content: \"\\f4ce\"; }\n\n.fa-percent:before {\n  content: \"\\f295\"; }\n\n.fa-periscope:before {\n  content: \"\\f3da\"; }\n\n.fa-phabricator:before {\n  content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n  content: \"\\f3dc\"; }\n\n.fa-phone:before {\n  content: \"\\f095\"; }\n\n.fa-phone-slash:before {\n  content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n  content: \"\\f098\"; }\n\n.fa-phone-volume:before {\n  content: \"\\f2a0\"; }\n\n.fa-php:before {\n  content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n  content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\"; }\n\n.fa-pied-piper-pp:before {\n  content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n  content: \"\\f4d3\"; }\n\n.fa-pills:before {\n  content: \"\\f484\"; }\n\n.fa-pinterest:before {\n  content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n  content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n  content: \"\\f0d3\"; }\n\n.fa-plane:before {\n  content: \"\\f072\"; }\n\n.fa-play:before {\n  content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n  content: \"\\f144\"; }\n\n.fa-playstation:before {\n  content: \"\\f3df\"; }\n\n.fa-plug:before {\n  content: \"\\f1e6\"; }\n\n.fa-plus:before {\n  content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n  content: \"\\f055\"; }\n\n.fa-plus-square:before {\n  content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n  content: \"\\f2ce\"; }\n\n.fa-poo:before {\n  content: \"\\f2fe\"; }\n\n.fa-pound-sign:before {\n  content: \"\\f154\"; }\n\n.fa-power-off:before {\n  content: \"\\f011\"; }\n\n.fa-prescription-bottle:before {\n  content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n  content: \"\\f486\"; }\n\n.fa-print:before {\n  content: \"\\f02f\"; }\n\n.fa-procedures:before {\n  content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n  content: \"\\f288\"; }\n\n.fa-pushed:before {\n  content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n  content: \"\\f12e\"; }\n\n.fa-python:before {\n  content: \"\\f3e2\"; }\n\n.fa-qq:before {\n  content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n  content: \"\\f029\"; }\n\n.fa-question:before {\n  content: \"\\f128\"; }\n\n.fa-question-circle:before {\n  content: \"\\f059\"; }\n\n.fa-quidditch:before {\n  content: \"\\f458\"; }\n\n.fa-quinscape:before {\n  content: \"\\f459\"; }\n\n.fa-quora:before {\n  content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n  content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n  content: \"\\f10e\"; }\n\n.fa-random:before {\n  content: \"\\f074\"; }\n\n.fa-ravelry:before {\n  content: \"\\f2d9\"; }\n\n.fa-react:before {\n  content: \"\\f41b\"; }\n\n.fa-readme:before {\n  content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n  content: \"\\f1d0\"; }\n\n.fa-recycle:before {\n  content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n  content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n  content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n  content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n  content: \"\\f1a2\"; }\n\n.fa-redo:before {\n  content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n  content: \"\\f2f9\"; }\n\n.fa-registered:before {\n  content: \"\\f25d\"; }\n\n.fa-rendact:before {\n  content: \"\\f3e4\"; }\n\n.fa-renren:before {\n  content: \"\\f18b\"; }\n\n.fa-reply:before {\n  content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n  content: \"\\f122\"; }\n\n.fa-replyd:before {\n  content: \"\\f3e6\"; }\n\n.fa-resolving:before {\n  content: \"\\f3e7\"; }\n\n.fa-retweet:before {\n  content: \"\\f079\"; }\n\n.fa-ribbon:before {\n  content: \"\\f4d6\"; }\n\n.fa-road:before {\n  content: \"\\f018\"; }\n\n.fa-rocket:before {\n  content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n  content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n  content: \"\\f3e9\"; }\n\n.fa-rss:before {\n  content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n  content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n  content: \"\\f158\"; }\n\n.fa-rupee-sign:before {\n  content: \"\\f156\"; }\n\n.fa-safari:before {\n  content: \"\\f267\"; }\n\n.fa-sass:before {\n  content: \"\\f41e\"; }\n\n.fa-save:before {\n  content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n  content: \"\\f3ea\"; }\n\n.fa-scribd:before {\n  content: \"\\f28a\"; }\n\n.fa-search:before {\n  content: \"\\f002\"; }\n\n.fa-search-minus:before {\n  content: \"\\f010\"; }\n\n.fa-search-plus:before {\n  content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n  content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n  content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n  content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n  content: \"\\f213\"; }\n\n.fa-server:before {\n  content: \"\\f233\"; }\n\n.fa-servicestack:before {\n  content: \"\\f3ec\"; }\n\n.fa-share:before {\n  content: \"\\f064\"; }\n\n.fa-share-alt:before {\n  content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n  content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n  content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n  content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n  content: \"\\f3ed\"; }\n\n.fa-ship:before {\n  content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n  content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n  content: \"\\f214\"; }\n\n.fa-shopping-bag:before {\n  content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n  content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n  content: \"\\f07a\"; }\n\n.fa-shower:before {\n  content: \"\\f2cc\"; }\n\n.fa-sign:before {\n  content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n  content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n  content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n  content: \"\\f2f5\"; }\n\n.fa-signal:before {\n  content: \"\\f012\"; }\n\n.fa-simplybuilt:before {\n  content: \"\\f215\"; }\n\n.fa-sistrix:before {\n  content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n  content: \"\\f0e8\"; }\n\n.fa-skyatlas:before {\n  content: \"\\f216\"; }\n\n.fa-skype:before {\n  content: \"\\f17e\"; }\n\n.fa-slack:before {\n  content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n  content: \"\\f3ef\"; }\n\n.fa-sliders-h:before {\n  content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n  content: \"\\f1e7\"; }\n\n.fa-smile:before {\n  content: \"\\f118\"; }\n\n.fa-smoking:before {\n  content: \"\\f48d\"; }\n\n.fa-snapchat:before {\n  content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n  content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n  content: \"\\f2ad\"; }\n\n.fa-snowflake:before {\n  content: \"\\f2dc\"; }\n\n.fa-sort:before {\n  content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n  content: \"\\f15d\"; }\n\n.fa-sort-alpha-up:before {\n  content: \"\\f15e\"; }\n\n.fa-sort-amount-down:before {\n  content: \"\\f160\"; }\n\n.fa-sort-amount-up:before {\n  content: \"\\f161\"; }\n\n.fa-sort-down:before {\n  content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n  content: \"\\f162\"; }\n\n.fa-sort-numeric-up:before {\n  content: \"\\f163\"; }\n\n.fa-sort-up:before {\n  content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n  content: \"\\f1be\"; }\n\n.fa-space-shuttle:before {\n  content: \"\\f197\"; }\n\n.fa-speakap:before {\n  content: \"\\f3f3\"; }\n\n.fa-spinner:before {\n  content: \"\\f110\"; }\n\n.fa-spotify:before {\n  content: \"\\f1bc\"; }\n\n.fa-square:before {\n  content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n  content: \"\\f45c\"; }\n\n.fa-stack-exchange:before {\n  content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n  content: \"\\f16c\"; }\n\n.fa-star:before {\n  content: \"\\f005\"; }\n\n.fa-star-half:before {\n  content: \"\\f089\"; }\n\n.fa-staylinked:before {\n  content: \"\\f3f5\"; }\n\n.fa-steam:before {\n  content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n  content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n  content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n  content: \"\\f048\"; }\n\n.fa-step-forward:before {\n  content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n  content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n  content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n  content: \"\\f249\"; }\n\n.fa-stop:before {\n  content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n  content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n  content: \"\\f2f2\"; }\n\n.fa-strava:before {\n  content: \"\\f428\"; }\n\n.fa-street-view:before {\n  content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n  content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n  content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n  content: \"\\f42a\"; }\n\n.fa-studiovinari:before {\n  content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n  content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n  content: \"\\f12c\"; }\n\n.fa-subway:before {\n  content: \"\\f239\"; }\n\n.fa-suitcase:before {\n  content: \"\\f0f2\"; }\n\n.fa-sun:before {\n  content: \"\\f185\"; }\n\n.fa-superpowers:before {\n  content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n  content: \"\\f12b\"; }\n\n.fa-supple:before {\n  content: \"\\f3f9\"; }\n\n.fa-sync:before {\n  content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n  content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n  content: \"\\f48e\"; }\n\n.fa-table:before {\n  content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n  content: \"\\f45d\"; }\n\n.fa-tablet:before {\n  content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n  content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n  content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n  content: \"\\f3fd\"; }\n\n.fa-tag:before {\n  content: \"\\f02b\"; }\n\n.fa-tags:before {\n  content: \"\\f02c\"; }\n\n.fa-tape:before {\n  content: \"\\f4db\"; }\n\n.fa-tasks:before {\n  content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n  content: \"\\f1ba\"; }\n\n.fa-telegram:before {\n  content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n  content: \"\\f3fe\"; }\n\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\"; }\n\n.fa-terminal:before {\n  content: \"\\f120\"; }\n\n.fa-text-height:before {\n  content: \"\\f034\"; }\n\n.fa-text-width:before {\n  content: \"\\f035\"; }\n\n.fa-th:before {\n  content: \"\\f00a\"; }\n\n.fa-th-large:before {\n  content: \"\\f009\"; }\n\n.fa-th-list:before {\n  content: \"\\f00b\"; }\n\n.fa-themeisle:before {\n  content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n  content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n  content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n  content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n  content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n  content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n  content: \"\\f2c8\"; }\n\n.fa-thumbs-down:before {\n  content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n  content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n  content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n  content: \"\\f3ff\"; }\n\n.fa-times:before {\n  content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n  content: \"\\f057\"; }\n\n.fa-tint:before {\n  content: \"\\f043\"; }\n\n.fa-toggle-off:before {\n  content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n  content: \"\\f205\"; }\n\n.fa-trademark:before {\n  content: \"\\f25c\"; }\n\n.fa-train:before {\n  content: \"\\f238\"; }\n\n.fa-transgender:before {\n  content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n  content: \"\\f225\"; }\n\n.fa-trash:before {\n  content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n  content: \"\\f2ed\"; }\n\n.fa-tree:before {\n  content: \"\\f1bb\"; }\n\n.fa-trello:before {\n  content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n  content: \"\\f262\"; }\n\n.fa-trophy:before {\n  content: \"\\f091\"; }\n\n.fa-truck:before {\n  content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n  content: \"\\f4de\"; }\n\n.fa-truck-moving:before {\n  content: \"\\f4df\"; }\n\n.fa-tty:before {\n  content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n  content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n  content: \"\\f174\"; }\n\n.fa-tv:before {\n  content: \"\\f26c\"; }\n\n.fa-twitch:before {\n  content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n  content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n  content: \"\\f081\"; }\n\n.fa-typo3:before {\n  content: \"\\f42b\"; }\n\n.fa-uber:before {\n  content: \"\\f402\"; }\n\n.fa-uikit:before {\n  content: \"\\f403\"; }\n\n.fa-umbrella:before {\n  content: \"\\f0e9\"; }\n\n.fa-underline:before {\n  content: \"\\f0cd\"; }\n\n.fa-undo:before {\n  content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n  content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n  content: \"\\f404\"; }\n\n.fa-universal-access:before {\n  content: \"\\f29a\"; }\n\n.fa-university:before {\n  content: \"\\f19c\"; }\n\n.fa-unlink:before {\n  content: \"\\f127\"; }\n\n.fa-unlock:before {\n  content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n  content: \"\\f13e\"; }\n\n.fa-untappd:before {\n  content: \"\\f405\"; }\n\n.fa-upload:before {\n  content: \"\\f093\"; }\n\n.fa-usb:before {\n  content: \"\\f287\"; }\n\n.fa-user:before {\n  content: \"\\f007\"; }\n\n.fa-user-circle:before {\n  content: \"\\f2bd\"; }\n\n.fa-user-md:before {\n  content: \"\\f0f0\"; }\n\n.fa-user-plus:before {\n  content: \"\\f234\"; }\n\n.fa-user-secret:before {\n  content: \"\\f21b\"; }\n\n.fa-user-times:before {\n  content: \"\\f235\"; }\n\n.fa-users:before {\n  content: \"\\f0c0\"; }\n\n.fa-ussunnah:before {\n  content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n  content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n  content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n  content: \"\\f408\"; }\n\n.fa-venus:before {\n  content: \"\\f221\"; }\n\n.fa-venus-double:before {\n  content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n  content: \"\\f228\"; }\n\n.fa-viacoin:before {\n  content: \"\\f237\"; }\n\n.fa-viadeo:before {\n  content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n  content: \"\\f2aa\"; }\n\n.fa-vial:before {\n  content: \"\\f492\"; }\n\n.fa-vials:before {\n  content: \"\\f493\"; }\n\n.fa-viber:before {\n  content: \"\\f409\"; }\n\n.fa-video:before {\n  content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n  content: \"\\f4e2\"; }\n\n.fa-vimeo:before {\n  content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n  content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n  content: \"\\f27d\"; }\n\n.fa-vine:before {\n  content: \"\\f1ca\"; }\n\n.fa-vk:before {\n  content: \"\\f189\"; }\n\n.fa-vnv:before {\n  content: \"\\f40b\"; }\n\n.fa-volleyball-ball:before {\n  content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n  content: \"\\f027\"; }\n\n.fa-volume-off:before {\n  content: \"\\f026\"; }\n\n.fa-volume-up:before {\n  content: \"\\f028\"; }\n\n.fa-vuejs:before {\n  content: \"\\f41f\"; }\n\n.fa-warehouse:before {\n  content: \"\\f494\"; }\n\n.fa-weibo:before {\n  content: \"\\f18a\"; }\n\n.fa-weight:before {\n  content: \"\\f496\"; }\n\n.fa-weixin:before {\n  content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n  content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n  content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n  content: \"\\f193\"; }\n\n.fa-whmcs:before {\n  content: \"\\f40d\"; }\n\n.fa-wifi:before {\n  content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n  content: \"\\f266\"; }\n\n.fa-window-close:before {\n  content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n  content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n  content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n  content: \"\\f2d2\"; }\n\n.fa-windows:before {\n  content: \"\\f17a\"; }\n\n.fa-wine-glass:before {\n  content: \"\\f4e3\"; }\n\n.fa-won-sign:before {\n  content: \"\\f159\"; }\n\n.fa-wordpress:before {\n  content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n  content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n  content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n  content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n  content: \"\\f298\"; }\n\n.fa-wrench:before {\n  content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n  content: \"\\f497\"; }\n\n.fa-xbox:before {\n  content: \"\\f412\"; }\n\n.fa-xing:before {\n  content: \"\\f168\"; }\n\n.fa-xing-square:before {\n  content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n  content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n  content: \"\\f19e\"; }\n\n.fa-yandex:before {\n  content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n  content: \"\\f414\"; }\n\n.fa-yelp:before {\n  content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n  content: \"\\f157\"; }\n\n.fa-yoast:before {\n  content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n  content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n  content: \"\\f431\"; }\n\n.sr-only {\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.sr-only-focusable:active, .sr-only-focusable:focus {\n  clip: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  position: static;\n  width: auto; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_animated.less",
    "content": "// Animated Icons\n// --------------------------\n\n.@{fa-css-prefix}-spin {\n  animation: fa-spin 2s infinite linear;\n}\n\n.@{fa-css-prefix}-pulse {\n  animation: fa-spin 1s infinite steps(8);\n}\n\n@keyframes fa-spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_bordered-pulled.less",
    "content": "// Bordered & Pulled\n// -------------------------\n\n.@{fa-css-prefix}-border {\n  border-radius: .1em;\n  border: solid .08em @fa-border-color;\n  padding: .2em .25em .15em;\n}\n\n.@{fa-css-prefix}-pull-left { float: left; }\n.@{fa-css-prefix}-pull-right { float: right; }\n\n.@{fa-css-prefix}, .fas, .far, .fal, .fab {\n  &.@{fa-css-prefix}-pull-left { margin-right: .3em; }\n  &.@{fa-css-prefix}-pull-right { margin-left: .3em; }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_core.less",
    "content": "// Base Class Definition\n// -------------------------\n\n.@{fa-css-prefix}, .fas, .far, .fal, .fab {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  text-rendering: auto;\n  line-height: 1;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_fixed-width.less",
    "content": "// Fixed Width Icons\n// -------------------------\n.@{fa-css-prefix}-fw {\n  text-align: center;\n  width: (20em / 16);\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_icons.less",
    "content": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n\n.@{fa-css-prefix}-500px:before { content: @fa-var-500px; }\n.@{fa-css-prefix}-accessible-icon:before { content: @fa-var-accessible-icon; }\n.@{fa-css-prefix}-accusoft:before { content: @fa-var-accusoft; }\n.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; }\n.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; }\n.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }\n.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }\n.@{fa-css-prefix}-adversal:before { content: @fa-var-adversal; }\n.@{fa-css-prefix}-affiliatetheme:before { content: @fa-var-affiliatetheme; }\n.@{fa-css-prefix}-algolia:before { content: @fa-var-algolia; }\n.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }\n.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }\n.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }\n.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }\n.@{fa-css-prefix}-allergies:before { content: @fa-var-allergies; }\n.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; }\n.@{fa-css-prefix}-amazon-pay:before { content: @fa-var-amazon-pay; }\n.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }\n.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; }\n.@{fa-css-prefix}-amilia:before { content: @fa-var-amilia; }\n.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }\n.@{fa-css-prefix}-android:before { content: @fa-var-android; }\n.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; }\n.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }\n.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }\n.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }\n.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }\n.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }\n.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }\n.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }\n.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }\n.@{fa-css-prefix}-angrycreative:before { content: @fa-var-angrycreative; }\n.@{fa-css-prefix}-angular:before { content: @fa-var-angular; }\n.@{fa-css-prefix}-app-store:before { content: @fa-var-app-store; }\n.@{fa-css-prefix}-app-store-ios:before { content: @fa-var-app-store-ios; }\n.@{fa-css-prefix}-apper:before { content: @fa-var-apper; }\n.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }\n.@{fa-css-prefix}-apple-pay:before { content: @fa-var-apple-pay; }\n.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }\n.@{fa-css-prefix}-arrow-alt-circle-down:before { content: @fa-var-arrow-alt-circle-down; }\n.@{fa-css-prefix}-arrow-alt-circle-left:before { content: @fa-var-arrow-alt-circle-left; }\n.@{fa-css-prefix}-arrow-alt-circle-right:before { content: @fa-var-arrow-alt-circle-right; }\n.@{fa-css-prefix}-arrow-alt-circle-up:before { content: @fa-var-arrow-alt-circle-up; }\n.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }\n.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }\n.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }\n.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }\n.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }\n.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }\n.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }\n.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }\n.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }\n.@{fa-css-prefix}-arrows-alt-h:before { content: @fa-var-arrows-alt-h; }\n.@{fa-css-prefix}-arrows-alt-v:before { content: @fa-var-arrows-alt-v; }\n.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; }\n.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }\n.@{fa-css-prefix}-asymmetrik:before { content: @fa-var-asymmetrik; }\n.@{fa-css-prefix}-at:before { content: @fa-var-at; }\n.@{fa-css-prefix}-audible:before { content: @fa-var-audible; }\n.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; }\n.@{fa-css-prefix}-autoprefixer:before { content: @fa-var-autoprefixer; }\n.@{fa-css-prefix}-avianex:before { content: @fa-var-avianex; }\n.@{fa-css-prefix}-aviato:before { content: @fa-var-aviato; }\n.@{fa-css-prefix}-aws:before { content: @fa-var-aws; }\n.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }\n.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; }\n.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }\n.@{fa-css-prefix}-band-aid:before { content: @fa-var-band-aid; }\n.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; }\n.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }\n.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }\n.@{fa-css-prefix}-baseball-ball:before { content: @fa-var-baseball-ball; }\n.@{fa-css-prefix}-basketball-ball:before { content: @fa-var-basketball-ball; }\n.@{fa-css-prefix}-bath:before { content: @fa-var-bath; }\n.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; }\n.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; }\n.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; }\n.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; }\n.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; }\n.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }\n.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }\n.@{fa-css-prefix}-behance:before { content: @fa-var-behance; }\n.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; }\n.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }\n.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; }\n.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; }\n.@{fa-css-prefix}-bimobject:before { content: @fa-var-bimobject; }\n.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; }\n.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; }\n.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }\n.@{fa-css-prefix}-bitcoin:before { content: @fa-var-bitcoin; }\n.@{fa-css-prefix}-bity:before { content: @fa-var-bity; }\n.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; }\n.@{fa-css-prefix}-blackberry:before { content: @fa-var-blackberry; }\n.@{fa-css-prefix}-blind:before { content: @fa-var-blind; }\n.@{fa-css-prefix}-blogger:before { content: @fa-var-blogger; }\n.@{fa-css-prefix}-blogger-b:before { content: @fa-var-blogger-b; }\n.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; }\n.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; }\n.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }\n.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }\n.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; }\n.@{fa-css-prefix}-book:before { content: @fa-var-book; }\n.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }\n.@{fa-css-prefix}-bowling-ball:before { content: @fa-var-bowling-ball; }\n.@{fa-css-prefix}-box:before { content: @fa-var-box; }\n.@{fa-css-prefix}-box-open:before { content: @fa-var-box-open; }\n.@{fa-css-prefix}-boxes:before { content: @fa-var-boxes; }\n.@{fa-css-prefix}-braille:before { content: @fa-var-braille; }\n.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }\n.@{fa-css-prefix}-briefcase-medical:before { content: @fa-var-briefcase-medical; }\n.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }\n.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }\n.@{fa-css-prefix}-building:before { content: @fa-var-building; }\n.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }\n.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }\n.@{fa-css-prefix}-burn:before { content: @fa-var-burn; }\n.@{fa-css-prefix}-buromobelexperte:before { content: @fa-var-buromobelexperte; }\n.@{fa-css-prefix}-bus:before { content: @fa-var-bus; }\n.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }\n.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; }\n.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }\n.@{fa-css-prefix}-calendar-alt:before { content: @fa-var-calendar-alt; }\n.@{fa-css-prefix}-calendar-check:before { content: @fa-var-calendar-check; }\n.@{fa-css-prefix}-calendar-minus:before { content: @fa-var-calendar-minus; }\n.@{fa-css-prefix}-calendar-plus:before { content: @fa-var-calendar-plus; }\n.@{fa-css-prefix}-calendar-times:before { content: @fa-var-calendar-times; }\n.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }\n.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }\n.@{fa-css-prefix}-capsules:before { content: @fa-var-capsules; }\n.@{fa-css-prefix}-car:before { content: @fa-var-car; }\n.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }\n.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }\n.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }\n.@{fa-css-prefix}-caret-square-down:before { content: @fa-var-caret-square-down; }\n.@{fa-css-prefix}-caret-square-left:before { content: @fa-var-caret-square-left; }\n.@{fa-css-prefix}-caret-square-right:before { content: @fa-var-caret-square-right; }\n.@{fa-css-prefix}-caret-square-up:before { content: @fa-var-caret-square-up; }\n.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }\n.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }\n.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }\n.@{fa-css-prefix}-cc-amazon-pay:before { content: @fa-var-cc-amazon-pay; }\n.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }\n.@{fa-css-prefix}-cc-apple-pay:before { content: @fa-var-cc-apple-pay; }\n.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; }\n.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }\n.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; }\n.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }\n.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }\n.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }\n.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }\n.@{fa-css-prefix}-centercode:before { content: @fa-var-centercode; }\n.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }\n.@{fa-css-prefix}-chart-area:before { content: @fa-var-chart-area; }\n.@{fa-css-prefix}-chart-bar:before { content: @fa-var-chart-bar; }\n.@{fa-css-prefix}-chart-line:before { content: @fa-var-chart-line; }\n.@{fa-css-prefix}-chart-pie:before { content: @fa-var-chart-pie; }\n.@{fa-css-prefix}-check:before { content: @fa-var-check; }\n.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }\n.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }\n.@{fa-css-prefix}-chess:before { content: @fa-var-chess; }\n.@{fa-css-prefix}-chess-bishop:before { content: @fa-var-chess-bishop; }\n.@{fa-css-prefix}-chess-board:before { content: @fa-var-chess-board; }\n.@{fa-css-prefix}-chess-king:before { content: @fa-var-chess-king; }\n.@{fa-css-prefix}-chess-knight:before { content: @fa-var-chess-knight; }\n.@{fa-css-prefix}-chess-pawn:before { content: @fa-var-chess-pawn; }\n.@{fa-css-prefix}-chess-queen:before { content: @fa-var-chess-queen; }\n.@{fa-css-prefix}-chess-rook:before { content: @fa-var-chess-rook; }\n.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }\n.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }\n.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }\n.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }\n.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }\n.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }\n.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }\n.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }\n.@{fa-css-prefix}-child:before { content: @fa-var-child; }\n.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; }\n.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }\n.@{fa-css-prefix}-circle-notch:before { content: @fa-var-circle-notch; }\n.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }\n.@{fa-css-prefix}-clipboard-check:before { content: @fa-var-clipboard-check; }\n.@{fa-css-prefix}-clipboard-list:before { content: @fa-var-clipboard-list; }\n.@{fa-css-prefix}-clock:before { content: @fa-var-clock; }\n.@{fa-css-prefix}-clone:before { content: @fa-var-clone; }\n.@{fa-css-prefix}-closed-captioning:before { content: @fa-var-closed-captioning; }\n.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }\n.@{fa-css-prefix}-cloud-download-alt:before { content: @fa-var-cloud-download-alt; }\n.@{fa-css-prefix}-cloud-upload-alt:before { content: @fa-var-cloud-upload-alt; }\n.@{fa-css-prefix}-cloudscale:before { content: @fa-var-cloudscale; }\n.@{fa-css-prefix}-cloudsmith:before { content: @fa-var-cloudsmith; }\n.@{fa-css-prefix}-cloudversify:before { content: @fa-var-cloudversify; }\n.@{fa-css-prefix}-code:before { content: @fa-var-code; }\n.@{fa-css-prefix}-code-branch:before { content: @fa-var-code-branch; }\n.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; }\n.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; }\n.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }\n.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }\n.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }\n.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }\n.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }\n.@{fa-css-prefix}-comment-alt:before { content: @fa-var-comment-alt; }\n.@{fa-css-prefix}-comment-dots:before { content: @fa-var-comment-dots; }\n.@{fa-css-prefix}-comment-slash:before { content: @fa-var-comment-slash; }\n.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }\n.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }\n.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }\n.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }\n.@{fa-css-prefix}-contao:before { content: @fa-var-contao; }\n.@{fa-css-prefix}-copy:before { content: @fa-var-copy; }\n.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; }\n.@{fa-css-prefix}-couch:before { content: @fa-var-couch; }\n.@{fa-css-prefix}-cpanel:before { content: @fa-var-cpanel; }\n.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; }\n.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }\n.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }\n.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }\n.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }\n.@{fa-css-prefix}-css3-alt:before { content: @fa-var-css3-alt; }\n.@{fa-css-prefix}-cube:before { content: @fa-var-cube; }\n.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; }\n.@{fa-css-prefix}-cut:before { content: @fa-var-cut; }\n.@{fa-css-prefix}-cuttlefish:before { content: @fa-var-cuttlefish; }\n.@{fa-css-prefix}-d-and-d:before { content: @fa-var-d-and-d; }\n.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }\n.@{fa-css-prefix}-database:before { content: @fa-var-database; }\n.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; }\n.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }\n.@{fa-css-prefix}-deploydog:before { content: @fa-var-deploydog; }\n.@{fa-css-prefix}-deskpro:before { content: @fa-var-deskpro; }\n.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }\n.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; }\n.@{fa-css-prefix}-diagnoses:before { content: @fa-var-diagnoses; }\n.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }\n.@{fa-css-prefix}-digital-ocean:before { content: @fa-var-digital-ocean; }\n.@{fa-css-prefix}-discord:before { content: @fa-var-discord; }\n.@{fa-css-prefix}-discourse:before { content: @fa-var-discourse; }\n.@{fa-css-prefix}-dna:before { content: @fa-var-dna; }\n.@{fa-css-prefix}-dochub:before { content: @fa-var-dochub; }\n.@{fa-css-prefix}-docker:before { content: @fa-var-docker; }\n.@{fa-css-prefix}-dollar-sign:before { content: @fa-var-dollar-sign; }\n.@{fa-css-prefix}-dolly:before { content: @fa-var-dolly; }\n.@{fa-css-prefix}-dolly-flatbed:before { content: @fa-var-dolly-flatbed; }\n.@{fa-css-prefix}-donate:before { content: @fa-var-donate; }\n.@{fa-css-prefix}-dot-circle:before { content: @fa-var-dot-circle; }\n.@{fa-css-prefix}-dove:before { content: @fa-var-dove; }\n.@{fa-css-prefix}-download:before { content: @fa-var-download; }\n.@{fa-css-prefix}-draft2digital:before { content: @fa-var-draft2digital; }\n.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }\n.@{fa-css-prefix}-dribbble-square:before { content: @fa-var-dribbble-square; }\n.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }\n.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }\n.@{fa-css-prefix}-dyalog:before { content: @fa-var-dyalog; }\n.@{fa-css-prefix}-earlybirds:before { content: @fa-var-earlybirds; }\n.@{fa-css-prefix}-edge:before { content: @fa-var-edge; }\n.@{fa-css-prefix}-edit:before { content: @fa-var-edit; }\n.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }\n.@{fa-css-prefix}-elementor:before { content: @fa-var-elementor; }\n.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }\n.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }\n.@{fa-css-prefix}-ember:before { content: @fa-var-ember; }\n.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }\n.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }\n.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; }\n.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; }\n.@{fa-css-prefix}-envira:before { content: @fa-var-envira; }\n.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }\n.@{fa-css-prefix}-erlang:before { content: @fa-var-erlang; }\n.@{fa-css-prefix}-ethereum:before { content: @fa-var-ethereum; }\n.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; }\n.@{fa-css-prefix}-euro-sign:before { content: @fa-var-euro-sign; }\n.@{fa-css-prefix}-exchange-alt:before { content: @fa-var-exchange-alt; }\n.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }\n.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }\n.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }\n.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }\n.@{fa-css-prefix}-expand-arrows-alt:before { content: @fa-var-expand-arrows-alt; }\n.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; }\n.@{fa-css-prefix}-external-link-alt:before { content: @fa-var-external-link-alt; }\n.@{fa-css-prefix}-external-link-square-alt:before { content: @fa-var-external-link-square-alt; }\n.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }\n.@{fa-css-prefix}-eye-dropper:before { content: @fa-var-eye-dropper; }\n.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }\n.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }\n.@{fa-css-prefix}-facebook-f:before { content: @fa-var-facebook-f; }\n.@{fa-css-prefix}-facebook-messenger:before { content: @fa-var-facebook-messenger; }\n.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }\n.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }\n.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }\n.@{fa-css-prefix}-fax:before { content: @fa-var-fax; }\n.@{fa-css-prefix}-female:before { content: @fa-var-female; }\n.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }\n.@{fa-css-prefix}-file:before { content: @fa-var-file; }\n.@{fa-css-prefix}-file-alt:before { content: @fa-var-file-alt; }\n.@{fa-css-prefix}-file-archive:before { content: @fa-var-file-archive; }\n.@{fa-css-prefix}-file-audio:before { content: @fa-var-file-audio; }\n.@{fa-css-prefix}-file-code:before { content: @fa-var-file-code; }\n.@{fa-css-prefix}-file-excel:before { content: @fa-var-file-excel; }\n.@{fa-css-prefix}-file-image:before { content: @fa-var-file-image; }\n.@{fa-css-prefix}-file-medical:before { content: @fa-var-file-medical; }\n.@{fa-css-prefix}-file-medical-alt:before { content: @fa-var-file-medical-alt; }\n.@{fa-css-prefix}-file-pdf:before { content: @fa-var-file-pdf; }\n.@{fa-css-prefix}-file-powerpoint:before { content: @fa-var-file-powerpoint; }\n.@{fa-css-prefix}-file-video:before { content: @fa-var-file-video; }\n.@{fa-css-prefix}-file-word:before { content: @fa-var-file-word; }\n.@{fa-css-prefix}-film:before { content: @fa-var-film; }\n.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }\n.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }\n.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }\n.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; }\n.@{fa-css-prefix}-first-aid:before { content: @fa-var-first-aid; }\n.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; }\n.@{fa-css-prefix}-firstdraft:before { content: @fa-var-firstdraft; }\n.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }\n.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }\n.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }\n.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }\n.@{fa-css-prefix}-flipboard:before { content: @fa-var-flipboard; }\n.@{fa-css-prefix}-fly:before { content: @fa-var-fly; }\n.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }\n.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }\n.@{fa-css-prefix}-font:before { content: @fa-var-font; }\n.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; }\n.@{fa-css-prefix}-font-awesome-alt:before { content: @fa-var-font-awesome-alt; }\n.@{fa-css-prefix}-font-awesome-flag:before { content: @fa-var-font-awesome-flag; }\n.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; }\n.@{fa-css-prefix}-fonticons-fi:before { content: @fa-var-fonticons-fi; }\n.@{fa-css-prefix}-football-ball:before { content: @fa-var-football-ball; }\n.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; }\n.@{fa-css-prefix}-fort-awesome-alt:before { content: @fa-var-fort-awesome-alt; }\n.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }\n.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }\n.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }\n.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; }\n.@{fa-css-prefix}-freebsd:before { content: @fa-var-freebsd; }\n.@{fa-css-prefix}-frown:before { content: @fa-var-frown; }\n.@{fa-css-prefix}-futbol:before { content: @fa-var-futbol; }\n.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }\n.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }\n.@{fa-css-prefix}-gem:before { content: @fa-var-gem; }\n.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; }\n.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; }\n.@{fa-css-prefix}-gg:before { content: @fa-var-gg; }\n.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; }\n.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }\n.@{fa-css-prefix}-git:before { content: @fa-var-git; }\n.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }\n.@{fa-css-prefix}-github:before { content: @fa-var-github; }\n.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }\n.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }\n.@{fa-css-prefix}-gitkraken:before { content: @fa-var-gitkraken; }\n.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; }\n.@{fa-css-prefix}-gitter:before { content: @fa-var-gitter; }\n.@{fa-css-prefix}-glass-martini:before { content: @fa-var-glass-martini; }\n.@{fa-css-prefix}-glide:before { content: @fa-var-glide; }\n.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; }\n.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }\n.@{fa-css-prefix}-gofore:before { content: @fa-var-gofore; }\n.@{fa-css-prefix}-golf-ball:before { content: @fa-var-golf-ball; }\n.@{fa-css-prefix}-goodreads:before { content: @fa-var-goodreads; }\n.@{fa-css-prefix}-goodreads-g:before { content: @fa-var-goodreads-g; }\n.@{fa-css-prefix}-google:before { content: @fa-var-google; }\n.@{fa-css-prefix}-google-drive:before { content: @fa-var-google-drive; }\n.@{fa-css-prefix}-google-play:before { content: @fa-var-google-play; }\n.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }\n.@{fa-css-prefix}-google-plus-g:before { content: @fa-var-google-plus-g; }\n.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }\n.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; }\n.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }\n.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }\n.@{fa-css-prefix}-grav:before { content: @fa-var-grav; }\n.@{fa-css-prefix}-gripfire:before { content: @fa-var-gripfire; }\n.@{fa-css-prefix}-grunt:before { content: @fa-var-grunt; }\n.@{fa-css-prefix}-gulp:before { content: @fa-var-gulp; }\n.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }\n.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }\n.@{fa-css-prefix}-hacker-news-square:before { content: @fa-var-hacker-news-square; }\n.@{fa-css-prefix}-hand-holding:before { content: @fa-var-hand-holding; }\n.@{fa-css-prefix}-hand-holding-heart:before { content: @fa-var-hand-holding-heart; }\n.@{fa-css-prefix}-hand-holding-usd:before { content: @fa-var-hand-holding-usd; }\n.@{fa-css-prefix}-hand-lizard:before { content: @fa-var-hand-lizard; }\n.@{fa-css-prefix}-hand-paper:before { content: @fa-var-hand-paper; }\n.@{fa-css-prefix}-hand-peace:before { content: @fa-var-hand-peace; }\n.@{fa-css-prefix}-hand-point-down:before { content: @fa-var-hand-point-down; }\n.@{fa-css-prefix}-hand-point-left:before { content: @fa-var-hand-point-left; }\n.@{fa-css-prefix}-hand-point-right:before { content: @fa-var-hand-point-right; }\n.@{fa-css-prefix}-hand-point-up:before { content: @fa-var-hand-point-up; }\n.@{fa-css-prefix}-hand-pointer:before { content: @fa-var-hand-pointer; }\n.@{fa-css-prefix}-hand-rock:before { content: @fa-var-hand-rock; }\n.@{fa-css-prefix}-hand-scissors:before { content: @fa-var-hand-scissors; }\n.@{fa-css-prefix}-hand-spock:before { content: @fa-var-hand-spock; }\n.@{fa-css-prefix}-hands:before { content: @fa-var-hands; }\n.@{fa-css-prefix}-hands-helping:before { content: @fa-var-hands-helping; }\n.@{fa-css-prefix}-handshake:before { content: @fa-var-handshake; }\n.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; }\n.@{fa-css-prefix}-hdd:before { content: @fa-var-hdd; }\n.@{fa-css-prefix}-heading:before { content: @fa-var-heading; }\n.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }\n.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }\n.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }\n.@{fa-css-prefix}-hips:before { content: @fa-var-hips; }\n.@{fa-css-prefix}-hire-a-helper:before { content: @fa-var-hire-a-helper; }\n.@{fa-css-prefix}-history:before { content: @fa-var-history; }\n.@{fa-css-prefix}-hockey-puck:before { content: @fa-var-hockey-puck; }\n.@{fa-css-prefix}-home:before { content: @fa-var-home; }\n.@{fa-css-prefix}-hooli:before { content: @fa-var-hooli; }\n.@{fa-css-prefix}-hospital:before { content: @fa-var-hospital; }\n.@{fa-css-prefix}-hospital-alt:before { content: @fa-var-hospital-alt; }\n.@{fa-css-prefix}-hospital-symbol:before { content: @fa-var-hospital-symbol; }\n.@{fa-css-prefix}-hotjar:before { content: @fa-var-hotjar; }\n.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; }\n.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; }\n.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; }\n.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; }\n.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; }\n.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }\n.@{fa-css-prefix}-hubspot:before { content: @fa-var-hubspot; }\n.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; }\n.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; }\n.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; }\n.@{fa-css-prefix}-id-card-alt:before { content: @fa-var-id-card-alt; }\n.@{fa-css-prefix}-image:before { content: @fa-var-image; }\n.@{fa-css-prefix}-images:before { content: @fa-var-images; }\n.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; }\n.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }\n.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }\n.@{fa-css-prefix}-industry:before { content: @fa-var-industry; }\n.@{fa-css-prefix}-info:before { content: @fa-var-info; }\n.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }\n.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }\n.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; }\n.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; }\n.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }\n.@{fa-css-prefix}-itunes:before { content: @fa-var-itunes; }\n.@{fa-css-prefix}-itunes-note:before { content: @fa-var-itunes-note; }\n.@{fa-css-prefix}-jenkins:before { content: @fa-var-jenkins; }\n.@{fa-css-prefix}-joget:before { content: @fa-var-joget; }\n.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }\n.@{fa-css-prefix}-js:before { content: @fa-var-js; }\n.@{fa-css-prefix}-js-square:before { content: @fa-var-js-square; }\n.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; }\n.@{fa-css-prefix}-key:before { content: @fa-var-key; }\n.@{fa-css-prefix}-keyboard:before { content: @fa-var-keyboard; }\n.@{fa-css-prefix}-keycdn:before { content: @fa-var-keycdn; }\n.@{fa-css-prefix}-kickstarter:before { content: @fa-var-kickstarter; }\n.@{fa-css-prefix}-kickstarter-k:before { content: @fa-var-kickstarter-k; }\n.@{fa-css-prefix}-korvue:before { content: @fa-var-korvue; }\n.@{fa-css-prefix}-language:before { content: @fa-var-language; }\n.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }\n.@{fa-css-prefix}-laravel:before { content: @fa-var-laravel; }\n.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; }\n.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; }\n.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }\n.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }\n.@{fa-css-prefix}-lemon:before { content: @fa-var-lemon; }\n.@{fa-css-prefix}-less:before { content: @fa-var-less; }\n.@{fa-css-prefix}-level-down-alt:before { content: @fa-var-level-down-alt; }\n.@{fa-css-prefix}-level-up-alt:before { content: @fa-var-level-up-alt; }\n.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }\n.@{fa-css-prefix}-lightbulb:before { content: @fa-var-lightbulb; }\n.@{fa-css-prefix}-line:before { content: @fa-var-line; }\n.@{fa-css-prefix}-link:before { content: @fa-var-link; }\n.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }\n.@{fa-css-prefix}-linkedin-in:before { content: @fa-var-linkedin-in; }\n.@{fa-css-prefix}-linode:before { content: @fa-var-linode; }\n.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }\n.@{fa-css-prefix}-lira-sign:before { content: @fa-var-lira-sign; }\n.@{fa-css-prefix}-list:before { content: @fa-var-list; }\n.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }\n.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }\n.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }\n.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }\n.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }\n.@{fa-css-prefix}-lock-open:before { content: @fa-var-lock-open; }\n.@{fa-css-prefix}-long-arrow-alt-down:before { content: @fa-var-long-arrow-alt-down; }\n.@{fa-css-prefix}-long-arrow-alt-left:before { content: @fa-var-long-arrow-alt-left; }\n.@{fa-css-prefix}-long-arrow-alt-right:before { content: @fa-var-long-arrow-alt-right; }\n.@{fa-css-prefix}-long-arrow-alt-up:before { content: @fa-var-long-arrow-alt-up; }\n.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; }\n.@{fa-css-prefix}-lyft:before { content: @fa-var-lyft; }\n.@{fa-css-prefix}-magento:before { content: @fa-var-magento; }\n.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }\n.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }\n.@{fa-css-prefix}-male:before { content: @fa-var-male; }\n.@{fa-css-prefix}-map:before { content: @fa-var-map; }\n.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }\n.@{fa-css-prefix}-map-marker-alt:before { content: @fa-var-map-marker-alt; }\n.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; }\n.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; }\n.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }\n.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }\n.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }\n.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }\n.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }\n.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }\n.@{fa-css-prefix}-medapps:before { content: @fa-var-medapps; }\n.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }\n.@{fa-css-prefix}-medium-m:before { content: @fa-var-medium-m; }\n.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }\n.@{fa-css-prefix}-medrt:before { content: @fa-var-medrt; }\n.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; }\n.@{fa-css-prefix}-meh:before { content: @fa-var-meh; }\n.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }\n.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; }\n.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }\n.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }\n.@{fa-css-prefix}-microsoft:before { content: @fa-var-microsoft; }\n.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }\n.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }\n.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }\n.@{fa-css-prefix}-mix:before { content: @fa-var-mix; }\n.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; }\n.@{fa-css-prefix}-mizuni:before { content: @fa-var-mizuni; }\n.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }\n.@{fa-css-prefix}-mobile-alt:before { content: @fa-var-mobile-alt; }\n.@{fa-css-prefix}-modx:before { content: @fa-var-modx; }\n.@{fa-css-prefix}-monero:before { content: @fa-var-monero; }\n.@{fa-css-prefix}-money-bill-alt:before { content: @fa-var-money-bill-alt; }\n.@{fa-css-prefix}-moon:before { content: @fa-var-moon; }\n.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }\n.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; }\n.@{fa-css-prefix}-music:before { content: @fa-var-music; }\n.@{fa-css-prefix}-napster:before { content: @fa-var-napster; }\n.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }\n.@{fa-css-prefix}-newspaper:before { content: @fa-var-newspaper; }\n.@{fa-css-prefix}-nintendo-switch:before { content: @fa-var-nintendo-switch; }\n.@{fa-css-prefix}-node:before { content: @fa-var-node; }\n.@{fa-css-prefix}-node-js:before { content: @fa-var-node-js; }\n.@{fa-css-prefix}-notes-medical:before { content: @fa-var-notes-medical; }\n.@{fa-css-prefix}-npm:before { content: @fa-var-npm; }\n.@{fa-css-prefix}-ns8:before { content: @fa-var-ns8; }\n.@{fa-css-prefix}-nutritionix:before { content: @fa-var-nutritionix; }\n.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; }\n.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; }\n.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; }\n.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; }\n.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; }\n.@{fa-css-prefix}-openid:before { content: @fa-var-openid; }\n.@{fa-css-prefix}-opera:before { content: @fa-var-opera; }\n.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; }\n.@{fa-css-prefix}-osi:before { content: @fa-var-osi; }\n.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }\n.@{fa-css-prefix}-page4:before { content: @fa-var-page4; }\n.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }\n.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; }\n.@{fa-css-prefix}-palfed:before { content: @fa-var-palfed; }\n.@{fa-css-prefix}-pallet:before { content: @fa-var-pallet; }\n.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; }\n.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }\n.@{fa-css-prefix}-parachute-box:before { content: @fa-var-parachute-box; }\n.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }\n.@{fa-css-prefix}-paste:before { content: @fa-var-paste; }\n.@{fa-css-prefix}-patreon:before { content: @fa-var-patreon; }\n.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }\n.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; }\n.@{fa-css-prefix}-paw:before { content: @fa-var-paw; }\n.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; }\n.@{fa-css-prefix}-pen-square:before { content: @fa-var-pen-square; }\n.@{fa-css-prefix}-pencil-alt:before { content: @fa-var-pencil-alt; }\n.@{fa-css-prefix}-people-carry:before { content: @fa-var-people-carry; }\n.@{fa-css-prefix}-percent:before { content: @fa-var-percent; }\n.@{fa-css-prefix}-periscope:before { content: @fa-var-periscope; }\n.@{fa-css-prefix}-phabricator:before { content: @fa-var-phabricator; }\n.@{fa-css-prefix}-phoenix-framework:before { content: @fa-var-phoenix-framework; }\n.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }\n.@{fa-css-prefix}-phone-slash:before { content: @fa-var-phone-slash; }\n.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }\n.@{fa-css-prefix}-phone-volume:before { content: @fa-var-phone-volume; }\n.@{fa-css-prefix}-php:before { content: @fa-var-php; }\n.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }\n.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }\n.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; }\n.@{fa-css-prefix}-piggy-bank:before { content: @fa-var-piggy-bank; }\n.@{fa-css-prefix}-pills:before { content: @fa-var-pills; }\n.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }\n.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }\n.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }\n.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }\n.@{fa-css-prefix}-play:before { content: @fa-var-play; }\n.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }\n.@{fa-css-prefix}-playstation:before { content: @fa-var-playstation; }\n.@{fa-css-prefix}-plug:before { content: @fa-var-plug; }\n.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }\n.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }\n.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }\n.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; }\n.@{fa-css-prefix}-poo:before { content: @fa-var-poo; }\n.@{fa-css-prefix}-pound-sign:before { content: @fa-var-pound-sign; }\n.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }\n.@{fa-css-prefix}-prescription-bottle:before { content: @fa-var-prescription-bottle; }\n.@{fa-css-prefix}-prescription-bottle-alt:before { content: @fa-var-prescription-bottle-alt; }\n.@{fa-css-prefix}-print:before { content: @fa-var-print; }\n.@{fa-css-prefix}-procedures:before { content: @fa-var-procedures; }\n.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; }\n.@{fa-css-prefix}-pushed:before { content: @fa-var-pushed; }\n.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }\n.@{fa-css-prefix}-python:before { content: @fa-var-python; }\n.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }\n.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }\n.@{fa-css-prefix}-question:before { content: @fa-var-question; }\n.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }\n.@{fa-css-prefix}-quidditch:before { content: @fa-var-quidditch; }\n.@{fa-css-prefix}-quinscape:before { content: @fa-var-quinscape; }\n.@{fa-css-prefix}-quora:before { content: @fa-var-quora; }\n.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }\n.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }\n.@{fa-css-prefix}-random:before { content: @fa-var-random; }\n.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; }\n.@{fa-css-prefix}-react:before { content: @fa-var-react; }\n.@{fa-css-prefix}-readme:before { content: @fa-var-readme; }\n.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }\n.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; }\n.@{fa-css-prefix}-red-river:before { content: @fa-var-red-river; }\n.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; }\n.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; }\n.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; }\n.@{fa-css-prefix}-redo:before { content: @fa-var-redo; }\n.@{fa-css-prefix}-redo-alt:before { content: @fa-var-redo-alt; }\n.@{fa-css-prefix}-registered:before { content: @fa-var-registered; }\n.@{fa-css-prefix}-rendact:before { content: @fa-var-rendact; }\n.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }\n.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }\n.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }\n.@{fa-css-prefix}-replyd:before { content: @fa-var-replyd; }\n.@{fa-css-prefix}-resolving:before { content: @fa-var-resolving; }\n.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }\n.@{fa-css-prefix}-ribbon:before { content: @fa-var-ribbon; }\n.@{fa-css-prefix}-road:before { content: @fa-var-road; }\n.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }\n.@{fa-css-prefix}-rocketchat:before { content: @fa-var-rocketchat; }\n.@{fa-css-prefix}-rockrms:before { content: @fa-var-rockrms; }\n.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }\n.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }\n.@{fa-css-prefix}-ruble-sign:before { content: @fa-var-ruble-sign; }\n.@{fa-css-prefix}-rupee-sign:before { content: @fa-var-rupee-sign; }\n.@{fa-css-prefix}-safari:before { content: @fa-var-safari; }\n.@{fa-css-prefix}-sass:before { content: @fa-var-sass; }\n.@{fa-css-prefix}-save:before { content: @fa-var-save; }\n.@{fa-css-prefix}-schlix:before { content: @fa-var-schlix; }\n.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; }\n.@{fa-css-prefix}-search:before { content: @fa-var-search; }\n.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }\n.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }\n.@{fa-css-prefix}-searchengin:before { content: @fa-var-searchengin; }\n.@{fa-css-prefix}-seedling:before { content: @fa-var-seedling; }\n.@{fa-css-prefix}-sellcast:before { content: @fa-var-sellcast; }\n.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }\n.@{fa-css-prefix}-server:before { content: @fa-var-server; }\n.@{fa-css-prefix}-servicestack:before { content: @fa-var-servicestack; }\n.@{fa-css-prefix}-share:before { content: @fa-var-share; }\n.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; }\n.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; }\n.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }\n.@{fa-css-prefix}-shekel-sign:before { content: @fa-var-shekel-sign; }\n.@{fa-css-prefix}-shield-alt:before { content: @fa-var-shield-alt; }\n.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }\n.@{fa-css-prefix}-shipping-fast:before { content: @fa-var-shipping-fast; }\n.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }\n.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; }\n.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; }\n.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }\n.@{fa-css-prefix}-shower:before { content: @fa-var-shower; }\n.@{fa-css-prefix}-sign:before { content: @fa-var-sign; }\n.@{fa-css-prefix}-sign-in-alt:before { content: @fa-var-sign-in-alt; }\n.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; }\n.@{fa-css-prefix}-sign-out-alt:before { content: @fa-var-sign-out-alt; }\n.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }\n.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }\n.@{fa-css-prefix}-sistrix:before { content: @fa-var-sistrix; }\n.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }\n.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }\n.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }\n.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }\n.@{fa-css-prefix}-slack-hash:before { content: @fa-var-slack-hash; }\n.@{fa-css-prefix}-sliders-h:before { content: @fa-var-sliders-h; }\n.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; }\n.@{fa-css-prefix}-smile:before { content: @fa-var-smile; }\n.@{fa-css-prefix}-smoking:before { content: @fa-var-smoking; }\n.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; }\n.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; }\n.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; }\n.@{fa-css-prefix}-snowflake:before { content: @fa-var-snowflake; }\n.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }\n.@{fa-css-prefix}-sort-alpha-down:before { content: @fa-var-sort-alpha-down; }\n.@{fa-css-prefix}-sort-alpha-up:before { content: @fa-var-sort-alpha-up; }\n.@{fa-css-prefix}-sort-amount-down:before { content: @fa-var-sort-amount-down; }\n.@{fa-css-prefix}-sort-amount-up:before { content: @fa-var-sort-amount-up; }\n.@{fa-css-prefix}-sort-down:before { content: @fa-var-sort-down; }\n.@{fa-css-prefix}-sort-numeric-down:before { content: @fa-var-sort-numeric-down; }\n.@{fa-css-prefix}-sort-numeric-up:before { content: @fa-var-sort-numeric-up; }\n.@{fa-css-prefix}-sort-up:before { content: @fa-var-sort-up; }\n.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; }\n.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; }\n.@{fa-css-prefix}-speakap:before { content: @fa-var-speakap; }\n.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }\n.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; }\n.@{fa-css-prefix}-square:before { content: @fa-var-square; }\n.@{fa-css-prefix}-square-full:before { content: @fa-var-square-full; }\n.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }\n.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }\n.@{fa-css-prefix}-star:before { content: @fa-var-star; }\n.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }\n.@{fa-css-prefix}-staylinked:before { content: @fa-var-staylinked; }\n.@{fa-css-prefix}-steam:before { content: @fa-var-steam; }\n.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; }\n.@{fa-css-prefix}-steam-symbol:before { content: @fa-var-steam-symbol; }\n.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }\n.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }\n.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }\n.@{fa-css-prefix}-sticker-mule:before { content: @fa-var-sticker-mule; }\n.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; }\n.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }\n.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; }\n.@{fa-css-prefix}-stopwatch:before { content: @fa-var-stopwatch; }\n.@{fa-css-prefix}-strava:before { content: @fa-var-strava; }\n.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }\n.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }\n.@{fa-css-prefix}-stripe:before { content: @fa-var-stripe; }\n.@{fa-css-prefix}-stripe-s:before { content: @fa-var-stripe-s; }\n.@{fa-css-prefix}-studiovinari:before { content: @fa-var-studiovinari; }\n.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }\n.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; }\n.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }\n.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }\n.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }\n.@{fa-css-prefix}-sun:before { content: @fa-var-sun; }\n.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; }\n.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }\n.@{fa-css-prefix}-supple:before { content: @fa-var-supple; }\n.@{fa-css-prefix}-sync:before { content: @fa-var-sync; }\n.@{fa-css-prefix}-sync-alt:before { content: @fa-var-sync-alt; }\n.@{fa-css-prefix}-syringe:before { content: @fa-var-syringe; }\n.@{fa-css-prefix}-table:before { content: @fa-var-table; }\n.@{fa-css-prefix}-table-tennis:before { content: @fa-var-table-tennis; }\n.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }\n.@{fa-css-prefix}-tablet-alt:before { content: @fa-var-tablet-alt; }\n.@{fa-css-prefix}-tablets:before { content: @fa-var-tablets; }\n.@{fa-css-prefix}-tachometer-alt:before { content: @fa-var-tachometer-alt; }\n.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }\n.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }\n.@{fa-css-prefix}-tape:before { content: @fa-var-tape; }\n.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }\n.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; }\n.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; }\n.@{fa-css-prefix}-telegram-plane:before { content: @fa-var-telegram-plane; }\n.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }\n.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }\n.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }\n.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }\n.@{fa-css-prefix}-th:before { content: @fa-var-th; }\n.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }\n.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }\n.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; }\n.@{fa-css-prefix}-thermometer:before { content: @fa-var-thermometer; }\n.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; }\n.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; }\n.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; }\n.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; }\n.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; }\n.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }\n.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }\n.@{fa-css-prefix}-thumbtack:before { content: @fa-var-thumbtack; }\n.@{fa-css-prefix}-ticket-alt:before { content: @fa-var-ticket-alt; }\n.@{fa-css-prefix}-times:before { content: @fa-var-times; }\n.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }\n.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }\n.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; }\n.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; }\n.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; }\n.@{fa-css-prefix}-train:before { content: @fa-var-train; }\n.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }\n.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }\n.@{fa-css-prefix}-trash:before { content: @fa-var-trash; }\n.@{fa-css-prefix}-trash-alt:before { content: @fa-var-trash-alt; }\n.@{fa-css-prefix}-tree:before { content: @fa-var-tree; }\n.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }\n.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; }\n.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }\n.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }\n.@{fa-css-prefix}-truck-loading:before { content: @fa-var-truck-loading; }\n.@{fa-css-prefix}-truck-moving:before { content: @fa-var-truck-moving; }\n.@{fa-css-prefix}-tty:before { content: @fa-var-tty; }\n.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }\n.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }\n.@{fa-css-prefix}-tv:before { content: @fa-var-tv; }\n.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; }\n.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }\n.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }\n.@{fa-css-prefix}-typo3:before { content: @fa-var-typo3; }\n.@{fa-css-prefix}-uber:before { content: @fa-var-uber; }\n.@{fa-css-prefix}-uikit:before { content: @fa-var-uikit; }\n.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }\n.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }\n.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }\n.@{fa-css-prefix}-undo-alt:before { content: @fa-var-undo-alt; }\n.@{fa-css-prefix}-uniregistry:before { content: @fa-var-uniregistry; }\n.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; }\n.@{fa-css-prefix}-university:before { content: @fa-var-university; }\n.@{fa-css-prefix}-unlink:before { content: @fa-var-unlink; }\n.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }\n.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }\n.@{fa-css-prefix}-untappd:before { content: @fa-var-untappd; }\n.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }\n.@{fa-css-prefix}-usb:before { content: @fa-var-usb; }\n.@{fa-css-prefix}-user:before { content: @fa-var-user; }\n.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; }\n.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }\n.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }\n.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }\n.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }\n.@{fa-css-prefix}-users:before { content: @fa-var-users; }\n.@{fa-css-prefix}-ussunnah:before { content: @fa-var-ussunnah; }\n.@{fa-css-prefix}-utensil-spoon:before { content: @fa-var-utensil-spoon; }\n.@{fa-css-prefix}-utensils:before { content: @fa-var-utensils; }\n.@{fa-css-prefix}-vaadin:before { content: @fa-var-vaadin; }\n.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }\n.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }\n.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }\n.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }\n.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; }\n.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; }\n.@{fa-css-prefix}-vial:before { content: @fa-var-vial; }\n.@{fa-css-prefix}-vials:before { content: @fa-var-vials; }\n.@{fa-css-prefix}-viber:before { content: @fa-var-viber; }\n.@{fa-css-prefix}-video:before { content: @fa-var-video; }\n.@{fa-css-prefix}-video-slash:before { content: @fa-var-video-slash; }\n.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; }\n.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }\n.@{fa-css-prefix}-vimeo-v:before { content: @fa-var-vimeo-v; }\n.@{fa-css-prefix}-vine:before { content: @fa-var-vine; }\n.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }\n.@{fa-css-prefix}-vnv:before { content: @fa-var-vnv; }\n.@{fa-css-prefix}-volleyball-ball:before { content: @fa-var-volleyball-ball; }\n.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }\n.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }\n.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }\n.@{fa-css-prefix}-vuejs:before { content: @fa-var-vuejs; }\n.@{fa-css-prefix}-warehouse:before { content: @fa-var-warehouse; }\n.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }\n.@{fa-css-prefix}-weight:before { content: @fa-var-weight; }\n.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; }\n.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }\n.@{fa-css-prefix}-whatsapp-square:before { content: @fa-var-whatsapp-square; }\n.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }\n.@{fa-css-prefix}-whmcs:before { content: @fa-var-whmcs; }\n.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; }\n.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; }\n.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; }\n.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; }\n.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; }\n.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; }\n.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }\n.@{fa-css-prefix}-wine-glass:before { content: @fa-var-wine-glass; }\n.@{fa-css-prefix}-won-sign:before { content: @fa-var-won-sign; }\n.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; }\n.@{fa-css-prefix}-wordpress-simple:before { content: @fa-var-wordpress-simple; }\n.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; }\n.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; }\n.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; }\n.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }\n.@{fa-css-prefix}-x-ray:before { content: @fa-var-x-ray; }\n.@{fa-css-prefix}-xbox:before { content: @fa-var-xbox; }\n.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }\n.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }\n.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; }\n.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; }\n.@{fa-css-prefix}-yandex:before { content: @fa-var-yandex; }\n.@{fa-css-prefix}-yandex-international:before { content: @fa-var-yandex-international; }\n.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; }\n.@{fa-css-prefix}-yen-sign:before { content: @fa-var-yen-sign; }\n.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; }\n.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }\n.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_larger.less",
    "content": "// Icon Sizes\n// -------------------------\n\n.larger(@factor) when (@factor > 0) {\n  .larger((@factor - 1));\n\n  .@{fa-css-prefix}-@{factor}x {\n    font-size: (@factor * 1em);\n  }\n}\n\n/* makes the font 33% larger relative to the icon container */\n.@{fa-css-prefix}-lg {\n  font-size: (4em / 3);\n  line-height: (3em / 4);\n  vertical-align: -.0667em;\n}\n\n.@{fa-css-prefix}-xs {\n  font-size: .75em;\n}\n\n.@{fa-css-prefix}-sm {\n  font-size: .875em;\n}\n\n.larger(10);\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_list.less",
    "content": "// List Icons\n// -------------------------\n\n.@{fa-css-prefix}-ul {\n  list-style-type: none;\n  margin-left: @fa-li-width * 5/4;\n  padding-left: 0;\n\n  > li { position: relative; }\n}\n\n.@{fa-css-prefix}-li {\n  left: -@fa-li-width;\n  position: absolute;\n  text-align: center;\n  width: @fa-li-width;\n  line-height: inherit;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_mixins.less",
    "content": "// Mixins\n// --------------------------\n\n.fa-icon() {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  font-weight: normal;\n  line-height: 1;\n  vertical-align: -.125em;\n}\n\n.fa-icon-rotate(@degrees, @rotation) {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})\";\n  transform: rotate(@degrees);\n}\n\n.fa-icon-flip(@horiz, @vert, @rotation) {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)\";\n  transform: scale(@horiz, @vert);\n}\n\n\n// Only display content to screen readers. A la Bootstrap 4.\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only() {\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// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable() {\n  &:active,\n  &:focus {\n    clip: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    position: static;\n    width: auto;\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_rotated-flipped.less",
    "content": "// Rotated & Flipped Icons\n// -------------------------\n\n.@{fa-css-prefix}-rotate-90  { .fa-icon-rotate(90deg, 1);  }\n.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }\n.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }\n\n.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }\n.@{fa-css-prefix}-flip-vertical   { .fa-icon-flip(1, -1, 2); }\n.@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); }\n\n// Hook for IE8-9\n// -------------------------\n\n:root {\n  .@{fa-css-prefix}-rotate-90,\n  .@{fa-css-prefix}-rotate-180,\n  .@{fa-css-prefix}-rotate-270,\n  .@{fa-css-prefix}-flip-horizontal,\n  .@{fa-css-prefix}-flip-vertical {\n    filter: none;\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_screen-reader.less",
    "content": "// Screen Readers\n// -------------------------\n\n.sr-only { .sr-only(); }\n.sr-only-focusable { .sr-only-focusable(); }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_stacked.less",
    "content": "// Stacked Icons\n// -------------------------\n\n.@{fa-css-prefix}-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: middle;\n  width: 2em;\n}\n\n.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%;\n}\n\n.@{fa-css-prefix}-stack-1x { line-height: inherit; }\n.@{fa-css-prefix}-stack-2x { font-size: 2em; }\n.@{fa-css-prefix}-inverse { color: @fa-inverse; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/_variables.less",
    "content": "// Variables\n// --------------------------\n\n@fa-font-path:        \"../webfonts\";\n@fa-font-size-base:   16px;\n@fa-line-height-base: 1;\n@fa-css-prefix:       fa;\n@fa-version:          \"5.0.9\";\n@fa-border-color:     #eee;\n@fa-inverse:          #fff;\n@fa-li-width:         2em;\n\n@fa-var-500px: \"\\f26e\";\n@fa-var-accessible-icon: \"\\f368\";\n@fa-var-accusoft: \"\\f369\";\n@fa-var-address-book: \"\\f2b9\";\n@fa-var-address-card: \"\\f2bb\";\n@fa-var-adjust: \"\\f042\";\n@fa-var-adn: \"\\f170\";\n@fa-var-adversal: \"\\f36a\";\n@fa-var-affiliatetheme: \"\\f36b\";\n@fa-var-algolia: \"\\f36c\";\n@fa-var-align-center: \"\\f037\";\n@fa-var-align-justify: \"\\f039\";\n@fa-var-align-left: \"\\f036\";\n@fa-var-align-right: \"\\f038\";\n@fa-var-allergies: \"\\f461\";\n@fa-var-amazon: \"\\f270\";\n@fa-var-amazon-pay: \"\\f42c\";\n@fa-var-ambulance: \"\\f0f9\";\n@fa-var-american-sign-language-interpreting: \"\\f2a3\";\n@fa-var-amilia: \"\\f36d\";\n@fa-var-anchor: \"\\f13d\";\n@fa-var-android: \"\\f17b\";\n@fa-var-angellist: \"\\f209\";\n@fa-var-angle-double-down: \"\\f103\";\n@fa-var-angle-double-left: \"\\f100\";\n@fa-var-angle-double-right: \"\\f101\";\n@fa-var-angle-double-up: \"\\f102\";\n@fa-var-angle-down: \"\\f107\";\n@fa-var-angle-left: \"\\f104\";\n@fa-var-angle-right: \"\\f105\";\n@fa-var-angle-up: \"\\f106\";\n@fa-var-angrycreative: \"\\f36e\";\n@fa-var-angular: \"\\f420\";\n@fa-var-app-store: \"\\f36f\";\n@fa-var-app-store-ios: \"\\f370\";\n@fa-var-apper: \"\\f371\";\n@fa-var-apple: \"\\f179\";\n@fa-var-apple-pay: \"\\f415\";\n@fa-var-archive: \"\\f187\";\n@fa-var-arrow-alt-circle-down: \"\\f358\";\n@fa-var-arrow-alt-circle-left: \"\\f359\";\n@fa-var-arrow-alt-circle-right: \"\\f35a\";\n@fa-var-arrow-alt-circle-up: \"\\f35b\";\n@fa-var-arrow-circle-down: \"\\f0ab\";\n@fa-var-arrow-circle-left: \"\\f0a8\";\n@fa-var-arrow-circle-right: \"\\f0a9\";\n@fa-var-arrow-circle-up: \"\\f0aa\";\n@fa-var-arrow-down: \"\\f063\";\n@fa-var-arrow-left: \"\\f060\";\n@fa-var-arrow-right: \"\\f061\";\n@fa-var-arrow-up: \"\\f062\";\n@fa-var-arrows-alt: \"\\f0b2\";\n@fa-var-arrows-alt-h: \"\\f337\";\n@fa-var-arrows-alt-v: \"\\f338\";\n@fa-var-assistive-listening-systems: \"\\f2a2\";\n@fa-var-asterisk: \"\\f069\";\n@fa-var-asymmetrik: \"\\f372\";\n@fa-var-at: \"\\f1fa\";\n@fa-var-audible: \"\\f373\";\n@fa-var-audio-description: \"\\f29e\";\n@fa-var-autoprefixer: \"\\f41c\";\n@fa-var-avianex: \"\\f374\";\n@fa-var-aviato: \"\\f421\";\n@fa-var-aws: \"\\f375\";\n@fa-var-backward: \"\\f04a\";\n@fa-var-balance-scale: \"\\f24e\";\n@fa-var-ban: \"\\f05e\";\n@fa-var-band-aid: \"\\f462\";\n@fa-var-bandcamp: \"\\f2d5\";\n@fa-var-barcode: \"\\f02a\";\n@fa-var-bars: \"\\f0c9\";\n@fa-var-baseball-ball: \"\\f433\";\n@fa-var-basketball-ball: \"\\f434\";\n@fa-var-bath: \"\\f2cd\";\n@fa-var-battery-empty: \"\\f244\";\n@fa-var-battery-full: \"\\f240\";\n@fa-var-battery-half: \"\\f242\";\n@fa-var-battery-quarter: \"\\f243\";\n@fa-var-battery-three-quarters: \"\\f241\";\n@fa-var-bed: \"\\f236\";\n@fa-var-beer: \"\\f0fc\";\n@fa-var-behance: \"\\f1b4\";\n@fa-var-behance-square: \"\\f1b5\";\n@fa-var-bell: \"\\f0f3\";\n@fa-var-bell-slash: \"\\f1f6\";\n@fa-var-bicycle: \"\\f206\";\n@fa-var-bimobject: \"\\f378\";\n@fa-var-binoculars: \"\\f1e5\";\n@fa-var-birthday-cake: \"\\f1fd\";\n@fa-var-bitbucket: \"\\f171\";\n@fa-var-bitcoin: \"\\f379\";\n@fa-var-bity: \"\\f37a\";\n@fa-var-black-tie: \"\\f27e\";\n@fa-var-blackberry: \"\\f37b\";\n@fa-var-blind: \"\\f29d\";\n@fa-var-blogger: \"\\f37c\";\n@fa-var-blogger-b: \"\\f37d\";\n@fa-var-bluetooth: \"\\f293\";\n@fa-var-bluetooth-b: \"\\f294\";\n@fa-var-bold: \"\\f032\";\n@fa-var-bolt: \"\\f0e7\";\n@fa-var-bomb: \"\\f1e2\";\n@fa-var-book: \"\\f02d\";\n@fa-var-bookmark: \"\\f02e\";\n@fa-var-bowling-ball: \"\\f436\";\n@fa-var-box: \"\\f466\";\n@fa-var-box-open: \"\\f49e\";\n@fa-var-boxes: \"\\f468\";\n@fa-var-braille: \"\\f2a1\";\n@fa-var-briefcase: \"\\f0b1\";\n@fa-var-briefcase-medical: \"\\f469\";\n@fa-var-btc: \"\\f15a\";\n@fa-var-bug: \"\\f188\";\n@fa-var-building: \"\\f1ad\";\n@fa-var-bullhorn: \"\\f0a1\";\n@fa-var-bullseye: \"\\f140\";\n@fa-var-burn: \"\\f46a\";\n@fa-var-buromobelexperte: \"\\f37f\";\n@fa-var-bus: \"\\f207\";\n@fa-var-buysellads: \"\\f20d\";\n@fa-var-calculator: \"\\f1ec\";\n@fa-var-calendar: \"\\f133\";\n@fa-var-calendar-alt: \"\\f073\";\n@fa-var-calendar-check: \"\\f274\";\n@fa-var-calendar-minus: \"\\f272\";\n@fa-var-calendar-plus: \"\\f271\";\n@fa-var-calendar-times: \"\\f273\";\n@fa-var-camera: \"\\f030\";\n@fa-var-camera-retro: \"\\f083\";\n@fa-var-capsules: \"\\f46b\";\n@fa-var-car: \"\\f1b9\";\n@fa-var-caret-down: \"\\f0d7\";\n@fa-var-caret-left: \"\\f0d9\";\n@fa-var-caret-right: \"\\f0da\";\n@fa-var-caret-square-down: \"\\f150\";\n@fa-var-caret-square-left: \"\\f191\";\n@fa-var-caret-square-right: \"\\f152\";\n@fa-var-caret-square-up: \"\\f151\";\n@fa-var-caret-up: \"\\f0d8\";\n@fa-var-cart-arrow-down: \"\\f218\";\n@fa-var-cart-plus: \"\\f217\";\n@fa-var-cc-amazon-pay: \"\\f42d\";\n@fa-var-cc-amex: \"\\f1f3\";\n@fa-var-cc-apple-pay: \"\\f416\";\n@fa-var-cc-diners-club: \"\\f24c\";\n@fa-var-cc-discover: \"\\f1f2\";\n@fa-var-cc-jcb: \"\\f24b\";\n@fa-var-cc-mastercard: \"\\f1f1\";\n@fa-var-cc-paypal: \"\\f1f4\";\n@fa-var-cc-stripe: \"\\f1f5\";\n@fa-var-cc-visa: \"\\f1f0\";\n@fa-var-centercode: \"\\f380\";\n@fa-var-certificate: \"\\f0a3\";\n@fa-var-chart-area: \"\\f1fe\";\n@fa-var-chart-bar: \"\\f080\";\n@fa-var-chart-line: \"\\f201\";\n@fa-var-chart-pie: \"\\f200\";\n@fa-var-check: \"\\f00c\";\n@fa-var-check-circle: \"\\f058\";\n@fa-var-check-square: \"\\f14a\";\n@fa-var-chess: \"\\f439\";\n@fa-var-chess-bishop: \"\\f43a\";\n@fa-var-chess-board: \"\\f43c\";\n@fa-var-chess-king: \"\\f43f\";\n@fa-var-chess-knight: \"\\f441\";\n@fa-var-chess-pawn: \"\\f443\";\n@fa-var-chess-queen: \"\\f445\";\n@fa-var-chess-rook: \"\\f447\";\n@fa-var-chevron-circle-down: \"\\f13a\";\n@fa-var-chevron-circle-left: \"\\f137\";\n@fa-var-chevron-circle-right: \"\\f138\";\n@fa-var-chevron-circle-up: \"\\f139\";\n@fa-var-chevron-down: \"\\f078\";\n@fa-var-chevron-left: \"\\f053\";\n@fa-var-chevron-right: \"\\f054\";\n@fa-var-chevron-up: \"\\f077\";\n@fa-var-child: \"\\f1ae\";\n@fa-var-chrome: \"\\f268\";\n@fa-var-circle: \"\\f111\";\n@fa-var-circle-notch: \"\\f1ce\";\n@fa-var-clipboard: \"\\f328\";\n@fa-var-clipboard-check: \"\\f46c\";\n@fa-var-clipboard-list: \"\\f46d\";\n@fa-var-clock: \"\\f017\";\n@fa-var-clone: \"\\f24d\";\n@fa-var-closed-captioning: \"\\f20a\";\n@fa-var-cloud: \"\\f0c2\";\n@fa-var-cloud-download-alt: \"\\f381\";\n@fa-var-cloud-upload-alt: \"\\f382\";\n@fa-var-cloudscale: \"\\f383\";\n@fa-var-cloudsmith: \"\\f384\";\n@fa-var-cloudversify: \"\\f385\";\n@fa-var-code: \"\\f121\";\n@fa-var-code-branch: \"\\f126\";\n@fa-var-codepen: \"\\f1cb\";\n@fa-var-codiepie: \"\\f284\";\n@fa-var-coffee: \"\\f0f4\";\n@fa-var-cog: \"\\f013\";\n@fa-var-cogs: \"\\f085\";\n@fa-var-columns: \"\\f0db\";\n@fa-var-comment: \"\\f075\";\n@fa-var-comment-alt: \"\\f27a\";\n@fa-var-comment-dots: \"\\f4ad\";\n@fa-var-comment-slash: \"\\f4b3\";\n@fa-var-comments: \"\\f086\";\n@fa-var-compass: \"\\f14e\";\n@fa-var-compress: \"\\f066\";\n@fa-var-connectdevelop: \"\\f20e\";\n@fa-var-contao: \"\\f26d\";\n@fa-var-copy: \"\\f0c5\";\n@fa-var-copyright: \"\\f1f9\";\n@fa-var-couch: \"\\f4b8\";\n@fa-var-cpanel: \"\\f388\";\n@fa-var-creative-commons: \"\\f25e\";\n@fa-var-credit-card: \"\\f09d\";\n@fa-var-crop: \"\\f125\";\n@fa-var-crosshairs: \"\\f05b\";\n@fa-var-css3: \"\\f13c\";\n@fa-var-css3-alt: \"\\f38b\";\n@fa-var-cube: \"\\f1b2\";\n@fa-var-cubes: \"\\f1b3\";\n@fa-var-cut: \"\\f0c4\";\n@fa-var-cuttlefish: \"\\f38c\";\n@fa-var-d-and-d: \"\\f38d\";\n@fa-var-dashcube: \"\\f210\";\n@fa-var-database: \"\\f1c0\";\n@fa-var-deaf: \"\\f2a4\";\n@fa-var-delicious: \"\\f1a5\";\n@fa-var-deploydog: \"\\f38e\";\n@fa-var-deskpro: \"\\f38f\";\n@fa-var-desktop: \"\\f108\";\n@fa-var-deviantart: \"\\f1bd\";\n@fa-var-diagnoses: \"\\f470\";\n@fa-var-digg: \"\\f1a6\";\n@fa-var-digital-ocean: \"\\f391\";\n@fa-var-discord: \"\\f392\";\n@fa-var-discourse: \"\\f393\";\n@fa-var-dna: \"\\f471\";\n@fa-var-dochub: \"\\f394\";\n@fa-var-docker: \"\\f395\";\n@fa-var-dollar-sign: \"\\f155\";\n@fa-var-dolly: \"\\f472\";\n@fa-var-dolly-flatbed: \"\\f474\";\n@fa-var-donate: \"\\f4b9\";\n@fa-var-dot-circle: \"\\f192\";\n@fa-var-dove: \"\\f4ba\";\n@fa-var-download: \"\\f019\";\n@fa-var-draft2digital: \"\\f396\";\n@fa-var-dribbble: \"\\f17d\";\n@fa-var-dribbble-square: \"\\f397\";\n@fa-var-dropbox: \"\\f16b\";\n@fa-var-drupal: \"\\f1a9\";\n@fa-var-dyalog: \"\\f399\";\n@fa-var-earlybirds: \"\\f39a\";\n@fa-var-edge: \"\\f282\";\n@fa-var-edit: \"\\f044\";\n@fa-var-eject: \"\\f052\";\n@fa-var-elementor: \"\\f430\";\n@fa-var-ellipsis-h: \"\\f141\";\n@fa-var-ellipsis-v: \"\\f142\";\n@fa-var-ember: \"\\f423\";\n@fa-var-empire: \"\\f1d1\";\n@fa-var-envelope: \"\\f0e0\";\n@fa-var-envelope-open: \"\\f2b6\";\n@fa-var-envelope-square: \"\\f199\";\n@fa-var-envira: \"\\f299\";\n@fa-var-eraser: \"\\f12d\";\n@fa-var-erlang: \"\\f39d\";\n@fa-var-ethereum: \"\\f42e\";\n@fa-var-etsy: \"\\f2d7\";\n@fa-var-euro-sign: \"\\f153\";\n@fa-var-exchange-alt: \"\\f362\";\n@fa-var-exclamation: \"\\f12a\";\n@fa-var-exclamation-circle: \"\\f06a\";\n@fa-var-exclamation-triangle: \"\\f071\";\n@fa-var-expand: \"\\f065\";\n@fa-var-expand-arrows-alt: \"\\f31e\";\n@fa-var-expeditedssl: \"\\f23e\";\n@fa-var-external-link-alt: \"\\f35d\";\n@fa-var-external-link-square-alt: \"\\f360\";\n@fa-var-eye: \"\\f06e\";\n@fa-var-eye-dropper: \"\\f1fb\";\n@fa-var-eye-slash: \"\\f070\";\n@fa-var-facebook: \"\\f09a\";\n@fa-var-facebook-f: \"\\f39e\";\n@fa-var-facebook-messenger: \"\\f39f\";\n@fa-var-facebook-square: \"\\f082\";\n@fa-var-fast-backward: \"\\f049\";\n@fa-var-fast-forward: \"\\f050\";\n@fa-var-fax: \"\\f1ac\";\n@fa-var-female: \"\\f182\";\n@fa-var-fighter-jet: \"\\f0fb\";\n@fa-var-file: \"\\f15b\";\n@fa-var-file-alt: \"\\f15c\";\n@fa-var-file-archive: \"\\f1c6\";\n@fa-var-file-audio: \"\\f1c7\";\n@fa-var-file-code: \"\\f1c9\";\n@fa-var-file-excel: \"\\f1c3\";\n@fa-var-file-image: \"\\f1c5\";\n@fa-var-file-medical: \"\\f477\";\n@fa-var-file-medical-alt: \"\\f478\";\n@fa-var-file-pdf: \"\\f1c1\";\n@fa-var-file-powerpoint: \"\\f1c4\";\n@fa-var-file-video: \"\\f1c8\";\n@fa-var-file-word: \"\\f1c2\";\n@fa-var-film: \"\\f008\";\n@fa-var-filter: \"\\f0b0\";\n@fa-var-fire: \"\\f06d\";\n@fa-var-fire-extinguisher: \"\\f134\";\n@fa-var-firefox: \"\\f269\";\n@fa-var-first-aid: \"\\f479\";\n@fa-var-first-order: \"\\f2b0\";\n@fa-var-firstdraft: \"\\f3a1\";\n@fa-var-flag: \"\\f024\";\n@fa-var-flag-checkered: \"\\f11e\";\n@fa-var-flask: \"\\f0c3\";\n@fa-var-flickr: \"\\f16e\";\n@fa-var-flipboard: \"\\f44d\";\n@fa-var-fly: \"\\f417\";\n@fa-var-folder: \"\\f07b\";\n@fa-var-folder-open: \"\\f07c\";\n@fa-var-font: \"\\f031\";\n@fa-var-font-awesome: \"\\f2b4\";\n@fa-var-font-awesome-alt: \"\\f35c\";\n@fa-var-font-awesome-flag: \"\\f425\";\n@fa-var-fonticons: \"\\f280\";\n@fa-var-fonticons-fi: \"\\f3a2\";\n@fa-var-football-ball: \"\\f44e\";\n@fa-var-fort-awesome: \"\\f286\";\n@fa-var-fort-awesome-alt: \"\\f3a3\";\n@fa-var-forumbee: \"\\f211\";\n@fa-var-forward: \"\\f04e\";\n@fa-var-foursquare: \"\\f180\";\n@fa-var-free-code-camp: \"\\f2c5\";\n@fa-var-freebsd: \"\\f3a4\";\n@fa-var-frown: \"\\f119\";\n@fa-var-futbol: \"\\f1e3\";\n@fa-var-gamepad: \"\\f11b\";\n@fa-var-gavel: \"\\f0e3\";\n@fa-var-gem: \"\\f3a5\";\n@fa-var-genderless: \"\\f22d\";\n@fa-var-get-pocket: \"\\f265\";\n@fa-var-gg: \"\\f260\";\n@fa-var-gg-circle: \"\\f261\";\n@fa-var-gift: \"\\f06b\";\n@fa-var-git: \"\\f1d3\";\n@fa-var-git-square: \"\\f1d2\";\n@fa-var-github: \"\\f09b\";\n@fa-var-github-alt: \"\\f113\";\n@fa-var-github-square: \"\\f092\";\n@fa-var-gitkraken: \"\\f3a6\";\n@fa-var-gitlab: \"\\f296\";\n@fa-var-gitter: \"\\f426\";\n@fa-var-glass-martini: \"\\f000\";\n@fa-var-glide: \"\\f2a5\";\n@fa-var-glide-g: \"\\f2a6\";\n@fa-var-globe: \"\\f0ac\";\n@fa-var-gofore: \"\\f3a7\";\n@fa-var-golf-ball: \"\\f450\";\n@fa-var-goodreads: \"\\f3a8\";\n@fa-var-goodreads-g: \"\\f3a9\";\n@fa-var-google: \"\\f1a0\";\n@fa-var-google-drive: \"\\f3aa\";\n@fa-var-google-play: \"\\f3ab\";\n@fa-var-google-plus: \"\\f2b3\";\n@fa-var-google-plus-g: \"\\f0d5\";\n@fa-var-google-plus-square: \"\\f0d4\";\n@fa-var-google-wallet: \"\\f1ee\";\n@fa-var-graduation-cap: \"\\f19d\";\n@fa-var-gratipay: \"\\f184\";\n@fa-var-grav: \"\\f2d6\";\n@fa-var-gripfire: \"\\f3ac\";\n@fa-var-grunt: \"\\f3ad\";\n@fa-var-gulp: \"\\f3ae\";\n@fa-var-h-square: \"\\f0fd\";\n@fa-var-hacker-news: \"\\f1d4\";\n@fa-var-hacker-news-square: \"\\f3af\";\n@fa-var-hand-holding: \"\\f4bd\";\n@fa-var-hand-holding-heart: \"\\f4be\";\n@fa-var-hand-holding-usd: \"\\f4c0\";\n@fa-var-hand-lizard: \"\\f258\";\n@fa-var-hand-paper: \"\\f256\";\n@fa-var-hand-peace: \"\\f25b\";\n@fa-var-hand-point-down: \"\\f0a7\";\n@fa-var-hand-point-left: \"\\f0a5\";\n@fa-var-hand-point-right: \"\\f0a4\";\n@fa-var-hand-point-up: \"\\f0a6\";\n@fa-var-hand-pointer: \"\\f25a\";\n@fa-var-hand-rock: \"\\f255\";\n@fa-var-hand-scissors: \"\\f257\";\n@fa-var-hand-spock: \"\\f259\";\n@fa-var-hands: \"\\f4c2\";\n@fa-var-hands-helping: \"\\f4c4\";\n@fa-var-handshake: \"\\f2b5\";\n@fa-var-hashtag: \"\\f292\";\n@fa-var-hdd: \"\\f0a0\";\n@fa-var-heading: \"\\f1dc\";\n@fa-var-headphones: \"\\f025\";\n@fa-var-heart: \"\\f004\";\n@fa-var-heartbeat: \"\\f21e\";\n@fa-var-hips: \"\\f452\";\n@fa-var-hire-a-helper: \"\\f3b0\";\n@fa-var-history: \"\\f1da\";\n@fa-var-hockey-puck: \"\\f453\";\n@fa-var-home: \"\\f015\";\n@fa-var-hooli: \"\\f427\";\n@fa-var-hospital: \"\\f0f8\";\n@fa-var-hospital-alt: \"\\f47d\";\n@fa-var-hospital-symbol: \"\\f47e\";\n@fa-var-hotjar: \"\\f3b1\";\n@fa-var-hourglass: \"\\f254\";\n@fa-var-hourglass-end: \"\\f253\";\n@fa-var-hourglass-half: \"\\f252\";\n@fa-var-hourglass-start: \"\\f251\";\n@fa-var-houzz: \"\\f27c\";\n@fa-var-html5: \"\\f13b\";\n@fa-var-hubspot: \"\\f3b2\";\n@fa-var-i-cursor: \"\\f246\";\n@fa-var-id-badge: \"\\f2c1\";\n@fa-var-id-card: \"\\f2c2\";\n@fa-var-id-card-alt: \"\\f47f\";\n@fa-var-image: \"\\f03e\";\n@fa-var-images: \"\\f302\";\n@fa-var-imdb: \"\\f2d8\";\n@fa-var-inbox: \"\\f01c\";\n@fa-var-indent: \"\\f03c\";\n@fa-var-industry: \"\\f275\";\n@fa-var-info: \"\\f129\";\n@fa-var-info-circle: \"\\f05a\";\n@fa-var-instagram: \"\\f16d\";\n@fa-var-internet-explorer: \"\\f26b\";\n@fa-var-ioxhost: \"\\f208\";\n@fa-var-italic: \"\\f033\";\n@fa-var-itunes: \"\\f3b4\";\n@fa-var-itunes-note: \"\\f3b5\";\n@fa-var-jenkins: \"\\f3b6\";\n@fa-var-joget: \"\\f3b7\";\n@fa-var-joomla: \"\\f1aa\";\n@fa-var-js: \"\\f3b8\";\n@fa-var-js-square: \"\\f3b9\";\n@fa-var-jsfiddle: \"\\f1cc\";\n@fa-var-key: \"\\f084\";\n@fa-var-keyboard: \"\\f11c\";\n@fa-var-keycdn: \"\\f3ba\";\n@fa-var-kickstarter: \"\\f3bb\";\n@fa-var-kickstarter-k: \"\\f3bc\";\n@fa-var-korvue: \"\\f42f\";\n@fa-var-language: \"\\f1ab\";\n@fa-var-laptop: \"\\f109\";\n@fa-var-laravel: \"\\f3bd\";\n@fa-var-lastfm: \"\\f202\";\n@fa-var-lastfm-square: \"\\f203\";\n@fa-var-leaf: \"\\f06c\";\n@fa-var-leanpub: \"\\f212\";\n@fa-var-lemon: \"\\f094\";\n@fa-var-less: \"\\f41d\";\n@fa-var-level-down-alt: \"\\f3be\";\n@fa-var-level-up-alt: \"\\f3bf\";\n@fa-var-life-ring: \"\\f1cd\";\n@fa-var-lightbulb: \"\\f0eb\";\n@fa-var-line: \"\\f3c0\";\n@fa-var-link: \"\\f0c1\";\n@fa-var-linkedin: \"\\f08c\";\n@fa-var-linkedin-in: \"\\f0e1\";\n@fa-var-linode: \"\\f2b8\";\n@fa-var-linux: \"\\f17c\";\n@fa-var-lira-sign: \"\\f195\";\n@fa-var-list: \"\\f03a\";\n@fa-var-list-alt: \"\\f022\";\n@fa-var-list-ol: \"\\f0cb\";\n@fa-var-list-ul: \"\\f0ca\";\n@fa-var-location-arrow: \"\\f124\";\n@fa-var-lock: \"\\f023\";\n@fa-var-lock-open: \"\\f3c1\";\n@fa-var-long-arrow-alt-down: \"\\f309\";\n@fa-var-long-arrow-alt-left: \"\\f30a\";\n@fa-var-long-arrow-alt-right: \"\\f30b\";\n@fa-var-long-arrow-alt-up: \"\\f30c\";\n@fa-var-low-vision: \"\\f2a8\";\n@fa-var-lyft: \"\\f3c3\";\n@fa-var-magento: \"\\f3c4\";\n@fa-var-magic: \"\\f0d0\";\n@fa-var-magnet: \"\\f076\";\n@fa-var-male: \"\\f183\";\n@fa-var-map: \"\\f279\";\n@fa-var-map-marker: \"\\f041\";\n@fa-var-map-marker-alt: \"\\f3c5\";\n@fa-var-map-pin: \"\\f276\";\n@fa-var-map-signs: \"\\f277\";\n@fa-var-mars: \"\\f222\";\n@fa-var-mars-double: \"\\f227\";\n@fa-var-mars-stroke: \"\\f229\";\n@fa-var-mars-stroke-h: \"\\f22b\";\n@fa-var-mars-stroke-v: \"\\f22a\";\n@fa-var-maxcdn: \"\\f136\";\n@fa-var-medapps: \"\\f3c6\";\n@fa-var-medium: \"\\f23a\";\n@fa-var-medium-m: \"\\f3c7\";\n@fa-var-medkit: \"\\f0fa\";\n@fa-var-medrt: \"\\f3c8\";\n@fa-var-meetup: \"\\f2e0\";\n@fa-var-meh: \"\\f11a\";\n@fa-var-mercury: \"\\f223\";\n@fa-var-microchip: \"\\f2db\";\n@fa-var-microphone: \"\\f130\";\n@fa-var-microphone-slash: \"\\f131\";\n@fa-var-microsoft: \"\\f3ca\";\n@fa-var-minus: \"\\f068\";\n@fa-var-minus-circle: \"\\f056\";\n@fa-var-minus-square: \"\\f146\";\n@fa-var-mix: \"\\f3cb\";\n@fa-var-mixcloud: \"\\f289\";\n@fa-var-mizuni: \"\\f3cc\";\n@fa-var-mobile: \"\\f10b\";\n@fa-var-mobile-alt: \"\\f3cd\";\n@fa-var-modx: \"\\f285\";\n@fa-var-monero: \"\\f3d0\";\n@fa-var-money-bill-alt: \"\\f3d1\";\n@fa-var-moon: \"\\f186\";\n@fa-var-motorcycle: \"\\f21c\";\n@fa-var-mouse-pointer: \"\\f245\";\n@fa-var-music: \"\\f001\";\n@fa-var-napster: \"\\f3d2\";\n@fa-var-neuter: \"\\f22c\";\n@fa-var-newspaper: \"\\f1ea\";\n@fa-var-nintendo-switch: \"\\f418\";\n@fa-var-node: \"\\f419\";\n@fa-var-node-js: \"\\f3d3\";\n@fa-var-notes-medical: \"\\f481\";\n@fa-var-npm: \"\\f3d4\";\n@fa-var-ns8: \"\\f3d5\";\n@fa-var-nutritionix: \"\\f3d6\";\n@fa-var-object-group: \"\\f247\";\n@fa-var-object-ungroup: \"\\f248\";\n@fa-var-odnoklassniki: \"\\f263\";\n@fa-var-odnoklassniki-square: \"\\f264\";\n@fa-var-opencart: \"\\f23d\";\n@fa-var-openid: \"\\f19b\";\n@fa-var-opera: \"\\f26a\";\n@fa-var-optin-monster: \"\\f23c\";\n@fa-var-osi: \"\\f41a\";\n@fa-var-outdent: \"\\f03b\";\n@fa-var-page4: \"\\f3d7\";\n@fa-var-pagelines: \"\\f18c\";\n@fa-var-paint-brush: \"\\f1fc\";\n@fa-var-palfed: \"\\f3d8\";\n@fa-var-pallet: \"\\f482\";\n@fa-var-paper-plane: \"\\f1d8\";\n@fa-var-paperclip: \"\\f0c6\";\n@fa-var-parachute-box: \"\\f4cd\";\n@fa-var-paragraph: \"\\f1dd\";\n@fa-var-paste: \"\\f0ea\";\n@fa-var-patreon: \"\\f3d9\";\n@fa-var-pause: \"\\f04c\";\n@fa-var-pause-circle: \"\\f28b\";\n@fa-var-paw: \"\\f1b0\";\n@fa-var-paypal: \"\\f1ed\";\n@fa-var-pen-square: \"\\f14b\";\n@fa-var-pencil-alt: \"\\f303\";\n@fa-var-people-carry: \"\\f4ce\";\n@fa-var-percent: \"\\f295\";\n@fa-var-periscope: \"\\f3da\";\n@fa-var-phabricator: \"\\f3db\";\n@fa-var-phoenix-framework: \"\\f3dc\";\n@fa-var-phone: \"\\f095\";\n@fa-var-phone-slash: \"\\f3dd\";\n@fa-var-phone-square: \"\\f098\";\n@fa-var-phone-volume: \"\\f2a0\";\n@fa-var-php: \"\\f457\";\n@fa-var-pied-piper: \"\\f2ae\";\n@fa-var-pied-piper-alt: \"\\f1a8\";\n@fa-var-pied-piper-pp: \"\\f1a7\";\n@fa-var-piggy-bank: \"\\f4d3\";\n@fa-var-pills: \"\\f484\";\n@fa-var-pinterest: \"\\f0d2\";\n@fa-var-pinterest-p: \"\\f231\";\n@fa-var-pinterest-square: \"\\f0d3\";\n@fa-var-plane: \"\\f072\";\n@fa-var-play: \"\\f04b\";\n@fa-var-play-circle: \"\\f144\";\n@fa-var-playstation: \"\\f3df\";\n@fa-var-plug: \"\\f1e6\";\n@fa-var-plus: \"\\f067\";\n@fa-var-plus-circle: \"\\f055\";\n@fa-var-plus-square: \"\\f0fe\";\n@fa-var-podcast: \"\\f2ce\";\n@fa-var-poo: \"\\f2fe\";\n@fa-var-pound-sign: \"\\f154\";\n@fa-var-power-off: \"\\f011\";\n@fa-var-prescription-bottle: \"\\f485\";\n@fa-var-prescription-bottle-alt: \"\\f486\";\n@fa-var-print: \"\\f02f\";\n@fa-var-procedures: \"\\f487\";\n@fa-var-product-hunt: \"\\f288\";\n@fa-var-pushed: \"\\f3e1\";\n@fa-var-puzzle-piece: \"\\f12e\";\n@fa-var-python: \"\\f3e2\";\n@fa-var-qq: \"\\f1d6\";\n@fa-var-qrcode: \"\\f029\";\n@fa-var-question: \"\\f128\";\n@fa-var-question-circle: \"\\f059\";\n@fa-var-quidditch: \"\\f458\";\n@fa-var-quinscape: \"\\f459\";\n@fa-var-quora: \"\\f2c4\";\n@fa-var-quote-left: \"\\f10d\";\n@fa-var-quote-right: \"\\f10e\";\n@fa-var-random: \"\\f074\";\n@fa-var-ravelry: \"\\f2d9\";\n@fa-var-react: \"\\f41b\";\n@fa-var-readme: \"\\f4d5\";\n@fa-var-rebel: \"\\f1d0\";\n@fa-var-recycle: \"\\f1b8\";\n@fa-var-red-river: \"\\f3e3\";\n@fa-var-reddit: \"\\f1a1\";\n@fa-var-reddit-alien: \"\\f281\";\n@fa-var-reddit-square: \"\\f1a2\";\n@fa-var-redo: \"\\f01e\";\n@fa-var-redo-alt: \"\\f2f9\";\n@fa-var-registered: \"\\f25d\";\n@fa-var-rendact: \"\\f3e4\";\n@fa-var-renren: \"\\f18b\";\n@fa-var-reply: \"\\f3e5\";\n@fa-var-reply-all: \"\\f122\";\n@fa-var-replyd: \"\\f3e6\";\n@fa-var-resolving: \"\\f3e7\";\n@fa-var-retweet: \"\\f079\";\n@fa-var-ribbon: \"\\f4d6\";\n@fa-var-road: \"\\f018\";\n@fa-var-rocket: \"\\f135\";\n@fa-var-rocketchat: \"\\f3e8\";\n@fa-var-rockrms: \"\\f3e9\";\n@fa-var-rss: \"\\f09e\";\n@fa-var-rss-square: \"\\f143\";\n@fa-var-ruble-sign: \"\\f158\";\n@fa-var-rupee-sign: \"\\f156\";\n@fa-var-safari: \"\\f267\";\n@fa-var-sass: \"\\f41e\";\n@fa-var-save: \"\\f0c7\";\n@fa-var-schlix: \"\\f3ea\";\n@fa-var-scribd: \"\\f28a\";\n@fa-var-search: \"\\f002\";\n@fa-var-search-minus: \"\\f010\";\n@fa-var-search-plus: \"\\f00e\";\n@fa-var-searchengin: \"\\f3eb\";\n@fa-var-seedling: \"\\f4d8\";\n@fa-var-sellcast: \"\\f2da\";\n@fa-var-sellsy: \"\\f213\";\n@fa-var-server: \"\\f233\";\n@fa-var-servicestack: \"\\f3ec\";\n@fa-var-share: \"\\f064\";\n@fa-var-share-alt: \"\\f1e0\";\n@fa-var-share-alt-square: \"\\f1e1\";\n@fa-var-share-square: \"\\f14d\";\n@fa-var-shekel-sign: \"\\f20b\";\n@fa-var-shield-alt: \"\\f3ed\";\n@fa-var-ship: \"\\f21a\";\n@fa-var-shipping-fast: \"\\f48b\";\n@fa-var-shirtsinbulk: \"\\f214\";\n@fa-var-shopping-bag: \"\\f290\";\n@fa-var-shopping-basket: \"\\f291\";\n@fa-var-shopping-cart: \"\\f07a\";\n@fa-var-shower: \"\\f2cc\";\n@fa-var-sign: \"\\f4d9\";\n@fa-var-sign-in-alt: \"\\f2f6\";\n@fa-var-sign-language: \"\\f2a7\";\n@fa-var-sign-out-alt: \"\\f2f5\";\n@fa-var-signal: \"\\f012\";\n@fa-var-simplybuilt: \"\\f215\";\n@fa-var-sistrix: \"\\f3ee\";\n@fa-var-sitemap: \"\\f0e8\";\n@fa-var-skyatlas: \"\\f216\";\n@fa-var-skype: \"\\f17e\";\n@fa-var-slack: \"\\f198\";\n@fa-var-slack-hash: \"\\f3ef\";\n@fa-var-sliders-h: \"\\f1de\";\n@fa-var-slideshare: \"\\f1e7\";\n@fa-var-smile: \"\\f118\";\n@fa-var-smoking: \"\\f48d\";\n@fa-var-snapchat: \"\\f2ab\";\n@fa-var-snapchat-ghost: \"\\f2ac\";\n@fa-var-snapchat-square: \"\\f2ad\";\n@fa-var-snowflake: \"\\f2dc\";\n@fa-var-sort: \"\\f0dc\";\n@fa-var-sort-alpha-down: \"\\f15d\";\n@fa-var-sort-alpha-up: \"\\f15e\";\n@fa-var-sort-amount-down: \"\\f160\";\n@fa-var-sort-amount-up: \"\\f161\";\n@fa-var-sort-down: \"\\f0dd\";\n@fa-var-sort-numeric-down: \"\\f162\";\n@fa-var-sort-numeric-up: \"\\f163\";\n@fa-var-sort-up: \"\\f0de\";\n@fa-var-soundcloud: \"\\f1be\";\n@fa-var-space-shuttle: \"\\f197\";\n@fa-var-speakap: \"\\f3f3\";\n@fa-var-spinner: \"\\f110\";\n@fa-var-spotify: \"\\f1bc\";\n@fa-var-square: \"\\f0c8\";\n@fa-var-square-full: \"\\f45c\";\n@fa-var-stack-exchange: \"\\f18d\";\n@fa-var-stack-overflow: \"\\f16c\";\n@fa-var-star: \"\\f005\";\n@fa-var-star-half: \"\\f089\";\n@fa-var-staylinked: \"\\f3f5\";\n@fa-var-steam: \"\\f1b6\";\n@fa-var-steam-square: \"\\f1b7\";\n@fa-var-steam-symbol: \"\\f3f6\";\n@fa-var-step-backward: \"\\f048\";\n@fa-var-step-forward: \"\\f051\";\n@fa-var-stethoscope: \"\\f0f1\";\n@fa-var-sticker-mule: \"\\f3f7\";\n@fa-var-sticky-note: \"\\f249\";\n@fa-var-stop: \"\\f04d\";\n@fa-var-stop-circle: \"\\f28d\";\n@fa-var-stopwatch: \"\\f2f2\";\n@fa-var-strava: \"\\f428\";\n@fa-var-street-view: \"\\f21d\";\n@fa-var-strikethrough: \"\\f0cc\";\n@fa-var-stripe: \"\\f429\";\n@fa-var-stripe-s: \"\\f42a\";\n@fa-var-studiovinari: \"\\f3f8\";\n@fa-var-stumbleupon: \"\\f1a4\";\n@fa-var-stumbleupon-circle: \"\\f1a3\";\n@fa-var-subscript: \"\\f12c\";\n@fa-var-subway: \"\\f239\";\n@fa-var-suitcase: \"\\f0f2\";\n@fa-var-sun: \"\\f185\";\n@fa-var-superpowers: \"\\f2dd\";\n@fa-var-superscript: \"\\f12b\";\n@fa-var-supple: \"\\f3f9\";\n@fa-var-sync: \"\\f021\";\n@fa-var-sync-alt: \"\\f2f1\";\n@fa-var-syringe: \"\\f48e\";\n@fa-var-table: \"\\f0ce\";\n@fa-var-table-tennis: \"\\f45d\";\n@fa-var-tablet: \"\\f10a\";\n@fa-var-tablet-alt: \"\\f3fa\";\n@fa-var-tablets: \"\\f490\";\n@fa-var-tachometer-alt: \"\\f3fd\";\n@fa-var-tag: \"\\f02b\";\n@fa-var-tags: \"\\f02c\";\n@fa-var-tape: \"\\f4db\";\n@fa-var-tasks: \"\\f0ae\";\n@fa-var-taxi: \"\\f1ba\";\n@fa-var-telegram: \"\\f2c6\";\n@fa-var-telegram-plane: \"\\f3fe\";\n@fa-var-tencent-weibo: \"\\f1d5\";\n@fa-var-terminal: \"\\f120\";\n@fa-var-text-height: \"\\f034\";\n@fa-var-text-width: \"\\f035\";\n@fa-var-th: \"\\f00a\";\n@fa-var-th-large: \"\\f009\";\n@fa-var-th-list: \"\\f00b\";\n@fa-var-themeisle: \"\\f2b2\";\n@fa-var-thermometer: \"\\f491\";\n@fa-var-thermometer-empty: \"\\f2cb\";\n@fa-var-thermometer-full: \"\\f2c7\";\n@fa-var-thermometer-half: \"\\f2c9\";\n@fa-var-thermometer-quarter: \"\\f2ca\";\n@fa-var-thermometer-three-quarters: \"\\f2c8\";\n@fa-var-thumbs-down: \"\\f165\";\n@fa-var-thumbs-up: \"\\f164\";\n@fa-var-thumbtack: \"\\f08d\";\n@fa-var-ticket-alt: \"\\f3ff\";\n@fa-var-times: \"\\f00d\";\n@fa-var-times-circle: \"\\f057\";\n@fa-var-tint: \"\\f043\";\n@fa-var-toggle-off: \"\\f204\";\n@fa-var-toggle-on: \"\\f205\";\n@fa-var-trademark: \"\\f25c\";\n@fa-var-train: \"\\f238\";\n@fa-var-transgender: \"\\f224\";\n@fa-var-transgender-alt: \"\\f225\";\n@fa-var-trash: \"\\f1f8\";\n@fa-var-trash-alt: \"\\f2ed\";\n@fa-var-tree: \"\\f1bb\";\n@fa-var-trello: \"\\f181\";\n@fa-var-tripadvisor: \"\\f262\";\n@fa-var-trophy: \"\\f091\";\n@fa-var-truck: \"\\f0d1\";\n@fa-var-truck-loading: \"\\f4de\";\n@fa-var-truck-moving: \"\\f4df\";\n@fa-var-tty: \"\\f1e4\";\n@fa-var-tumblr: \"\\f173\";\n@fa-var-tumblr-square: \"\\f174\";\n@fa-var-tv: \"\\f26c\";\n@fa-var-twitch: \"\\f1e8\";\n@fa-var-twitter: \"\\f099\";\n@fa-var-twitter-square: \"\\f081\";\n@fa-var-typo3: \"\\f42b\";\n@fa-var-uber: \"\\f402\";\n@fa-var-uikit: \"\\f403\";\n@fa-var-umbrella: \"\\f0e9\";\n@fa-var-underline: \"\\f0cd\";\n@fa-var-undo: \"\\f0e2\";\n@fa-var-undo-alt: \"\\f2ea\";\n@fa-var-uniregistry: \"\\f404\";\n@fa-var-universal-access: \"\\f29a\";\n@fa-var-university: \"\\f19c\";\n@fa-var-unlink: \"\\f127\";\n@fa-var-unlock: \"\\f09c\";\n@fa-var-unlock-alt: \"\\f13e\";\n@fa-var-untappd: \"\\f405\";\n@fa-var-upload: \"\\f093\";\n@fa-var-usb: \"\\f287\";\n@fa-var-user: \"\\f007\";\n@fa-var-user-circle: \"\\f2bd\";\n@fa-var-user-md: \"\\f0f0\";\n@fa-var-user-plus: \"\\f234\";\n@fa-var-user-secret: \"\\f21b\";\n@fa-var-user-times: \"\\f235\";\n@fa-var-users: \"\\f0c0\";\n@fa-var-ussunnah: \"\\f407\";\n@fa-var-utensil-spoon: \"\\f2e5\";\n@fa-var-utensils: \"\\f2e7\";\n@fa-var-vaadin: \"\\f408\";\n@fa-var-venus: \"\\f221\";\n@fa-var-venus-double: \"\\f226\";\n@fa-var-venus-mars: \"\\f228\";\n@fa-var-viacoin: \"\\f237\";\n@fa-var-viadeo: \"\\f2a9\";\n@fa-var-viadeo-square: \"\\f2aa\";\n@fa-var-vial: \"\\f492\";\n@fa-var-vials: \"\\f493\";\n@fa-var-viber: \"\\f409\";\n@fa-var-video: \"\\f03d\";\n@fa-var-video-slash: \"\\f4e2\";\n@fa-var-vimeo: \"\\f40a\";\n@fa-var-vimeo-square: \"\\f194\";\n@fa-var-vimeo-v: \"\\f27d\";\n@fa-var-vine: \"\\f1ca\";\n@fa-var-vk: \"\\f189\";\n@fa-var-vnv: \"\\f40b\";\n@fa-var-volleyball-ball: \"\\f45f\";\n@fa-var-volume-down: \"\\f027\";\n@fa-var-volume-off: \"\\f026\";\n@fa-var-volume-up: \"\\f028\";\n@fa-var-vuejs: \"\\f41f\";\n@fa-var-warehouse: \"\\f494\";\n@fa-var-weibo: \"\\f18a\";\n@fa-var-weight: \"\\f496\";\n@fa-var-weixin: \"\\f1d7\";\n@fa-var-whatsapp: \"\\f232\";\n@fa-var-whatsapp-square: \"\\f40c\";\n@fa-var-wheelchair: \"\\f193\";\n@fa-var-whmcs: \"\\f40d\";\n@fa-var-wifi: \"\\f1eb\";\n@fa-var-wikipedia-w: \"\\f266\";\n@fa-var-window-close: \"\\f410\";\n@fa-var-window-maximize: \"\\f2d0\";\n@fa-var-window-minimize: \"\\f2d1\";\n@fa-var-window-restore: \"\\f2d2\";\n@fa-var-windows: \"\\f17a\";\n@fa-var-wine-glass: \"\\f4e3\";\n@fa-var-won-sign: \"\\f159\";\n@fa-var-wordpress: \"\\f19a\";\n@fa-var-wordpress-simple: \"\\f411\";\n@fa-var-wpbeginner: \"\\f297\";\n@fa-var-wpexplorer: \"\\f2de\";\n@fa-var-wpforms: \"\\f298\";\n@fa-var-wrench: \"\\f0ad\";\n@fa-var-x-ray: \"\\f497\";\n@fa-var-xbox: \"\\f412\";\n@fa-var-xing: \"\\f168\";\n@fa-var-xing-square: \"\\f169\";\n@fa-var-y-combinator: \"\\f23b\";\n@fa-var-yahoo: \"\\f19e\";\n@fa-var-yandex: \"\\f413\";\n@fa-var-yandex-international: \"\\f414\";\n@fa-var-yelp: \"\\f1e9\";\n@fa-var-yen-sign: \"\\f157\";\n@fa-var-yoast: \"\\f2b1\";\n@fa-var-youtube: \"\\f167\";\n@fa-var-youtube-square: \"\\f431\";\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/fa-brands.less",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import \"_variables.less\";\n\n@font-face {\n  font-family: 'Font Awesome 5 Brands';\n  font-style: normal;\n  font-weight: normal;\n  src: url('@{fa-font-path}/fa-brands-400.eot');\n  src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),\n    url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),\n    url('@{fa-font-path}/fa-brands-400.woff') format('woff'),\n    url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'),\n    url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');\n}\n\n.fab {\n  font-family: 'Font Awesome 5 Brands';\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/fa-regular.less",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import \"_variables.less\";\n\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 400;\n  src: url('@{fa-font-path}/fa-regular-400.eot');\n  src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),\n    url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),\n    url('@{fa-font-path}/fa-regular-400.woff') format('woff'),\n    url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'),\n    url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');\n}\n\n.far {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/fa-solid.less",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import \"_variables.less\";\n\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 900;\n  src: url('@{fa-font-path}/fa-solid-900.eot');\n  src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),\n    url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),\n    url('@{fa-font-path}/fa-solid-900.woff') format('woff'),\n    url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'),\n    url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');\n}\n\n.fa,\n.fas {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 900;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/less/fontawesome.less",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import \"_variables.less\";\n@import \"_mixins.less\";\n@import \"_core.less\";\n@import \"_larger.less\";\n@import \"_fixed-width.less\";\n@import \"_list.less\";\n@import \"_bordered-pulled.less\";\n@import \"_animated.less\";\n@import \"_rotated-flipped.less\";\n@import \"_stacked.less\";\n@import \"_icons.less\";\n@import \"_screen-reader.less\";\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_animated.scss",
    "content": "// Animated Icons\n// --------------------------\n\n.#{$fa-css-prefix}-spin {\n  animation: fa-spin 2s infinite linear;\n}\n\n.#{$fa-css-prefix}-pulse {\n  animation: fa-spin 1s infinite steps(8);\n}\n\n@keyframes fa-spin {\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_bordered-pulled.scss",
    "content": "// Bordered & Pulled\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n  border: solid .08em $fa-border-color;\n  border-radius: .1em;\n  padding: .2em .25em .15em;\n}\n\n.#{$fa-css-prefix}-pull-left { float: left; }\n.#{$fa-css-prefix}-pull-right { float: right; }\n\n.#{$fa-css-prefix},\n.fas,\n.far,\n.fal,\n.fab {\n  &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }\n  &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_core.scss",
    "content": "// Base Class Definition\n// -------------------------\n\n.#{$fa-css-prefix},\n.fas,\n.far,\n.fal,\n.fab {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  text-rendering: auto;\n  line-height: 1;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_fixed-width.scss",
    "content": "// Fixed Width Icons\n// -------------------------\n.#{$fa-css-prefix}-fw {\n  text-align: center;\n  width: (20em / 16);\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_icons.scss",
    "content": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n\n.#{$fa-css-prefix}-500px:before { content: fa-content($fa-var-500px); }\n.#{$fa-css-prefix}-accessible-icon:before { content: fa-content($fa-var-accessible-icon); }\n.#{$fa-css-prefix}-accusoft:before { content: fa-content($fa-var-accusoft); }\n.#{$fa-css-prefix}-address-book:before { content: fa-content($fa-var-address-book); }\n.#{$fa-css-prefix}-address-card:before { content: fa-content($fa-var-address-card); }\n.#{$fa-css-prefix}-adjust:before { content: fa-content($fa-var-adjust); }\n.#{$fa-css-prefix}-adn:before { content: fa-content($fa-var-adn); }\n.#{$fa-css-prefix}-adversal:before { content: fa-content($fa-var-adversal); }\n.#{$fa-css-prefix}-affiliatetheme:before { content: fa-content($fa-var-affiliatetheme); }\n.#{$fa-css-prefix}-algolia:before { content: fa-content($fa-var-algolia); }\n.#{$fa-css-prefix}-align-center:before { content: fa-content($fa-var-align-center); }\n.#{$fa-css-prefix}-align-justify:before { content: fa-content($fa-var-align-justify); }\n.#{$fa-css-prefix}-align-left:before { content: fa-content($fa-var-align-left); }\n.#{$fa-css-prefix}-align-right:before { content: fa-content($fa-var-align-right); }\n.#{$fa-css-prefix}-allergies:before { content: fa-content($fa-var-allergies); }\n.#{$fa-css-prefix}-amazon:before { content: fa-content($fa-var-amazon); }\n.#{$fa-css-prefix}-amazon-pay:before { content: fa-content($fa-var-amazon-pay); }\n.#{$fa-css-prefix}-ambulance:before { content: fa-content($fa-var-ambulance); }\n.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: fa-content($fa-var-american-sign-language-interpreting); }\n.#{$fa-css-prefix}-amilia:before { content: fa-content($fa-var-amilia); }\n.#{$fa-css-prefix}-anchor:before { content: fa-content($fa-var-anchor); }\n.#{$fa-css-prefix}-android:before { content: fa-content($fa-var-android); }\n.#{$fa-css-prefix}-angellist:before { content: fa-content($fa-var-angellist); }\n.#{$fa-css-prefix}-angle-double-down:before { content: fa-content($fa-var-angle-double-down); }\n.#{$fa-css-prefix}-angle-double-left:before { content: fa-content($fa-var-angle-double-left); }\n.#{$fa-css-prefix}-angle-double-right:before { content: fa-content($fa-var-angle-double-right); }\n.#{$fa-css-prefix}-angle-double-up:before { content: fa-content($fa-var-angle-double-up); }\n.#{$fa-css-prefix}-angle-down:before { content: fa-content($fa-var-angle-down); }\n.#{$fa-css-prefix}-angle-left:before { content: fa-content($fa-var-angle-left); }\n.#{$fa-css-prefix}-angle-right:before { content: fa-content($fa-var-angle-right); }\n.#{$fa-css-prefix}-angle-up:before { content: fa-content($fa-var-angle-up); }\n.#{$fa-css-prefix}-angrycreative:before { content: fa-content($fa-var-angrycreative); }\n.#{$fa-css-prefix}-angular:before { content: fa-content($fa-var-angular); }\n.#{$fa-css-prefix}-app-store:before { content: fa-content($fa-var-app-store); }\n.#{$fa-css-prefix}-app-store-ios:before { content: fa-content($fa-var-app-store-ios); }\n.#{$fa-css-prefix}-apper:before { content: fa-content($fa-var-apper); }\n.#{$fa-css-prefix}-apple:before { content: fa-content($fa-var-apple); }\n.#{$fa-css-prefix}-apple-pay:before { content: fa-content($fa-var-apple-pay); }\n.#{$fa-css-prefix}-archive:before { content: fa-content($fa-var-archive); }\n.#{$fa-css-prefix}-arrow-alt-circle-down:before { content: fa-content($fa-var-arrow-alt-circle-down); }\n.#{$fa-css-prefix}-arrow-alt-circle-left:before { content: fa-content($fa-var-arrow-alt-circle-left); }\n.#{$fa-css-prefix}-arrow-alt-circle-right:before { content: fa-content($fa-var-arrow-alt-circle-right); }\n.#{$fa-css-prefix}-arrow-alt-circle-up:before { content: fa-content($fa-var-arrow-alt-circle-up); }\n.#{$fa-css-prefix}-arrow-circle-down:before { content: fa-content($fa-var-arrow-circle-down); }\n.#{$fa-css-prefix}-arrow-circle-left:before { content: fa-content($fa-var-arrow-circle-left); }\n.#{$fa-css-prefix}-arrow-circle-right:before { content: fa-content($fa-var-arrow-circle-right); }\n.#{$fa-css-prefix}-arrow-circle-up:before { content: fa-content($fa-var-arrow-circle-up); }\n.#{$fa-css-prefix}-arrow-down:before { content: fa-content($fa-var-arrow-down); }\n.#{$fa-css-prefix}-arrow-left:before { content: fa-content($fa-var-arrow-left); }\n.#{$fa-css-prefix}-arrow-right:before { content: fa-content($fa-var-arrow-right); }\n.#{$fa-css-prefix}-arrow-up:before { content: fa-content($fa-var-arrow-up); }\n.#{$fa-css-prefix}-arrows-alt:before { content: fa-content($fa-var-arrows-alt); }\n.#{$fa-css-prefix}-arrows-alt-h:before { content: fa-content($fa-var-arrows-alt-h); }\n.#{$fa-css-prefix}-arrows-alt-v:before { content: fa-content($fa-var-arrows-alt-v); }\n.#{$fa-css-prefix}-assistive-listening-systems:before { content: fa-content($fa-var-assistive-listening-systems); }\n.#{$fa-css-prefix}-asterisk:before { content: fa-content($fa-var-asterisk); }\n.#{$fa-css-prefix}-asymmetrik:before { content: fa-content($fa-var-asymmetrik); }\n.#{$fa-css-prefix}-at:before { content: fa-content($fa-var-at); }\n.#{$fa-css-prefix}-audible:before { content: fa-content($fa-var-audible); }\n.#{$fa-css-prefix}-audio-description:before { content: fa-content($fa-var-audio-description); }\n.#{$fa-css-prefix}-autoprefixer:before { content: fa-content($fa-var-autoprefixer); }\n.#{$fa-css-prefix}-avianex:before { content: fa-content($fa-var-avianex); }\n.#{$fa-css-prefix}-aviato:before { content: fa-content($fa-var-aviato); }\n.#{$fa-css-prefix}-aws:before { content: fa-content($fa-var-aws); }\n.#{$fa-css-prefix}-backward:before { content: fa-content($fa-var-backward); }\n.#{$fa-css-prefix}-balance-scale:before { content: fa-content($fa-var-balance-scale); }\n.#{$fa-css-prefix}-ban:before { content: fa-content($fa-var-ban); }\n.#{$fa-css-prefix}-band-aid:before { content: fa-content($fa-var-band-aid); }\n.#{$fa-css-prefix}-bandcamp:before { content: fa-content($fa-var-bandcamp); }\n.#{$fa-css-prefix}-barcode:before { content: fa-content($fa-var-barcode); }\n.#{$fa-css-prefix}-bars:before { content: fa-content($fa-var-bars); }\n.#{$fa-css-prefix}-baseball-ball:before { content: fa-content($fa-var-baseball-ball); }\n.#{$fa-css-prefix}-basketball-ball:before { content: fa-content($fa-var-basketball-ball); }\n.#{$fa-css-prefix}-bath:before { content: fa-content($fa-var-bath); }\n.#{$fa-css-prefix}-battery-empty:before { content: fa-content($fa-var-battery-empty); }\n.#{$fa-css-prefix}-battery-full:before { content: fa-content($fa-var-battery-full); }\n.#{$fa-css-prefix}-battery-half:before { content: fa-content($fa-var-battery-half); }\n.#{$fa-css-prefix}-battery-quarter:before { content: fa-content($fa-var-battery-quarter); }\n.#{$fa-css-prefix}-battery-three-quarters:before { content: fa-content($fa-var-battery-three-quarters); }\n.#{$fa-css-prefix}-bed:before { content: fa-content($fa-var-bed); }\n.#{$fa-css-prefix}-beer:before { content: fa-content($fa-var-beer); }\n.#{$fa-css-prefix}-behance:before { content: fa-content($fa-var-behance); }\n.#{$fa-css-prefix}-behance-square:before { content: fa-content($fa-var-behance-square); }\n.#{$fa-css-prefix}-bell:before { content: fa-content($fa-var-bell); }\n.#{$fa-css-prefix}-bell-slash:before { content: fa-content($fa-var-bell-slash); }\n.#{$fa-css-prefix}-bicycle:before { content: fa-content($fa-var-bicycle); }\n.#{$fa-css-prefix}-bimobject:before { content: fa-content($fa-var-bimobject); }\n.#{$fa-css-prefix}-binoculars:before { content: fa-content($fa-var-binoculars); }\n.#{$fa-css-prefix}-birthday-cake:before { content: fa-content($fa-var-birthday-cake); }\n.#{$fa-css-prefix}-bitbucket:before { content: fa-content($fa-var-bitbucket); }\n.#{$fa-css-prefix}-bitcoin:before { content: fa-content($fa-var-bitcoin); }\n.#{$fa-css-prefix}-bity:before { content: fa-content($fa-var-bity); }\n.#{$fa-css-prefix}-black-tie:before { content: fa-content($fa-var-black-tie); }\n.#{$fa-css-prefix}-blackberry:before { content: fa-content($fa-var-blackberry); }\n.#{$fa-css-prefix}-blind:before { content: fa-content($fa-var-blind); }\n.#{$fa-css-prefix}-blogger:before { content: fa-content($fa-var-blogger); }\n.#{$fa-css-prefix}-blogger-b:before { content: fa-content($fa-var-blogger-b); }\n.#{$fa-css-prefix}-bluetooth:before { content: fa-content($fa-var-bluetooth); }\n.#{$fa-css-prefix}-bluetooth-b:before { content: fa-content($fa-var-bluetooth-b); }\n.#{$fa-css-prefix}-bold:before { content: fa-content($fa-var-bold); }\n.#{$fa-css-prefix}-bolt:before { content: fa-content($fa-var-bolt); }\n.#{$fa-css-prefix}-bomb:before { content: fa-content($fa-var-bomb); }\n.#{$fa-css-prefix}-book:before { content: fa-content($fa-var-book); }\n.#{$fa-css-prefix}-bookmark:before { content: fa-content($fa-var-bookmark); }\n.#{$fa-css-prefix}-bowling-ball:before { content: fa-content($fa-var-bowling-ball); }\n.#{$fa-css-prefix}-box:before { content: fa-content($fa-var-box); }\n.#{$fa-css-prefix}-box-open:before { content: fa-content($fa-var-box-open); }\n.#{$fa-css-prefix}-boxes:before { content: fa-content($fa-var-boxes); }\n.#{$fa-css-prefix}-braille:before { content: fa-content($fa-var-braille); }\n.#{$fa-css-prefix}-briefcase:before { content: fa-content($fa-var-briefcase); }\n.#{$fa-css-prefix}-briefcase-medical:before { content: fa-content($fa-var-briefcase-medical); }\n.#{$fa-css-prefix}-btc:before { content: fa-content($fa-var-btc); }\n.#{$fa-css-prefix}-bug:before { content: fa-content($fa-var-bug); }\n.#{$fa-css-prefix}-building:before { content: fa-content($fa-var-building); }\n.#{$fa-css-prefix}-bullhorn:before { content: fa-content($fa-var-bullhorn); }\n.#{$fa-css-prefix}-bullseye:before { content: fa-content($fa-var-bullseye); }\n.#{$fa-css-prefix}-burn:before { content: fa-content($fa-var-burn); }\n.#{$fa-css-prefix}-buromobelexperte:before { content: fa-content($fa-var-buromobelexperte); }\n.#{$fa-css-prefix}-bus:before { content: fa-content($fa-var-bus); }\n.#{$fa-css-prefix}-buysellads:before { content: fa-content($fa-var-buysellads); }\n.#{$fa-css-prefix}-calculator:before { content: fa-content($fa-var-calculator); }\n.#{$fa-css-prefix}-calendar:before { content: fa-content($fa-var-calendar); }\n.#{$fa-css-prefix}-calendar-alt:before { content: fa-content($fa-var-calendar-alt); }\n.#{$fa-css-prefix}-calendar-check:before { content: fa-content($fa-var-calendar-check); }\n.#{$fa-css-prefix}-calendar-minus:before { content: fa-content($fa-var-calendar-minus); }\n.#{$fa-css-prefix}-calendar-plus:before { content: fa-content($fa-var-calendar-plus); }\n.#{$fa-css-prefix}-calendar-times:before { content: fa-content($fa-var-calendar-times); }\n.#{$fa-css-prefix}-camera:before { content: fa-content($fa-var-camera); }\n.#{$fa-css-prefix}-camera-retro:before { content: fa-content($fa-var-camera-retro); }\n.#{$fa-css-prefix}-capsules:before { content: fa-content($fa-var-capsules); }\n.#{$fa-css-prefix}-car:before { content: fa-content($fa-var-car); }\n.#{$fa-css-prefix}-caret-down:before { content: fa-content($fa-var-caret-down); }\n.#{$fa-css-prefix}-caret-left:before { content: fa-content($fa-var-caret-left); }\n.#{$fa-css-prefix}-caret-right:before { content: fa-content($fa-var-caret-right); }\n.#{$fa-css-prefix}-caret-square-down:before { content: fa-content($fa-var-caret-square-down); }\n.#{$fa-css-prefix}-caret-square-left:before { content: fa-content($fa-var-caret-square-left); }\n.#{$fa-css-prefix}-caret-square-right:before { content: fa-content($fa-var-caret-square-right); }\n.#{$fa-css-prefix}-caret-square-up:before { content: fa-content($fa-var-caret-square-up); }\n.#{$fa-css-prefix}-caret-up:before { content: fa-content($fa-var-caret-up); }\n.#{$fa-css-prefix}-cart-arrow-down:before { content: fa-content($fa-var-cart-arrow-down); }\n.#{$fa-css-prefix}-cart-plus:before { content: fa-content($fa-var-cart-plus); }\n.#{$fa-css-prefix}-cc-amazon-pay:before { content: fa-content($fa-var-cc-amazon-pay); }\n.#{$fa-css-prefix}-cc-amex:before { content: fa-content($fa-var-cc-amex); }\n.#{$fa-css-prefix}-cc-apple-pay:before { content: fa-content($fa-var-cc-apple-pay); }\n.#{$fa-css-prefix}-cc-diners-club:before { content: fa-content($fa-var-cc-diners-club); }\n.#{$fa-css-prefix}-cc-discover:before { content: fa-content($fa-var-cc-discover); }\n.#{$fa-css-prefix}-cc-jcb:before { content: fa-content($fa-var-cc-jcb); }\n.#{$fa-css-prefix}-cc-mastercard:before { content: fa-content($fa-var-cc-mastercard); }\n.#{$fa-css-prefix}-cc-paypal:before { content: fa-content($fa-var-cc-paypal); }\n.#{$fa-css-prefix}-cc-stripe:before { content: fa-content($fa-var-cc-stripe); }\n.#{$fa-css-prefix}-cc-visa:before { content: fa-content($fa-var-cc-visa); }\n.#{$fa-css-prefix}-centercode:before { content: fa-content($fa-var-centercode); }\n.#{$fa-css-prefix}-certificate:before { content: fa-content($fa-var-certificate); }\n.#{$fa-css-prefix}-chart-area:before { content: fa-content($fa-var-chart-area); }\n.#{$fa-css-prefix}-chart-bar:before { content: fa-content($fa-var-chart-bar); }\n.#{$fa-css-prefix}-chart-line:before { content: fa-content($fa-var-chart-line); }\n.#{$fa-css-prefix}-chart-pie:before { content: fa-content($fa-var-chart-pie); }\n.#{$fa-css-prefix}-check:before { content: fa-content($fa-var-check); }\n.#{$fa-css-prefix}-check-circle:before { content: fa-content($fa-var-check-circle); }\n.#{$fa-css-prefix}-check-square:before { content: fa-content($fa-var-check-square); }\n.#{$fa-css-prefix}-chess:before { content: fa-content($fa-var-chess); }\n.#{$fa-css-prefix}-chess-bishop:before { content: fa-content($fa-var-chess-bishop); }\n.#{$fa-css-prefix}-chess-board:before { content: fa-content($fa-var-chess-board); }\n.#{$fa-css-prefix}-chess-king:before { content: fa-content($fa-var-chess-king); }\n.#{$fa-css-prefix}-chess-knight:before { content: fa-content($fa-var-chess-knight); }\n.#{$fa-css-prefix}-chess-pawn:before { content: fa-content($fa-var-chess-pawn); }\n.#{$fa-css-prefix}-chess-queen:before { content: fa-content($fa-var-chess-queen); }\n.#{$fa-css-prefix}-chess-rook:before { content: fa-content($fa-var-chess-rook); }\n.#{$fa-css-prefix}-chevron-circle-down:before { content: fa-content($fa-var-chevron-circle-down); }\n.#{$fa-css-prefix}-chevron-circle-left:before { content: fa-content($fa-var-chevron-circle-left); }\n.#{$fa-css-prefix}-chevron-circle-right:before { content: fa-content($fa-var-chevron-circle-right); }\n.#{$fa-css-prefix}-chevron-circle-up:before { content: fa-content($fa-var-chevron-circle-up); }\n.#{$fa-css-prefix}-chevron-down:before { content: fa-content($fa-var-chevron-down); }\n.#{$fa-css-prefix}-chevron-left:before { content: fa-content($fa-var-chevron-left); }\n.#{$fa-css-prefix}-chevron-right:before { content: fa-content($fa-var-chevron-right); }\n.#{$fa-css-prefix}-chevron-up:before { content: fa-content($fa-var-chevron-up); }\n.#{$fa-css-prefix}-child:before { content: fa-content($fa-var-child); }\n.#{$fa-css-prefix}-chrome:before { content: fa-content($fa-var-chrome); }\n.#{$fa-css-prefix}-circle:before { content: fa-content($fa-var-circle); }\n.#{$fa-css-prefix}-circle-notch:before { content: fa-content($fa-var-circle-notch); }\n.#{$fa-css-prefix}-clipboard:before { content: fa-content($fa-var-clipboard); }\n.#{$fa-css-prefix}-clipboard-check:before { content: fa-content($fa-var-clipboard-check); }\n.#{$fa-css-prefix}-clipboard-list:before { content: fa-content($fa-var-clipboard-list); }\n.#{$fa-css-prefix}-clock:before { content: fa-content($fa-var-clock); }\n.#{$fa-css-prefix}-clone:before { content: fa-content($fa-var-clone); }\n.#{$fa-css-prefix}-closed-captioning:before { content: fa-content($fa-var-closed-captioning); }\n.#{$fa-css-prefix}-cloud:before { content: fa-content($fa-var-cloud); }\n.#{$fa-css-prefix}-cloud-download-alt:before { content: fa-content($fa-var-cloud-download-alt); }\n.#{$fa-css-prefix}-cloud-upload-alt:before { content: fa-content($fa-var-cloud-upload-alt); }\n.#{$fa-css-prefix}-cloudscale:before { content: fa-content($fa-var-cloudscale); }\n.#{$fa-css-prefix}-cloudsmith:before { content: fa-content($fa-var-cloudsmith); }\n.#{$fa-css-prefix}-cloudversify:before { content: fa-content($fa-var-cloudversify); }\n.#{$fa-css-prefix}-code:before { content: fa-content($fa-var-code); }\n.#{$fa-css-prefix}-code-branch:before { content: fa-content($fa-var-code-branch); }\n.#{$fa-css-prefix}-codepen:before { content: fa-content($fa-var-codepen); }\n.#{$fa-css-prefix}-codiepie:before { content: fa-content($fa-var-codiepie); }\n.#{$fa-css-prefix}-coffee:before { content: fa-content($fa-var-coffee); }\n.#{$fa-css-prefix}-cog:before { content: fa-content($fa-var-cog); }\n.#{$fa-css-prefix}-cogs:before { content: fa-content($fa-var-cogs); }\n.#{$fa-css-prefix}-columns:before { content: fa-content($fa-var-columns); }\n.#{$fa-css-prefix}-comment:before { content: fa-content($fa-var-comment); }\n.#{$fa-css-prefix}-comment-alt:before { content: fa-content($fa-var-comment-alt); }\n.#{$fa-css-prefix}-comment-dots:before { content: fa-content($fa-var-comment-dots); }\n.#{$fa-css-prefix}-comment-slash:before { content: fa-content($fa-var-comment-slash); }\n.#{$fa-css-prefix}-comments:before { content: fa-content($fa-var-comments); }\n.#{$fa-css-prefix}-compass:before { content: fa-content($fa-var-compass); }\n.#{$fa-css-prefix}-compress:before { content: fa-content($fa-var-compress); }\n.#{$fa-css-prefix}-connectdevelop:before { content: fa-content($fa-var-connectdevelop); }\n.#{$fa-css-prefix}-contao:before { content: fa-content($fa-var-contao); }\n.#{$fa-css-prefix}-copy:before { content: fa-content($fa-var-copy); }\n.#{$fa-css-prefix}-copyright:before { content: fa-content($fa-var-copyright); }\n.#{$fa-css-prefix}-couch:before { content: fa-content($fa-var-couch); }\n.#{$fa-css-prefix}-cpanel:before { content: fa-content($fa-var-cpanel); }\n.#{$fa-css-prefix}-creative-commons:before { content: fa-content($fa-var-creative-commons); }\n.#{$fa-css-prefix}-credit-card:before { content: fa-content($fa-var-credit-card); }\n.#{$fa-css-prefix}-crop:before { content: fa-content($fa-var-crop); }\n.#{$fa-css-prefix}-crosshairs:before { content: fa-content($fa-var-crosshairs); }\n.#{$fa-css-prefix}-css3:before { content: fa-content($fa-var-css3); }\n.#{$fa-css-prefix}-css3-alt:before { content: fa-content($fa-var-css3-alt); }\n.#{$fa-css-prefix}-cube:before { content: fa-content($fa-var-cube); }\n.#{$fa-css-prefix}-cubes:before { content: fa-content($fa-var-cubes); }\n.#{$fa-css-prefix}-cut:before { content: fa-content($fa-var-cut); }\n.#{$fa-css-prefix}-cuttlefish:before { content: fa-content($fa-var-cuttlefish); }\n.#{$fa-css-prefix}-d-and-d:before { content: fa-content($fa-var-d-and-d); }\n.#{$fa-css-prefix}-dashcube:before { content: fa-content($fa-var-dashcube); }\n.#{$fa-css-prefix}-database:before { content: fa-content($fa-var-database); }\n.#{$fa-css-prefix}-deaf:before { content: fa-content($fa-var-deaf); }\n.#{$fa-css-prefix}-delicious:before { content: fa-content($fa-var-delicious); }\n.#{$fa-css-prefix}-deploydog:before { content: fa-content($fa-var-deploydog); }\n.#{$fa-css-prefix}-deskpro:before { content: fa-content($fa-var-deskpro); }\n.#{$fa-css-prefix}-desktop:before { content: fa-content($fa-var-desktop); }\n.#{$fa-css-prefix}-deviantart:before { content: fa-content($fa-var-deviantart); }\n.#{$fa-css-prefix}-diagnoses:before { content: fa-content($fa-var-diagnoses); }\n.#{$fa-css-prefix}-digg:before { content: fa-content($fa-var-digg); }\n.#{$fa-css-prefix}-digital-ocean:before { content: fa-content($fa-var-digital-ocean); }\n.#{$fa-css-prefix}-discord:before { content: fa-content($fa-var-discord); }\n.#{$fa-css-prefix}-discourse:before { content: fa-content($fa-var-discourse); }\n.#{$fa-css-prefix}-dna:before { content: fa-content($fa-var-dna); }\n.#{$fa-css-prefix}-dochub:before { content: fa-content($fa-var-dochub); }\n.#{$fa-css-prefix}-docker:before { content: fa-content($fa-var-docker); }\n.#{$fa-css-prefix}-dollar-sign:before { content: fa-content($fa-var-dollar-sign); }\n.#{$fa-css-prefix}-dolly:before { content: fa-content($fa-var-dolly); }\n.#{$fa-css-prefix}-dolly-flatbed:before { content: fa-content($fa-var-dolly-flatbed); }\n.#{$fa-css-prefix}-donate:before { content: fa-content($fa-var-donate); }\n.#{$fa-css-prefix}-dot-circle:before { content: fa-content($fa-var-dot-circle); }\n.#{$fa-css-prefix}-dove:before { content: fa-content($fa-var-dove); }\n.#{$fa-css-prefix}-download:before { content: fa-content($fa-var-download); }\n.#{$fa-css-prefix}-draft2digital:before { content: fa-content($fa-var-draft2digital); }\n.#{$fa-css-prefix}-dribbble:before { content: fa-content($fa-var-dribbble); }\n.#{$fa-css-prefix}-dribbble-square:before { content: fa-content($fa-var-dribbble-square); }\n.#{$fa-css-prefix}-dropbox:before { content: fa-content($fa-var-dropbox); }\n.#{$fa-css-prefix}-drupal:before { content: fa-content($fa-var-drupal); }\n.#{$fa-css-prefix}-dyalog:before { content: fa-content($fa-var-dyalog); }\n.#{$fa-css-prefix}-earlybirds:before { content: fa-content($fa-var-earlybirds); }\n.#{$fa-css-prefix}-edge:before { content: fa-content($fa-var-edge); }\n.#{$fa-css-prefix}-edit:before { content: fa-content($fa-var-edit); }\n.#{$fa-css-prefix}-eject:before { content: fa-content($fa-var-eject); }\n.#{$fa-css-prefix}-elementor:before { content: fa-content($fa-var-elementor); }\n.#{$fa-css-prefix}-ellipsis-h:before { content: fa-content($fa-var-ellipsis-h); }\n.#{$fa-css-prefix}-ellipsis-v:before { content: fa-content($fa-var-ellipsis-v); }\n.#{$fa-css-prefix}-ember:before { content: fa-content($fa-var-ember); }\n.#{$fa-css-prefix}-empire:before { content: fa-content($fa-var-empire); }\n.#{$fa-css-prefix}-envelope:before { content: fa-content($fa-var-envelope); }\n.#{$fa-css-prefix}-envelope-open:before { content: fa-content($fa-var-envelope-open); }\n.#{$fa-css-prefix}-envelope-square:before { content: fa-content($fa-var-envelope-square); }\n.#{$fa-css-prefix}-envira:before { content: fa-content($fa-var-envira); }\n.#{$fa-css-prefix}-eraser:before { content: fa-content($fa-var-eraser); }\n.#{$fa-css-prefix}-erlang:before { content: fa-content($fa-var-erlang); }\n.#{$fa-css-prefix}-ethereum:before { content: fa-content($fa-var-ethereum); }\n.#{$fa-css-prefix}-etsy:before { content: fa-content($fa-var-etsy); }\n.#{$fa-css-prefix}-euro-sign:before { content: fa-content($fa-var-euro-sign); }\n.#{$fa-css-prefix}-exchange-alt:before { content: fa-content($fa-var-exchange-alt); }\n.#{$fa-css-prefix}-exclamation:before { content: fa-content($fa-var-exclamation); }\n.#{$fa-css-prefix}-exclamation-circle:before { content: fa-content($fa-var-exclamation-circle); }\n.#{$fa-css-prefix}-exclamation-triangle:before { content: fa-content($fa-var-exclamation-triangle); }\n.#{$fa-css-prefix}-expand:before { content: fa-content($fa-var-expand); }\n.#{$fa-css-prefix}-expand-arrows-alt:before { content: fa-content($fa-var-expand-arrows-alt); }\n.#{$fa-css-prefix}-expeditedssl:before { content: fa-content($fa-var-expeditedssl); }\n.#{$fa-css-prefix}-external-link-alt:before { content: fa-content($fa-var-external-link-alt); }\n.#{$fa-css-prefix}-external-link-square-alt:before { content: fa-content($fa-var-external-link-square-alt); }\n.#{$fa-css-prefix}-eye:before { content: fa-content($fa-var-eye); }\n.#{$fa-css-prefix}-eye-dropper:before { content: fa-content($fa-var-eye-dropper); }\n.#{$fa-css-prefix}-eye-slash:before { content: fa-content($fa-var-eye-slash); }\n.#{$fa-css-prefix}-facebook:before { content: fa-content($fa-var-facebook); }\n.#{$fa-css-prefix}-facebook-f:before { content: fa-content($fa-var-facebook-f); }\n.#{$fa-css-prefix}-facebook-messenger:before { content: fa-content($fa-var-facebook-messenger); }\n.#{$fa-css-prefix}-facebook-square:before { content: fa-content($fa-var-facebook-square); }\n.#{$fa-css-prefix}-fast-backward:before { content: fa-content($fa-var-fast-backward); }\n.#{$fa-css-prefix}-fast-forward:before { content: fa-content($fa-var-fast-forward); }\n.#{$fa-css-prefix}-fax:before { content: fa-content($fa-var-fax); }\n.#{$fa-css-prefix}-female:before { content: fa-content($fa-var-female); }\n.#{$fa-css-prefix}-fighter-jet:before { content: fa-content($fa-var-fighter-jet); }\n.#{$fa-css-prefix}-file:before { content: fa-content($fa-var-file); }\n.#{$fa-css-prefix}-file-alt:before { content: fa-content($fa-var-file-alt); }\n.#{$fa-css-prefix}-file-archive:before { content: fa-content($fa-var-file-archive); }\n.#{$fa-css-prefix}-file-audio:before { content: fa-content($fa-var-file-audio); }\n.#{$fa-css-prefix}-file-code:before { content: fa-content($fa-var-file-code); }\n.#{$fa-css-prefix}-file-excel:before { content: fa-content($fa-var-file-excel); }\n.#{$fa-css-prefix}-file-image:before { content: fa-content($fa-var-file-image); }\n.#{$fa-css-prefix}-file-medical:before { content: fa-content($fa-var-file-medical); }\n.#{$fa-css-prefix}-file-medical-alt:before { content: fa-content($fa-var-file-medical-alt); }\n.#{$fa-css-prefix}-file-pdf:before { content: fa-content($fa-var-file-pdf); }\n.#{$fa-css-prefix}-file-powerpoint:before { content: fa-content($fa-var-file-powerpoint); }\n.#{$fa-css-prefix}-file-video:before { content: fa-content($fa-var-file-video); }\n.#{$fa-css-prefix}-file-word:before { content: fa-content($fa-var-file-word); }\n.#{$fa-css-prefix}-film:before { content: fa-content($fa-var-film); }\n.#{$fa-css-prefix}-filter:before { content: fa-content($fa-var-filter); }\n.#{$fa-css-prefix}-fire:before { content: fa-content($fa-var-fire); }\n.#{$fa-css-prefix}-fire-extinguisher:before { content: fa-content($fa-var-fire-extinguisher); }\n.#{$fa-css-prefix}-firefox:before { content: fa-content($fa-var-firefox); }\n.#{$fa-css-prefix}-first-aid:before { content: fa-content($fa-var-first-aid); }\n.#{$fa-css-prefix}-first-order:before { content: fa-content($fa-var-first-order); }\n.#{$fa-css-prefix}-firstdraft:before { content: fa-content($fa-var-firstdraft); }\n.#{$fa-css-prefix}-flag:before { content: fa-content($fa-var-flag); }\n.#{$fa-css-prefix}-flag-checkered:before { content: fa-content($fa-var-flag-checkered); }\n.#{$fa-css-prefix}-flask:before { content: fa-content($fa-var-flask); }\n.#{$fa-css-prefix}-flickr:before { content: fa-content($fa-var-flickr); }\n.#{$fa-css-prefix}-flipboard:before { content: fa-content($fa-var-flipboard); }\n.#{$fa-css-prefix}-fly:before { content: fa-content($fa-var-fly); }\n.#{$fa-css-prefix}-folder:before { content: fa-content($fa-var-folder); }\n.#{$fa-css-prefix}-folder-open:before { content: fa-content($fa-var-folder-open); }\n.#{$fa-css-prefix}-font:before { content: fa-content($fa-var-font); }\n.#{$fa-css-prefix}-font-awesome:before { content: fa-content($fa-var-font-awesome); }\n.#{$fa-css-prefix}-font-awesome-alt:before { content: fa-content($fa-var-font-awesome-alt); }\n.#{$fa-css-prefix}-font-awesome-flag:before { content: fa-content($fa-var-font-awesome-flag); }\n.#{$fa-css-prefix}-fonticons:before { content: fa-content($fa-var-fonticons); }\n.#{$fa-css-prefix}-fonticons-fi:before { content: fa-content($fa-var-fonticons-fi); }\n.#{$fa-css-prefix}-football-ball:before { content: fa-content($fa-var-football-ball); }\n.#{$fa-css-prefix}-fort-awesome:before { content: fa-content($fa-var-fort-awesome); }\n.#{$fa-css-prefix}-fort-awesome-alt:before { content: fa-content($fa-var-fort-awesome-alt); }\n.#{$fa-css-prefix}-forumbee:before { content: fa-content($fa-var-forumbee); }\n.#{$fa-css-prefix}-forward:before { content: fa-content($fa-var-forward); }\n.#{$fa-css-prefix}-foursquare:before { content: fa-content($fa-var-foursquare); }\n.#{$fa-css-prefix}-free-code-camp:before { content: fa-content($fa-var-free-code-camp); }\n.#{$fa-css-prefix}-freebsd:before { content: fa-content($fa-var-freebsd); }\n.#{$fa-css-prefix}-frown:before { content: fa-content($fa-var-frown); }\n.#{$fa-css-prefix}-futbol:before { content: fa-content($fa-var-futbol); }\n.#{$fa-css-prefix}-gamepad:before { content: fa-content($fa-var-gamepad); }\n.#{$fa-css-prefix}-gavel:before { content: fa-content($fa-var-gavel); }\n.#{$fa-css-prefix}-gem:before { content: fa-content($fa-var-gem); }\n.#{$fa-css-prefix}-genderless:before { content: fa-content($fa-var-genderless); }\n.#{$fa-css-prefix}-get-pocket:before { content: fa-content($fa-var-get-pocket); }\n.#{$fa-css-prefix}-gg:before { content: fa-content($fa-var-gg); }\n.#{$fa-css-prefix}-gg-circle:before { content: fa-content($fa-var-gg-circle); }\n.#{$fa-css-prefix}-gift:before { content: fa-content($fa-var-gift); }\n.#{$fa-css-prefix}-git:before { content: fa-content($fa-var-git); }\n.#{$fa-css-prefix}-git-square:before { content: fa-content($fa-var-git-square); }\n.#{$fa-css-prefix}-github:before { content: fa-content($fa-var-github); }\n.#{$fa-css-prefix}-github-alt:before { content: fa-content($fa-var-github-alt); }\n.#{$fa-css-prefix}-github-square:before { content: fa-content($fa-var-github-square); }\n.#{$fa-css-prefix}-gitkraken:before { content: fa-content($fa-var-gitkraken); }\n.#{$fa-css-prefix}-gitlab:before { content: fa-content($fa-var-gitlab); }\n.#{$fa-css-prefix}-gitter:before { content: fa-content($fa-var-gitter); }\n.#{$fa-css-prefix}-glass-martini:before { content: fa-content($fa-var-glass-martini); }\n.#{$fa-css-prefix}-glide:before { content: fa-content($fa-var-glide); }\n.#{$fa-css-prefix}-glide-g:before { content: fa-content($fa-var-glide-g); }\n.#{$fa-css-prefix}-globe:before { content: fa-content($fa-var-globe); }\n.#{$fa-css-prefix}-gofore:before { content: fa-content($fa-var-gofore); }\n.#{$fa-css-prefix}-golf-ball:before { content: fa-content($fa-var-golf-ball); }\n.#{$fa-css-prefix}-goodreads:before { content: fa-content($fa-var-goodreads); }\n.#{$fa-css-prefix}-goodreads-g:before { content: fa-content($fa-var-goodreads-g); }\n.#{$fa-css-prefix}-google:before { content: fa-content($fa-var-google); }\n.#{$fa-css-prefix}-google-drive:before { content: fa-content($fa-var-google-drive); }\n.#{$fa-css-prefix}-google-play:before { content: fa-content($fa-var-google-play); }\n.#{$fa-css-prefix}-google-plus:before { content: fa-content($fa-var-google-plus); }\n.#{$fa-css-prefix}-google-plus-g:before { content: fa-content($fa-var-google-plus-g); }\n.#{$fa-css-prefix}-google-plus-square:before { content: fa-content($fa-var-google-plus-square); }\n.#{$fa-css-prefix}-google-wallet:before { content: fa-content($fa-var-google-wallet); }\n.#{$fa-css-prefix}-graduation-cap:before { content: fa-content($fa-var-graduation-cap); }\n.#{$fa-css-prefix}-gratipay:before { content: fa-content($fa-var-gratipay); }\n.#{$fa-css-prefix}-grav:before { content: fa-content($fa-var-grav); }\n.#{$fa-css-prefix}-gripfire:before { content: fa-content($fa-var-gripfire); }\n.#{$fa-css-prefix}-grunt:before { content: fa-content($fa-var-grunt); }\n.#{$fa-css-prefix}-gulp:before { content: fa-content($fa-var-gulp); }\n.#{$fa-css-prefix}-h-square:before { content: fa-content($fa-var-h-square); }\n.#{$fa-css-prefix}-hacker-news:before { content: fa-content($fa-var-hacker-news); }\n.#{$fa-css-prefix}-hacker-news-square:before { content: fa-content($fa-var-hacker-news-square); }\n.#{$fa-css-prefix}-hand-holding:before { content: fa-content($fa-var-hand-holding); }\n.#{$fa-css-prefix}-hand-holding-heart:before { content: fa-content($fa-var-hand-holding-heart); }\n.#{$fa-css-prefix}-hand-holding-usd:before { content: fa-content($fa-var-hand-holding-usd); }\n.#{$fa-css-prefix}-hand-lizard:before { content: fa-content($fa-var-hand-lizard); }\n.#{$fa-css-prefix}-hand-paper:before { content: fa-content($fa-var-hand-paper); }\n.#{$fa-css-prefix}-hand-peace:before { content: fa-content($fa-var-hand-peace); }\n.#{$fa-css-prefix}-hand-point-down:before { content: fa-content($fa-var-hand-point-down); }\n.#{$fa-css-prefix}-hand-point-left:before { content: fa-content($fa-var-hand-point-left); }\n.#{$fa-css-prefix}-hand-point-right:before { content: fa-content($fa-var-hand-point-right); }\n.#{$fa-css-prefix}-hand-point-up:before { content: fa-content($fa-var-hand-point-up); }\n.#{$fa-css-prefix}-hand-pointer:before { content: fa-content($fa-var-hand-pointer); }\n.#{$fa-css-prefix}-hand-rock:before { content: fa-content($fa-var-hand-rock); }\n.#{$fa-css-prefix}-hand-scissors:before { content: fa-content($fa-var-hand-scissors); }\n.#{$fa-css-prefix}-hand-spock:before { content: fa-content($fa-var-hand-spock); }\n.#{$fa-css-prefix}-hands:before { content: fa-content($fa-var-hands); }\n.#{$fa-css-prefix}-hands-helping:before { content: fa-content($fa-var-hands-helping); }\n.#{$fa-css-prefix}-handshake:before { content: fa-content($fa-var-handshake); }\n.#{$fa-css-prefix}-hashtag:before { content: fa-content($fa-var-hashtag); }\n.#{$fa-css-prefix}-hdd:before { content: fa-content($fa-var-hdd); }\n.#{$fa-css-prefix}-heading:before { content: fa-content($fa-var-heading); }\n.#{$fa-css-prefix}-headphones:before { content: fa-content($fa-var-headphones); }\n.#{$fa-css-prefix}-heart:before { content: fa-content($fa-var-heart); }\n.#{$fa-css-prefix}-heartbeat:before { content: fa-content($fa-var-heartbeat); }\n.#{$fa-css-prefix}-hips:before { content: fa-content($fa-var-hips); }\n.#{$fa-css-prefix}-hire-a-helper:before { content: fa-content($fa-var-hire-a-helper); }\n.#{$fa-css-prefix}-history:before { content: fa-content($fa-var-history); }\n.#{$fa-css-prefix}-hockey-puck:before { content: fa-content($fa-var-hockey-puck); }\n.#{$fa-css-prefix}-home:before { content: fa-content($fa-var-home); }\n.#{$fa-css-prefix}-hooli:before { content: fa-content($fa-var-hooli); }\n.#{$fa-css-prefix}-hospital:before { content: fa-content($fa-var-hospital); }\n.#{$fa-css-prefix}-hospital-alt:before { content: fa-content($fa-var-hospital-alt); }\n.#{$fa-css-prefix}-hospital-symbol:before { content: fa-content($fa-var-hospital-symbol); }\n.#{$fa-css-prefix}-hotjar:before { content: fa-content($fa-var-hotjar); }\n.#{$fa-css-prefix}-hourglass:before { content: fa-content($fa-var-hourglass); }\n.#{$fa-css-prefix}-hourglass-end:before { content: fa-content($fa-var-hourglass-end); }\n.#{$fa-css-prefix}-hourglass-half:before { content: fa-content($fa-var-hourglass-half); }\n.#{$fa-css-prefix}-hourglass-start:before { content: fa-content($fa-var-hourglass-start); }\n.#{$fa-css-prefix}-houzz:before { content: fa-content($fa-var-houzz); }\n.#{$fa-css-prefix}-html5:before { content: fa-content($fa-var-html5); }\n.#{$fa-css-prefix}-hubspot:before { content: fa-content($fa-var-hubspot); }\n.#{$fa-css-prefix}-i-cursor:before { content: fa-content($fa-var-i-cursor); }\n.#{$fa-css-prefix}-id-badge:before { content: fa-content($fa-var-id-badge); }\n.#{$fa-css-prefix}-id-card:before { content: fa-content($fa-var-id-card); }\n.#{$fa-css-prefix}-id-card-alt:before { content: fa-content($fa-var-id-card-alt); }\n.#{$fa-css-prefix}-image:before { content: fa-content($fa-var-image); }\n.#{$fa-css-prefix}-images:before { content: fa-content($fa-var-images); }\n.#{$fa-css-prefix}-imdb:before { content: fa-content($fa-var-imdb); }\n.#{$fa-css-prefix}-inbox:before { content: fa-content($fa-var-inbox); }\n.#{$fa-css-prefix}-indent:before { content: fa-content($fa-var-indent); }\n.#{$fa-css-prefix}-industry:before { content: fa-content($fa-var-industry); }\n.#{$fa-css-prefix}-info:before { content: fa-content($fa-var-info); }\n.#{$fa-css-prefix}-info-circle:before { content: fa-content($fa-var-info-circle); }\n.#{$fa-css-prefix}-instagram:before { content: fa-content($fa-var-instagram); }\n.#{$fa-css-prefix}-internet-explorer:before { content: fa-content($fa-var-internet-explorer); }\n.#{$fa-css-prefix}-ioxhost:before { content: fa-content($fa-var-ioxhost); }\n.#{$fa-css-prefix}-italic:before { content: fa-content($fa-var-italic); }\n.#{$fa-css-prefix}-itunes:before { content: fa-content($fa-var-itunes); }\n.#{$fa-css-prefix}-itunes-note:before { content: fa-content($fa-var-itunes-note); }\n.#{$fa-css-prefix}-jenkins:before { content: fa-content($fa-var-jenkins); }\n.#{$fa-css-prefix}-joget:before { content: fa-content($fa-var-joget); }\n.#{$fa-css-prefix}-joomla:before { content: fa-content($fa-var-joomla); }\n.#{$fa-css-prefix}-js:before { content: fa-content($fa-var-js); }\n.#{$fa-css-prefix}-js-square:before { content: fa-content($fa-var-js-square); }\n.#{$fa-css-prefix}-jsfiddle:before { content: fa-content($fa-var-jsfiddle); }\n.#{$fa-css-prefix}-key:before { content: fa-content($fa-var-key); }\n.#{$fa-css-prefix}-keyboard:before { content: fa-content($fa-var-keyboard); }\n.#{$fa-css-prefix}-keycdn:before { content: fa-content($fa-var-keycdn); }\n.#{$fa-css-prefix}-kickstarter:before { content: fa-content($fa-var-kickstarter); }\n.#{$fa-css-prefix}-kickstarter-k:before { content: fa-content($fa-var-kickstarter-k); }\n.#{$fa-css-prefix}-korvue:before { content: fa-content($fa-var-korvue); }\n.#{$fa-css-prefix}-language:before { content: fa-content($fa-var-language); }\n.#{$fa-css-prefix}-laptop:before { content: fa-content($fa-var-laptop); }\n.#{$fa-css-prefix}-laravel:before { content: fa-content($fa-var-laravel); }\n.#{$fa-css-prefix}-lastfm:before { content: fa-content($fa-var-lastfm); }\n.#{$fa-css-prefix}-lastfm-square:before { content: fa-content($fa-var-lastfm-square); }\n.#{$fa-css-prefix}-leaf:before { content: fa-content($fa-var-leaf); }\n.#{$fa-css-prefix}-leanpub:before { content: fa-content($fa-var-leanpub); }\n.#{$fa-css-prefix}-lemon:before { content: fa-content($fa-var-lemon); }\n.#{$fa-css-prefix}-less:before { content: fa-content($fa-var-less); }\n.#{$fa-css-prefix}-level-down-alt:before { content: fa-content($fa-var-level-down-alt); }\n.#{$fa-css-prefix}-level-up-alt:before { content: fa-content($fa-var-level-up-alt); }\n.#{$fa-css-prefix}-life-ring:before { content: fa-content($fa-var-life-ring); }\n.#{$fa-css-prefix}-lightbulb:before { content: fa-content($fa-var-lightbulb); }\n.#{$fa-css-prefix}-line:before { content: fa-content($fa-var-line); }\n.#{$fa-css-prefix}-link:before { content: fa-content($fa-var-link); }\n.#{$fa-css-prefix}-linkedin:before { content: fa-content($fa-var-linkedin); }\n.#{$fa-css-prefix}-linkedin-in:before { content: fa-content($fa-var-linkedin-in); }\n.#{$fa-css-prefix}-linode:before { content: fa-content($fa-var-linode); }\n.#{$fa-css-prefix}-linux:before { content: fa-content($fa-var-linux); }\n.#{$fa-css-prefix}-lira-sign:before { content: fa-content($fa-var-lira-sign); }\n.#{$fa-css-prefix}-list:before { content: fa-content($fa-var-list); }\n.#{$fa-css-prefix}-list-alt:before { content: fa-content($fa-var-list-alt); }\n.#{$fa-css-prefix}-list-ol:before { content: fa-content($fa-var-list-ol); }\n.#{$fa-css-prefix}-list-ul:before { content: fa-content($fa-var-list-ul); }\n.#{$fa-css-prefix}-location-arrow:before { content: fa-content($fa-var-location-arrow); }\n.#{$fa-css-prefix}-lock:before { content: fa-content($fa-var-lock); }\n.#{$fa-css-prefix}-lock-open:before { content: fa-content($fa-var-lock-open); }\n.#{$fa-css-prefix}-long-arrow-alt-down:before { content: fa-content($fa-var-long-arrow-alt-down); }\n.#{$fa-css-prefix}-long-arrow-alt-left:before { content: fa-content($fa-var-long-arrow-alt-left); }\n.#{$fa-css-prefix}-long-arrow-alt-right:before { content: fa-content($fa-var-long-arrow-alt-right); }\n.#{$fa-css-prefix}-long-arrow-alt-up:before { content: fa-content($fa-var-long-arrow-alt-up); }\n.#{$fa-css-prefix}-low-vision:before { content: fa-content($fa-var-low-vision); }\n.#{$fa-css-prefix}-lyft:before { content: fa-content($fa-var-lyft); }\n.#{$fa-css-prefix}-magento:before { content: fa-content($fa-var-magento); }\n.#{$fa-css-prefix}-magic:before { content: fa-content($fa-var-magic); }\n.#{$fa-css-prefix}-magnet:before { content: fa-content($fa-var-magnet); }\n.#{$fa-css-prefix}-male:before { content: fa-content($fa-var-male); }\n.#{$fa-css-prefix}-map:before { content: fa-content($fa-var-map); }\n.#{$fa-css-prefix}-map-marker:before { content: fa-content($fa-var-map-marker); }\n.#{$fa-css-prefix}-map-marker-alt:before { content: fa-content($fa-var-map-marker-alt); }\n.#{$fa-css-prefix}-map-pin:before { content: fa-content($fa-var-map-pin); }\n.#{$fa-css-prefix}-map-signs:before { content: fa-content($fa-var-map-signs); }\n.#{$fa-css-prefix}-mars:before { content: fa-content($fa-var-mars); }\n.#{$fa-css-prefix}-mars-double:before { content: fa-content($fa-var-mars-double); }\n.#{$fa-css-prefix}-mars-stroke:before { content: fa-content($fa-var-mars-stroke); }\n.#{$fa-css-prefix}-mars-stroke-h:before { content: fa-content($fa-var-mars-stroke-h); }\n.#{$fa-css-prefix}-mars-stroke-v:before { content: fa-content($fa-var-mars-stroke-v); }\n.#{$fa-css-prefix}-maxcdn:before { content: fa-content($fa-var-maxcdn); }\n.#{$fa-css-prefix}-medapps:before { content: fa-content($fa-var-medapps); }\n.#{$fa-css-prefix}-medium:before { content: fa-content($fa-var-medium); }\n.#{$fa-css-prefix}-medium-m:before { content: fa-content($fa-var-medium-m); }\n.#{$fa-css-prefix}-medkit:before { content: fa-content($fa-var-medkit); }\n.#{$fa-css-prefix}-medrt:before { content: fa-content($fa-var-medrt); }\n.#{$fa-css-prefix}-meetup:before { content: fa-content($fa-var-meetup); }\n.#{$fa-css-prefix}-meh:before { content: fa-content($fa-var-meh); }\n.#{$fa-css-prefix}-mercury:before { content: fa-content($fa-var-mercury); }\n.#{$fa-css-prefix}-microchip:before { content: fa-content($fa-var-microchip); }\n.#{$fa-css-prefix}-microphone:before { content: fa-content($fa-var-microphone); }\n.#{$fa-css-prefix}-microphone-slash:before { content: fa-content($fa-var-microphone-slash); }\n.#{$fa-css-prefix}-microsoft:before { content: fa-content($fa-var-microsoft); }\n.#{$fa-css-prefix}-minus:before { content: fa-content($fa-var-minus); }\n.#{$fa-css-prefix}-minus-circle:before { content: fa-content($fa-var-minus-circle); }\n.#{$fa-css-prefix}-minus-square:before { content: fa-content($fa-var-minus-square); }\n.#{$fa-css-prefix}-mix:before { content: fa-content($fa-var-mix); }\n.#{$fa-css-prefix}-mixcloud:before { content: fa-content($fa-var-mixcloud); }\n.#{$fa-css-prefix}-mizuni:before { content: fa-content($fa-var-mizuni); }\n.#{$fa-css-prefix}-mobile:before { content: fa-content($fa-var-mobile); }\n.#{$fa-css-prefix}-mobile-alt:before { content: fa-content($fa-var-mobile-alt); }\n.#{$fa-css-prefix}-modx:before { content: fa-content($fa-var-modx); }\n.#{$fa-css-prefix}-monero:before { content: fa-content($fa-var-monero); }\n.#{$fa-css-prefix}-money-bill-alt:before { content: fa-content($fa-var-money-bill-alt); }\n.#{$fa-css-prefix}-moon:before { content: fa-content($fa-var-moon); }\n.#{$fa-css-prefix}-motorcycle:before { content: fa-content($fa-var-motorcycle); }\n.#{$fa-css-prefix}-mouse-pointer:before { content: fa-content($fa-var-mouse-pointer); }\n.#{$fa-css-prefix}-music:before { content: fa-content($fa-var-music); }\n.#{$fa-css-prefix}-napster:before { content: fa-content($fa-var-napster); }\n.#{$fa-css-prefix}-neuter:before { content: fa-content($fa-var-neuter); }\n.#{$fa-css-prefix}-newspaper:before { content: fa-content($fa-var-newspaper); }\n.#{$fa-css-prefix}-nintendo-switch:before { content: fa-content($fa-var-nintendo-switch); }\n.#{$fa-css-prefix}-node:before { content: fa-content($fa-var-node); }\n.#{$fa-css-prefix}-node-js:before { content: fa-content($fa-var-node-js); }\n.#{$fa-css-prefix}-notes-medical:before { content: fa-content($fa-var-notes-medical); }\n.#{$fa-css-prefix}-npm:before { content: fa-content($fa-var-npm); }\n.#{$fa-css-prefix}-ns8:before { content: fa-content($fa-var-ns8); }\n.#{$fa-css-prefix}-nutritionix:before { content: fa-content($fa-var-nutritionix); }\n.#{$fa-css-prefix}-object-group:before { content: fa-content($fa-var-object-group); }\n.#{$fa-css-prefix}-object-ungroup:before { content: fa-content($fa-var-object-ungroup); }\n.#{$fa-css-prefix}-odnoklassniki:before { content: fa-content($fa-var-odnoklassniki); }\n.#{$fa-css-prefix}-odnoklassniki-square:before { content: fa-content($fa-var-odnoklassniki-square); }\n.#{$fa-css-prefix}-opencart:before { content: fa-content($fa-var-opencart); }\n.#{$fa-css-prefix}-openid:before { content: fa-content($fa-var-openid); }\n.#{$fa-css-prefix}-opera:before { content: fa-content($fa-var-opera); }\n.#{$fa-css-prefix}-optin-monster:before { content: fa-content($fa-var-optin-monster); }\n.#{$fa-css-prefix}-osi:before { content: fa-content($fa-var-osi); }\n.#{$fa-css-prefix}-outdent:before { content: fa-content($fa-var-outdent); }\n.#{$fa-css-prefix}-page4:before { content: fa-content($fa-var-page4); }\n.#{$fa-css-prefix}-pagelines:before { content: fa-content($fa-var-pagelines); }\n.#{$fa-css-prefix}-paint-brush:before { content: fa-content($fa-var-paint-brush); }\n.#{$fa-css-prefix}-palfed:before { content: fa-content($fa-var-palfed); }\n.#{$fa-css-prefix}-pallet:before { content: fa-content($fa-var-pallet); }\n.#{$fa-css-prefix}-paper-plane:before { content: fa-content($fa-var-paper-plane); }\n.#{$fa-css-prefix}-paperclip:before { content: fa-content($fa-var-paperclip); }\n.#{$fa-css-prefix}-parachute-box:before { content: fa-content($fa-var-parachute-box); }\n.#{$fa-css-prefix}-paragraph:before { content: fa-content($fa-var-paragraph); }\n.#{$fa-css-prefix}-paste:before { content: fa-content($fa-var-paste); }\n.#{$fa-css-prefix}-patreon:before { content: fa-content($fa-var-patreon); }\n.#{$fa-css-prefix}-pause:before { content: fa-content($fa-var-pause); }\n.#{$fa-css-prefix}-pause-circle:before { content: fa-content($fa-var-pause-circle); }\n.#{$fa-css-prefix}-paw:before { content: fa-content($fa-var-paw); }\n.#{$fa-css-prefix}-paypal:before { content: fa-content($fa-var-paypal); }\n.#{$fa-css-prefix}-pen-square:before { content: fa-content($fa-var-pen-square); }\n.#{$fa-css-prefix}-pencil-alt:before { content: fa-content($fa-var-pencil-alt); }\n.#{$fa-css-prefix}-people-carry:before { content: fa-content($fa-var-people-carry); }\n.#{$fa-css-prefix}-percent:before { content: fa-content($fa-var-percent); }\n.#{$fa-css-prefix}-periscope:before { content: fa-content($fa-var-periscope); }\n.#{$fa-css-prefix}-phabricator:before { content: fa-content($fa-var-phabricator); }\n.#{$fa-css-prefix}-phoenix-framework:before { content: fa-content($fa-var-phoenix-framework); }\n.#{$fa-css-prefix}-phone:before { content: fa-content($fa-var-phone); }\n.#{$fa-css-prefix}-phone-slash:before { content: fa-content($fa-var-phone-slash); }\n.#{$fa-css-prefix}-phone-square:before { content: fa-content($fa-var-phone-square); }\n.#{$fa-css-prefix}-phone-volume:before { content: fa-content($fa-var-phone-volume); }\n.#{$fa-css-prefix}-php:before { content: fa-content($fa-var-php); }\n.#{$fa-css-prefix}-pied-piper:before { content: fa-content($fa-var-pied-piper); }\n.#{$fa-css-prefix}-pied-piper-alt:before { content: fa-content($fa-var-pied-piper-alt); }\n.#{$fa-css-prefix}-pied-piper-pp:before { content: fa-content($fa-var-pied-piper-pp); }\n.#{$fa-css-prefix}-piggy-bank:before { content: fa-content($fa-var-piggy-bank); }\n.#{$fa-css-prefix}-pills:before { content: fa-content($fa-var-pills); }\n.#{$fa-css-prefix}-pinterest:before { content: fa-content($fa-var-pinterest); }\n.#{$fa-css-prefix}-pinterest-p:before { content: fa-content($fa-var-pinterest-p); }\n.#{$fa-css-prefix}-pinterest-square:before { content: fa-content($fa-var-pinterest-square); }\n.#{$fa-css-prefix}-plane:before { content: fa-content($fa-var-plane); }\n.#{$fa-css-prefix}-play:before { content: fa-content($fa-var-play); }\n.#{$fa-css-prefix}-play-circle:before { content: fa-content($fa-var-play-circle); }\n.#{$fa-css-prefix}-playstation:before { content: fa-content($fa-var-playstation); }\n.#{$fa-css-prefix}-plug:before { content: fa-content($fa-var-plug); }\n.#{$fa-css-prefix}-plus:before { content: fa-content($fa-var-plus); }\n.#{$fa-css-prefix}-plus-circle:before { content: fa-content($fa-var-plus-circle); }\n.#{$fa-css-prefix}-plus-square:before { content: fa-content($fa-var-plus-square); }\n.#{$fa-css-prefix}-podcast:before { content: fa-content($fa-var-podcast); }\n.#{$fa-css-prefix}-poo:before { content: fa-content($fa-var-poo); }\n.#{$fa-css-prefix}-pound-sign:before { content: fa-content($fa-var-pound-sign); }\n.#{$fa-css-prefix}-power-off:before { content: fa-content($fa-var-power-off); }\n.#{$fa-css-prefix}-prescription-bottle:before { content: fa-content($fa-var-prescription-bottle); }\n.#{$fa-css-prefix}-prescription-bottle-alt:before { content: fa-content($fa-var-prescription-bottle-alt); }\n.#{$fa-css-prefix}-print:before { content: fa-content($fa-var-print); }\n.#{$fa-css-prefix}-procedures:before { content: fa-content($fa-var-procedures); }\n.#{$fa-css-prefix}-product-hunt:before { content: fa-content($fa-var-product-hunt); }\n.#{$fa-css-prefix}-pushed:before { content: fa-content($fa-var-pushed); }\n.#{$fa-css-prefix}-puzzle-piece:before { content: fa-content($fa-var-puzzle-piece); }\n.#{$fa-css-prefix}-python:before { content: fa-content($fa-var-python); }\n.#{$fa-css-prefix}-qq:before { content: fa-content($fa-var-qq); }\n.#{$fa-css-prefix}-qrcode:before { content: fa-content($fa-var-qrcode); }\n.#{$fa-css-prefix}-question:before { content: fa-content($fa-var-question); }\n.#{$fa-css-prefix}-question-circle:before { content: fa-content($fa-var-question-circle); }\n.#{$fa-css-prefix}-quidditch:before { content: fa-content($fa-var-quidditch); }\n.#{$fa-css-prefix}-quinscape:before { content: fa-content($fa-var-quinscape); }\n.#{$fa-css-prefix}-quora:before { content: fa-content($fa-var-quora); }\n.#{$fa-css-prefix}-quote-left:before { content: fa-content($fa-var-quote-left); }\n.#{$fa-css-prefix}-quote-right:before { content: fa-content($fa-var-quote-right); }\n.#{$fa-css-prefix}-random:before { content: fa-content($fa-var-random); }\n.#{$fa-css-prefix}-ravelry:before { content: fa-content($fa-var-ravelry); }\n.#{$fa-css-prefix}-react:before { content: fa-content($fa-var-react); }\n.#{$fa-css-prefix}-readme:before { content: fa-content($fa-var-readme); }\n.#{$fa-css-prefix}-rebel:before { content: fa-content($fa-var-rebel); }\n.#{$fa-css-prefix}-recycle:before { content: fa-content($fa-var-recycle); }\n.#{$fa-css-prefix}-red-river:before { content: fa-content($fa-var-red-river); }\n.#{$fa-css-prefix}-reddit:before { content: fa-content($fa-var-reddit); }\n.#{$fa-css-prefix}-reddit-alien:before { content: fa-content($fa-var-reddit-alien); }\n.#{$fa-css-prefix}-reddit-square:before { content: fa-content($fa-var-reddit-square); }\n.#{$fa-css-prefix}-redo:before { content: fa-content($fa-var-redo); }\n.#{$fa-css-prefix}-redo-alt:before { content: fa-content($fa-var-redo-alt); }\n.#{$fa-css-prefix}-registered:before { content: fa-content($fa-var-registered); }\n.#{$fa-css-prefix}-rendact:before { content: fa-content($fa-var-rendact); }\n.#{$fa-css-prefix}-renren:before { content: fa-content($fa-var-renren); }\n.#{$fa-css-prefix}-reply:before { content: fa-content($fa-var-reply); }\n.#{$fa-css-prefix}-reply-all:before { content: fa-content($fa-var-reply-all); }\n.#{$fa-css-prefix}-replyd:before { content: fa-content($fa-var-replyd); }\n.#{$fa-css-prefix}-resolving:before { content: fa-content($fa-var-resolving); }\n.#{$fa-css-prefix}-retweet:before { content: fa-content($fa-var-retweet); }\n.#{$fa-css-prefix}-ribbon:before { content: fa-content($fa-var-ribbon); }\n.#{$fa-css-prefix}-road:before { content: fa-content($fa-var-road); }\n.#{$fa-css-prefix}-rocket:before { content: fa-content($fa-var-rocket); }\n.#{$fa-css-prefix}-rocketchat:before { content: fa-content($fa-var-rocketchat); }\n.#{$fa-css-prefix}-rockrms:before { content: fa-content($fa-var-rockrms); }\n.#{$fa-css-prefix}-rss:before { content: fa-content($fa-var-rss); }\n.#{$fa-css-prefix}-rss-square:before { content: fa-content($fa-var-rss-square); }\n.#{$fa-css-prefix}-ruble-sign:before { content: fa-content($fa-var-ruble-sign); }\n.#{$fa-css-prefix}-rupee-sign:before { content: fa-content($fa-var-rupee-sign); }\n.#{$fa-css-prefix}-safari:before { content: fa-content($fa-var-safari); }\n.#{$fa-css-prefix}-sass:before { content: fa-content($fa-var-sass); }\n.#{$fa-css-prefix}-save:before { content: fa-content($fa-var-save); }\n.#{$fa-css-prefix}-schlix:before { content: fa-content($fa-var-schlix); }\n.#{$fa-css-prefix}-scribd:before { content: fa-content($fa-var-scribd); }\n.#{$fa-css-prefix}-search:before { content: fa-content($fa-var-search); }\n.#{$fa-css-prefix}-search-minus:before { content: fa-content($fa-var-search-minus); }\n.#{$fa-css-prefix}-search-plus:before { content: fa-content($fa-var-search-plus); }\n.#{$fa-css-prefix}-searchengin:before { content: fa-content($fa-var-searchengin); }\n.#{$fa-css-prefix}-seedling:before { content: fa-content($fa-var-seedling); }\n.#{$fa-css-prefix}-sellcast:before { content: fa-content($fa-var-sellcast); }\n.#{$fa-css-prefix}-sellsy:before { content: fa-content($fa-var-sellsy); }\n.#{$fa-css-prefix}-server:before { content: fa-content($fa-var-server); }\n.#{$fa-css-prefix}-servicestack:before { content: fa-content($fa-var-servicestack); }\n.#{$fa-css-prefix}-share:before { content: fa-content($fa-var-share); }\n.#{$fa-css-prefix}-share-alt:before { content: fa-content($fa-var-share-alt); }\n.#{$fa-css-prefix}-share-alt-square:before { content: fa-content($fa-var-share-alt-square); }\n.#{$fa-css-prefix}-share-square:before { content: fa-content($fa-var-share-square); }\n.#{$fa-css-prefix}-shekel-sign:before { content: fa-content($fa-var-shekel-sign); }\n.#{$fa-css-prefix}-shield-alt:before { content: fa-content($fa-var-shield-alt); }\n.#{$fa-css-prefix}-ship:before { content: fa-content($fa-var-ship); }\n.#{$fa-css-prefix}-shipping-fast:before { content: fa-content($fa-var-shipping-fast); }\n.#{$fa-css-prefix}-shirtsinbulk:before { content: fa-content($fa-var-shirtsinbulk); }\n.#{$fa-css-prefix}-shopping-bag:before { content: fa-content($fa-var-shopping-bag); }\n.#{$fa-css-prefix}-shopping-basket:before { content: fa-content($fa-var-shopping-basket); }\n.#{$fa-css-prefix}-shopping-cart:before { content: fa-content($fa-var-shopping-cart); }\n.#{$fa-css-prefix}-shower:before { content: fa-content($fa-var-shower); }\n.#{$fa-css-prefix}-sign:before { content: fa-content($fa-var-sign); }\n.#{$fa-css-prefix}-sign-in-alt:before { content: fa-content($fa-var-sign-in-alt); }\n.#{$fa-css-prefix}-sign-language:before { content: fa-content($fa-var-sign-language); }\n.#{$fa-css-prefix}-sign-out-alt:before { content: fa-content($fa-var-sign-out-alt); }\n.#{$fa-css-prefix}-signal:before { content: fa-content($fa-var-signal); }\n.#{$fa-css-prefix}-simplybuilt:before { content: fa-content($fa-var-simplybuilt); }\n.#{$fa-css-prefix}-sistrix:before { content: fa-content($fa-var-sistrix); }\n.#{$fa-css-prefix}-sitemap:before { content: fa-content($fa-var-sitemap); }\n.#{$fa-css-prefix}-skyatlas:before { content: fa-content($fa-var-skyatlas); }\n.#{$fa-css-prefix}-skype:before { content: fa-content($fa-var-skype); }\n.#{$fa-css-prefix}-slack:before { content: fa-content($fa-var-slack); }\n.#{$fa-css-prefix}-slack-hash:before { content: fa-content($fa-var-slack-hash); }\n.#{$fa-css-prefix}-sliders-h:before { content: fa-content($fa-var-sliders-h); }\n.#{$fa-css-prefix}-slideshare:before { content: fa-content($fa-var-slideshare); }\n.#{$fa-css-prefix}-smile:before { content: fa-content($fa-var-smile); }\n.#{$fa-css-prefix}-smoking:before { content: fa-content($fa-var-smoking); }\n.#{$fa-css-prefix}-snapchat:before { content: fa-content($fa-var-snapchat); }\n.#{$fa-css-prefix}-snapchat-ghost:before { content: fa-content($fa-var-snapchat-ghost); }\n.#{$fa-css-prefix}-snapchat-square:before { content: fa-content($fa-var-snapchat-square); }\n.#{$fa-css-prefix}-snowflake:before { content: fa-content($fa-var-snowflake); }\n.#{$fa-css-prefix}-sort:before { content: fa-content($fa-var-sort); }\n.#{$fa-css-prefix}-sort-alpha-down:before { content: fa-content($fa-var-sort-alpha-down); }\n.#{$fa-css-prefix}-sort-alpha-up:before { content: fa-content($fa-var-sort-alpha-up); }\n.#{$fa-css-prefix}-sort-amount-down:before { content: fa-content($fa-var-sort-amount-down); }\n.#{$fa-css-prefix}-sort-amount-up:before { content: fa-content($fa-var-sort-amount-up); }\n.#{$fa-css-prefix}-sort-down:before { content: fa-content($fa-var-sort-down); }\n.#{$fa-css-prefix}-sort-numeric-down:before { content: fa-content($fa-var-sort-numeric-down); }\n.#{$fa-css-prefix}-sort-numeric-up:before { content: fa-content($fa-var-sort-numeric-up); }\n.#{$fa-css-prefix}-sort-up:before { content: fa-content($fa-var-sort-up); }\n.#{$fa-css-prefix}-soundcloud:before { content: fa-content($fa-var-soundcloud); }\n.#{$fa-css-prefix}-space-shuttle:before { content: fa-content($fa-var-space-shuttle); }\n.#{$fa-css-prefix}-speakap:before { content: fa-content($fa-var-speakap); }\n.#{$fa-css-prefix}-spinner:before { content: fa-content($fa-var-spinner); }\n.#{$fa-css-prefix}-spotify:before { content: fa-content($fa-var-spotify); }\n.#{$fa-css-prefix}-square:before { content: fa-content($fa-var-square); }\n.#{$fa-css-prefix}-square-full:before { content: fa-content($fa-var-square-full); }\n.#{$fa-css-prefix}-stack-exchange:before { content: fa-content($fa-var-stack-exchange); }\n.#{$fa-css-prefix}-stack-overflow:before { content: fa-content($fa-var-stack-overflow); }\n.#{$fa-css-prefix}-star:before { content: fa-content($fa-var-star); }\n.#{$fa-css-prefix}-star-half:before { content: fa-content($fa-var-star-half); }\n.#{$fa-css-prefix}-staylinked:before { content: fa-content($fa-var-staylinked); }\n.#{$fa-css-prefix}-steam:before { content: fa-content($fa-var-steam); }\n.#{$fa-css-prefix}-steam-square:before { content: fa-content($fa-var-steam-square); }\n.#{$fa-css-prefix}-steam-symbol:before { content: fa-content($fa-var-steam-symbol); }\n.#{$fa-css-prefix}-step-backward:before { content: fa-content($fa-var-step-backward); }\n.#{$fa-css-prefix}-step-forward:before { content: fa-content($fa-var-step-forward); }\n.#{$fa-css-prefix}-stethoscope:before { content: fa-content($fa-var-stethoscope); }\n.#{$fa-css-prefix}-sticker-mule:before { content: fa-content($fa-var-sticker-mule); }\n.#{$fa-css-prefix}-sticky-note:before { content: fa-content($fa-var-sticky-note); }\n.#{$fa-css-prefix}-stop:before { content: fa-content($fa-var-stop); }\n.#{$fa-css-prefix}-stop-circle:before { content: fa-content($fa-var-stop-circle); }\n.#{$fa-css-prefix}-stopwatch:before { content: fa-content($fa-var-stopwatch); }\n.#{$fa-css-prefix}-strava:before { content: fa-content($fa-var-strava); }\n.#{$fa-css-prefix}-street-view:before { content: fa-content($fa-var-street-view); }\n.#{$fa-css-prefix}-strikethrough:before { content: fa-content($fa-var-strikethrough); }\n.#{$fa-css-prefix}-stripe:before { content: fa-content($fa-var-stripe); }\n.#{$fa-css-prefix}-stripe-s:before { content: fa-content($fa-var-stripe-s); }\n.#{$fa-css-prefix}-studiovinari:before { content: fa-content($fa-var-studiovinari); }\n.#{$fa-css-prefix}-stumbleupon:before { content: fa-content($fa-var-stumbleupon); }\n.#{$fa-css-prefix}-stumbleupon-circle:before { content: fa-content($fa-var-stumbleupon-circle); }\n.#{$fa-css-prefix}-subscript:before { content: fa-content($fa-var-subscript); }\n.#{$fa-css-prefix}-subway:before { content: fa-content($fa-var-subway); }\n.#{$fa-css-prefix}-suitcase:before { content: fa-content($fa-var-suitcase); }\n.#{$fa-css-prefix}-sun:before { content: fa-content($fa-var-sun); }\n.#{$fa-css-prefix}-superpowers:before { content: fa-content($fa-var-superpowers); }\n.#{$fa-css-prefix}-superscript:before { content: fa-content($fa-var-superscript); }\n.#{$fa-css-prefix}-supple:before { content: fa-content($fa-var-supple); }\n.#{$fa-css-prefix}-sync:before { content: fa-content($fa-var-sync); }\n.#{$fa-css-prefix}-sync-alt:before { content: fa-content($fa-var-sync-alt); }\n.#{$fa-css-prefix}-syringe:before { content: fa-content($fa-var-syringe); }\n.#{$fa-css-prefix}-table:before { content: fa-content($fa-var-table); }\n.#{$fa-css-prefix}-table-tennis:before { content: fa-content($fa-var-table-tennis); }\n.#{$fa-css-prefix}-tablet:before { content: fa-content($fa-var-tablet); }\n.#{$fa-css-prefix}-tablet-alt:before { content: fa-content($fa-var-tablet-alt); }\n.#{$fa-css-prefix}-tablets:before { content: fa-content($fa-var-tablets); }\n.#{$fa-css-prefix}-tachometer-alt:before { content: fa-content($fa-var-tachometer-alt); }\n.#{$fa-css-prefix}-tag:before { content: fa-content($fa-var-tag); }\n.#{$fa-css-prefix}-tags:before { content: fa-content($fa-var-tags); }\n.#{$fa-css-prefix}-tape:before { content: fa-content($fa-var-tape); }\n.#{$fa-css-prefix}-tasks:before { content: fa-content($fa-var-tasks); }\n.#{$fa-css-prefix}-taxi:before { content: fa-content($fa-var-taxi); }\n.#{$fa-css-prefix}-telegram:before { content: fa-content($fa-var-telegram); }\n.#{$fa-css-prefix}-telegram-plane:before { content: fa-content($fa-var-telegram-plane); }\n.#{$fa-css-prefix}-tencent-weibo:before { content: fa-content($fa-var-tencent-weibo); }\n.#{$fa-css-prefix}-terminal:before { content: fa-content($fa-var-terminal); }\n.#{$fa-css-prefix}-text-height:before { content: fa-content($fa-var-text-height); }\n.#{$fa-css-prefix}-text-width:before { content: fa-content($fa-var-text-width); }\n.#{$fa-css-prefix}-th:before { content: fa-content($fa-var-th); }\n.#{$fa-css-prefix}-th-large:before { content: fa-content($fa-var-th-large); }\n.#{$fa-css-prefix}-th-list:before { content: fa-content($fa-var-th-list); }\n.#{$fa-css-prefix}-themeisle:before { content: fa-content($fa-var-themeisle); }\n.#{$fa-css-prefix}-thermometer:before { content: fa-content($fa-var-thermometer); }\n.#{$fa-css-prefix}-thermometer-empty:before { content: fa-content($fa-var-thermometer-empty); }\n.#{$fa-css-prefix}-thermometer-full:before { content: fa-content($fa-var-thermometer-full); }\n.#{$fa-css-prefix}-thermometer-half:before { content: fa-content($fa-var-thermometer-half); }\n.#{$fa-css-prefix}-thermometer-quarter:before { content: fa-content($fa-var-thermometer-quarter); }\n.#{$fa-css-prefix}-thermometer-three-quarters:before { content: fa-content($fa-var-thermometer-three-quarters); }\n.#{$fa-css-prefix}-thumbs-down:before { content: fa-content($fa-var-thumbs-down); }\n.#{$fa-css-prefix}-thumbs-up:before { content: fa-content($fa-var-thumbs-up); }\n.#{$fa-css-prefix}-thumbtack:before { content: fa-content($fa-var-thumbtack); }\n.#{$fa-css-prefix}-ticket-alt:before { content: fa-content($fa-var-ticket-alt); }\n.#{$fa-css-prefix}-times:before { content: fa-content($fa-var-times); }\n.#{$fa-css-prefix}-times-circle:before { content: fa-content($fa-var-times-circle); }\n.#{$fa-css-prefix}-tint:before { content: fa-content($fa-var-tint); }\n.#{$fa-css-prefix}-toggle-off:before { content: fa-content($fa-var-toggle-off); }\n.#{$fa-css-prefix}-toggle-on:before { content: fa-content($fa-var-toggle-on); }\n.#{$fa-css-prefix}-trademark:before { content: fa-content($fa-var-trademark); }\n.#{$fa-css-prefix}-train:before { content: fa-content($fa-var-train); }\n.#{$fa-css-prefix}-transgender:before { content: fa-content($fa-var-transgender); }\n.#{$fa-css-prefix}-transgender-alt:before { content: fa-content($fa-var-transgender-alt); }\n.#{$fa-css-prefix}-trash:before { content: fa-content($fa-var-trash); }\n.#{$fa-css-prefix}-trash-alt:before { content: fa-content($fa-var-trash-alt); }\n.#{$fa-css-prefix}-tree:before { content: fa-content($fa-var-tree); }\n.#{$fa-css-prefix}-trello:before { content: fa-content($fa-var-trello); }\n.#{$fa-css-prefix}-tripadvisor:before { content: fa-content($fa-var-tripadvisor); }\n.#{$fa-css-prefix}-trophy:before { content: fa-content($fa-var-trophy); }\n.#{$fa-css-prefix}-truck:before { content: fa-content($fa-var-truck); }\n.#{$fa-css-prefix}-truck-loading:before { content: fa-content($fa-var-truck-loading); }\n.#{$fa-css-prefix}-truck-moving:before { content: fa-content($fa-var-truck-moving); }\n.#{$fa-css-prefix}-tty:before { content: fa-content($fa-var-tty); }\n.#{$fa-css-prefix}-tumblr:before { content: fa-content($fa-var-tumblr); }\n.#{$fa-css-prefix}-tumblr-square:before { content: fa-content($fa-var-tumblr-square); }\n.#{$fa-css-prefix}-tv:before { content: fa-content($fa-var-tv); }\n.#{$fa-css-prefix}-twitch:before { content: fa-content($fa-var-twitch); }\n.#{$fa-css-prefix}-twitter:before { content: fa-content($fa-var-twitter); }\n.#{$fa-css-prefix}-twitter-square:before { content: fa-content($fa-var-twitter-square); }\n.#{$fa-css-prefix}-typo3:before { content: fa-content($fa-var-typo3); }\n.#{$fa-css-prefix}-uber:before { content: fa-content($fa-var-uber); }\n.#{$fa-css-prefix}-uikit:before { content: fa-content($fa-var-uikit); }\n.#{$fa-css-prefix}-umbrella:before { content: fa-content($fa-var-umbrella); }\n.#{$fa-css-prefix}-underline:before { content: fa-content($fa-var-underline); }\n.#{$fa-css-prefix}-undo:before { content: fa-content($fa-var-undo); }\n.#{$fa-css-prefix}-undo-alt:before { content: fa-content($fa-var-undo-alt); }\n.#{$fa-css-prefix}-uniregistry:before { content: fa-content($fa-var-uniregistry); }\n.#{$fa-css-prefix}-universal-access:before { content: fa-content($fa-var-universal-access); }\n.#{$fa-css-prefix}-university:before { content: fa-content($fa-var-university); }\n.#{$fa-css-prefix}-unlink:before { content: fa-content($fa-var-unlink); }\n.#{$fa-css-prefix}-unlock:before { content: fa-content($fa-var-unlock); }\n.#{$fa-css-prefix}-unlock-alt:before { content: fa-content($fa-var-unlock-alt); }\n.#{$fa-css-prefix}-untappd:before { content: fa-content($fa-var-untappd); }\n.#{$fa-css-prefix}-upload:before { content: fa-content($fa-var-upload); }\n.#{$fa-css-prefix}-usb:before { content: fa-content($fa-var-usb); }\n.#{$fa-css-prefix}-user:before { content: fa-content($fa-var-user); }\n.#{$fa-css-prefix}-user-circle:before { content: fa-content($fa-var-user-circle); }\n.#{$fa-css-prefix}-user-md:before { content: fa-content($fa-var-user-md); }\n.#{$fa-css-prefix}-user-plus:before { content: fa-content($fa-var-user-plus); }\n.#{$fa-css-prefix}-user-secret:before { content: fa-content($fa-var-user-secret); }\n.#{$fa-css-prefix}-user-times:before { content: fa-content($fa-var-user-times); }\n.#{$fa-css-prefix}-users:before { content: fa-content($fa-var-users); }\n.#{$fa-css-prefix}-ussunnah:before { content: fa-content($fa-var-ussunnah); }\n.#{$fa-css-prefix}-utensil-spoon:before { content: fa-content($fa-var-utensil-spoon); }\n.#{$fa-css-prefix}-utensils:before { content: fa-content($fa-var-utensils); }\n.#{$fa-css-prefix}-vaadin:before { content: fa-content($fa-var-vaadin); }\n.#{$fa-css-prefix}-venus:before { content: fa-content($fa-var-venus); }\n.#{$fa-css-prefix}-venus-double:before { content: fa-content($fa-var-venus-double); }\n.#{$fa-css-prefix}-venus-mars:before { content: fa-content($fa-var-venus-mars); }\n.#{$fa-css-prefix}-viacoin:before { content: fa-content($fa-var-viacoin); }\n.#{$fa-css-prefix}-viadeo:before { content: fa-content($fa-var-viadeo); }\n.#{$fa-css-prefix}-viadeo-square:before { content: fa-content($fa-var-viadeo-square); }\n.#{$fa-css-prefix}-vial:before { content: fa-content($fa-var-vial); }\n.#{$fa-css-prefix}-vials:before { content: fa-content($fa-var-vials); }\n.#{$fa-css-prefix}-viber:before { content: fa-content($fa-var-viber); }\n.#{$fa-css-prefix}-video:before { content: fa-content($fa-var-video); }\n.#{$fa-css-prefix}-video-slash:before { content: fa-content($fa-var-video-slash); }\n.#{$fa-css-prefix}-vimeo:before { content: fa-content($fa-var-vimeo); }\n.#{$fa-css-prefix}-vimeo-square:before { content: fa-content($fa-var-vimeo-square); }\n.#{$fa-css-prefix}-vimeo-v:before { content: fa-content($fa-var-vimeo-v); }\n.#{$fa-css-prefix}-vine:before { content: fa-content($fa-var-vine); }\n.#{$fa-css-prefix}-vk:before { content: fa-content($fa-var-vk); }\n.#{$fa-css-prefix}-vnv:before { content: fa-content($fa-var-vnv); }\n.#{$fa-css-prefix}-volleyball-ball:before { content: fa-content($fa-var-volleyball-ball); }\n.#{$fa-css-prefix}-volume-down:before { content: fa-content($fa-var-volume-down); }\n.#{$fa-css-prefix}-volume-off:before { content: fa-content($fa-var-volume-off); }\n.#{$fa-css-prefix}-volume-up:before { content: fa-content($fa-var-volume-up); }\n.#{$fa-css-prefix}-vuejs:before { content: fa-content($fa-var-vuejs); }\n.#{$fa-css-prefix}-warehouse:before { content: fa-content($fa-var-warehouse); }\n.#{$fa-css-prefix}-weibo:before { content: fa-content($fa-var-weibo); }\n.#{$fa-css-prefix}-weight:before { content: fa-content($fa-var-weight); }\n.#{$fa-css-prefix}-weixin:before { content: fa-content($fa-var-weixin); }\n.#{$fa-css-prefix}-whatsapp:before { content: fa-content($fa-var-whatsapp); }\n.#{$fa-css-prefix}-whatsapp-square:before { content: fa-content($fa-var-whatsapp-square); }\n.#{$fa-css-prefix}-wheelchair:before { content: fa-content($fa-var-wheelchair); }\n.#{$fa-css-prefix}-whmcs:before { content: fa-content($fa-var-whmcs); }\n.#{$fa-css-prefix}-wifi:before { content: fa-content($fa-var-wifi); }\n.#{$fa-css-prefix}-wikipedia-w:before { content: fa-content($fa-var-wikipedia-w); }\n.#{$fa-css-prefix}-window-close:before { content: fa-content($fa-var-window-close); }\n.#{$fa-css-prefix}-window-maximize:before { content: fa-content($fa-var-window-maximize); }\n.#{$fa-css-prefix}-window-minimize:before { content: fa-content($fa-var-window-minimize); }\n.#{$fa-css-prefix}-window-restore:before { content: fa-content($fa-var-window-restore); }\n.#{$fa-css-prefix}-windows:before { content: fa-content($fa-var-windows); }\n.#{$fa-css-prefix}-wine-glass:before { content: fa-content($fa-var-wine-glass); }\n.#{$fa-css-prefix}-won-sign:before { content: fa-content($fa-var-won-sign); }\n.#{$fa-css-prefix}-wordpress:before { content: fa-content($fa-var-wordpress); }\n.#{$fa-css-prefix}-wordpress-simple:before { content: fa-content($fa-var-wordpress-simple); }\n.#{$fa-css-prefix}-wpbeginner:before { content: fa-content($fa-var-wpbeginner); }\n.#{$fa-css-prefix}-wpexplorer:before { content: fa-content($fa-var-wpexplorer); }\n.#{$fa-css-prefix}-wpforms:before { content: fa-content($fa-var-wpforms); }\n.#{$fa-css-prefix}-wrench:before { content: fa-content($fa-var-wrench); }\n.#{$fa-css-prefix}-x-ray:before { content: fa-content($fa-var-x-ray); }\n.#{$fa-css-prefix}-xbox:before { content: fa-content($fa-var-xbox); }\n.#{$fa-css-prefix}-xing:before { content: fa-content($fa-var-xing); }\n.#{$fa-css-prefix}-xing-square:before { content: fa-content($fa-var-xing-square); }\n.#{$fa-css-prefix}-y-combinator:before { content: fa-content($fa-var-y-combinator); }\n.#{$fa-css-prefix}-yahoo:before { content: fa-content($fa-var-yahoo); }\n.#{$fa-css-prefix}-yandex:before { content: fa-content($fa-var-yandex); }\n.#{$fa-css-prefix}-yandex-international:before { content: fa-content($fa-var-yandex-international); }\n.#{$fa-css-prefix}-yelp:before { content: fa-content($fa-var-yelp); }\n.#{$fa-css-prefix}-yen-sign:before { content: fa-content($fa-var-yen-sign); }\n.#{$fa-css-prefix}-yoast:before { content: fa-content($fa-var-yoast); }\n.#{$fa-css-prefix}-youtube:before { content: fa-content($fa-var-youtube); }\n.#{$fa-css-prefix}-youtube-square:before { content: fa-content($fa-var-youtube-square); }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_larger.scss",
    "content": "// Icon Sizes\n// -------------------------\n\n// makes the font 33% larger relative to the icon container\n.#{$fa-css-prefix}-lg {\n  font-size: (4em / 3);\n  line-height: (3em / 4);\n  vertical-align: -.0667em;\n}\n\n.#{$fa-css-prefix}-xs {\n  font-size: .75em;\n}\n\n.#{$fa-css-prefix}-sm {\n  font-size: .875em;\n}\n\n@for $i from 1 through 10 {\n  .#{$fa-css-prefix}-#{$i}x {\n    font-size: $i * 1em;\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_list.scss",
    "content": "// List Icons\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n  list-style-type: none;\n  margin-left: $fa-li-width * 5/4;\n  padding-left: 0;\n\n  > li { position: relative; }\n}\n\n.#{$fa-css-prefix}-li {\n  left: -$fa-li-width;\n  position: absolute;\n  text-align: center;\n  width: $fa-li-width;\n  line-height: inherit;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_mixins.scss",
    "content": "// Mixins\n// --------------------------\n\n@mixin fa-icon {\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  font-weight: normal;\n  line-height: 1;\n  vertical-align: -.125em;\n}\n\n@mixin fa-icon-rotate($degrees, $rotation) {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})\";\n  transform: rotate($degrees);\n}\n\n@mixin fa-icon-flip($horiz, $vert, $rotation) {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)\";\n  transform: scale($horiz, $vert);\n}\n\n\n// Only display content to screen readers. A la Bootstrap 4.\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n@mixin sr-only {\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// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n  &:active,\n  &:focus {\n    clip: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    position: static;\n    width: auto;\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_rotated-flipped.scss",
    "content": "// Rotated & Flipped Icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, 1);  }\n.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }\n.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }\n\n.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }\n.#{$fa-css-prefix}-flip-vertical   { @include fa-icon-flip(1, -1, 2); }\n.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); }\n\n// Hook for IE8-9\n// -------------------------\n\n:root {\n  .#{$fa-css-prefix}-rotate-90,\n  .#{$fa-css-prefix}-rotate-180,\n  .#{$fa-css-prefix}-rotate-270,\n  .#{$fa-css-prefix}-flip-horizontal,\n  .#{$fa-css-prefix}-flip-vertical {\n    filter: none;\n  }\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_screen-reader.scss",
    "content": "// Screen Readers\n// -------------------------\n\n.sr-only { @include sr-only; }\n.sr-only-focusable { @include sr-only-focusable; }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_stacked.scss",
    "content": "// Stacked Icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: middle;\n  width: 2em;\n}\n\n.#{$fa-css-prefix}-stack-1x,\n.#{$fa-css-prefix}-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%;\n}\n\n.#{$fa-css-prefix}-stack-1x {\n  line-height: inherit;\n}\n\n.#{$fa-css-prefix}-stack-2x {\n  font-size: 2em;\n}\n\n.#{$fa-css-prefix}-inverse {\n  color: $fa-inverse;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/_variables.scss",
    "content": "// Variables\n// --------------------------\n\n$fa-font-path:                \"../webfonts\" !default;\n$fa-font-size-base:           16px !default;\n$fa-css-prefix:               fa !default;\n$fa-version:                  \"5.0.9\" !default;\n$fa-border-color:             #eee !default;\n$fa-inverse:                  #fff !default;\n$fa-li-width:                 2em !default;\n\n// Convenience function used to set content property\n@function fa-content($fa-var) {\n  @return unquote(\"\\\"#{ $fa-var }\\\"\");\n}\n\n$fa-var-500px: \\f26e;\n$fa-var-accessible-icon: \\f368;\n$fa-var-accusoft: \\f369;\n$fa-var-address-book: \\f2b9;\n$fa-var-address-card: \\f2bb;\n$fa-var-adjust: \\f042;\n$fa-var-adn: \\f170;\n$fa-var-adversal: \\f36a;\n$fa-var-affiliatetheme: \\f36b;\n$fa-var-algolia: \\f36c;\n$fa-var-align-center: \\f037;\n$fa-var-align-justify: \\f039;\n$fa-var-align-left: \\f036;\n$fa-var-align-right: \\f038;\n$fa-var-allergies: \\f461;\n$fa-var-amazon: \\f270;\n$fa-var-amazon-pay: \\f42c;\n$fa-var-ambulance: \\f0f9;\n$fa-var-american-sign-language-interpreting: \\f2a3;\n$fa-var-amilia: \\f36d;\n$fa-var-anchor: \\f13d;\n$fa-var-android: \\f17b;\n$fa-var-angellist: \\f209;\n$fa-var-angle-double-down: \\f103;\n$fa-var-angle-double-left: \\f100;\n$fa-var-angle-double-right: \\f101;\n$fa-var-angle-double-up: \\f102;\n$fa-var-angle-down: \\f107;\n$fa-var-angle-left: \\f104;\n$fa-var-angle-right: \\f105;\n$fa-var-angle-up: \\f106;\n$fa-var-angrycreative: \\f36e;\n$fa-var-angular: \\f420;\n$fa-var-app-store: \\f36f;\n$fa-var-app-store-ios: \\f370;\n$fa-var-apper: \\f371;\n$fa-var-apple: \\f179;\n$fa-var-apple-pay: \\f415;\n$fa-var-archive: \\f187;\n$fa-var-arrow-alt-circle-down: \\f358;\n$fa-var-arrow-alt-circle-left: \\f359;\n$fa-var-arrow-alt-circle-right: \\f35a;\n$fa-var-arrow-alt-circle-up: \\f35b;\n$fa-var-arrow-circle-down: \\f0ab;\n$fa-var-arrow-circle-left: \\f0a8;\n$fa-var-arrow-circle-right: \\f0a9;\n$fa-var-arrow-circle-up: \\f0aa;\n$fa-var-arrow-down: \\f063;\n$fa-var-arrow-left: \\f060;\n$fa-var-arrow-right: \\f061;\n$fa-var-arrow-up: \\f062;\n$fa-var-arrows-alt: \\f0b2;\n$fa-var-arrows-alt-h: \\f337;\n$fa-var-arrows-alt-v: \\f338;\n$fa-var-assistive-listening-systems: \\f2a2;\n$fa-var-asterisk: \\f069;\n$fa-var-asymmetrik: \\f372;\n$fa-var-at: \\f1fa;\n$fa-var-audible: \\f373;\n$fa-var-audio-description: \\f29e;\n$fa-var-autoprefixer: \\f41c;\n$fa-var-avianex: \\f374;\n$fa-var-aviato: \\f421;\n$fa-var-aws: \\f375;\n$fa-var-backward: \\f04a;\n$fa-var-balance-scale: \\f24e;\n$fa-var-ban: \\f05e;\n$fa-var-band-aid: \\f462;\n$fa-var-bandcamp: \\f2d5;\n$fa-var-barcode: \\f02a;\n$fa-var-bars: \\f0c9;\n$fa-var-baseball-ball: \\f433;\n$fa-var-basketball-ball: \\f434;\n$fa-var-bath: \\f2cd;\n$fa-var-battery-empty: \\f244;\n$fa-var-battery-full: \\f240;\n$fa-var-battery-half: \\f242;\n$fa-var-battery-quarter: \\f243;\n$fa-var-battery-three-quarters: \\f241;\n$fa-var-bed: \\f236;\n$fa-var-beer: \\f0fc;\n$fa-var-behance: \\f1b4;\n$fa-var-behance-square: \\f1b5;\n$fa-var-bell: \\f0f3;\n$fa-var-bell-slash: \\f1f6;\n$fa-var-bicycle: \\f206;\n$fa-var-bimobject: \\f378;\n$fa-var-binoculars: \\f1e5;\n$fa-var-birthday-cake: \\f1fd;\n$fa-var-bitbucket: \\f171;\n$fa-var-bitcoin: \\f379;\n$fa-var-bity: \\f37a;\n$fa-var-black-tie: \\f27e;\n$fa-var-blackberry: \\f37b;\n$fa-var-blind: \\f29d;\n$fa-var-blogger: \\f37c;\n$fa-var-blogger-b: \\f37d;\n$fa-var-bluetooth: \\f293;\n$fa-var-bluetooth-b: \\f294;\n$fa-var-bold: \\f032;\n$fa-var-bolt: \\f0e7;\n$fa-var-bomb: \\f1e2;\n$fa-var-book: \\f02d;\n$fa-var-bookmark: \\f02e;\n$fa-var-bowling-ball: \\f436;\n$fa-var-box: \\f466;\n$fa-var-box-open: \\f49e;\n$fa-var-boxes: \\f468;\n$fa-var-braille: \\f2a1;\n$fa-var-briefcase: \\f0b1;\n$fa-var-briefcase-medical: \\f469;\n$fa-var-btc: \\f15a;\n$fa-var-bug: \\f188;\n$fa-var-building: \\f1ad;\n$fa-var-bullhorn: \\f0a1;\n$fa-var-bullseye: \\f140;\n$fa-var-burn: \\f46a;\n$fa-var-buromobelexperte: \\f37f;\n$fa-var-bus: \\f207;\n$fa-var-buysellads: \\f20d;\n$fa-var-calculator: \\f1ec;\n$fa-var-calendar: \\f133;\n$fa-var-calendar-alt: \\f073;\n$fa-var-calendar-check: \\f274;\n$fa-var-calendar-minus: \\f272;\n$fa-var-calendar-plus: \\f271;\n$fa-var-calendar-times: \\f273;\n$fa-var-camera: \\f030;\n$fa-var-camera-retro: \\f083;\n$fa-var-capsules: \\f46b;\n$fa-var-car: \\f1b9;\n$fa-var-caret-down: \\f0d7;\n$fa-var-caret-left: \\f0d9;\n$fa-var-caret-right: \\f0da;\n$fa-var-caret-square-down: \\f150;\n$fa-var-caret-square-left: \\f191;\n$fa-var-caret-square-right: \\f152;\n$fa-var-caret-square-up: \\f151;\n$fa-var-caret-up: \\f0d8;\n$fa-var-cart-arrow-down: \\f218;\n$fa-var-cart-plus: \\f217;\n$fa-var-cc-amazon-pay: \\f42d;\n$fa-var-cc-amex: \\f1f3;\n$fa-var-cc-apple-pay: \\f416;\n$fa-var-cc-diners-club: \\f24c;\n$fa-var-cc-discover: \\f1f2;\n$fa-var-cc-jcb: \\f24b;\n$fa-var-cc-mastercard: \\f1f1;\n$fa-var-cc-paypal: \\f1f4;\n$fa-var-cc-stripe: \\f1f5;\n$fa-var-cc-visa: \\f1f0;\n$fa-var-centercode: \\f380;\n$fa-var-certificate: \\f0a3;\n$fa-var-chart-area: \\f1fe;\n$fa-var-chart-bar: \\f080;\n$fa-var-chart-line: \\f201;\n$fa-var-chart-pie: \\f200;\n$fa-var-check: \\f00c;\n$fa-var-check-circle: \\f058;\n$fa-var-check-square: \\f14a;\n$fa-var-chess: \\f439;\n$fa-var-chess-bishop: \\f43a;\n$fa-var-chess-board: \\f43c;\n$fa-var-chess-king: \\f43f;\n$fa-var-chess-knight: \\f441;\n$fa-var-chess-pawn: \\f443;\n$fa-var-chess-queen: \\f445;\n$fa-var-chess-rook: \\f447;\n$fa-var-chevron-circle-down: \\f13a;\n$fa-var-chevron-circle-left: \\f137;\n$fa-var-chevron-circle-right: \\f138;\n$fa-var-chevron-circle-up: \\f139;\n$fa-var-chevron-down: \\f078;\n$fa-var-chevron-left: \\f053;\n$fa-var-chevron-right: \\f054;\n$fa-var-chevron-up: \\f077;\n$fa-var-child: \\f1ae;\n$fa-var-chrome: \\f268;\n$fa-var-circle: \\f111;\n$fa-var-circle-notch: \\f1ce;\n$fa-var-clipboard: \\f328;\n$fa-var-clipboard-check: \\f46c;\n$fa-var-clipboard-list: \\f46d;\n$fa-var-clock: \\f017;\n$fa-var-clone: \\f24d;\n$fa-var-closed-captioning: \\f20a;\n$fa-var-cloud: \\f0c2;\n$fa-var-cloud-download-alt: \\f381;\n$fa-var-cloud-upload-alt: \\f382;\n$fa-var-cloudscale: \\f383;\n$fa-var-cloudsmith: \\f384;\n$fa-var-cloudversify: \\f385;\n$fa-var-code: \\f121;\n$fa-var-code-branch: \\f126;\n$fa-var-codepen: \\f1cb;\n$fa-var-codiepie: \\f284;\n$fa-var-coffee: \\f0f4;\n$fa-var-cog: \\f013;\n$fa-var-cogs: \\f085;\n$fa-var-columns: \\f0db;\n$fa-var-comment: \\f075;\n$fa-var-comment-alt: \\f27a;\n$fa-var-comment-dots: \\f4ad;\n$fa-var-comment-slash: \\f4b3;\n$fa-var-comments: \\f086;\n$fa-var-compass: \\f14e;\n$fa-var-compress: \\f066;\n$fa-var-connectdevelop: \\f20e;\n$fa-var-contao: \\f26d;\n$fa-var-copy: \\f0c5;\n$fa-var-copyright: \\f1f9;\n$fa-var-couch: \\f4b8;\n$fa-var-cpanel: \\f388;\n$fa-var-creative-commons: \\f25e;\n$fa-var-credit-card: \\f09d;\n$fa-var-crop: \\f125;\n$fa-var-crosshairs: \\f05b;\n$fa-var-css3: \\f13c;\n$fa-var-css3-alt: \\f38b;\n$fa-var-cube: \\f1b2;\n$fa-var-cubes: \\f1b3;\n$fa-var-cut: \\f0c4;\n$fa-var-cuttlefish: \\f38c;\n$fa-var-d-and-d: \\f38d;\n$fa-var-dashcube: \\f210;\n$fa-var-database: \\f1c0;\n$fa-var-deaf: \\f2a4;\n$fa-var-delicious: \\f1a5;\n$fa-var-deploydog: \\f38e;\n$fa-var-deskpro: \\f38f;\n$fa-var-desktop: \\f108;\n$fa-var-deviantart: \\f1bd;\n$fa-var-diagnoses: \\f470;\n$fa-var-digg: \\f1a6;\n$fa-var-digital-ocean: \\f391;\n$fa-var-discord: \\f392;\n$fa-var-discourse: \\f393;\n$fa-var-dna: \\f471;\n$fa-var-dochub: \\f394;\n$fa-var-docker: \\f395;\n$fa-var-dollar-sign: \\f155;\n$fa-var-dolly: \\f472;\n$fa-var-dolly-flatbed: \\f474;\n$fa-var-donate: \\f4b9;\n$fa-var-dot-circle: \\f192;\n$fa-var-dove: \\f4ba;\n$fa-var-download: \\f019;\n$fa-var-draft2digital: \\f396;\n$fa-var-dribbble: \\f17d;\n$fa-var-dribbble-square: \\f397;\n$fa-var-dropbox: \\f16b;\n$fa-var-drupal: \\f1a9;\n$fa-var-dyalog: \\f399;\n$fa-var-earlybirds: \\f39a;\n$fa-var-edge: \\f282;\n$fa-var-edit: \\f044;\n$fa-var-eject: \\f052;\n$fa-var-elementor: \\f430;\n$fa-var-ellipsis-h: \\f141;\n$fa-var-ellipsis-v: \\f142;\n$fa-var-ember: \\f423;\n$fa-var-empire: \\f1d1;\n$fa-var-envelope: \\f0e0;\n$fa-var-envelope-open: \\f2b6;\n$fa-var-envelope-square: \\f199;\n$fa-var-envira: \\f299;\n$fa-var-eraser: \\f12d;\n$fa-var-erlang: \\f39d;\n$fa-var-ethereum: \\f42e;\n$fa-var-etsy: \\f2d7;\n$fa-var-euro-sign: \\f153;\n$fa-var-exchange-alt: \\f362;\n$fa-var-exclamation: \\f12a;\n$fa-var-exclamation-circle: \\f06a;\n$fa-var-exclamation-triangle: \\f071;\n$fa-var-expand: \\f065;\n$fa-var-expand-arrows-alt: \\f31e;\n$fa-var-expeditedssl: \\f23e;\n$fa-var-external-link-alt: \\f35d;\n$fa-var-external-link-square-alt: \\f360;\n$fa-var-eye: \\f06e;\n$fa-var-eye-dropper: \\f1fb;\n$fa-var-eye-slash: \\f070;\n$fa-var-facebook: \\f09a;\n$fa-var-facebook-f: \\f39e;\n$fa-var-facebook-messenger: \\f39f;\n$fa-var-facebook-square: \\f082;\n$fa-var-fast-backward: \\f049;\n$fa-var-fast-forward: \\f050;\n$fa-var-fax: \\f1ac;\n$fa-var-female: \\f182;\n$fa-var-fighter-jet: \\f0fb;\n$fa-var-file: \\f15b;\n$fa-var-file-alt: \\f15c;\n$fa-var-file-archive: \\f1c6;\n$fa-var-file-audio: \\f1c7;\n$fa-var-file-code: \\f1c9;\n$fa-var-file-excel: \\f1c3;\n$fa-var-file-image: \\f1c5;\n$fa-var-file-medical: \\f477;\n$fa-var-file-medical-alt: \\f478;\n$fa-var-file-pdf: \\f1c1;\n$fa-var-file-powerpoint: \\f1c4;\n$fa-var-file-video: \\f1c8;\n$fa-var-file-word: \\f1c2;\n$fa-var-film: \\f008;\n$fa-var-filter: \\f0b0;\n$fa-var-fire: \\f06d;\n$fa-var-fire-extinguisher: \\f134;\n$fa-var-firefox: \\f269;\n$fa-var-first-aid: \\f479;\n$fa-var-first-order: \\f2b0;\n$fa-var-firstdraft: \\f3a1;\n$fa-var-flag: \\f024;\n$fa-var-flag-checkered: \\f11e;\n$fa-var-flask: \\f0c3;\n$fa-var-flickr: \\f16e;\n$fa-var-flipboard: \\f44d;\n$fa-var-fly: \\f417;\n$fa-var-folder: \\f07b;\n$fa-var-folder-open: \\f07c;\n$fa-var-font: \\f031;\n$fa-var-font-awesome: \\f2b4;\n$fa-var-font-awesome-alt: \\f35c;\n$fa-var-font-awesome-flag: \\f425;\n$fa-var-fonticons: \\f280;\n$fa-var-fonticons-fi: \\f3a2;\n$fa-var-football-ball: \\f44e;\n$fa-var-fort-awesome: \\f286;\n$fa-var-fort-awesome-alt: \\f3a3;\n$fa-var-forumbee: \\f211;\n$fa-var-forward: \\f04e;\n$fa-var-foursquare: \\f180;\n$fa-var-free-code-camp: \\f2c5;\n$fa-var-freebsd: \\f3a4;\n$fa-var-frown: \\f119;\n$fa-var-futbol: \\f1e3;\n$fa-var-gamepad: \\f11b;\n$fa-var-gavel: \\f0e3;\n$fa-var-gem: \\f3a5;\n$fa-var-genderless: \\f22d;\n$fa-var-get-pocket: \\f265;\n$fa-var-gg: \\f260;\n$fa-var-gg-circle: \\f261;\n$fa-var-gift: \\f06b;\n$fa-var-git: \\f1d3;\n$fa-var-git-square: \\f1d2;\n$fa-var-github: \\f09b;\n$fa-var-github-alt: \\f113;\n$fa-var-github-square: \\f092;\n$fa-var-gitkraken: \\f3a6;\n$fa-var-gitlab: \\f296;\n$fa-var-gitter: \\f426;\n$fa-var-glass-martini: \\f000;\n$fa-var-glide: \\f2a5;\n$fa-var-glide-g: \\f2a6;\n$fa-var-globe: \\f0ac;\n$fa-var-gofore: \\f3a7;\n$fa-var-golf-ball: \\f450;\n$fa-var-goodreads: \\f3a8;\n$fa-var-goodreads-g: \\f3a9;\n$fa-var-google: \\f1a0;\n$fa-var-google-drive: \\f3aa;\n$fa-var-google-play: \\f3ab;\n$fa-var-google-plus: \\f2b3;\n$fa-var-google-plus-g: \\f0d5;\n$fa-var-google-plus-square: \\f0d4;\n$fa-var-google-wallet: \\f1ee;\n$fa-var-graduation-cap: \\f19d;\n$fa-var-gratipay: \\f184;\n$fa-var-grav: \\f2d6;\n$fa-var-gripfire: \\f3ac;\n$fa-var-grunt: \\f3ad;\n$fa-var-gulp: \\f3ae;\n$fa-var-h-square: \\f0fd;\n$fa-var-hacker-news: \\f1d4;\n$fa-var-hacker-news-square: \\f3af;\n$fa-var-hand-holding: \\f4bd;\n$fa-var-hand-holding-heart: \\f4be;\n$fa-var-hand-holding-usd: \\f4c0;\n$fa-var-hand-lizard: \\f258;\n$fa-var-hand-paper: \\f256;\n$fa-var-hand-peace: \\f25b;\n$fa-var-hand-point-down: \\f0a7;\n$fa-var-hand-point-left: \\f0a5;\n$fa-var-hand-point-right: \\f0a4;\n$fa-var-hand-point-up: \\f0a6;\n$fa-var-hand-pointer: \\f25a;\n$fa-var-hand-rock: \\f255;\n$fa-var-hand-scissors: \\f257;\n$fa-var-hand-spock: \\f259;\n$fa-var-hands: \\f4c2;\n$fa-var-hands-helping: \\f4c4;\n$fa-var-handshake: \\f2b5;\n$fa-var-hashtag: \\f292;\n$fa-var-hdd: \\f0a0;\n$fa-var-heading: \\f1dc;\n$fa-var-headphones: \\f025;\n$fa-var-heart: \\f004;\n$fa-var-heartbeat: \\f21e;\n$fa-var-hips: \\f452;\n$fa-var-hire-a-helper: \\f3b0;\n$fa-var-history: \\f1da;\n$fa-var-hockey-puck: \\f453;\n$fa-var-home: \\f015;\n$fa-var-hooli: \\f427;\n$fa-var-hospital: \\f0f8;\n$fa-var-hospital-alt: \\f47d;\n$fa-var-hospital-symbol: \\f47e;\n$fa-var-hotjar: \\f3b1;\n$fa-var-hourglass: \\f254;\n$fa-var-hourglass-end: \\f253;\n$fa-var-hourglass-half: \\f252;\n$fa-var-hourglass-start: \\f251;\n$fa-var-houzz: \\f27c;\n$fa-var-html5: \\f13b;\n$fa-var-hubspot: \\f3b2;\n$fa-var-i-cursor: \\f246;\n$fa-var-id-badge: \\f2c1;\n$fa-var-id-card: \\f2c2;\n$fa-var-id-card-alt: \\f47f;\n$fa-var-image: \\f03e;\n$fa-var-images: \\f302;\n$fa-var-imdb: \\f2d8;\n$fa-var-inbox: \\f01c;\n$fa-var-indent: \\f03c;\n$fa-var-industry: \\f275;\n$fa-var-info: \\f129;\n$fa-var-info-circle: \\f05a;\n$fa-var-instagram: \\f16d;\n$fa-var-internet-explorer: \\f26b;\n$fa-var-ioxhost: \\f208;\n$fa-var-italic: \\f033;\n$fa-var-itunes: \\f3b4;\n$fa-var-itunes-note: \\f3b5;\n$fa-var-jenkins: \\f3b6;\n$fa-var-joget: \\f3b7;\n$fa-var-joomla: \\f1aa;\n$fa-var-js: \\f3b8;\n$fa-var-js-square: \\f3b9;\n$fa-var-jsfiddle: \\f1cc;\n$fa-var-key: \\f084;\n$fa-var-keyboard: \\f11c;\n$fa-var-keycdn: \\f3ba;\n$fa-var-kickstarter: \\f3bb;\n$fa-var-kickstarter-k: \\f3bc;\n$fa-var-korvue: \\f42f;\n$fa-var-language: \\f1ab;\n$fa-var-laptop: \\f109;\n$fa-var-laravel: \\f3bd;\n$fa-var-lastfm: \\f202;\n$fa-var-lastfm-square: \\f203;\n$fa-var-leaf: \\f06c;\n$fa-var-leanpub: \\f212;\n$fa-var-lemon: \\f094;\n$fa-var-less: \\f41d;\n$fa-var-level-down-alt: \\f3be;\n$fa-var-level-up-alt: \\f3bf;\n$fa-var-life-ring: \\f1cd;\n$fa-var-lightbulb: \\f0eb;\n$fa-var-line: \\f3c0;\n$fa-var-link: \\f0c1;\n$fa-var-linkedin: \\f08c;\n$fa-var-linkedin-in: \\f0e1;\n$fa-var-linode: \\f2b8;\n$fa-var-linux: \\f17c;\n$fa-var-lira-sign: \\f195;\n$fa-var-list: \\f03a;\n$fa-var-list-alt: \\f022;\n$fa-var-list-ol: \\f0cb;\n$fa-var-list-ul: \\f0ca;\n$fa-var-location-arrow: \\f124;\n$fa-var-lock: \\f023;\n$fa-var-lock-open: \\f3c1;\n$fa-var-long-arrow-alt-down: \\f309;\n$fa-var-long-arrow-alt-left: \\f30a;\n$fa-var-long-arrow-alt-right: \\f30b;\n$fa-var-long-arrow-alt-up: \\f30c;\n$fa-var-low-vision: \\f2a8;\n$fa-var-lyft: \\f3c3;\n$fa-var-magento: \\f3c4;\n$fa-var-magic: \\f0d0;\n$fa-var-magnet: \\f076;\n$fa-var-male: \\f183;\n$fa-var-map: \\f279;\n$fa-var-map-marker: \\f041;\n$fa-var-map-marker-alt: \\f3c5;\n$fa-var-map-pin: \\f276;\n$fa-var-map-signs: \\f277;\n$fa-var-mars: \\f222;\n$fa-var-mars-double: \\f227;\n$fa-var-mars-stroke: \\f229;\n$fa-var-mars-stroke-h: \\f22b;\n$fa-var-mars-stroke-v: \\f22a;\n$fa-var-maxcdn: \\f136;\n$fa-var-medapps: \\f3c6;\n$fa-var-medium: \\f23a;\n$fa-var-medium-m: \\f3c7;\n$fa-var-medkit: \\f0fa;\n$fa-var-medrt: \\f3c8;\n$fa-var-meetup: \\f2e0;\n$fa-var-meh: \\f11a;\n$fa-var-mercury: \\f223;\n$fa-var-microchip: \\f2db;\n$fa-var-microphone: \\f130;\n$fa-var-microphone-slash: \\f131;\n$fa-var-microsoft: \\f3ca;\n$fa-var-minus: \\f068;\n$fa-var-minus-circle: \\f056;\n$fa-var-minus-square: \\f146;\n$fa-var-mix: \\f3cb;\n$fa-var-mixcloud: \\f289;\n$fa-var-mizuni: \\f3cc;\n$fa-var-mobile: \\f10b;\n$fa-var-mobile-alt: \\f3cd;\n$fa-var-modx: \\f285;\n$fa-var-monero: \\f3d0;\n$fa-var-money-bill-alt: \\f3d1;\n$fa-var-moon: \\f186;\n$fa-var-motorcycle: \\f21c;\n$fa-var-mouse-pointer: \\f245;\n$fa-var-music: \\f001;\n$fa-var-napster: \\f3d2;\n$fa-var-neuter: \\f22c;\n$fa-var-newspaper: \\f1ea;\n$fa-var-nintendo-switch: \\f418;\n$fa-var-node: \\f419;\n$fa-var-node-js: \\f3d3;\n$fa-var-notes-medical: \\f481;\n$fa-var-npm: \\f3d4;\n$fa-var-ns8: \\f3d5;\n$fa-var-nutritionix: \\f3d6;\n$fa-var-object-group: \\f247;\n$fa-var-object-ungroup: \\f248;\n$fa-var-odnoklassniki: \\f263;\n$fa-var-odnoklassniki-square: \\f264;\n$fa-var-opencart: \\f23d;\n$fa-var-openid: \\f19b;\n$fa-var-opera: \\f26a;\n$fa-var-optin-monster: \\f23c;\n$fa-var-osi: \\f41a;\n$fa-var-outdent: \\f03b;\n$fa-var-page4: \\f3d7;\n$fa-var-pagelines: \\f18c;\n$fa-var-paint-brush: \\f1fc;\n$fa-var-palfed: \\f3d8;\n$fa-var-pallet: \\f482;\n$fa-var-paper-plane: \\f1d8;\n$fa-var-paperclip: \\f0c6;\n$fa-var-parachute-box: \\f4cd;\n$fa-var-paragraph: \\f1dd;\n$fa-var-paste: \\f0ea;\n$fa-var-patreon: \\f3d9;\n$fa-var-pause: \\f04c;\n$fa-var-pause-circle: \\f28b;\n$fa-var-paw: \\f1b0;\n$fa-var-paypal: \\f1ed;\n$fa-var-pen-square: \\f14b;\n$fa-var-pencil-alt: \\f303;\n$fa-var-people-carry: \\f4ce;\n$fa-var-percent: \\f295;\n$fa-var-periscope: \\f3da;\n$fa-var-phabricator: \\f3db;\n$fa-var-phoenix-framework: \\f3dc;\n$fa-var-phone: \\f095;\n$fa-var-phone-slash: \\f3dd;\n$fa-var-phone-square: \\f098;\n$fa-var-phone-volume: \\f2a0;\n$fa-var-php: \\f457;\n$fa-var-pied-piper: \\f2ae;\n$fa-var-pied-piper-alt: \\f1a8;\n$fa-var-pied-piper-pp: \\f1a7;\n$fa-var-piggy-bank: \\f4d3;\n$fa-var-pills: \\f484;\n$fa-var-pinterest: \\f0d2;\n$fa-var-pinterest-p: \\f231;\n$fa-var-pinterest-square: \\f0d3;\n$fa-var-plane: \\f072;\n$fa-var-play: \\f04b;\n$fa-var-play-circle: \\f144;\n$fa-var-playstation: \\f3df;\n$fa-var-plug: \\f1e6;\n$fa-var-plus: \\f067;\n$fa-var-plus-circle: \\f055;\n$fa-var-plus-square: \\f0fe;\n$fa-var-podcast: \\f2ce;\n$fa-var-poo: \\f2fe;\n$fa-var-pound-sign: \\f154;\n$fa-var-power-off: \\f011;\n$fa-var-prescription-bottle: \\f485;\n$fa-var-prescription-bottle-alt: \\f486;\n$fa-var-print: \\f02f;\n$fa-var-procedures: \\f487;\n$fa-var-product-hunt: \\f288;\n$fa-var-pushed: \\f3e1;\n$fa-var-puzzle-piece: \\f12e;\n$fa-var-python: \\f3e2;\n$fa-var-qq: \\f1d6;\n$fa-var-qrcode: \\f029;\n$fa-var-question: \\f128;\n$fa-var-question-circle: \\f059;\n$fa-var-quidditch: \\f458;\n$fa-var-quinscape: \\f459;\n$fa-var-quora: \\f2c4;\n$fa-var-quote-left: \\f10d;\n$fa-var-quote-right: \\f10e;\n$fa-var-random: \\f074;\n$fa-var-ravelry: \\f2d9;\n$fa-var-react: \\f41b;\n$fa-var-readme: \\f4d5;\n$fa-var-rebel: \\f1d0;\n$fa-var-recycle: \\f1b8;\n$fa-var-red-river: \\f3e3;\n$fa-var-reddit: \\f1a1;\n$fa-var-reddit-alien: \\f281;\n$fa-var-reddit-square: \\f1a2;\n$fa-var-redo: \\f01e;\n$fa-var-redo-alt: \\f2f9;\n$fa-var-registered: \\f25d;\n$fa-var-rendact: \\f3e4;\n$fa-var-renren: \\f18b;\n$fa-var-reply: \\f3e5;\n$fa-var-reply-all: \\f122;\n$fa-var-replyd: \\f3e6;\n$fa-var-resolving: \\f3e7;\n$fa-var-retweet: \\f079;\n$fa-var-ribbon: \\f4d6;\n$fa-var-road: \\f018;\n$fa-var-rocket: \\f135;\n$fa-var-rocketchat: \\f3e8;\n$fa-var-rockrms: \\f3e9;\n$fa-var-rss: \\f09e;\n$fa-var-rss-square: \\f143;\n$fa-var-ruble-sign: \\f158;\n$fa-var-rupee-sign: \\f156;\n$fa-var-safari: \\f267;\n$fa-var-sass: \\f41e;\n$fa-var-save: \\f0c7;\n$fa-var-schlix: \\f3ea;\n$fa-var-scribd: \\f28a;\n$fa-var-search: \\f002;\n$fa-var-search-minus: \\f010;\n$fa-var-search-plus: \\f00e;\n$fa-var-searchengin: \\f3eb;\n$fa-var-seedling: \\f4d8;\n$fa-var-sellcast: \\f2da;\n$fa-var-sellsy: \\f213;\n$fa-var-server: \\f233;\n$fa-var-servicestack: \\f3ec;\n$fa-var-share: \\f064;\n$fa-var-share-alt: \\f1e0;\n$fa-var-share-alt-square: \\f1e1;\n$fa-var-share-square: \\f14d;\n$fa-var-shekel-sign: \\f20b;\n$fa-var-shield-alt: \\f3ed;\n$fa-var-ship: \\f21a;\n$fa-var-shipping-fast: \\f48b;\n$fa-var-shirtsinbulk: \\f214;\n$fa-var-shopping-bag: \\f290;\n$fa-var-shopping-basket: \\f291;\n$fa-var-shopping-cart: \\f07a;\n$fa-var-shower: \\f2cc;\n$fa-var-sign: \\f4d9;\n$fa-var-sign-in-alt: \\f2f6;\n$fa-var-sign-language: \\f2a7;\n$fa-var-sign-out-alt: \\f2f5;\n$fa-var-signal: \\f012;\n$fa-var-simplybuilt: \\f215;\n$fa-var-sistrix: \\f3ee;\n$fa-var-sitemap: \\f0e8;\n$fa-var-skyatlas: \\f216;\n$fa-var-skype: \\f17e;\n$fa-var-slack: \\f198;\n$fa-var-slack-hash: \\f3ef;\n$fa-var-sliders-h: \\f1de;\n$fa-var-slideshare: \\f1e7;\n$fa-var-smile: \\f118;\n$fa-var-smoking: \\f48d;\n$fa-var-snapchat: \\f2ab;\n$fa-var-snapchat-ghost: \\f2ac;\n$fa-var-snapchat-square: \\f2ad;\n$fa-var-snowflake: \\f2dc;\n$fa-var-sort: \\f0dc;\n$fa-var-sort-alpha-down: \\f15d;\n$fa-var-sort-alpha-up: \\f15e;\n$fa-var-sort-amount-down: \\f160;\n$fa-var-sort-amount-up: \\f161;\n$fa-var-sort-down: \\f0dd;\n$fa-var-sort-numeric-down: \\f162;\n$fa-var-sort-numeric-up: \\f163;\n$fa-var-sort-up: \\f0de;\n$fa-var-soundcloud: \\f1be;\n$fa-var-space-shuttle: \\f197;\n$fa-var-speakap: \\f3f3;\n$fa-var-spinner: \\f110;\n$fa-var-spotify: \\f1bc;\n$fa-var-square: \\f0c8;\n$fa-var-square-full: \\f45c;\n$fa-var-stack-exchange: \\f18d;\n$fa-var-stack-overflow: \\f16c;\n$fa-var-star: \\f005;\n$fa-var-star-half: \\f089;\n$fa-var-staylinked: \\f3f5;\n$fa-var-steam: \\f1b6;\n$fa-var-steam-square: \\f1b7;\n$fa-var-steam-symbol: \\f3f6;\n$fa-var-step-backward: \\f048;\n$fa-var-step-forward: \\f051;\n$fa-var-stethoscope: \\f0f1;\n$fa-var-sticker-mule: \\f3f7;\n$fa-var-sticky-note: \\f249;\n$fa-var-stop: \\f04d;\n$fa-var-stop-circle: \\f28d;\n$fa-var-stopwatch: \\f2f2;\n$fa-var-strava: \\f428;\n$fa-var-street-view: \\f21d;\n$fa-var-strikethrough: \\f0cc;\n$fa-var-stripe: \\f429;\n$fa-var-stripe-s: \\f42a;\n$fa-var-studiovinari: \\f3f8;\n$fa-var-stumbleupon: \\f1a4;\n$fa-var-stumbleupon-circle: \\f1a3;\n$fa-var-subscript: \\f12c;\n$fa-var-subway: \\f239;\n$fa-var-suitcase: \\f0f2;\n$fa-var-sun: \\f185;\n$fa-var-superpowers: \\f2dd;\n$fa-var-superscript: \\f12b;\n$fa-var-supple: \\f3f9;\n$fa-var-sync: \\f021;\n$fa-var-sync-alt: \\f2f1;\n$fa-var-syringe: \\f48e;\n$fa-var-table: \\f0ce;\n$fa-var-table-tennis: \\f45d;\n$fa-var-tablet: \\f10a;\n$fa-var-tablet-alt: \\f3fa;\n$fa-var-tablets: \\f490;\n$fa-var-tachometer-alt: \\f3fd;\n$fa-var-tag: \\f02b;\n$fa-var-tags: \\f02c;\n$fa-var-tape: \\f4db;\n$fa-var-tasks: \\f0ae;\n$fa-var-taxi: \\f1ba;\n$fa-var-telegram: \\f2c6;\n$fa-var-telegram-plane: \\f3fe;\n$fa-var-tencent-weibo: \\f1d5;\n$fa-var-terminal: \\f120;\n$fa-var-text-height: \\f034;\n$fa-var-text-width: \\f035;\n$fa-var-th: \\f00a;\n$fa-var-th-large: \\f009;\n$fa-var-th-list: \\f00b;\n$fa-var-themeisle: \\f2b2;\n$fa-var-thermometer: \\f491;\n$fa-var-thermometer-empty: \\f2cb;\n$fa-var-thermometer-full: \\f2c7;\n$fa-var-thermometer-half: \\f2c9;\n$fa-var-thermometer-quarter: \\f2ca;\n$fa-var-thermometer-three-quarters: \\f2c8;\n$fa-var-thumbs-down: \\f165;\n$fa-var-thumbs-up: \\f164;\n$fa-var-thumbtack: \\f08d;\n$fa-var-ticket-alt: \\f3ff;\n$fa-var-times: \\f00d;\n$fa-var-times-circle: \\f057;\n$fa-var-tint: \\f043;\n$fa-var-toggle-off: \\f204;\n$fa-var-toggle-on: \\f205;\n$fa-var-trademark: \\f25c;\n$fa-var-train: \\f238;\n$fa-var-transgender: \\f224;\n$fa-var-transgender-alt: \\f225;\n$fa-var-trash: \\f1f8;\n$fa-var-trash-alt: \\f2ed;\n$fa-var-tree: \\f1bb;\n$fa-var-trello: \\f181;\n$fa-var-tripadvisor: \\f262;\n$fa-var-trophy: \\f091;\n$fa-var-truck: \\f0d1;\n$fa-var-truck-loading: \\f4de;\n$fa-var-truck-moving: \\f4df;\n$fa-var-tty: \\f1e4;\n$fa-var-tumblr: \\f173;\n$fa-var-tumblr-square: \\f174;\n$fa-var-tv: \\f26c;\n$fa-var-twitch: \\f1e8;\n$fa-var-twitter: \\f099;\n$fa-var-twitter-square: \\f081;\n$fa-var-typo3: \\f42b;\n$fa-var-uber: \\f402;\n$fa-var-uikit: \\f403;\n$fa-var-umbrella: \\f0e9;\n$fa-var-underline: \\f0cd;\n$fa-var-undo: \\f0e2;\n$fa-var-undo-alt: \\f2ea;\n$fa-var-uniregistry: \\f404;\n$fa-var-universal-access: \\f29a;\n$fa-var-university: \\f19c;\n$fa-var-unlink: \\f127;\n$fa-var-unlock: \\f09c;\n$fa-var-unlock-alt: \\f13e;\n$fa-var-untappd: \\f405;\n$fa-var-upload: \\f093;\n$fa-var-usb: \\f287;\n$fa-var-user: \\f007;\n$fa-var-user-circle: \\f2bd;\n$fa-var-user-md: \\f0f0;\n$fa-var-user-plus: \\f234;\n$fa-var-user-secret: \\f21b;\n$fa-var-user-times: \\f235;\n$fa-var-users: \\f0c0;\n$fa-var-ussunnah: \\f407;\n$fa-var-utensil-spoon: \\f2e5;\n$fa-var-utensils: \\f2e7;\n$fa-var-vaadin: \\f408;\n$fa-var-venus: \\f221;\n$fa-var-venus-double: \\f226;\n$fa-var-venus-mars: \\f228;\n$fa-var-viacoin: \\f237;\n$fa-var-viadeo: \\f2a9;\n$fa-var-viadeo-square: \\f2aa;\n$fa-var-vial: \\f492;\n$fa-var-vials: \\f493;\n$fa-var-viber: \\f409;\n$fa-var-video: \\f03d;\n$fa-var-video-slash: \\f4e2;\n$fa-var-vimeo: \\f40a;\n$fa-var-vimeo-square: \\f194;\n$fa-var-vimeo-v: \\f27d;\n$fa-var-vine: \\f1ca;\n$fa-var-vk: \\f189;\n$fa-var-vnv: \\f40b;\n$fa-var-volleyball-ball: \\f45f;\n$fa-var-volume-down: \\f027;\n$fa-var-volume-off: \\f026;\n$fa-var-volume-up: \\f028;\n$fa-var-vuejs: \\f41f;\n$fa-var-warehouse: \\f494;\n$fa-var-weibo: \\f18a;\n$fa-var-weight: \\f496;\n$fa-var-weixin: \\f1d7;\n$fa-var-whatsapp: \\f232;\n$fa-var-whatsapp-square: \\f40c;\n$fa-var-wheelchair: \\f193;\n$fa-var-whmcs: \\f40d;\n$fa-var-wifi: \\f1eb;\n$fa-var-wikipedia-w: \\f266;\n$fa-var-window-close: \\f410;\n$fa-var-window-maximize: \\f2d0;\n$fa-var-window-minimize: \\f2d1;\n$fa-var-window-restore: \\f2d2;\n$fa-var-windows: \\f17a;\n$fa-var-wine-glass: \\f4e3;\n$fa-var-won-sign: \\f159;\n$fa-var-wordpress: \\f19a;\n$fa-var-wordpress-simple: \\f411;\n$fa-var-wpbeginner: \\f297;\n$fa-var-wpexplorer: \\f2de;\n$fa-var-wpforms: \\f298;\n$fa-var-wrench: \\f0ad;\n$fa-var-x-ray: \\f497;\n$fa-var-xbox: \\f412;\n$fa-var-xing: \\f168;\n$fa-var-xing-square: \\f169;\n$fa-var-y-combinator: \\f23b;\n$fa-var-yahoo: \\f19e;\n$fa-var-yandex: \\f413;\n$fa-var-yandex-international: \\f414;\n$fa-var-yelp: \\f1e9;\n$fa-var-yen-sign: \\f157;\n$fa-var-yoast: \\f2b1;\n$fa-var-youtube: \\f167;\n$fa-var-youtube-square: \\f431;\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/fa-brands.scss",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import 'variables';\n\n@font-face {\n  font-family: 'Font Awesome 5 Brands';\n  font-style: normal;\n  font-weight: normal;\n  src: url('#{$fa-font-path}/fa-brands-400.eot');\n  src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),\n  url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),\n  url('#{$fa-font-path}/fa-brands-400.woff') format('woff'),\n  url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'),\n  url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');\n}\n\n.fab {\n  font-family: 'Font Awesome 5 Brands';\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/fa-regular.scss",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import 'variables';\n\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 400;\n  src: url('#{$fa-font-path}/fa-regular-400.eot');\n  src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),\n  url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),\n  url('#{$fa-font-path}/fa-regular-400.woff') format('woff'),\n  url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'),\n  url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');\n}\n\n.far {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 400;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/fa-solid.scss",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import 'variables';\n\n@font-face {\n  font-family: 'Font Awesome 5 Free';\n  font-style: normal;\n  font-weight: 900;\n  src: url('#{$fa-font-path}/fa-solid-900.eot');\n  src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),\n  url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),\n  url('#{$fa-font-path}/fa-solid-900.woff') format('woff'),\n  url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'),\n  url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');\n}\n\n.fa,\n.fas {\n  font-family: 'Font Awesome 5 Free';\n  font-weight: 900;\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/font-awesome/scss/fontawesome.scss",
    "content": "/*!\n * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n@import 'variables';\n@import 'mixins';\n@import 'core';\n@import 'larger';\n@import 'fixed-width';\n@import 'list';\n@import 'bordered-pulled';\n@import 'animated';\n@import 'rotated-flipped';\n@import 'stacked';\n@import 'icons';\n@import 'screen-reader';\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/material-design-iconic-font/css/material-design-iconic-font.css",
    "content": "/*!\n *  Material Design Iconic Font by Sergey Kupletsky (@zavoloklom) - http://zavoloklom.github.io/material-design-iconic-font/\n *  License - http://zavoloklom.github.io/material-design-iconic-font/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n@font-face {\n  font-family: 'Material-Design-Iconic-Font';\n  src: url('..//fonts/Material-Design-Iconic-Font.woff2?v=2.2.0') format('woff2'), url('..//fonts/Material-Design-Iconic-Font.woff?v=2.2.0') format('woff'), url('..//fonts/Material-Design-Iconic-Font.ttf?v=2.2.0') format('truetype');\n  font-weight: normal;\n  font-style: normal;\n}\n.zmdi {\n  display: inline-block;\n  font: normal normal normal 14px/1 'Material-Design-Iconic-Font';\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.zmdi-hc-lg {\n  font-size: 1.33333333em;\n  line-height: 0.75em;\n  vertical-align: -15%;\n}\n.zmdi-hc-2x {\n  font-size: 2em;\n}\n.zmdi-hc-3x {\n  font-size: 3em;\n}\n.zmdi-hc-4x {\n  font-size: 4em;\n}\n.zmdi-hc-5x {\n  font-size: 5em;\n}\n.zmdi-hc-fw {\n  width: 1.28571429em;\n  text-align: center;\n}\n.zmdi-hc-ul {\n  padding-left: 0;\n  margin-left: 2.14285714em;\n  list-style-type: none;\n}\n.zmdi-hc-ul > li {\n  position: relative;\n}\n.zmdi-hc-li {\n  position: absolute;\n  left: -2.14285714em;\n  width: 2.14285714em;\n  top: 0.14285714em;\n  text-align: center;\n}\n.zmdi-hc-li.zmdi-hc-lg {\n  left: -1.85714286em;\n}\n.zmdi-hc-border {\n  padding: .1em .25em;\n  border: solid 0.1em #9e9e9e;\n  border-radius: 2px;\n}\n.zmdi-hc-border-circle {\n  padding: .1em .25em;\n  border: solid 0.1em #9e9e9e;\n  border-radius: 50%;\n}\n.zmdi.pull-left {\n  float: left;\n  margin-right: .15em;\n}\n.zmdi.pull-right {\n  float: right;\n  margin-left: .15em;\n}\n.zmdi-hc-spin {\n  -webkit-animation: zmdi-spin 1.5s infinite linear;\n          animation: zmdi-spin 1.5s infinite linear;\n}\n.zmdi-hc-spin-reverse {\n  -webkit-animation: zmdi-spin-reverse 1.5s infinite linear;\n          animation: zmdi-spin-reverse 1.5s infinite linear;\n}\n@-webkit-keyframes zmdi-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n            transform: rotate(359deg);\n  }\n}\n@keyframes zmdi-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n            transform: rotate(359deg);\n  }\n}\n@-webkit-keyframes zmdi-spin-reverse {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(-359deg);\n            transform: rotate(-359deg);\n  }\n}\n@keyframes zmdi-spin-reverse {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(-359deg);\n            transform: rotate(-359deg);\n  }\n}\n.zmdi-hc-rotate-90 {\n  -webkit-transform: rotate(90deg);\n      -ms-transform: rotate(90deg);\n          transform: rotate(90deg);\n}\n.zmdi-hc-rotate-180 {\n  -webkit-transform: rotate(180deg);\n      -ms-transform: rotate(180deg);\n          transform: rotate(180deg);\n}\n.zmdi-hc-rotate-270 {\n  -webkit-transform: rotate(270deg);\n      -ms-transform: rotate(270deg);\n          transform: rotate(270deg);\n}\n.zmdi-hc-flip-horizontal {\n  -webkit-transform: scale(-1, 1);\n      -ms-transform: scale(-1, 1);\n          transform: scale(-1, 1);\n}\n.zmdi-hc-flip-vertical {\n  -webkit-transform: scale(1, -1);\n      -ms-transform: scale(1, -1);\n          transform: scale(1, -1);\n}\n.zmdi-hc-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: middle;\n}\n.zmdi-hc-stack-1x,\n.zmdi-hc-stack-2x {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n}\n.zmdi-hc-stack-1x {\n  line-height: inherit;\n}\n.zmdi-hc-stack-2x {\n  font-size: 2em;\n}\n.zmdi-hc-inverse {\n  color: #ffffff;\n}\n/* Material Design Iconic Font uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.zmdi-3d-rotation:before {\n  content: '\\f101';\n}\n.zmdi-airplane-off:before {\n  content: '\\f102';\n}\n.zmdi-airplane:before {\n  content: '\\f103';\n}\n.zmdi-album:before {\n  content: '\\f104';\n}\n.zmdi-archive:before {\n  content: '\\f105';\n}\n.zmdi-assignment-account:before {\n  content: '\\f106';\n}\n.zmdi-assignment-alert:before {\n  content: '\\f107';\n}\n.zmdi-assignment-check:before {\n  content: '\\f108';\n}\n.zmdi-assignment-o:before {\n  content: '\\f109';\n}\n.zmdi-assignment-return:before {\n  content: '\\f10a';\n}\n.zmdi-assignment-returned:before {\n  content: '\\f10b';\n}\n.zmdi-assignment:before {\n  content: '\\f10c';\n}\n.zmdi-attachment-alt:before {\n  content: '\\f10d';\n}\n.zmdi-attachment:before {\n  content: '\\f10e';\n}\n.zmdi-audio:before {\n  content: '\\f10f';\n}\n.zmdi-badge-check:before {\n  content: '\\f110';\n}\n.zmdi-balance-wallet:before {\n  content: '\\f111';\n}\n.zmdi-balance:before {\n  content: '\\f112';\n}\n.zmdi-battery-alert:before {\n  content: '\\f113';\n}\n.zmdi-battery-flash:before {\n  content: '\\f114';\n}\n.zmdi-battery-unknown:before {\n  content: '\\f115';\n}\n.zmdi-battery:before {\n  content: '\\f116';\n}\n.zmdi-bike:before {\n  content: '\\f117';\n}\n.zmdi-block-alt:before {\n  content: '\\f118';\n}\n.zmdi-block:before {\n  content: '\\f119';\n}\n.zmdi-boat:before {\n  content: '\\f11a';\n}\n.zmdi-book-image:before {\n  content: '\\f11b';\n}\n.zmdi-book:before {\n  content: '\\f11c';\n}\n.zmdi-bookmark-outline:before {\n  content: '\\f11d';\n}\n.zmdi-bookmark:before {\n  content: '\\f11e';\n}\n.zmdi-brush:before {\n  content: '\\f11f';\n}\n.zmdi-bug:before {\n  content: '\\f120';\n}\n.zmdi-bus:before {\n  content: '\\f121';\n}\n.zmdi-cake:before {\n  content: '\\f122';\n}\n.zmdi-car-taxi:before {\n  content: '\\f123';\n}\n.zmdi-car-wash:before {\n  content: '\\f124';\n}\n.zmdi-car:before {\n  content: '\\f125';\n}\n.zmdi-card-giftcard:before {\n  content: '\\f126';\n}\n.zmdi-card-membership:before {\n  content: '\\f127';\n}\n.zmdi-card-travel:before {\n  content: '\\f128';\n}\n.zmdi-card:before {\n  content: '\\f129';\n}\n.zmdi-case-check:before {\n  content: '\\f12a';\n}\n.zmdi-case-download:before {\n  content: '\\f12b';\n}\n.zmdi-case-play:before {\n  content: '\\f12c';\n}\n.zmdi-case:before {\n  content: '\\f12d';\n}\n.zmdi-cast-connected:before {\n  content: '\\f12e';\n}\n.zmdi-cast:before {\n  content: '\\f12f';\n}\n.zmdi-chart-donut:before {\n  content: '\\f130';\n}\n.zmdi-chart:before {\n  content: '\\f131';\n}\n.zmdi-city-alt:before {\n  content: '\\f132';\n}\n.zmdi-city:before {\n  content: '\\f133';\n}\n.zmdi-close-circle-o:before {\n  content: '\\f134';\n}\n.zmdi-close-circle:before {\n  content: '\\f135';\n}\n.zmdi-close:before {\n  content: '\\f136';\n}\n.zmdi-cocktail:before {\n  content: '\\f137';\n}\n.zmdi-code-setting:before {\n  content: '\\f138';\n}\n.zmdi-code-smartphone:before {\n  content: '\\f139';\n}\n.zmdi-code:before {\n  content: '\\f13a';\n}\n.zmdi-coffee:before {\n  content: '\\f13b';\n}\n.zmdi-collection-bookmark:before {\n  content: '\\f13c';\n}\n.zmdi-collection-case-play:before {\n  content: '\\f13d';\n}\n.zmdi-collection-folder-image:before {\n  content: '\\f13e';\n}\n.zmdi-collection-image-o:before {\n  content: '\\f13f';\n}\n.zmdi-collection-image:before {\n  content: '\\f140';\n}\n.zmdi-collection-item-1:before {\n  content: '\\f141';\n}\n.zmdi-collection-item-2:before {\n  content: '\\f142';\n}\n.zmdi-collection-item-3:before {\n  content: '\\f143';\n}\n.zmdi-collection-item-4:before {\n  content: '\\f144';\n}\n.zmdi-collection-item-5:before {\n  content: '\\f145';\n}\n.zmdi-collection-item-6:before {\n  content: '\\f146';\n}\n.zmdi-collection-item-7:before {\n  content: '\\f147';\n}\n.zmdi-collection-item-8:before {\n  content: '\\f148';\n}\n.zmdi-collection-item-9-plus:before {\n  content: '\\f149';\n}\n.zmdi-collection-item-9:before {\n  content: '\\f14a';\n}\n.zmdi-collection-item:before {\n  content: '\\f14b';\n}\n.zmdi-collection-music:before {\n  content: '\\f14c';\n}\n.zmdi-collection-pdf:before {\n  content: '\\f14d';\n}\n.zmdi-collection-plus:before {\n  content: '\\f14e';\n}\n.zmdi-collection-speaker:before {\n  content: '\\f14f';\n}\n.zmdi-collection-text:before {\n  content: '\\f150';\n}\n.zmdi-collection-video:before {\n  content: '\\f151';\n}\n.zmdi-compass:before {\n  content: '\\f152';\n}\n.zmdi-cutlery:before {\n  content: '\\f153';\n}\n.zmdi-delete:before {\n  content: '\\f154';\n}\n.zmdi-dialpad:before {\n  content: '\\f155';\n}\n.zmdi-dns:before {\n  content: '\\f156';\n}\n.zmdi-drink:before {\n  content: '\\f157';\n}\n.zmdi-edit:before {\n  content: '\\f158';\n}\n.zmdi-email-open:before {\n  content: '\\f159';\n}\n.zmdi-email:before {\n  content: '\\f15a';\n}\n.zmdi-eye-off:before {\n  content: '\\f15b';\n}\n.zmdi-eye:before {\n  content: '\\f15c';\n}\n.zmdi-eyedropper:before {\n  content: '\\f15d';\n}\n.zmdi-favorite-outline:before {\n  content: '\\f15e';\n}\n.zmdi-favorite:before {\n  content: '\\f15f';\n}\n.zmdi-filter-list:before {\n  content: '\\f160';\n}\n.zmdi-fire:before {\n  content: '\\f161';\n}\n.zmdi-flag:before {\n  content: '\\f162';\n}\n.zmdi-flare:before {\n  content: '\\f163';\n}\n.zmdi-flash-auto:before {\n  content: '\\f164';\n}\n.zmdi-flash-off:before {\n  content: '\\f165';\n}\n.zmdi-flash:before {\n  content: '\\f166';\n}\n.zmdi-flip:before {\n  content: '\\f167';\n}\n.zmdi-flower-alt:before {\n  content: '\\f168';\n}\n.zmdi-flower:before {\n  content: '\\f169';\n}\n.zmdi-font:before {\n  content: '\\f16a';\n}\n.zmdi-fullscreen-alt:before {\n  content: '\\f16b';\n}\n.zmdi-fullscreen-exit:before {\n  content: '\\f16c';\n}\n.zmdi-fullscreen:before {\n  content: '\\f16d';\n}\n.zmdi-functions:before {\n  content: '\\f16e';\n}\n.zmdi-gas-station:before {\n  content: '\\f16f';\n}\n.zmdi-gesture:before {\n  content: '\\f170';\n}\n.zmdi-globe-alt:before {\n  content: '\\f171';\n}\n.zmdi-globe-lock:before {\n  content: '\\f172';\n}\n.zmdi-globe:before {\n  content: '\\f173';\n}\n.zmdi-graduation-cap:before {\n  content: '\\f174';\n}\n.zmdi-home:before {\n  content: '\\f175';\n}\n.zmdi-hospital-alt:before {\n  content: '\\f176';\n}\n.zmdi-hospital:before {\n  content: '\\f177';\n}\n.zmdi-hotel:before {\n  content: '\\f178';\n}\n.zmdi-hourglass-alt:before {\n  content: '\\f179';\n}\n.zmdi-hourglass-outline:before {\n  content: '\\f17a';\n}\n.zmdi-hourglass:before {\n  content: '\\f17b';\n}\n.zmdi-http:before {\n  content: '\\f17c';\n}\n.zmdi-image-alt:before {\n  content: '\\f17d';\n}\n.zmdi-image-o:before {\n  content: '\\f17e';\n}\n.zmdi-image:before {\n  content: '\\f17f';\n}\n.zmdi-inbox:before {\n  content: '\\f180';\n}\n.zmdi-invert-colors-off:before {\n  content: '\\f181';\n}\n.zmdi-invert-colors:before {\n  content: '\\f182';\n}\n.zmdi-key:before {\n  content: '\\f183';\n}\n.zmdi-label-alt-outline:before {\n  content: '\\f184';\n}\n.zmdi-label-alt:before {\n  content: '\\f185';\n}\n.zmdi-label-heart:before {\n  content: '\\f186';\n}\n.zmdi-label:before {\n  content: '\\f187';\n}\n.zmdi-labels:before {\n  content: '\\f188';\n}\n.zmdi-lamp:before {\n  content: '\\f189';\n}\n.zmdi-landscape:before {\n  content: '\\f18a';\n}\n.zmdi-layers-off:before {\n  content: '\\f18b';\n}\n.zmdi-layers:before {\n  content: '\\f18c';\n}\n.zmdi-library:before {\n  content: '\\f18d';\n}\n.zmdi-link:before {\n  content: '\\f18e';\n}\n.zmdi-lock-open:before {\n  content: '\\f18f';\n}\n.zmdi-lock-outline:before {\n  content: '\\f190';\n}\n.zmdi-lock:before {\n  content: '\\f191';\n}\n.zmdi-mail-reply-all:before {\n  content: '\\f192';\n}\n.zmdi-mail-reply:before {\n  content: '\\f193';\n}\n.zmdi-mail-send:before {\n  content: '\\f194';\n}\n.zmdi-mall:before {\n  content: '\\f195';\n}\n.zmdi-map:before {\n  content: '\\f196';\n}\n.zmdi-menu:before {\n  content: '\\f197';\n}\n.zmdi-money-box:before {\n  content: '\\f198';\n}\n.zmdi-money-off:before {\n  content: '\\f199';\n}\n.zmdi-money:before {\n  content: '\\f19a';\n}\n.zmdi-more-vert:before {\n  content: '\\f19b';\n}\n.zmdi-more:before {\n  content: '\\f19c';\n}\n.zmdi-movie-alt:before {\n  content: '\\f19d';\n}\n.zmdi-movie:before {\n  content: '\\f19e';\n}\n.zmdi-nature-people:before {\n  content: '\\f19f';\n}\n.zmdi-nature:before {\n  content: '\\f1a0';\n}\n.zmdi-navigation:before {\n  content: '\\f1a1';\n}\n.zmdi-open-in-browser:before {\n  content: '\\f1a2';\n}\n.zmdi-open-in-new:before {\n  content: '\\f1a3';\n}\n.zmdi-palette:before {\n  content: '\\f1a4';\n}\n.zmdi-parking:before {\n  content: '\\f1a5';\n}\n.zmdi-pin-account:before {\n  content: '\\f1a6';\n}\n.zmdi-pin-assistant:before {\n  content: '\\f1a7';\n}\n.zmdi-pin-drop:before {\n  content: '\\f1a8';\n}\n.zmdi-pin-help:before {\n  content: '\\f1a9';\n}\n.zmdi-pin-off:before {\n  content: '\\f1aa';\n}\n.zmdi-pin:before {\n  content: '\\f1ab';\n}\n.zmdi-pizza:before {\n  content: '\\f1ac';\n}\n.zmdi-plaster:before {\n  content: '\\f1ad';\n}\n.zmdi-power-setting:before {\n  content: '\\f1ae';\n}\n.zmdi-power:before {\n  content: '\\f1af';\n}\n.zmdi-print:before {\n  content: '\\f1b0';\n}\n.zmdi-puzzle-piece:before {\n  content: '\\f1b1';\n}\n.zmdi-quote:before {\n  content: '\\f1b2';\n}\n.zmdi-railway:before {\n  content: '\\f1b3';\n}\n.zmdi-receipt:before {\n  content: '\\f1b4';\n}\n.zmdi-refresh-alt:before {\n  content: '\\f1b5';\n}\n.zmdi-refresh-sync-alert:before {\n  content: '\\f1b6';\n}\n.zmdi-refresh-sync-off:before {\n  content: '\\f1b7';\n}\n.zmdi-refresh-sync:before {\n  content: '\\f1b8';\n}\n.zmdi-refresh:before {\n  content: '\\f1b9';\n}\n.zmdi-roller:before {\n  content: '\\f1ba';\n}\n.zmdi-ruler:before {\n  content: '\\f1bb';\n}\n.zmdi-scissors:before {\n  content: '\\f1bc';\n}\n.zmdi-screen-rotation-lock:before {\n  content: '\\f1bd';\n}\n.zmdi-screen-rotation:before {\n  content: '\\f1be';\n}\n.zmdi-search-for:before {\n  content: '\\f1bf';\n}\n.zmdi-search-in-file:before {\n  content: '\\f1c0';\n}\n.zmdi-search-in-page:before {\n  content: '\\f1c1';\n}\n.zmdi-search-replace:before {\n  content: '\\f1c2';\n}\n.zmdi-search:before {\n  content: '\\f1c3';\n}\n.zmdi-seat:before {\n  content: '\\f1c4';\n}\n.zmdi-settings-square:before {\n  content: '\\f1c5';\n}\n.zmdi-settings:before {\n  content: '\\f1c6';\n}\n.zmdi-shield-check:before {\n  content: '\\f1c7';\n}\n.zmdi-shield-security:before {\n  content: '\\f1c8';\n}\n.zmdi-shopping-basket:before {\n  content: '\\f1c9';\n}\n.zmdi-shopping-cart-plus:before {\n  content: '\\f1ca';\n}\n.zmdi-shopping-cart:before {\n  content: '\\f1cb';\n}\n.zmdi-sign-in:before {\n  content: '\\f1cc';\n}\n.zmdi-sort-amount-asc:before {\n  content: '\\f1cd';\n}\n.zmdi-sort-amount-desc:before {\n  content: '\\f1ce';\n}\n.zmdi-sort-asc:before {\n  content: '\\f1cf';\n}\n.zmdi-sort-desc:before {\n  content: '\\f1d0';\n}\n.zmdi-spellcheck:before {\n  content: '\\f1d1';\n}\n.zmdi-storage:before {\n  content: '\\f1d2';\n}\n.zmdi-store-24:before {\n  content: '\\f1d3';\n}\n.zmdi-store:before {\n  content: '\\f1d4';\n}\n.zmdi-subway:before {\n  content: '\\f1d5';\n}\n.zmdi-sun:before {\n  content: '\\f1d6';\n}\n.zmdi-tab-unselected:before {\n  content: '\\f1d7';\n}\n.zmdi-tab:before {\n  content: '\\f1d8';\n}\n.zmdi-tag-close:before {\n  content: '\\f1d9';\n}\n.zmdi-tag-more:before {\n  content: '\\f1da';\n}\n.zmdi-tag:before {\n  content: '\\f1db';\n}\n.zmdi-thumb-down:before {\n  content: '\\f1dc';\n}\n.zmdi-thumb-up-down:before {\n  content: '\\f1dd';\n}\n.zmdi-thumb-up:before {\n  content: '\\f1de';\n}\n.zmdi-ticket-star:before {\n  content: '\\f1df';\n}\n.zmdi-toll:before {\n  content: '\\f1e0';\n}\n.zmdi-toys:before {\n  content: '\\f1e1';\n}\n.zmdi-traffic:before {\n  content: '\\f1e2';\n}\n.zmdi-translate:before {\n  content: '\\f1e3';\n}\n.zmdi-triangle-down:before {\n  content: '\\f1e4';\n}\n.zmdi-triangle-up:before {\n  content: '\\f1e5';\n}\n.zmdi-truck:before {\n  content: '\\f1e6';\n}\n.zmdi-turning-sign:before {\n  content: '\\f1e7';\n}\n.zmdi-wallpaper:before {\n  content: '\\f1e8';\n}\n.zmdi-washing-machine:before {\n  content: '\\f1e9';\n}\n.zmdi-window-maximize:before {\n  content: '\\f1ea';\n}\n.zmdi-window-minimize:before {\n  content: '\\f1eb';\n}\n.zmdi-window-restore:before {\n  content: '\\f1ec';\n}\n.zmdi-wrench:before {\n  content: '\\f1ed';\n}\n.zmdi-zoom-in:before {\n  content: '\\f1ee';\n}\n.zmdi-zoom-out:before {\n  content: '\\f1ef';\n}\n.zmdi-alert-circle-o:before {\n  content: '\\f1f0';\n}\n.zmdi-alert-circle:before {\n  content: '\\f1f1';\n}\n.zmdi-alert-octagon:before {\n  content: '\\f1f2';\n}\n.zmdi-alert-polygon:before {\n  content: '\\f1f3';\n}\n.zmdi-alert-triangle:before {\n  content: '\\f1f4';\n}\n.zmdi-help-outline:before {\n  content: '\\f1f5';\n}\n.zmdi-help:before {\n  content: '\\f1f6';\n}\n.zmdi-info-outline:before {\n  content: '\\f1f7';\n}\n.zmdi-info:before {\n  content: '\\f1f8';\n}\n.zmdi-notifications-active:before {\n  content: '\\f1f9';\n}\n.zmdi-notifications-add:before {\n  content: '\\f1fa';\n}\n.zmdi-notifications-none:before {\n  content: '\\f1fb';\n}\n.zmdi-notifications-off:before {\n  content: '\\f1fc';\n}\n.zmdi-notifications-paused:before {\n  content: '\\f1fd';\n}\n.zmdi-notifications:before {\n  content: '\\f1fe';\n}\n.zmdi-account-add:before {\n  content: '\\f1ff';\n}\n.zmdi-account-box-mail:before {\n  content: '\\f200';\n}\n.zmdi-account-box-o:before {\n  content: '\\f201';\n}\n.zmdi-account-box-phone:before {\n  content: '\\f202';\n}\n.zmdi-account-box:before {\n  content: '\\f203';\n}\n.zmdi-account-calendar:before {\n  content: '\\f204';\n}\n.zmdi-account-circle:before {\n  content: '\\f205';\n}\n.zmdi-account-o:before {\n  content: '\\f206';\n}\n.zmdi-account:before {\n  content: '\\f207';\n}\n.zmdi-accounts-add:before {\n  content: '\\f208';\n}\n.zmdi-accounts-alt:before {\n  content: '\\f209';\n}\n.zmdi-accounts-list-alt:before {\n  content: '\\f20a';\n}\n.zmdi-accounts-list:before {\n  content: '\\f20b';\n}\n.zmdi-accounts-outline:before {\n  content: '\\f20c';\n}\n.zmdi-accounts:before {\n  content: '\\f20d';\n}\n.zmdi-face:before {\n  content: '\\f20e';\n}\n.zmdi-female:before {\n  content: '\\f20f';\n}\n.zmdi-male-alt:before {\n  content: '\\f210';\n}\n.zmdi-male-female:before {\n  content: '\\f211';\n}\n.zmdi-male:before {\n  content: '\\f212';\n}\n.zmdi-mood-bad:before {\n  content: '\\f213';\n}\n.zmdi-mood:before {\n  content: '\\f214';\n}\n.zmdi-run:before {\n  content: '\\f215';\n}\n.zmdi-walk:before {\n  content: '\\f216';\n}\n.zmdi-cloud-box:before {\n  content: '\\f217';\n}\n.zmdi-cloud-circle:before {\n  content: '\\f218';\n}\n.zmdi-cloud-done:before {\n  content: '\\f219';\n}\n.zmdi-cloud-download:before {\n  content: '\\f21a';\n}\n.zmdi-cloud-off:before {\n  content: '\\f21b';\n}\n.zmdi-cloud-outline-alt:before {\n  content: '\\f21c';\n}\n.zmdi-cloud-outline:before {\n  content: '\\f21d';\n}\n.zmdi-cloud-upload:before {\n  content: '\\f21e';\n}\n.zmdi-cloud:before {\n  content: '\\f21f';\n}\n.zmdi-download:before {\n  content: '\\f220';\n}\n.zmdi-file-plus:before {\n  content: '\\f221';\n}\n.zmdi-file-text:before {\n  content: '\\f222';\n}\n.zmdi-file:before {\n  content: '\\f223';\n}\n.zmdi-folder-outline:before {\n  content: '\\f224';\n}\n.zmdi-folder-person:before {\n  content: '\\f225';\n}\n.zmdi-folder-star-alt:before {\n  content: '\\f226';\n}\n.zmdi-folder-star:before {\n  content: '\\f227';\n}\n.zmdi-folder:before {\n  content: '\\f228';\n}\n.zmdi-gif:before {\n  content: '\\f229';\n}\n.zmdi-upload:before {\n  content: '\\f22a';\n}\n.zmdi-border-all:before {\n  content: '\\f22b';\n}\n.zmdi-border-bottom:before {\n  content: '\\f22c';\n}\n.zmdi-border-clear:before {\n  content: '\\f22d';\n}\n.zmdi-border-color:before {\n  content: '\\f22e';\n}\n.zmdi-border-horizontal:before {\n  content: '\\f22f';\n}\n.zmdi-border-inner:before {\n  content: '\\f230';\n}\n.zmdi-border-left:before {\n  content: '\\f231';\n}\n.zmdi-border-outer:before {\n  content: '\\f232';\n}\n.zmdi-border-right:before {\n  content: '\\f233';\n}\n.zmdi-border-style:before {\n  content: '\\f234';\n}\n.zmdi-border-top:before {\n  content: '\\f235';\n}\n.zmdi-border-vertical:before {\n  content: '\\f236';\n}\n.zmdi-copy:before {\n  content: '\\f237';\n}\n.zmdi-crop:before {\n  content: '\\f238';\n}\n.zmdi-format-align-center:before {\n  content: '\\f239';\n}\n.zmdi-format-align-justify:before {\n  content: '\\f23a';\n}\n.zmdi-format-align-left:before {\n  content: '\\f23b';\n}\n.zmdi-format-align-right:before {\n  content: '\\f23c';\n}\n.zmdi-format-bold:before {\n  content: '\\f23d';\n}\n.zmdi-format-clear-all:before {\n  content: '\\f23e';\n}\n.zmdi-format-clear:before {\n  content: '\\f23f';\n}\n.zmdi-format-color-fill:before {\n  content: '\\f240';\n}\n.zmdi-format-color-reset:before {\n  content: '\\f241';\n}\n.zmdi-format-color-text:before {\n  content: '\\f242';\n}\n.zmdi-format-indent-decrease:before {\n  content: '\\f243';\n}\n.zmdi-format-indent-increase:before {\n  content: '\\f244';\n}\n.zmdi-format-italic:before {\n  content: '\\f245';\n}\n.zmdi-format-line-spacing:before {\n  content: '\\f246';\n}\n.zmdi-format-list-bulleted:before {\n  content: '\\f247';\n}\n.zmdi-format-list-numbered:before {\n  content: '\\f248';\n}\n.zmdi-format-ltr:before {\n  content: '\\f249';\n}\n.zmdi-format-rtl:before {\n  content: '\\f24a';\n}\n.zmdi-format-size:before {\n  content: '\\f24b';\n}\n.zmdi-format-strikethrough-s:before {\n  content: '\\f24c';\n}\n.zmdi-format-strikethrough:before {\n  content: '\\f24d';\n}\n.zmdi-format-subject:before {\n  content: '\\f24e';\n}\n.zmdi-format-underlined:before {\n  content: '\\f24f';\n}\n.zmdi-format-valign-bottom:before {\n  content: '\\f250';\n}\n.zmdi-format-valign-center:before {\n  content: '\\f251';\n}\n.zmdi-format-valign-top:before {\n  content: '\\f252';\n}\n.zmdi-redo:before {\n  content: '\\f253';\n}\n.zmdi-select-all:before {\n  content: '\\f254';\n}\n.zmdi-space-bar:before {\n  content: '\\f255';\n}\n.zmdi-text-format:before {\n  content: '\\f256';\n}\n.zmdi-transform:before {\n  content: '\\f257';\n}\n.zmdi-undo:before {\n  content: '\\f258';\n}\n.zmdi-wrap-text:before {\n  content: '\\f259';\n}\n.zmdi-comment-alert:before {\n  content: '\\f25a';\n}\n.zmdi-comment-alt-text:before {\n  content: '\\f25b';\n}\n.zmdi-comment-alt:before {\n  content: '\\f25c';\n}\n.zmdi-comment-edit:before {\n  content: '\\f25d';\n}\n.zmdi-comment-image:before {\n  content: '\\f25e';\n}\n.zmdi-comment-list:before {\n  content: '\\f25f';\n}\n.zmdi-comment-more:before {\n  content: '\\f260';\n}\n.zmdi-comment-outline:before {\n  content: '\\f261';\n}\n.zmdi-comment-text-alt:before {\n  content: '\\f262';\n}\n.zmdi-comment-text:before {\n  content: '\\f263';\n}\n.zmdi-comment-video:before {\n  content: '\\f264';\n}\n.zmdi-comment:before {\n  content: '\\f265';\n}\n.zmdi-comments:before {\n  content: '\\f266';\n}\n.zmdi-check-all:before {\n  content: '\\f267';\n}\n.zmdi-check-circle-u:before {\n  content: '\\f268';\n}\n.zmdi-check-circle:before {\n  content: '\\f269';\n}\n.zmdi-check-square:before {\n  content: '\\f26a';\n}\n.zmdi-check:before {\n  content: '\\f26b';\n}\n.zmdi-circle-o:before {\n  content: '\\f26c';\n}\n.zmdi-circle:before {\n  content: '\\f26d';\n}\n.zmdi-dot-circle-alt:before {\n  content: '\\f26e';\n}\n.zmdi-dot-circle:before {\n  content: '\\f26f';\n}\n.zmdi-minus-circle-outline:before {\n  content: '\\f270';\n}\n.zmdi-minus-circle:before {\n  content: '\\f271';\n}\n.zmdi-minus-square:before {\n  content: '\\f272';\n}\n.zmdi-minus:before {\n  content: '\\f273';\n}\n.zmdi-plus-circle-o-duplicate:before {\n  content: '\\f274';\n}\n.zmdi-plus-circle-o:before {\n  content: '\\f275';\n}\n.zmdi-plus-circle:before {\n  content: '\\f276';\n}\n.zmdi-plus-square:before {\n  content: '\\f277';\n}\n.zmdi-plus:before {\n  content: '\\f278';\n}\n.zmdi-square-o:before {\n  content: '\\f279';\n}\n.zmdi-star-circle:before {\n  content: '\\f27a';\n}\n.zmdi-star-half:before {\n  content: '\\f27b';\n}\n.zmdi-star-outline:before {\n  content: '\\f27c';\n}\n.zmdi-star:before {\n  content: '\\f27d';\n}\n.zmdi-bluetooth-connected:before {\n  content: '\\f27e';\n}\n.zmdi-bluetooth-off:before {\n  content: '\\f27f';\n}\n.zmdi-bluetooth-search:before {\n  content: '\\f280';\n}\n.zmdi-bluetooth-setting:before {\n  content: '\\f281';\n}\n.zmdi-bluetooth:before {\n  content: '\\f282';\n}\n.zmdi-camera-add:before {\n  content: '\\f283';\n}\n.zmdi-camera-alt:before {\n  content: '\\f284';\n}\n.zmdi-camera-bw:before {\n  content: '\\f285';\n}\n.zmdi-camera-front:before {\n  content: '\\f286';\n}\n.zmdi-camera-mic:before {\n  content: '\\f287';\n}\n.zmdi-camera-party-mode:before {\n  content: '\\f288';\n}\n.zmdi-camera-rear:before {\n  content: '\\f289';\n}\n.zmdi-camera-roll:before {\n  content: '\\f28a';\n}\n.zmdi-camera-switch:before {\n  content: '\\f28b';\n}\n.zmdi-camera:before {\n  content: '\\f28c';\n}\n.zmdi-card-alert:before {\n  content: '\\f28d';\n}\n.zmdi-card-off:before {\n  content: '\\f28e';\n}\n.zmdi-card-sd:before {\n  content: '\\f28f';\n}\n.zmdi-card-sim:before {\n  content: '\\f290';\n}\n.zmdi-desktop-mac:before {\n  content: '\\f291';\n}\n.zmdi-desktop-windows:before {\n  content: '\\f292';\n}\n.zmdi-device-hub:before {\n  content: '\\f293';\n}\n.zmdi-devices-off:before {\n  content: '\\f294';\n}\n.zmdi-devices:before {\n  content: '\\f295';\n}\n.zmdi-dock:before {\n  content: '\\f296';\n}\n.zmdi-floppy:before {\n  content: '\\f297';\n}\n.zmdi-gamepad:before {\n  content: '\\f298';\n}\n.zmdi-gps-dot:before {\n  content: '\\f299';\n}\n.zmdi-gps-off:before {\n  content: '\\f29a';\n}\n.zmdi-gps:before {\n  content: '\\f29b';\n}\n.zmdi-headset-mic:before {\n  content: '\\f29c';\n}\n.zmdi-headset:before {\n  content: '\\f29d';\n}\n.zmdi-input-antenna:before {\n  content: '\\f29e';\n}\n.zmdi-input-composite:before {\n  content: '\\f29f';\n}\n.zmdi-input-hdmi:before {\n  content: '\\f2a0';\n}\n.zmdi-input-power:before {\n  content: '\\f2a1';\n}\n.zmdi-input-svideo:before {\n  content: '\\f2a2';\n}\n.zmdi-keyboard-hide:before {\n  content: '\\f2a3';\n}\n.zmdi-keyboard:before {\n  content: '\\f2a4';\n}\n.zmdi-laptop-chromebook:before {\n  content: '\\f2a5';\n}\n.zmdi-laptop-mac:before {\n  content: '\\f2a6';\n}\n.zmdi-laptop:before {\n  content: '\\f2a7';\n}\n.zmdi-mic-off:before {\n  content: '\\f2a8';\n}\n.zmdi-mic-outline:before {\n  content: '\\f2a9';\n}\n.zmdi-mic-setting:before {\n  content: '\\f2aa';\n}\n.zmdi-mic:before {\n  content: '\\f2ab';\n}\n.zmdi-mouse:before {\n  content: '\\f2ac';\n}\n.zmdi-network-alert:before {\n  content: '\\f2ad';\n}\n.zmdi-network-locked:before {\n  content: '\\f2ae';\n}\n.zmdi-network-off:before {\n  content: '\\f2af';\n}\n.zmdi-network-outline:before {\n  content: '\\f2b0';\n}\n.zmdi-network-setting:before {\n  content: '\\f2b1';\n}\n.zmdi-network:before {\n  content: '\\f2b2';\n}\n.zmdi-phone-bluetooth:before {\n  content: '\\f2b3';\n}\n.zmdi-phone-end:before {\n  content: '\\f2b4';\n}\n.zmdi-phone-forwarded:before {\n  content: '\\f2b5';\n}\n.zmdi-phone-in-talk:before {\n  content: '\\f2b6';\n}\n.zmdi-phone-locked:before {\n  content: '\\f2b7';\n}\n.zmdi-phone-missed:before {\n  content: '\\f2b8';\n}\n.zmdi-phone-msg:before {\n  content: '\\f2b9';\n}\n.zmdi-phone-paused:before {\n  content: '\\f2ba';\n}\n.zmdi-phone-ring:before {\n  content: '\\f2bb';\n}\n.zmdi-phone-setting:before {\n  content: '\\f2bc';\n}\n.zmdi-phone-sip:before {\n  content: '\\f2bd';\n}\n.zmdi-phone:before {\n  content: '\\f2be';\n}\n.zmdi-portable-wifi-changes:before {\n  content: '\\f2bf';\n}\n.zmdi-portable-wifi-off:before {\n  content: '\\f2c0';\n}\n.zmdi-portable-wifi:before {\n  content: '\\f2c1';\n}\n.zmdi-radio:before {\n  content: '\\f2c2';\n}\n.zmdi-reader:before {\n  content: '\\f2c3';\n}\n.zmdi-remote-control-alt:before {\n  content: '\\f2c4';\n}\n.zmdi-remote-control:before {\n  content: '\\f2c5';\n}\n.zmdi-router:before {\n  content: '\\f2c6';\n}\n.zmdi-scanner:before {\n  content: '\\f2c7';\n}\n.zmdi-smartphone-andrAdminid:before {\n  content: '\\f2c8';\n}\n.zmdi-smartphone-download:before {\n  content: '\\f2c9';\n}\n.zmdi-smartphone-erase:before {\n  content: '\\f2ca';\n}\n.zmdi-smartphone-info:before {\n  content: '\\f2cb';\n}\n.zmdi-smartphone-iphone:before {\n  content: '\\f2cc';\n}\n.zmdi-smartphone-landscape-lock:before {\n  content: '\\f2cd';\n}\n.zmdi-smartphone-landscape:before {\n  content: '\\f2ce';\n}\n.zmdi-smartphone-lock:before {\n  content: '\\f2cf';\n}\n.zmdi-smartphone-portrait-lock:before {\n  content: '\\f2d0';\n}\n.zmdi-smartphone-ring:before {\n  content: '\\f2d1';\n}\n.zmdi-smartphone-setting:before {\n  content: '\\f2d2';\n}\n.zmdi-smartphone-setup:before {\n  content: '\\f2d3';\n}\n.zmdi-smartphone:before {\n  content: '\\f2d4';\n}\n.zmdi-speaker:before {\n  content: '\\f2d5';\n}\n.zmdi-tablet-andrAdminid:before {\n  content: '\\f2d6';\n}\n.zmdi-tablet-mac:before {\n  content: '\\f2d7';\n}\n.zmdi-tablet:before {\n  content: '\\f2d8';\n}\n.zmdi-tv-alt-play:before {\n  content: '\\f2d9';\n}\n.zmdi-tv-list:before {\n  content: '\\f2da';\n}\n.zmdi-tv-play:before {\n  content: '\\f2db';\n}\n.zmdi-tv:before {\n  content: '\\f2dc';\n}\n.zmdi-usb:before {\n  content: '\\f2dd';\n}\n.zmdi-videocam-off:before {\n  content: '\\f2de';\n}\n.zmdi-videocam-switch:before {\n  content: '\\f2df';\n}\n.zmdi-videocam:before {\n  content: '\\f2e0';\n}\n.zmdi-watch:before {\n  content: '\\f2e1';\n}\n.zmdi-wifi-alt-2:before {\n  content: '\\f2e2';\n}\n.zmdi-wifi-alt:before {\n  content: '\\f2e3';\n}\n.zmdi-wifi-info:before {\n  content: '\\f2e4';\n}\n.zmdi-wifi-lock:before {\n  content: '\\f2e5';\n}\n.zmdi-wifi-off:before {\n  content: '\\f2e6';\n}\n.zmdi-wifi-outline:before {\n  content: '\\f2e7';\n}\n.zmdi-wifi:before {\n  content: '\\f2e8';\n}\n.zmdi-arrow-left-bottom:before {\n  content: '\\f2e9';\n}\n.zmdi-arrow-left:before {\n  content: '\\f2ea';\n}\n.zmdi-arrow-merge:before {\n  content: '\\f2eb';\n}\n.zmdi-arrow-missed:before {\n  content: '\\f2ec';\n}\n.zmdi-arrow-right-top:before {\n  content: '\\f2ed';\n}\n.zmdi-arrow-right:before {\n  content: '\\f2ee';\n}\n.zmdi-arrow-split:before {\n  content: '\\f2ef';\n}\n.zmdi-arrows:before {\n  content: '\\f2f0';\n}\n.zmdi-caret-down-circle:before {\n  content: '\\f2f1';\n}\n.zmdi-caret-down:before {\n  content: '\\f2f2';\n}\n.zmdi-caret-left-circle:before {\n  content: '\\f2f3';\n}\n.zmdi-caret-left:before {\n  content: '\\f2f4';\n}\n.zmdi-caret-right-circle:before {\n  content: '\\f2f5';\n}\n.zmdi-caret-right:before {\n  content: '\\f2f6';\n}\n.zmdi-caret-up-circle:before {\n  content: '\\f2f7';\n}\n.zmdi-caret-up:before {\n  content: '\\f2f8';\n}\n.zmdi-chevron-down:before {\n  content: '\\f2f9';\n}\n.zmdi-chevron-left:before {\n  content: '\\f2fa';\n}\n.zmdi-chevron-right:before {\n  content: '\\f2fb';\n}\n.zmdi-chevron-up:before {\n  content: '\\f2fc';\n}\n.zmdi-forward:before {\n  content: '\\f2fd';\n}\n.zmdi-long-arrow-down:before {\n  content: '\\f2fe';\n}\n.zmdi-long-arrow-left:before {\n  content: '\\f2ff';\n}\n.zmdi-long-arrow-return:before {\n  content: '\\f300';\n}\n.zmdi-long-arrow-right:before {\n  content: '\\f301';\n}\n.zmdi-long-arrow-tab:before {\n  content: '\\f302';\n}\n.zmdi-long-arrow-up:before {\n  content: '\\f303';\n}\n.zmdi-rotate-ccw:before {\n  content: '\\f304';\n}\n.zmdi-rotate-cw:before {\n  content: '\\f305';\n}\n.zmdi-rotate-left:before {\n  content: '\\f306';\n}\n.zmdi-rotate-right:before {\n  content: '\\f307';\n}\n.zmdi-square-down:before {\n  content: '\\f308';\n}\n.zmdi-square-right:before {\n  content: '\\f309';\n}\n.zmdi-swap-alt:before {\n  content: '\\f30a';\n}\n.zmdi-swap-vertical-circle:before {\n  content: '\\f30b';\n}\n.zmdi-swap-vertical:before {\n  content: '\\f30c';\n}\n.zmdi-swap:before {\n  content: '\\f30d';\n}\n.zmdi-trending-down:before {\n  content: '\\f30e';\n}\n.zmdi-trending-flat:before {\n  content: '\\f30f';\n}\n.zmdi-trending-up:before {\n  content: '\\f310';\n}\n.zmdi-unfold-less:before {\n  content: '\\f311';\n}\n.zmdi-unfold-more:before {\n  content: '\\f312';\n}\n.zmdi-apps:before {\n  content: '\\f313';\n}\n.zmdi-grid-off:before {\n  content: '\\f314';\n}\n.zmdi-grid:before {\n  content: '\\f315';\n}\n.zmdi-view-agenda:before {\n  content: '\\f316';\n}\n.zmdi-view-array:before {\n  content: '\\f317';\n}\n.zmdi-view-carousel:before {\n  content: '\\f318';\n}\n.zmdi-view-column:before {\n  content: '\\f319';\n}\n.zmdi-view-comfy:before {\n  content: '\\f31a';\n}\n.zmdi-view-compact:before {\n  content: '\\f31b';\n}\n.zmdi-view-dashboard:before {\n  content: '\\f31c';\n}\n.zmdi-view-day:before {\n  content: '\\f31d';\n}\n.zmdi-view-headline:before {\n  content: '\\f31e';\n}\n.zmdi-view-list-alt:before {\n  content: '\\f31f';\n}\n.zmdi-view-list:before {\n  content: '\\f320';\n}\n.zmdi-view-module:before {\n  content: '\\f321';\n}\n.zmdi-view-quilt:before {\n  content: '\\f322';\n}\n.zmdi-view-stream:before {\n  content: '\\f323';\n}\n.zmdi-view-subtitles:before {\n  content: '\\f324';\n}\n.zmdi-view-toc:before {\n  content: '\\f325';\n}\n.zmdi-view-web:before {\n  content: '\\f326';\n}\n.zmdi-view-week:before {\n  content: '\\f327';\n}\n.zmdi-widgets:before {\n  content: '\\f328';\n}\n.zmdi-alarm-check:before {\n  content: '\\f329';\n}\n.zmdi-alarm-off:before {\n  content: '\\f32a';\n}\n.zmdi-alarm-plus:before {\n  content: '\\f32b';\n}\n.zmdi-alarm-snooze:before {\n  content: '\\f32c';\n}\n.zmdi-alarm:before {\n  content: '\\f32d';\n}\n.zmdi-calendar-alt:before {\n  content: '\\f32e';\n}\n.zmdi-calendar-check:before {\n  content: '\\f32f';\n}\n.zmdi-calendar-close:before {\n  content: '\\f330';\n}\n.zmdi-calendar-note:before {\n  content: '\\f331';\n}\n.zmdi-calendar:before {\n  content: '\\f332';\n}\n.zmdi-time-countdown:before {\n  content: '\\f333';\n}\n.zmdi-time-interval:before {\n  content: '\\f334';\n}\n.zmdi-time-restore-setting:before {\n  content: '\\f335';\n}\n.zmdi-time-restore:before {\n  content: '\\f336';\n}\n.zmdi-time:before {\n  content: '\\f337';\n}\n.zmdi-timer-off:before {\n  content: '\\f338';\n}\n.zmdi-timer:before {\n  content: '\\f339';\n}\n.zmdi-andrAdminid-alt:before {\n  content: '\\f33a';\n}\n.zmdi-andrAdminid:before {\n  content: '\\f33b';\n}\n.zmdi-apple:before {\n  content: '\\f33c';\n}\n.zmdi-behance:before {\n  content: '\\f33d';\n}\n.zmdi-codepen:before {\n  content: '\\f33e';\n}\n.zmdi-dribbble:before {\n  content: '\\f33f';\n}\n.zmdi-dropbox:before {\n  content: '\\f340';\n}\n.zmdi-evernote:before {\n  content: '\\f341';\n}\n.zmdi-facebook-box:before {\n  content: '\\f342';\n}\n.zmdi-facebook:before {\n  content: '\\f343';\n}\n.zmdi-github-box:before {\n  content: '\\f344';\n}\n.zmdi-github:before {\n  content: '\\f345';\n}\n.zmdi-google-drive:before {\n  content: '\\f346';\n}\n.zmdi-google-earth:before {\n  content: '\\f347';\n}\n.zmdi-google-glass:before {\n  content: '\\f348';\n}\n.zmdi-google-maps:before {\n  content: '\\f349';\n}\n.zmdi-google-pages:before {\n  content: '\\f34a';\n}\n.zmdi-google-play:before {\n  content: '\\f34b';\n}\n.zmdi-google-plus-box:before {\n  content: '\\f34c';\n}\n.zmdi-google-plus:before {\n  content: '\\f34d';\n}\n.zmdi-google:before {\n  content: '\\f34e';\n}\n.zmdi-instagram:before {\n  content: '\\f34f';\n}\n.zmdi-language-css3:before {\n  content: '\\f350';\n}\n.zmdi-language-html5:before {\n  content: '\\f351';\n}\n.zmdi-language-javascript:before {\n  content: '\\f352';\n}\n.zmdi-language-python-alt:before {\n  content: '\\f353';\n}\n.zmdi-language-python:before {\n  content: '\\f354';\n}\n.zmdi-lastfm:before {\n  content: '\\f355';\n}\n.zmdi-linkedin-box:before {\n  content: '\\f356';\n}\n.zmdi-paypal:before {\n  content: '\\f357';\n}\n.zmdi-pinterest-box:before {\n  content: '\\f358';\n}\n.zmdi-pocket:before {\n  content: '\\f359';\n}\n.zmdi-polymer:before {\n  content: '\\f35a';\n}\n.zmdi-share:before {\n  content: '\\f35b';\n}\n.zmdi-stackoverflow:before {\n  content: '\\f35c';\n}\n.zmdi-steam-square:before {\n  content: '\\f35d';\n}\n.zmdi-steam:before {\n  content: '\\f35e';\n}\n.zmdi-twitter-box:before {\n  content: '\\f35f';\n}\n.zmdi-twitter:before {\n  content: '\\f360';\n}\n.zmdi-vk:before {\n  content: '\\f361';\n}\n.zmdi-wikipedia:before {\n  content: '\\f362';\n}\n.zmdi-windows:before {\n  content: '\\f363';\n}\n.zmdi-aspect-ratio-alt:before {\n  content: '\\f364';\n}\n.zmdi-aspect-ratio:before {\n  content: '\\f365';\n}\n.zmdi-blur-circular:before {\n  content: '\\f366';\n}\n.zmdi-blur-linear:before {\n  content: '\\f367';\n}\n.zmdi-blur-off:before {\n  content: '\\f368';\n}\n.zmdi-blur:before {\n  content: '\\f369';\n}\n.zmdi-brightness-2:before {\n  content: '\\f36a';\n}\n.zmdi-brightness-3:before {\n  content: '\\f36b';\n}\n.zmdi-brightness-4:before {\n  content: '\\f36c';\n}\n.zmdi-brightness-5:before {\n  content: '\\f36d';\n}\n.zmdi-brightness-6:before {\n  content: '\\f36e';\n}\n.zmdi-brightness-7:before {\n  content: '\\f36f';\n}\n.zmdi-brightness-auto:before {\n  content: '\\f370';\n}\n.zmdi-brightness-setting:before {\n  content: '\\f371';\n}\n.zmdi-broken-image:before {\n  content: '\\f372';\n}\n.zmdi-center-focus-strong:before {\n  content: '\\f373';\n}\n.zmdi-center-focus-weak:before {\n  content: '\\f374';\n}\n.zmdi-compare:before {\n  content: '\\f375';\n}\n.zmdi-crop-16-9:before {\n  content: '\\f376';\n}\n.zmdi-crop-3-2:before {\n  content: '\\f377';\n}\n.zmdi-crop-5-4:before {\n  content: '\\f378';\n}\n.zmdi-crop-7-5:before {\n  content: '\\f379';\n}\n.zmdi-crop-din:before {\n  content: '\\f37a';\n}\n.zmdi-crop-free:before {\n  content: '\\f37b';\n}\n.zmdi-crop-landscape:before {\n  content: '\\f37c';\n}\n.zmdi-crop-portrait:before {\n  content: '\\f37d';\n}\n.zmdi-crop-square:before {\n  content: '\\f37e';\n}\n.zmdi-exposure-alt:before {\n  content: '\\f37f';\n}\n.zmdi-exposure:before {\n  content: '\\f380';\n}\n.zmdi-filter-b-and-w:before {\n  content: '\\f381';\n}\n.zmdi-filter-center-focus:before {\n  content: '\\f382';\n}\n.zmdi-filter-frames:before {\n  content: '\\f383';\n}\n.zmdi-filter-tilt-shift:before {\n  content: '\\f384';\n}\n.zmdi-gradient:before {\n  content: '\\f385';\n}\n.zmdi-grain:before {\n  content: '\\f386';\n}\n.zmdi-graphic-eq:before {\n  content: '\\f387';\n}\n.zmdi-hdr-off:before {\n  content: '\\f388';\n}\n.zmdi-hdr-strong:before {\n  content: '\\f389';\n}\n.zmdi-hdr-weak:before {\n  content: '\\f38a';\n}\n.zmdi-hdr:before {\n  content: '\\f38b';\n}\n.zmdi-iridescent:before {\n  content: '\\f38c';\n}\n.zmdi-leak-off:before {\n  content: '\\f38d';\n}\n.zmdi-leak:before {\n  content: '\\f38e';\n}\n.zmdi-looks:before {\n  content: '\\f38f';\n}\n.zmdi-loupe:before {\n  content: '\\f390';\n}\n.zmdi-panorama-horizontal:before {\n  content: '\\f391';\n}\n.zmdi-panorama-vertical:before {\n  content: '\\f392';\n}\n.zmdi-panorama-wide-angle:before {\n  content: '\\f393';\n}\n.zmdi-photo-size-select-large:before {\n  content: '\\f394';\n}\n.zmdi-photo-size-select-small:before {\n  content: '\\f395';\n}\n.zmdi-picture-in-picture:before {\n  content: '\\f396';\n}\n.zmdi-slideshow:before {\n  content: '\\f397';\n}\n.zmdi-texture:before {\n  content: '\\f398';\n}\n.zmdi-tonality:before {\n  content: '\\f399';\n}\n.zmdi-vignette:before {\n  content: '\\f39a';\n}\n.zmdi-wb-auto:before {\n  content: '\\f39b';\n}\n.zmdi-eject-alt:before {\n  content: '\\f39c';\n}\n.zmdi-eject:before {\n  content: '\\f39d';\n}\n.zmdi-equalizer:before {\n  content: '\\f39e';\n}\n.zmdi-fast-forward:before {\n  content: '\\f39f';\n}\n.zmdi-fast-rewind:before {\n  content: '\\f3a0';\n}\n.zmdi-forward-10:before {\n  content: '\\f3a1';\n}\n.zmdi-forward-30:before {\n  content: '\\f3a2';\n}\n.zmdi-forward-5:before {\n  content: '\\f3a3';\n}\n.zmdi-hearing:before {\n  content: '\\f3a4';\n}\n.zmdi-pause-circle-outline:before {\n  content: '\\f3a5';\n}\n.zmdi-pause-circle:before {\n  content: '\\f3a6';\n}\n.zmdi-pause:before {\n  content: '\\f3a7';\n}\n.zmdi-play-circle-outline:before {\n  content: '\\f3a8';\n}\n.zmdi-play-circle:before {\n  content: '\\f3a9';\n}\n.zmdi-play:before {\n  content: '\\f3aa';\n}\n.zmdi-playlist-audio:before {\n  content: '\\f3ab';\n}\n.zmdi-playlist-plus:before {\n  content: '\\f3ac';\n}\n.zmdi-repeat-one:before {\n  content: '\\f3ad';\n}\n.zmdi-repeat:before {\n  content: '\\f3ae';\n}\n.zmdi-replay-10:before {\n  content: '\\f3af';\n}\n.zmdi-replay-30:before {\n  content: '\\f3b0';\n}\n.zmdi-replay-5:before {\n  content: '\\f3b1';\n}\n.zmdi-replay:before {\n  content: '\\f3b2';\n}\n.zmdi-shuffle:before {\n  content: '\\f3b3';\n}\n.zmdi-skip-next:before {\n  content: '\\f3b4';\n}\n.zmdi-skip-previous:before {\n  content: '\\f3b5';\n}\n.zmdi-stop:before {\n  content: '\\f3b6';\n}\n.zmdi-surround-sound:before {\n  content: '\\f3b7';\n}\n.zmdi-tune:before {\n  content: '\\f3b8';\n}\n.zmdi-volume-down:before {\n  content: '\\f3b9';\n}\n.zmdi-volume-mute:before {\n  content: '\\f3ba';\n}\n.zmdi-volume-off:before {\n  content: '\\f3bb';\n}\n.zmdi-volume-up:before {\n  content: '\\f3bc';\n}\n.zmdi-n-1-square:before {\n  content: '\\f3bd';\n}\n.zmdi-n-2-square:before {\n  content: '\\f3be';\n}\n.zmdi-n-3-square:before {\n  content: '\\f3bf';\n}\n.zmdi-n-4-square:before {\n  content: '\\f3c0';\n}\n.zmdi-n-5-square:before {\n  content: '\\f3c1';\n}\n.zmdi-n-6-square:before {\n  content: '\\f3c2';\n}\n.zmdi-neg-1:before {\n  content: '\\f3c3';\n}\n.zmdi-neg-2:before {\n  content: '\\f3c4';\n}\n.zmdi-plus-1:before {\n  content: '\\f3c5';\n}\n.zmdi-plus-2:before {\n  content: '\\f3c6';\n}\n.zmdi-sec-10:before {\n  content: '\\f3c7';\n}\n.zmdi-sec-3:before {\n  content: '\\f3c8';\n}\n.zmdi-zero:before {\n  content: '\\f3c9';\n}\n.zmdi-airline-seat-flat-angled:before {\n  content: '\\f3ca';\n}\n.zmdi-airline-seat-flat:before {\n  content: '\\f3cb';\n}\n.zmdi-airline-seat-individual-suite:before {\n  content: '\\f3cc';\n}\n.zmdi-airline-seat-legroom-extra:before {\n  content: '\\f3cd';\n}\n.zmdi-airline-seat-legroom-normal:before {\n  content: '\\f3ce';\n}\n.zmdi-airline-seat-legroom-reduced:before {\n  content: '\\f3cf';\n}\n.zmdi-airline-seat-recline-extra:before {\n  content: '\\f3d0';\n}\n.zmdi-airline-seat-recline-normal:before {\n  content: '\\f3d1';\n}\n.zmdi-airplay:before {\n  content: '\\f3d2';\n}\n.zmdi-closed-caption:before {\n  content: '\\f3d3';\n}\n.zmdi-confirmation-number:before {\n  content: '\\f3d4';\n}\n.zmdi-developer-board:before {\n  content: '\\f3d5';\n}\n.zmdi-disc-full:before {\n  content: '\\f3d6';\n}\n.zmdi-explicit:before {\n  content: '\\f3d7';\n}\n.zmdi-flight-land:before {\n  content: '\\f3d8';\n}\n.zmdi-flight-takeoff:before {\n  content: '\\f3d9';\n}\n.zmdi-flip-to-back:before {\n  content: '\\f3da';\n}\n.zmdi-flip-to-front:before {\n  content: '\\f3db';\n}\n.zmdi-group-work:before {\n  content: '\\f3dc';\n}\n.zmdi-hd:before {\n  content: '\\f3dd';\n}\n.zmdi-hq:before {\n  content: '\\f3de';\n}\n.zmdi-markunread-mailbox:before {\n  content: '\\f3df';\n}\n.zmdi-memory:before {\n  content: '\\f3e0';\n}\n.zmdi-nfc:before {\n  content: '\\f3e1';\n}\n.zmdi-play-for-work:before {\n  content: '\\f3e2';\n}\n.zmdi-power-input:before {\n  content: '\\f3e3';\n}\n.zmdi-present-to-all:before {\n  content: '\\f3e4';\n}\n.zmdi-satellite:before {\n  content: '\\f3e5';\n}\n.zmdi-tap-and-play:before {\n  content: '\\f3e6';\n}\n.zmdi-vibration:before {\n  content: '\\f3e7';\n}\n.zmdi-voicemail:before {\n  content: '\\f3e8';\n}\n.zmdi-group:before {\n  content: '\\f3e9';\n}\n.zmdi-rss:before {\n  content: '\\f3ea';\n}\n.zmdi-shape:before {\n  content: '\\f3eb';\n}\n.zmdi-spinner:before {\n  content: '\\f3ec';\n}\n.zmdi-ungroup:before {\n  content: '\\f3ed';\n}\n.zmdi-500px:before {\n  content: '\\f3ee';\n}\n.zmdi-8tracks:before {\n  content: '\\f3ef';\n}\n.zmdi-amazon:before {\n  content: '\\f3f0';\n}\n.zmdi-blogger:before {\n  content: '\\f3f1';\n}\n.zmdi-delicious:before {\n  content: '\\f3f2';\n}\n.zmdi-disqus:before {\n  content: '\\f3f3';\n}\n.zmdi-flattr:before {\n  content: '\\f3f4';\n}\n.zmdi-flickr:before {\n  content: '\\f3f5';\n}\n.zmdi-github-alt:before {\n  content: '\\f3f6';\n}\n.zmdi-google-old:before {\n  content: '\\f3f7';\n}\n.zmdi-linkedin:before {\n  content: '\\f3f8';\n}\n.zmdi-odnoklassniki:before {\n  content: '\\f3f9';\n}\n.zmdi-outlook:before {\n  content: '\\f3fa';\n}\n.zmdi-paypal-alt:before {\n  content: '\\f3fb';\n}\n.zmdi-pinterest:before {\n  content: '\\f3fc';\n}\n.zmdi-playstation:before {\n  content: '\\f3fd';\n}\n.zmdi-reddit:before {\n  content: '\\f3fe';\n}\n.zmdi-skype:before {\n  content: '\\f3ff';\n}\n.zmdi-slideshare:before {\n  content: '\\f400';\n}\n.zmdi-soundcloud:before {\n  content: '\\f401';\n}\n.zmdi-tumblr:before {\n  content: '\\f402';\n}\n.zmdi-twitch:before {\n  content: '\\f403';\n}\n.zmdi-vimeo:before {\n  content: '\\f404';\n}\n.zmdi-whatsapp:before {\n  content: '\\f405';\n}\n.zmdi-xbox:before {\n  content: '\\f406';\n}\n.zmdi-yahoo:before {\n  content: '\\f407';\n}\n.zmdi-youtube-play:before {\n  content: '\\f408';\n}\n.zmdi-youtube:before {\n  content: '\\f409';\n}\n.zmdi-3d-rotation:before {\n  content: '\\f101';\n}\n.zmdi-airplane-off:before {\n  content: '\\f102';\n}\n.zmdi-airplane:before {\n  content: '\\f103';\n}\n.zmdi-album:before {\n  content: '\\f104';\n}\n.zmdi-archive:before {\n  content: '\\f105';\n}\n.zmdi-assignment-account:before {\n  content: '\\f106';\n}\n.zmdi-assignment-alert:before {\n  content: '\\f107';\n}\n.zmdi-assignment-check:before {\n  content: '\\f108';\n}\n.zmdi-assignment-o:before {\n  content: '\\f109';\n}\n.zmdi-assignment-return:before {\n  content: '\\f10a';\n}\n.zmdi-assignment-returned:before {\n  content: '\\f10b';\n}\n.zmdi-assignment:before {\n  content: '\\f10c';\n}\n.zmdi-attachment-alt:before {\n  content: '\\f10d';\n}\n.zmdi-attachment:before {\n  content: '\\f10e';\n}\n.zmdi-audio:before {\n  content: '\\f10f';\n}\n.zmdi-badge-check:before {\n  content: '\\f110';\n}\n.zmdi-balance-wallet:before {\n  content: '\\f111';\n}\n.zmdi-balance:before {\n  content: '\\f112';\n}\n.zmdi-battery-alert:before {\n  content: '\\f113';\n}\n.zmdi-battery-flash:before {\n  content: '\\f114';\n}\n.zmdi-battery-unknown:before {\n  content: '\\f115';\n}\n.zmdi-battery:before {\n  content: '\\f116';\n}\n.zmdi-bike:before {\n  content: '\\f117';\n}\n.zmdi-block-alt:before {\n  content: '\\f118';\n}\n.zmdi-block:before {\n  content: '\\f119';\n}\n.zmdi-boat:before {\n  content: '\\f11a';\n}\n.zmdi-book-image:before {\n  content: '\\f11b';\n}\n.zmdi-book:before {\n  content: '\\f11c';\n}\n.zmdi-bookmark-outline:before {\n  content: '\\f11d';\n}\n.zmdi-bookmark:before {\n  content: '\\f11e';\n}\n.zmdi-brush:before {\n  content: '\\f11f';\n}\n.zmdi-bug:before {\n  content: '\\f120';\n}\n.zmdi-bus:before {\n  content: '\\f121';\n}\n.zmdi-cake:before {\n  content: '\\f122';\n}\n.zmdi-car-taxi:before {\n  content: '\\f123';\n}\n.zmdi-car-wash:before {\n  content: '\\f124';\n}\n.zmdi-car:before {\n  content: '\\f125';\n}\n.zmdi-card-giftcard:before {\n  content: '\\f126';\n}\n.zmdi-card-membership:before {\n  content: '\\f127';\n}\n.zmdi-card-travel:before {\n  content: '\\f128';\n}\n.zmdi-card:before {\n  content: '\\f129';\n}\n.zmdi-case-check:before {\n  content: '\\f12a';\n}\n.zmdi-case-download:before {\n  content: '\\f12b';\n}\n.zmdi-case-play:before {\n  content: '\\f12c';\n}\n.zmdi-case:before {\n  content: '\\f12d';\n}\n.zmdi-cast-connected:before {\n  content: '\\f12e';\n}\n.zmdi-cast:before {\n  content: '\\f12f';\n}\n.zmdi-chart-donut:before {\n  content: '\\f130';\n}\n.zmdi-chart:before {\n  content: '\\f131';\n}\n.zmdi-city-alt:before {\n  content: '\\f132';\n}\n.zmdi-city:before {\n  content: '\\f133';\n}\n.zmdi-close-circle-o:before {\n  content: '\\f134';\n}\n.zmdi-close-circle:before {\n  content: '\\f135';\n}\n.zmdi-close:before {\n  content: '\\f136';\n}\n.zmdi-cocktail:before {\n  content: '\\f137';\n}\n.zmdi-code-setting:before {\n  content: '\\f138';\n}\n.zmdi-code-smartphone:before {\n  content: '\\f139';\n}\n.zmdi-code:before {\n  content: '\\f13a';\n}\n.zmdi-coffee:before {\n  content: '\\f13b';\n}\n.zmdi-collection-bookmark:before {\n  content: '\\f13c';\n}\n.zmdi-collection-case-play:before {\n  content: '\\f13d';\n}\n.zmdi-collection-folder-image:before {\n  content: '\\f13e';\n}\n.zmdi-collection-image-o:before {\n  content: '\\f13f';\n}\n.zmdi-collection-image:before {\n  content: '\\f140';\n}\n.zmdi-collection-item-1:before {\n  content: '\\f141';\n}\n.zmdi-collection-item-2:before {\n  content: '\\f142';\n}\n.zmdi-collection-item-3:before {\n  content: '\\f143';\n}\n.zmdi-collection-item-4:before {\n  content: '\\f144';\n}\n.zmdi-collection-item-5:before {\n  content: '\\f145';\n}\n.zmdi-collection-item-6:before {\n  content: '\\f146';\n}\n.zmdi-collection-item-7:before {\n  content: '\\f147';\n}\n.zmdi-collection-item-8:before {\n  content: '\\f148';\n}\n.zmdi-collection-item-9-plus:before {\n  content: '\\f149';\n}\n.zmdi-collection-item-9:before {\n  content: '\\f14a';\n}\n.zmdi-collection-item:before {\n  content: '\\f14b';\n}\n.zmdi-collection-music:before {\n  content: '\\f14c';\n}\n.zmdi-collection-pdf:before {\n  content: '\\f14d';\n}\n.zmdi-collection-plus:before {\n  content: '\\f14e';\n}\n.zmdi-collection-speaker:before {\n  content: '\\f14f';\n}\n.zmdi-collection-text:before {\n  content: '\\f150';\n}\n.zmdi-collection-video:before {\n  content: '\\f151';\n}\n.zmdi-compass:before {\n  content: '\\f152';\n}\n.zmdi-cutlery:before {\n  content: '\\f153';\n}\n.zmdi-delete:before {\n  content: '\\f154';\n}\n.zmdi-dialpad:before {\n  content: '\\f155';\n}\n.zmdi-dns:before {\n  content: '\\f156';\n}\n.zmdi-drink:before {\n  content: '\\f157';\n}\n.zmdi-edit:before {\n  content: '\\f158';\n}\n.zmdi-email-open:before {\n  content: '\\f159';\n}\n.zmdi-email:before {\n  content: '\\f15a';\n}\n.zmdi-eye-off:before {\n  content: '\\f15b';\n}\n.zmdi-eye:before {\n  content: '\\f15c';\n}\n.zmdi-eyedropper:before {\n  content: '\\f15d';\n}\n.zmdi-favorite-outline:before {\n  content: '\\f15e';\n}\n.zmdi-favorite:before {\n  content: '\\f15f';\n}\n.zmdi-filter-list:before {\n  content: '\\f160';\n}\n.zmdi-fire:before {\n  content: '\\f161';\n}\n.zmdi-flag:before {\n  content: '\\f162';\n}\n.zmdi-flare:before {\n  content: '\\f163';\n}\n.zmdi-flash-auto:before {\n  content: '\\f164';\n}\n.zmdi-flash-off:before {\n  content: '\\f165';\n}\n.zmdi-flash:before {\n  content: '\\f166';\n}\n.zmdi-flip:before {\n  content: '\\f167';\n}\n.zmdi-flower-alt:before {\n  content: '\\f168';\n}\n.zmdi-flower:before {\n  content: '\\f169';\n}\n.zmdi-font:before {\n  content: '\\f16a';\n}\n.zmdi-fullscreen-alt:before {\n  content: '\\f16b';\n}\n.zmdi-fullscreen-exit:before {\n  content: '\\f16c';\n}\n.zmdi-fullscreen:before {\n  content: '\\f16d';\n}\n.zmdi-functions:before {\n  content: '\\f16e';\n}\n.zmdi-gas-station:before {\n  content: '\\f16f';\n}\n.zmdi-gesture:before {\n  content: '\\f170';\n}\n.zmdi-globe-alt:before {\n  content: '\\f171';\n}\n.zmdi-globe-lock:before {\n  content: '\\f172';\n}\n.zmdi-globe:before {\n  content: '\\f173';\n}\n.zmdi-graduation-cap:before {\n  content: '\\f174';\n}\n.zmdi-home:before {\n  content: '\\f175';\n}\n.zmdi-hospital-alt:before {\n  content: '\\f176';\n}\n.zmdi-hospital:before {\n  content: '\\f177';\n}\n.zmdi-hotel:before {\n  content: '\\f178';\n}\n.zmdi-hourglass-alt:before {\n  content: '\\f179';\n}\n.zmdi-hourglass-outline:before {\n  content: '\\f17a';\n}\n.zmdi-hourglass:before {\n  content: '\\f17b';\n}\n.zmdi-http:before {\n  content: '\\f17c';\n}\n.zmdi-image-alt:before {\n  content: '\\f17d';\n}\n.zmdi-image-o:before {\n  content: '\\f17e';\n}\n.zmdi-image:before {\n  content: '\\f17f';\n}\n.zmdi-inbox:before {\n  content: '\\f180';\n}\n.zmdi-invert-colors-off:before {\n  content: '\\f181';\n}\n.zmdi-invert-colors:before {\n  content: '\\f182';\n}\n.zmdi-key:before {\n  content: '\\f183';\n}\n.zmdi-label-alt-outline:before {\n  content: '\\f184';\n}\n.zmdi-label-alt:before {\n  content: '\\f185';\n}\n.zmdi-label-heart:before {\n  content: '\\f186';\n}\n.zmdi-label:before {\n  content: '\\f187';\n}\n.zmdi-labels:before {\n  content: '\\f188';\n}\n.zmdi-lamp:before {\n  content: '\\f189';\n}\n.zmdi-landscape:before {\n  content: '\\f18a';\n}\n.zmdi-layers-off:before {\n  content: '\\f18b';\n}\n.zmdi-layers:before {\n  content: '\\f18c';\n}\n.zmdi-library:before {\n  content: '\\f18d';\n}\n.zmdi-link:before {\n  content: '\\f18e';\n}\n.zmdi-lock-open:before {\n  content: '\\f18f';\n}\n.zmdi-lock-outline:before {\n  content: '\\f190';\n}\n.zmdi-lock:before {\n  content: '\\f191';\n}\n.zmdi-mail-reply-all:before {\n  content: '\\f192';\n}\n.zmdi-mail-reply:before {\n  content: '\\f193';\n}\n.zmdi-mail-send:before {\n  content: '\\f194';\n}\n.zmdi-mall:before {\n  content: '\\f195';\n}\n.zmdi-map:before {\n  content: '\\f196';\n}\n.zmdi-menu:before {\n  content: '\\f197';\n}\n.zmdi-money-box:before {\n  content: '\\f198';\n}\n.zmdi-money-off:before {\n  content: '\\f199';\n}\n.zmdi-money:before {\n  content: '\\f19a';\n}\n.zmdi-more-vert:before {\n  content: '\\f19b';\n}\n.zmdi-more:before {\n  content: '\\f19c';\n}\n.zmdi-movie-alt:before {\n  content: '\\f19d';\n}\n.zmdi-movie:before {\n  content: '\\f19e';\n}\n.zmdi-nature-people:before {\n  content: '\\f19f';\n}\n.zmdi-nature:before {\n  content: '\\f1a0';\n}\n.zmdi-navigation:before {\n  content: '\\f1a1';\n}\n.zmdi-open-in-browser:before {\n  content: '\\f1a2';\n}\n.zmdi-open-in-new:before {\n  content: '\\f1a3';\n}\n.zmdi-palette:before {\n  content: '\\f1a4';\n}\n.zmdi-parking:before {\n  content: '\\f1a5';\n}\n.zmdi-pin-account:before {\n  content: '\\f1a6';\n}\n.zmdi-pin-assistant:before {\n  content: '\\f1a7';\n}\n.zmdi-pin-drop:before {\n  content: '\\f1a8';\n}\n.zmdi-pin-help:before {\n  content: '\\f1a9';\n}\n.zmdi-pin-off:before {\n  content: '\\f1aa';\n}\n.zmdi-pin:before {\n  content: '\\f1ab';\n}\n.zmdi-pizza:before {\n  content: '\\f1ac';\n}\n.zmdi-plaster:before {\n  content: '\\f1ad';\n}\n.zmdi-power-setting:before {\n  content: '\\f1ae';\n}\n.zmdi-power:before {\n  content: '\\f1af';\n}\n.zmdi-print:before {\n  content: '\\f1b0';\n}\n.zmdi-puzzle-piece:before {\n  content: '\\f1b1';\n}\n.zmdi-quote:before {\n  content: '\\f1b2';\n}\n.zmdi-railway:before {\n  content: '\\f1b3';\n}\n.zmdi-receipt:before {\n  content: '\\f1b4';\n}\n.zmdi-refresh-alt:before {\n  content: '\\f1b5';\n}\n.zmdi-refresh-sync-alert:before {\n  content: '\\f1b6';\n}\n.zmdi-refresh-sync-off:before {\n  content: '\\f1b7';\n}\n.zmdi-refresh-sync:before {\n  content: '\\f1b8';\n}\n.zmdi-refresh:before {\n  content: '\\f1b9';\n}\n.zmdi-roller:before {\n  content: '\\f1ba';\n}\n.zmdi-ruler:before {\n  content: '\\f1bb';\n}\n.zmdi-scissors:before {\n  content: '\\f1bc';\n}\n.zmdi-screen-rotation-lock:before {\n  content: '\\f1bd';\n}\n.zmdi-screen-rotation:before {\n  content: '\\f1be';\n}\n.zmdi-search-for:before {\n  content: '\\f1bf';\n}\n.zmdi-search-in-file:before {\n  content: '\\f1c0';\n}\n.zmdi-search-in-page:before {\n  content: '\\f1c1';\n}\n.zmdi-search-replace:before {\n  content: '\\f1c2';\n}\n.zmdi-search:before {\n  content: '\\f1c3';\n}\n.zmdi-seat:before {\n  content: '\\f1c4';\n}\n.zmdi-settings-square:before {\n  content: '\\f1c5';\n}\n.zmdi-settings:before {\n  content: '\\f1c6';\n}\n.zmdi-shield-check:before {\n  content: '\\f1c7';\n}\n.zmdi-shield-security:before {\n  content: '\\f1c8';\n}\n.zmdi-shopping-basket:before {\n  content: '\\f1c9';\n}\n.zmdi-shopping-cart-plus:before {\n  content: '\\f1ca';\n}\n.zmdi-shopping-cart:before {\n  content: '\\f1cb';\n}\n.zmdi-sign-in:before {\n  content: '\\f1cc';\n}\n.zmdi-sort-amount-asc:before {\n  content: '\\f1cd';\n}\n.zmdi-sort-amount-desc:before {\n  content: '\\f1ce';\n}\n.zmdi-sort-asc:before {\n  content: '\\f1cf';\n}\n.zmdi-sort-desc:before {\n  content: '\\f1d0';\n}\n.zmdi-spellcheck:before {\n  content: '\\f1d1';\n}\n.zmdi-storage:before {\n  content: '\\f1d2';\n}\n.zmdi-store-24:before {\n  content: '\\f1d3';\n}\n.zmdi-store:before {\n  content: '\\f1d4';\n}\n.zmdi-subway:before {\n  content: '\\f1d5';\n}\n.zmdi-sun:before {\n  content: '\\f1d6';\n}\n.zmdi-tab-unselected:before {\n  content: '\\f1d7';\n}\n.zmdi-tab:before {\n  content: '\\f1d8';\n}\n.zmdi-tag-close:before {\n  content: '\\f1d9';\n}\n.zmdi-tag-more:before {\n  content: '\\f1da';\n}\n.zmdi-tag:before {\n  content: '\\f1db';\n}\n.zmdi-thumb-down:before {\n  content: '\\f1dc';\n}\n.zmdi-thumb-up-down:before {\n  content: '\\f1dd';\n}\n.zmdi-thumb-up:before {\n  content: '\\f1de';\n}\n.zmdi-ticket-star:before {\n  content: '\\f1df';\n}\n.zmdi-toll:before {\n  content: '\\f1e0';\n}\n.zmdi-toys:before {\n  content: '\\f1e1';\n}\n.zmdi-traffic:before {\n  content: '\\f1e2';\n}\n.zmdi-translate:before {\n  content: '\\f1e3';\n}\n.zmdi-triangle-down:before {\n  content: '\\f1e4';\n}\n.zmdi-triangle-up:before {\n  content: '\\f1e5';\n}\n.zmdi-truck:before {\n  content: '\\f1e6';\n}\n.zmdi-turning-sign:before {\n  content: '\\f1e7';\n}\n.zmdi-wallpaper:before {\n  content: '\\f1e8';\n}\n.zmdi-washing-machine:before {\n  content: '\\f1e9';\n}\n.zmdi-window-maximize:before {\n  content: '\\f1ea';\n}\n.zmdi-window-minimize:before {\n  content: '\\f1eb';\n}\n.zmdi-window-restore:before {\n  content: '\\f1ec';\n}\n.zmdi-wrench:before {\n  content: '\\f1ed';\n}\n.zmdi-zoom-in:before {\n  content: '\\f1ee';\n}\n.zmdi-zoom-out:before {\n  content: '\\f1ef';\n}\n.zmdi-alert-circle-o:before {\n  content: '\\f1f0';\n}\n.zmdi-alert-circle:before {\n  content: '\\f1f1';\n}\n.zmdi-alert-octagon:before {\n  content: '\\f1f2';\n}\n.zmdi-alert-polygon:before {\n  content: '\\f1f3';\n}\n.zmdi-alert-triangle:before {\n  content: '\\f1f4';\n}\n.zmdi-help-outline:before {\n  content: '\\f1f5';\n}\n.zmdi-help:before {\n  content: '\\f1f6';\n}\n.zmdi-info-outline:before {\n  content: '\\f1f7';\n}\n.zmdi-info:before {\n  content: '\\f1f8';\n}\n.zmdi-notifications-active:before {\n  content: '\\f1f9';\n}\n.zmdi-notifications-add:before {\n  content: '\\f1fa';\n}\n.zmdi-notifications-none:before {\n  content: '\\f1fb';\n}\n.zmdi-notifications-off:before {\n  content: '\\f1fc';\n}\n.zmdi-notifications-paused:before {\n  content: '\\f1fd';\n}\n.zmdi-notifications:before {\n  content: '\\f1fe';\n}\n.zmdi-account-add:before {\n  content: '\\f1ff';\n}\n.zmdi-account-box-mail:before {\n  content: '\\f200';\n}\n.zmdi-account-box-o:before {\n  content: '\\f201';\n}\n.zmdi-account-box-phone:before {\n  content: '\\f202';\n}\n.zmdi-account-box:before {\n  content: '\\f203';\n}\n.zmdi-account-calendar:before {\n  content: '\\f204';\n}\n.zmdi-account-circle:before {\n  content: '\\f205';\n}\n.zmdi-account-o:before {\n  content: '\\f206';\n}\n.zmdi-account:before {\n  content: '\\f207';\n}\n.zmdi-accounts-add:before {\n  content: '\\f208';\n}\n.zmdi-accounts-alt:before {\n  content: '\\f209';\n}\n.zmdi-accounts-list-alt:before {\n  content: '\\f20a';\n}\n.zmdi-accounts-list:before {\n  content: '\\f20b';\n}\n.zmdi-accounts-outline:before {\n  content: '\\f20c';\n}\n.zmdi-accounts:before {\n  content: '\\f20d';\n}\n.zmdi-face:before {\n  content: '\\f20e';\n}\n.zmdi-female:before {\n  content: '\\f20f';\n}\n.zmdi-male-alt:before {\n  content: '\\f210';\n}\n.zmdi-male-female:before {\n  content: '\\f211';\n}\n.zmdi-male:before {\n  content: '\\f212';\n}\n.zmdi-mood-bad:before {\n  content: '\\f213';\n}\n.zmdi-mood:before {\n  content: '\\f214';\n}\n.zmdi-run:before {\n  content: '\\f215';\n}\n.zmdi-walk:before {\n  content: '\\f216';\n}\n.zmdi-cloud-box:before {\n  content: '\\f217';\n}\n.zmdi-cloud-circle:before {\n  content: '\\f218';\n}\n.zmdi-cloud-done:before {\n  content: '\\f219';\n}\n.zmdi-cloud-download:before {\n  content: '\\f21a';\n}\n.zmdi-cloud-off:before {\n  content: '\\f21b';\n}\n.zmdi-cloud-outline-alt:before {\n  content: '\\f21c';\n}\n.zmdi-cloud-outline:before {\n  content: '\\f21d';\n}\n.zmdi-cloud-upload:before {\n  content: '\\f21e';\n}\n.zmdi-cloud:before {\n  content: '\\f21f';\n}\n.zmdi-download:before {\n  content: '\\f220';\n}\n.zmdi-file-plus:before {\n  content: '\\f221';\n}\n.zmdi-file-text:before {\n  content: '\\f222';\n}\n.zmdi-file:before {\n  content: '\\f223';\n}\n.zmdi-folder-outline:before {\n  content: '\\f224';\n}\n.zmdi-folder-person:before {\n  content: '\\f225';\n}\n.zmdi-folder-star-alt:before {\n  content: '\\f226';\n}\n.zmdi-folder-star:before {\n  content: '\\f227';\n}\n.zmdi-folder:before {\n  content: '\\f228';\n}\n.zmdi-gif:before {\n  content: '\\f229';\n}\n.zmdi-upload:before {\n  content: '\\f22a';\n}\n.zmdi-border-all:before {\n  content: '\\f22b';\n}\n.zmdi-border-bottom:before {\n  content: '\\f22c';\n}\n.zmdi-border-clear:before {\n  content: '\\f22d';\n}\n.zmdi-border-color:before {\n  content: '\\f22e';\n}\n.zmdi-border-horizontal:before {\n  content: '\\f22f';\n}\n.zmdi-border-inner:before {\n  content: '\\f230';\n}\n.zmdi-border-left:before {\n  content: '\\f231';\n}\n.zmdi-border-outer:before {\n  content: '\\f232';\n}\n.zmdi-border-right:before {\n  content: '\\f233';\n}\n.zmdi-border-style:before {\n  content: '\\f234';\n}\n.zmdi-border-top:before {\n  content: '\\f235';\n}\n.zmdi-border-vertical:before {\n  content: '\\f236';\n}\n.zmdi-copy:before {\n  content: '\\f237';\n}\n.zmdi-crop:before {\n  content: '\\f238';\n}\n.zmdi-format-align-center:before {\n  content: '\\f239';\n}\n.zmdi-format-align-justify:before {\n  content: '\\f23a';\n}\n.zmdi-format-align-left:before {\n  content: '\\f23b';\n}\n.zmdi-format-align-right:before {\n  content: '\\f23c';\n}\n.zmdi-format-bold:before {\n  content: '\\f23d';\n}\n.zmdi-format-clear-all:before {\n  content: '\\f23e';\n}\n.zmdi-format-clear:before {\n  content: '\\f23f';\n}\n.zmdi-format-color-fill:before {\n  content: '\\f240';\n}\n.zmdi-format-color-reset:before {\n  content: '\\f241';\n}\n.zmdi-format-color-text:before {\n  content: '\\f242';\n}\n.zmdi-format-indent-decrease:before {\n  content: '\\f243';\n}\n.zmdi-format-indent-increase:before {\n  content: '\\f244';\n}\n.zmdi-format-italic:before {\n  content: '\\f245';\n}\n.zmdi-format-line-spacing:before {\n  content: '\\f246';\n}\n.zmdi-format-list-bulleted:before {\n  content: '\\f247';\n}\n.zmdi-format-list-numbered:before {\n  content: '\\f248';\n}\n.zmdi-format-ltr:before {\n  content: '\\f249';\n}\n.zmdi-format-rtl:before {\n  content: '\\f24a';\n}\n.zmdi-format-size:before {\n  content: '\\f24b';\n}\n.zmdi-format-strikethrough-s:before {\n  content: '\\f24c';\n}\n.zmdi-format-strikethrough:before {\n  content: '\\f24d';\n}\n.zmdi-format-subject:before {\n  content: '\\f24e';\n}\n.zmdi-format-underlined:before {\n  content: '\\f24f';\n}\n.zmdi-format-valign-bottom:before {\n  content: '\\f250';\n}\n.zmdi-format-valign-center:before {\n  content: '\\f251';\n}\n.zmdi-format-valign-top:before {\n  content: '\\f252';\n}\n.zmdi-redo:before {\n  content: '\\f253';\n}\n.zmdi-select-all:before {\n  content: '\\f254';\n}\n.zmdi-space-bar:before {\n  content: '\\f255';\n}\n.zmdi-text-format:before {\n  content: '\\f256';\n}\n.zmdi-transform:before {\n  content: '\\f257';\n}\n.zmdi-undo:before {\n  content: '\\f258';\n}\n.zmdi-wrap-text:before {\n  content: '\\f259';\n}\n.zmdi-comment-alert:before {\n  content: '\\f25a';\n}\n.zmdi-comment-alt-text:before {\n  content: '\\f25b';\n}\n.zmdi-comment-alt:before {\n  content: '\\f25c';\n}\n.zmdi-comment-edit:before {\n  content: '\\f25d';\n}\n.zmdi-comment-image:before {\n  content: '\\f25e';\n}\n.zmdi-comment-list:before {\n  content: '\\f25f';\n}\n.zmdi-comment-more:before {\n  content: '\\f260';\n}\n.zmdi-comment-outline:before {\n  content: '\\f261';\n}\n.zmdi-comment-text-alt:before {\n  content: '\\f262';\n}\n.zmdi-comment-text:before {\n  content: '\\f263';\n}\n.zmdi-comment-video:before {\n  content: '\\f264';\n}\n.zmdi-comment:before {\n  content: '\\f265';\n}\n.zmdi-comments:before {\n  content: '\\f266';\n}\n.zmdi-check-all:before {\n  content: '\\f267';\n}\n.zmdi-check-circle-u:before {\n  content: '\\f268';\n}\n.zmdi-check-circle:before {\n  content: '\\f269';\n}\n.zmdi-check-square:before {\n  content: '\\f26a';\n}\n.zmdi-check:before {\n  content: '\\f26b';\n}\n.zmdi-circle-o:before {\n  content: '\\f26c';\n}\n.zmdi-circle:before {\n  content: '\\f26d';\n}\n.zmdi-dot-circle-alt:before {\n  content: '\\f26e';\n}\n.zmdi-dot-circle:before {\n  content: '\\f26f';\n}\n.zmdi-minus-circle-outline:before {\n  content: '\\f270';\n}\n.zmdi-minus-circle:before {\n  content: '\\f271';\n}\n.zmdi-minus-square:before {\n  content: '\\f272';\n}\n.zmdi-minus:before {\n  content: '\\f273';\n}\n.zmdi-plus-circle-o-duplicate:before {\n  content: '\\f274';\n}\n.zmdi-plus-circle-o:before {\n  content: '\\f275';\n}\n.zmdi-plus-circle:before {\n  content: '\\f276';\n}\n.zmdi-plus-square:before {\n  content: '\\f277';\n}\n.zmdi-plus:before {\n  content: '\\f278';\n}\n.zmdi-square-o:before {\n  content: '\\f279';\n}\n.zmdi-star-circle:before {\n  content: '\\f27a';\n}\n.zmdi-star-half:before {\n  content: '\\f27b';\n}\n.zmdi-star-outline:before {\n  content: '\\f27c';\n}\n.zmdi-star:before {\n  content: '\\f27d';\n}\n.zmdi-bluetooth-connected:before {\n  content: '\\f27e';\n}\n.zmdi-bluetooth-off:before {\n  content: '\\f27f';\n}\n.zmdi-bluetooth-search:before {\n  content: '\\f280';\n}\n.zmdi-bluetooth-setting:before {\n  content: '\\f281';\n}\n.zmdi-bluetooth:before {\n  content: '\\f282';\n}\n.zmdi-camera-add:before {\n  content: '\\f283';\n}\n.zmdi-camera-alt:before {\n  content: '\\f284';\n}\n.zmdi-camera-bw:before {\n  content: '\\f285';\n}\n.zmdi-camera-front:before {\n  content: '\\f286';\n}\n.zmdi-camera-mic:before {\n  content: '\\f287';\n}\n.zmdi-camera-party-mode:before {\n  content: '\\f288';\n}\n.zmdi-camera-rear:before {\n  content: '\\f289';\n}\n.zmdi-camera-roll:before {\n  content: '\\f28a';\n}\n.zmdi-camera-switch:before {\n  content: '\\f28b';\n}\n.zmdi-camera:before {\n  content: '\\f28c';\n}\n.zmdi-card-alert:before {\n  content: '\\f28d';\n}\n.zmdi-card-off:before {\n  content: '\\f28e';\n}\n.zmdi-card-sd:before {\n  content: '\\f28f';\n}\n.zmdi-card-sim:before {\n  content: '\\f290';\n}\n.zmdi-desktop-mac:before {\n  content: '\\f291';\n}\n.zmdi-desktop-windows:before {\n  content: '\\f292';\n}\n.zmdi-device-hub:before {\n  content: '\\f293';\n}\n.zmdi-devices-off:before {\n  content: '\\f294';\n}\n.zmdi-devices:before {\n  content: '\\f295';\n}\n.zmdi-dock:before {\n  content: '\\f296';\n}\n.zmdi-floppy:before {\n  content: '\\f297';\n}\n.zmdi-gamepad:before {\n  content: '\\f298';\n}\n.zmdi-gps-dot:before {\n  content: '\\f299';\n}\n.zmdi-gps-off:before {\n  content: '\\f29a';\n}\n.zmdi-gps:before {\n  content: '\\f29b';\n}\n.zmdi-headset-mic:before {\n  content: '\\f29c';\n}\n.zmdi-headset:before {\n  content: '\\f29d';\n}\n.zmdi-input-antenna:before {\n  content: '\\f29e';\n}\n.zmdi-input-composite:before {\n  content: '\\f29f';\n}\n.zmdi-input-hdmi:before {\n  content: '\\f2a0';\n}\n.zmdi-input-power:before {\n  content: '\\f2a1';\n}\n.zmdi-input-svideo:before {\n  content: '\\f2a2';\n}\n.zmdi-keyboard-hide:before {\n  content: '\\f2a3';\n}\n.zmdi-keyboard:before {\n  content: '\\f2a4';\n}\n.zmdi-laptop-chromebook:before {\n  content: '\\f2a5';\n}\n.zmdi-laptop-mac:before {\n  content: '\\f2a6';\n}\n.zmdi-laptop:before {\n  content: '\\f2a7';\n}\n.zmdi-mic-off:before {\n  content: '\\f2a8';\n}\n.zmdi-mic-outline:before {\n  content: '\\f2a9';\n}\n.zmdi-mic-setting:before {\n  content: '\\f2aa';\n}\n.zmdi-mic:before {\n  content: '\\f2ab';\n}\n.zmdi-mouse:before {\n  content: '\\f2ac';\n}\n.zmdi-network-alert:before {\n  content: '\\f2ad';\n}\n.zmdi-network-locked:before {\n  content: '\\f2ae';\n}\n.zmdi-network-off:before {\n  content: '\\f2af';\n}\n.zmdi-network-outline:before {\n  content: '\\f2b0';\n}\n.zmdi-network-setting:before {\n  content: '\\f2b1';\n}\n.zmdi-network:before {\n  content: '\\f2b2';\n}\n.zmdi-phone-bluetooth:before {\n  content: '\\f2b3';\n}\n.zmdi-phone-end:before {\n  content: '\\f2b4';\n}\n.zmdi-phone-forwarded:before {\n  content: '\\f2b5';\n}\n.zmdi-phone-in-talk:before {\n  content: '\\f2b6';\n}\n.zmdi-phone-locked:before {\n  content: '\\f2b7';\n}\n.zmdi-phone-missed:before {\n  content: '\\f2b8';\n}\n.zmdi-phone-msg:before {\n  content: '\\f2b9';\n}\n.zmdi-phone-paused:before {\n  content: '\\f2ba';\n}\n.zmdi-phone-ring:before {\n  content: '\\f2bb';\n}\n.zmdi-phone-setting:before {\n  content: '\\f2bc';\n}\n.zmdi-phone-sip:before {\n  content: '\\f2bd';\n}\n.zmdi-phone:before {\n  content: '\\f2be';\n}\n.zmdi-portable-wifi-changes:before {\n  content: '\\f2bf';\n}\n.zmdi-portable-wifi-off:before {\n  content: '\\f2c0';\n}\n.zmdi-portable-wifi:before {\n  content: '\\f2c1';\n}\n.zmdi-radio:before {\n  content: '\\f2c2';\n}\n.zmdi-reader:before {\n  content: '\\f2c3';\n}\n.zmdi-remote-control-alt:before {\n  content: '\\f2c4';\n}\n.zmdi-remote-control:before {\n  content: '\\f2c5';\n}\n.zmdi-router:before {\n  content: '\\f2c6';\n}\n.zmdi-scanner:before {\n  content: '\\f2c7';\n}\n.zmdi-smartphone-andrAdminid:before {\n  content: '\\f2c8';\n}\n.zmdi-smartphone-download:before {\n  content: '\\f2c9';\n}\n.zmdi-smartphone-erase:before {\n  content: '\\f2ca';\n}\n.zmdi-smartphone-info:before {\n  content: '\\f2cb';\n}\n.zmdi-smartphone-iphone:before {\n  content: '\\f2cc';\n}\n.zmdi-smartphone-landscape-lock:before {\n  content: '\\f2cd';\n}\n.zmdi-smartphone-landscape:before {\n  content: '\\f2ce';\n}\n.zmdi-smartphone-lock:before {\n  content: '\\f2cf';\n}\n.zmdi-smartphone-portrait-lock:before {\n  content: '\\f2d0';\n}\n.zmdi-smartphone-ring:before {\n  content: '\\f2d1';\n}\n.zmdi-smartphone-setting:before {\n  content: '\\f2d2';\n}\n.zmdi-smartphone-setup:before {\n  content: '\\f2d3';\n}\n.zmdi-smartphone:before {\n  content: '\\f2d4';\n}\n.zmdi-speaker:before {\n  content: '\\f2d5';\n}\n.zmdi-tablet-andrAdminid:before {\n  content: '\\f2d6';\n}\n.zmdi-tablet-mac:before {\n  content: '\\f2d7';\n}\n.zmdi-tablet:before {\n  content: '\\f2d8';\n}\n.zmdi-tv-alt-play:before {\n  content: '\\f2d9';\n}\n.zmdi-tv-list:before {\n  content: '\\f2da';\n}\n.zmdi-tv-play:before {\n  content: '\\f2db';\n}\n.zmdi-tv:before {\n  content: '\\f2dc';\n}\n.zmdi-usb:before {\n  content: '\\f2dd';\n}\n.zmdi-videocam-off:before {\n  content: '\\f2de';\n}\n.zmdi-videocam-switch:before {\n  content: '\\f2df';\n}\n.zmdi-videocam:before {\n  content: '\\f2e0';\n}\n.zmdi-watch:before {\n  content: '\\f2e1';\n}\n.zmdi-wifi-alt-2:before {\n  content: '\\f2e2';\n}\n.zmdi-wifi-alt:before {\n  content: '\\f2e3';\n}\n.zmdi-wifi-info:before {\n  content: '\\f2e4';\n}\n.zmdi-wifi-lock:before {\n  content: '\\f2e5';\n}\n.zmdi-wifi-off:before {\n  content: '\\f2e6';\n}\n.zmdi-wifi-outline:before {\n  content: '\\f2e7';\n}\n.zmdi-wifi:before {\n  content: '\\f2e8';\n}\n.zmdi-arrow-left-bottom:before {\n  content: '\\f2e9';\n}\n.zmdi-arrow-left:before {\n  content: '\\f2ea';\n}\n.zmdi-arrow-merge:before {\n  content: '\\f2eb';\n}\n.zmdi-arrow-missed:before {\n  content: '\\f2ec';\n}\n.zmdi-arrow-right-top:before {\n  content: '\\f2ed';\n}\n.zmdi-arrow-right:before {\n  content: '\\f2ee';\n}\n.zmdi-arrow-split:before {\n  content: '\\f2ef';\n}\n.zmdi-arrows:before {\n  content: '\\f2f0';\n}\n.zmdi-caret-down-circle:before {\n  content: '\\f2f1';\n}\n.zmdi-caret-down:before {\n  content: '\\f2f2';\n}\n.zmdi-caret-left-circle:before {\n  content: '\\f2f3';\n}\n.zmdi-caret-left:before {\n  content: '\\f2f4';\n}\n.zmdi-caret-right-circle:before {\n  content: '\\f2f5';\n}\n.zmdi-caret-right:before {\n  content: '\\f2f6';\n}\n.zmdi-caret-up-circle:before {\n  content: '\\f2f7';\n}\n.zmdi-caret-up:before {\n  content: '\\f2f8';\n}\n.zmdi-chevron-down:before {\n  content: '\\f2f9';\n}\n.zmdi-chevron-left:before {\n  content: '\\f2fa';\n}\n.zmdi-chevron-right:before {\n  content: '\\f2fb';\n}\n.zmdi-chevron-up:before {\n  content: '\\f2fc';\n}\n.zmdi-forward:before {\n  content: '\\f2fd';\n}\n.zmdi-long-arrow-down:before {\n  content: '\\f2fe';\n}\n.zmdi-long-arrow-left:before {\n  content: '\\f2ff';\n}\n.zmdi-long-arrow-return:before {\n  content: '\\f300';\n}\n.zmdi-long-arrow-right:before {\n  content: '\\f301';\n}\n.zmdi-long-arrow-tab:before {\n  content: '\\f302';\n}\n.zmdi-long-arrow-up:before {\n  content: '\\f303';\n}\n.zmdi-rotate-ccw:before {\n  content: '\\f304';\n}\n.zmdi-rotate-cw:before {\n  content: '\\f305';\n}\n.zmdi-rotate-left:before {\n  content: '\\f306';\n}\n.zmdi-rotate-right:before {\n  content: '\\f307';\n}\n.zmdi-square-down:before {\n  content: '\\f308';\n}\n.zmdi-square-right:before {\n  content: '\\f309';\n}\n.zmdi-swap-alt:before {\n  content: '\\f30a';\n}\n.zmdi-swap-vertical-circle:before {\n  content: '\\f30b';\n}\n.zmdi-swap-vertical:before {\n  content: '\\f30c';\n}\n.zmdi-swap:before {\n  content: '\\f30d';\n}\n.zmdi-trending-down:before {\n  content: '\\f30e';\n}\n.zmdi-trending-flat:before {\n  content: '\\f30f';\n}\n.zmdi-trending-up:before {\n  content: '\\f310';\n}\n.zmdi-unfold-less:before {\n  content: '\\f311';\n}\n.zmdi-unfold-more:before {\n  content: '\\f312';\n}\n.zmdi-apps:before {\n  content: '\\f313';\n}\n.zmdi-grid-off:before {\n  content: '\\f314';\n}\n.zmdi-grid:before {\n  content: '\\f315';\n}\n.zmdi-view-agenda:before {\n  content: '\\f316';\n}\n.zmdi-view-array:before {\n  content: '\\f317';\n}\n.zmdi-view-carousel:before {\n  content: '\\f318';\n}\n.zmdi-view-column:before {\n  content: '\\f319';\n}\n.zmdi-view-comfy:before {\n  content: '\\f31a';\n}\n.zmdi-view-compact:before {\n  content: '\\f31b';\n}\n.zmdi-view-dashboard:before {\n  content: '\\f31c';\n}\n.zmdi-view-day:before {\n  content: '\\f31d';\n}\n.zmdi-view-headline:before {\n  content: '\\f31e';\n}\n.zmdi-view-list-alt:before {\n  content: '\\f31f';\n}\n.zmdi-view-list:before {\n  content: '\\f320';\n}\n.zmdi-view-module:before {\n  content: '\\f321';\n}\n.zmdi-view-quilt:before {\n  content: '\\f322';\n}\n.zmdi-view-stream:before {\n  content: '\\f323';\n}\n.zmdi-view-subtitles:before {\n  content: '\\f324';\n}\n.zmdi-view-toc:before {\n  content: '\\f325';\n}\n.zmdi-view-web:before {\n  content: '\\f326';\n}\n.zmdi-view-week:before {\n  content: '\\f327';\n}\n.zmdi-widgets:before {\n  content: '\\f328';\n}\n.zmdi-alarm-check:before {\n  content: '\\f329';\n}\n.zmdi-alarm-off:before {\n  content: '\\f32a';\n}\n.zmdi-alarm-plus:before {\n  content: '\\f32b';\n}\n.zmdi-alarm-snooze:before {\n  content: '\\f32c';\n}\n.zmdi-alarm:before {\n  content: '\\f32d';\n}\n.zmdi-calendar-alt:before {\n  content: '\\f32e';\n}\n.zmdi-calendar-check:before {\n  content: '\\f32f';\n}\n.zmdi-calendar-close:before {\n  content: '\\f330';\n}\n.zmdi-calendar-note:before {\n  content: '\\f331';\n}\n.zmdi-calendar:before {\n  content: '\\f332';\n}\n.zmdi-time-countdown:before {\n  content: '\\f333';\n}\n.zmdi-time-interval:before {\n  content: '\\f334';\n}\n.zmdi-time-restore-setting:before {\n  content: '\\f335';\n}\n.zmdi-time-restore:before {\n  content: '\\f336';\n}\n.zmdi-time:before {\n  content: '\\f337';\n}\n.zmdi-timer-off:before {\n  content: '\\f338';\n}\n.zmdi-timer:before {\n  content: '\\f339';\n}\n.zmdi-andrAdminid-alt:before {\n  content: '\\f33a';\n}\n.zmdi-andrAdminid:before {\n  content: '\\f33b';\n}\n.zmdi-apple:before {\n  content: '\\f33c';\n}\n.zmdi-behance:before {\n  content: '\\f33d';\n}\n.zmdi-codepen:before {\n  content: '\\f33e';\n}\n.zmdi-dribbble:before {\n  content: '\\f33f';\n}\n.zmdi-dropbox:before {\n  content: '\\f340';\n}\n.zmdi-evernote:before {\n  content: '\\f341';\n}\n.zmdi-facebook-box:before {\n  content: '\\f342';\n}\n.zmdi-facebook:before {\n  content: '\\f343';\n}\n.zmdi-github-box:before {\n  content: '\\f344';\n}\n.zmdi-github:before {\n  content: '\\f345';\n}\n.zmdi-google-drive:before {\n  content: '\\f346';\n}\n.zmdi-google-earth:before {\n  content: '\\f347';\n}\n.zmdi-google-glass:before {\n  content: '\\f348';\n}\n.zmdi-google-maps:before {\n  content: '\\f349';\n}\n.zmdi-google-pages:before {\n  content: '\\f34a';\n}\n.zmdi-google-play:before {\n  content: '\\f34b';\n}\n.zmdi-google-plus-box:before {\n  content: '\\f34c';\n}\n.zmdi-google-plus:before {\n  content: '\\f34d';\n}\n.zmdi-google:before {\n  content: '\\f34e';\n}\n.zmdi-instagram:before {\n  content: '\\f34f';\n}\n.zmdi-language-css3:before {\n  content: '\\f350';\n}\n.zmdi-language-html5:before {\n  content: '\\f351';\n}\n.zmdi-language-javascript:before {\n  content: '\\f352';\n}\n.zmdi-language-python-alt:before {\n  content: '\\f353';\n}\n.zmdi-language-python:before {\n  content: '\\f354';\n}\n.zmdi-lastfm:before {\n  content: '\\f355';\n}\n.zmdi-linkedin-box:before {\n  content: '\\f356';\n}\n.zmdi-paypal:before {\n  content: '\\f357';\n}\n.zmdi-pinterest-box:before {\n  content: '\\f358';\n}\n.zmdi-pocket:before {\n  content: '\\f359';\n}\n.zmdi-polymer:before {\n  content: '\\f35a';\n}\n.zmdi-share:before {\n  content: '\\f35b';\n}\n.zmdi-stackoverflow:before {\n  content: '\\f35c';\n}\n.zmdi-steam-square:before {\n  content: '\\f35d';\n}\n.zmdi-steam:before {\n  content: '\\f35e';\n}\n.zmdi-twitter-box:before {\n  content: '\\f35f';\n}\n.zmdi-twitter:before {\n  content: '\\f360';\n}\n.zmdi-vk:before {\n  content: '\\f361';\n}\n.zmdi-wikipedia:before {\n  content: '\\f362';\n}\n.zmdi-windows:before {\n  content: '\\f363';\n}\n.zmdi-aspect-ratio-alt:before {\n  content: '\\f364';\n}\n.zmdi-aspect-ratio:before {\n  content: '\\f365';\n}\n.zmdi-blur-circular:before {\n  content: '\\f366';\n}\n.zmdi-blur-linear:before {\n  content: '\\f367';\n}\n.zmdi-blur-off:before {\n  content: '\\f368';\n}\n.zmdi-blur:before {\n  content: '\\f369';\n}\n.zmdi-brightness-2:before {\n  content: '\\f36a';\n}\n.zmdi-brightness-3:before {\n  content: '\\f36b';\n}\n.zmdi-brightness-4:before {\n  content: '\\f36c';\n}\n.zmdi-brightness-5:before {\n  content: '\\f36d';\n}\n.zmdi-brightness-6:before {\n  content: '\\f36e';\n}\n.zmdi-brightness-7:before {\n  content: '\\f36f';\n}\n.zmdi-brightness-auto:before {\n  content: '\\f370';\n}\n.zmdi-brightness-setting:before {\n  content: '\\f371';\n}\n.zmdi-broken-image:before {\n  content: '\\f372';\n}\n.zmdi-center-focus-strong:before {\n  content: '\\f373';\n}\n.zmdi-center-focus-weak:before {\n  content: '\\f374';\n}\n.zmdi-compare:before {\n  content: '\\f375';\n}\n.zmdi-crop-16-9:before {\n  content: '\\f376';\n}\n.zmdi-crop-3-2:before {\n  content: '\\f377';\n}\n.zmdi-crop-5-4:before {\n  content: '\\f378';\n}\n.zmdi-crop-7-5:before {\n  content: '\\f379';\n}\n.zmdi-crop-din:before {\n  content: '\\f37a';\n}\n.zmdi-crop-free:before {\n  content: '\\f37b';\n}\n.zmdi-crop-landscape:before {\n  content: '\\f37c';\n}\n.zmdi-crop-portrait:before {\n  content: '\\f37d';\n}\n.zmdi-crop-square:before {\n  content: '\\f37e';\n}\n.zmdi-exposure-alt:before {\n  content: '\\f37f';\n}\n.zmdi-exposure:before {\n  content: '\\f380';\n}\n.zmdi-filter-b-and-w:before {\n  content: '\\f381';\n}\n.zmdi-filter-center-focus:before {\n  content: '\\f382';\n}\n.zmdi-filter-frames:before {\n  content: '\\f383';\n}\n.zmdi-filter-tilt-shift:before {\n  content: '\\f384';\n}\n.zmdi-gradient:before {\n  content: '\\f385';\n}\n.zmdi-grain:before {\n  content: '\\f386';\n}\n.zmdi-graphic-eq:before {\n  content: '\\f387';\n}\n.zmdi-hdr-off:before {\n  content: '\\f388';\n}\n.zmdi-hdr-strong:before {\n  content: '\\f389';\n}\n.zmdi-hdr-weak:before {\n  content: '\\f38a';\n}\n.zmdi-hdr:before {\n  content: '\\f38b';\n}\n.zmdi-iridescent:before {\n  content: '\\f38c';\n}\n.zmdi-leak-off:before {\n  content: '\\f38d';\n}\n.zmdi-leak:before {\n  content: '\\f38e';\n}\n.zmdi-looks:before {\n  content: '\\f38f';\n}\n.zmdi-loupe:before {\n  content: '\\f390';\n}\n.zmdi-panorama-horizontal:before {\n  content: '\\f391';\n}\n.zmdi-panorama-vertical:before {\n  content: '\\f392';\n}\n.zmdi-panorama-wide-angle:before {\n  content: '\\f393';\n}\n.zmdi-photo-size-select-large:before {\n  content: '\\f394';\n}\n.zmdi-photo-size-select-small:before {\n  content: '\\f395';\n}\n.zmdi-picture-in-picture:before {\n  content: '\\f396';\n}\n.zmdi-slideshow:before {\n  content: '\\f397';\n}\n.zmdi-texture:before {\n  content: '\\f398';\n}\n.zmdi-tonality:before {\n  content: '\\f399';\n}\n.zmdi-vignette:before {\n  content: '\\f39a';\n}\n.zmdi-wb-auto:before {\n  content: '\\f39b';\n}\n.zmdi-eject-alt:before {\n  content: '\\f39c';\n}\n.zmdi-eject:before {\n  content: '\\f39d';\n}\n.zmdi-equalizer:before {\n  content: '\\f39e';\n}\n.zmdi-fast-forward:before {\n  content: '\\f39f';\n}\n.zmdi-fast-rewind:before {\n  content: '\\f3a0';\n}\n.zmdi-forward-10:before {\n  content: '\\f3a1';\n}\n.zmdi-forward-30:before {\n  content: '\\f3a2';\n}\n.zmdi-forward-5:before {\n  content: '\\f3a3';\n}\n.zmdi-hearing:before {\n  content: '\\f3a4';\n}\n.zmdi-pause-circle-outline:before {\n  content: '\\f3a5';\n}\n.zmdi-pause-circle:before {\n  content: '\\f3a6';\n}\n.zmdi-pause:before {\n  content: '\\f3a7';\n}\n.zmdi-play-circle-outline:before {\n  content: '\\f3a8';\n}\n.zmdi-play-circle:before {\n  content: '\\f3a9';\n}\n.zmdi-play:before {\n  content: '\\f3aa';\n}\n.zmdi-playlist-audio:before {\n  content: '\\f3ab';\n}\n.zmdi-playlist-plus:before {\n  content: '\\f3ac';\n}\n.zmdi-repeat-one:before {\n  content: '\\f3ad';\n}\n.zmdi-repeat:before {\n  content: '\\f3ae';\n}\n.zmdi-replay-10:before {\n  content: '\\f3af';\n}\n.zmdi-replay-30:before {\n  content: '\\f3b0';\n}\n.zmdi-replay-5:before {\n  content: '\\f3b1';\n}\n.zmdi-replay:before {\n  content: '\\f3b2';\n}\n.zmdi-shuffle:before {\n  content: '\\f3b3';\n}\n.zmdi-skip-next:before {\n  content: '\\f3b4';\n}\n.zmdi-skip-previous:before {\n  content: '\\f3b5';\n}\n.zmdi-stop:before {\n  content: '\\f3b6';\n}\n.zmdi-surround-sound:before {\n  content: '\\f3b7';\n}\n.zmdi-tune:before {\n  content: '\\f3b8';\n}\n.zmdi-volume-down:before {\n  content: '\\f3b9';\n}\n.zmdi-volume-mute:before {\n  content: '\\f3ba';\n}\n.zmdi-volume-off:before {\n  content: '\\f3bb';\n}\n.zmdi-volume-up:before {\n  content: '\\f3bc';\n}\n.zmdi-n-1-square:before {\n  content: '\\f3bd';\n}\n.zmdi-n-2-square:before {\n  content: '\\f3be';\n}\n.zmdi-n-3-square:before {\n  content: '\\f3bf';\n}\n.zmdi-n-4-square:before {\n  content: '\\f3c0';\n}\n.zmdi-n-5-square:before {\n  content: '\\f3c1';\n}\n.zmdi-n-6-square:before {\n  content: '\\f3c2';\n}\n.zmdi-neg-1:before {\n  content: '\\f3c3';\n}\n.zmdi-neg-2:before {\n  content: '\\f3c4';\n}\n.zmdi-plus-1:before {\n  content: '\\f3c5';\n}\n.zmdi-plus-2:before {\n  content: '\\f3c6';\n}\n.zmdi-sec-10:before {\n  content: '\\f3c7';\n}\n.zmdi-sec-3:before {\n  content: '\\f3c8';\n}\n.zmdi-zero:before {\n  content: '\\f3c9';\n}\n.zmdi-airline-seat-flat-angled:before {\n  content: '\\f3ca';\n}\n.zmdi-airline-seat-flat:before {\n  content: '\\f3cb';\n}\n.zmdi-airline-seat-individual-suite:before {\n  content: '\\f3cc';\n}\n.zmdi-airline-seat-legroom-extra:before {\n  content: '\\f3cd';\n}\n.zmdi-airline-seat-legroom-normal:before {\n  content: '\\f3ce';\n}\n.zmdi-airline-seat-legroom-reduced:before {\n  content: '\\f3cf';\n}\n.zmdi-airline-seat-recline-extra:before {\n  content: '\\f3d0';\n}\n.zmdi-airline-seat-recline-normal:before {\n  content: '\\f3d1';\n}\n.zmdi-airplay:before {\n  content: '\\f3d2';\n}\n.zmdi-closed-caption:before {\n  content: '\\f3d3';\n}\n.zmdi-confirmation-number:before {\n  content: '\\f3d4';\n}\n.zmdi-developer-board:before {\n  content: '\\f3d5';\n}\n.zmdi-disc-full:before {\n  content: '\\f3d6';\n}\n.zmdi-explicit:before {\n  content: '\\f3d7';\n}\n.zmdi-flight-land:before {\n  content: '\\f3d8';\n}\n.zmdi-flight-takeoff:before {\n  content: '\\f3d9';\n}\n.zmdi-flip-to-back:before {\n  content: '\\f3da';\n}\n.zmdi-flip-to-front:before {\n  content: '\\f3db';\n}\n.zmdi-group-work:before {\n  content: '\\f3dc';\n}\n.zmdi-hd:before {\n  content: '\\f3dd';\n}\n.zmdi-hq:before {\n  content: '\\f3de';\n}\n.zmdi-markunread-mailbox:before {\n  content: '\\f3df';\n}\n.zmdi-memory:before {\n  content: '\\f3e0';\n}\n.zmdi-nfc:before {\n  content: '\\f3e1';\n}\n.zmdi-play-for-work:before {\n  content: '\\f3e2';\n}\n.zmdi-power-input:before {\n  content: '\\f3e3';\n}\n.zmdi-present-to-all:before {\n  content: '\\f3e4';\n}\n.zmdi-satellite:before {\n  content: '\\f3e5';\n}\n.zmdi-tap-and-play:before {\n  content: '\\f3e6';\n}\n.zmdi-vibration:before {\n  content: '\\f3e7';\n}\n.zmdi-voicemail:before {\n  content: '\\f3e8';\n}\n.zmdi-group:before {\n  content: '\\f3e9';\n}\n.zmdi-rss:before {\n  content: '\\f3ea';\n}\n.zmdi-shape:before {\n  content: '\\f3eb';\n}\n.zmdi-spinner:before {\n  content: '\\f3ec';\n}\n.zmdi-ungroup:before {\n  content: '\\f3ed';\n}\n.zmdi-500px:before {\n  content: '\\f3ee';\n}\n.zmdi-8tracks:before {\n  content: '\\f3ef';\n}\n.zmdi-amazon:before {\n  content: '\\f3f0';\n}\n.zmdi-blogger:before {\n  content: '\\f3f1';\n}\n.zmdi-delicious:before {\n  content: '\\f3f2';\n}\n.zmdi-disqus:before {\n  content: '\\f3f3';\n}\n.zmdi-flattr:before {\n  content: '\\f3f4';\n}\n.zmdi-flickr:before {\n  content: '\\f3f5';\n}\n.zmdi-github-alt:before {\n  content: '\\f3f6';\n}\n.zmdi-google-old:before {\n  content: '\\f3f7';\n}\n.zmdi-linkedin:before {\n  content: '\\f3f8';\n}\n.zmdi-odnoklassniki:before {\n  content: '\\f3f9';\n}\n.zmdi-outlook:before {\n  content: '\\f3fa';\n}\n.zmdi-paypal-alt:before {\n  content: '\\f3fb';\n}\n.zmdi-pinterest:before {\n  content: '\\f3fc';\n}\n.zmdi-playstation:before {\n  content: '\\f3fd';\n}\n.zmdi-reddit:before {\n  content: '\\f3fe';\n}\n.zmdi-skype:before {\n  content: '\\f3ff';\n}\n.zmdi-slideshare:before {\n  content: '\\f400';\n}\n.zmdi-soundcloud:before {\n  content: '\\f401';\n}\n.zmdi-tumblr:before {\n  content: '\\f402';\n}\n.zmdi-twitch:before {\n  content: '\\f403';\n}\n.zmdi-vimeo:before {\n  content: '\\f404';\n}\n.zmdi-whatsapp:before {\n  content: '\\f405';\n}\n.zmdi-xbox:before {\n  content: '\\f406';\n}\n.zmdi-yahoo:before {\n  content: '\\f407';\n}\n.zmdi-youtube-play:before {\n  content: '\\f408';\n}\n.zmdi-youtube:before {\n  content: '\\f409';\n}\n.zmdi-import-export:before {\n  content: '\\f30c';\n}\n.zmdi-swap-vertical-:before {\n  content: '\\f30c';\n}\n.zmdi-airplanemode-inactive:before {\n  content: '\\f102';\n}\n.zmdi-airplanemode-active:before {\n  content: '\\f103';\n}\n.zmdi-rate-review:before {\n  content: '\\f103';\n}\n.zmdi-comment-sign:before {\n  content: '\\f25a';\n}\n.zmdi-network-warning:before {\n  content: '\\f2ad';\n}\n.zmdi-shopping-cart-add:before {\n  content: '\\f1ca';\n}\n.zmdi-file-add:before {\n  content: '\\f221';\n}\n.zmdi-network-wifi-scan:before {\n  content: '\\f2e4';\n}\n.zmdi-collection-add:before {\n  content: '\\f14e';\n}\n.zmdi-format-playlist-add:before {\n  content: '\\f3ac';\n}\n.zmdi-format-queue-music:before {\n  content: '\\f3ab';\n}\n.zmdi-plus-box:before {\n  content: '\\f277';\n}\n.zmdi-tag-backspace:before {\n  content: '\\f1d9';\n}\n.zmdi-alarm-add:before {\n  content: '\\f32b';\n}\n.zmdi-battery-charging:before {\n  content: '\\f114';\n}\n.zmdi-daydream-setting:before {\n  content: '\\f217';\n}\n.zmdi-more-horiz:before {\n  content: '\\f19c';\n}\n.zmdi-book-photo:before {\n  content: '\\f11b';\n}\n.zmdi-incandescent:before {\n  content: '\\f189';\n}\n.zmdi-wb-iridescent:before {\n  content: '\\f38c';\n}\n.zmdi-calendar-remove:before {\n  content: '\\f330';\n}\n.zmdi-refresh-sync-disabled:before {\n  content: '\\f1b7';\n}\n.zmdi-refresh-sync-problem:before {\n  content: '\\f1b6';\n}\n.zmdi-crop-original:before {\n  content: '\\f17e';\n}\n.zmdi-power-off:before {\n  content: '\\f1af';\n}\n.zmdi-power-off-setting:before {\n  content: '\\f1ae';\n}\n.zmdi-leak-remove:before {\n  content: '\\f38d';\n}\n.zmdi-star-border:before {\n  content: '\\f27c';\n}\n.zmdi-brightness-low:before {\n  content: '\\f36d';\n}\n.zmdi-brightness-medium:before {\n  content: '\\f36e';\n}\n.zmdi-brightness-high:before {\n  content: '\\f36f';\n}\n.zmdi-smartphone-portrait:before {\n  content: '\\f2d4';\n}\n.zmdi-live-tv:before {\n  content: '\\f2d9';\n}\n.zmdi-format-textdirection-l-to-r:before {\n  content: '\\f249';\n}\n.zmdi-format-textdirection-r-to-l:before {\n  content: '\\f24a';\n}\n.zmdi-arrow-back:before {\n  content: '\\f2ea';\n}\n.zmdi-arrow-forward:before {\n  content: '\\f2ee';\n}\n.zmdi-arrow-in:before {\n  content: '\\f2e9';\n}\n.zmdi-arrow-out:before {\n  content: '\\f2ed';\n}\n.zmdi-rotate-90-degrees-ccw:before {\n  content: '\\f304';\n}\n.zmdi-adb:before {\n  content: '\\f33a';\n}\n.zmdi-network-wifi:before {\n  content: '\\f2e8';\n}\n.zmdi-network-wifi-alt:before {\n  content: '\\f2e3';\n}\n.zmdi-network-wifi-lock:before {\n  content: '\\f2e5';\n}\n.zmdi-network-wifi-off:before {\n  content: '\\f2e6';\n}\n.zmdi-network-wifi-outline:before {\n  content: '\\f2e7';\n}\n.zmdi-network-wifi-info:before {\n  content: '\\f2e4';\n}\n.zmdi-layers-clear:before {\n  content: '\\f18b';\n}\n.zmdi-colorize:before {\n  content: '\\f15d';\n}\n.zmdi-format-paint:before {\n  content: '\\f1ba';\n}\n.zmdi-format-quote:before {\n  content: '\\f1b2';\n}\n.zmdi-camera-monochrome-photos:before {\n  content: '\\f285';\n}\n.zmdi-sort-by-alpha:before {\n  content: '\\f1cf';\n}\n.zmdi-folder-shared:before {\n  content: '\\f225';\n}\n.zmdi-folder-special:before {\n  content: '\\f226';\n}\n.zmdi-comment-dots:before {\n  content: '\\f260';\n}\n.zmdi-reorder:before {\n  content: '\\f31e';\n}\n.zmdi-dehaze:before {\n  content: '\\f197';\n}\n.zmdi-sort:before {\n  content: '\\f1ce';\n}\n.zmdi-pages:before {\n  content: '\\f34a';\n}\n.zmdi-stack-overflow:before {\n  content: '\\f35c';\n}\n.zmdi-calendar-account:before {\n  content: '\\f204';\n}\n.zmdi-paste:before {\n  content: '\\f109';\n}\n.zmdi-cut:before {\n  content: '\\f1bc';\n}\n.zmdi-save:before {\n  content: '\\f297';\n}\n.zmdi-smartphone-code:before {\n  content: '\\f139';\n}\n.zmdi-directions-bike:before {\n  content: '\\f117';\n}\n.zmdi-directions-boat:before {\n  content: '\\f11a';\n}\n.zmdi-directions-bus:before {\n  content: '\\f121';\n}\n.zmdi-directions-car:before {\n  content: '\\f125';\n}\n.zmdi-directions-railway:before {\n  content: '\\f1b3';\n}\n.zmdi-directions-run:before {\n  content: '\\f215';\n}\n.zmdi-directions-subway:before {\n  content: '\\f1d5';\n}\n.zmdi-directions-walk:before {\n  content: '\\f216';\n}\n.zmdi-local-hotel:before {\n  content: '\\f178';\n}\n.zmdi-local-activity:before {\n  content: '\\f1df';\n}\n.zmdi-local-play:before {\n  content: '\\f1df';\n}\n.zmdi-local-airport:before {\n  content: '\\f103';\n}\n.zmdi-local-atm:before {\n  content: '\\f198';\n}\n.zmdi-local-bar:before {\n  content: '\\f137';\n}\n.zmdi-local-cafe:before {\n  content: '\\f13b';\n}\n.zmdi-local-car-wash:before {\n  content: '\\f124';\n}\n.zmdi-local-convenience-store:before {\n  content: '\\f1d3';\n}\n.zmdi-local-dining:before {\n  content: '\\f153';\n}\n.zmdi-local-drink:before {\n  content: '\\f157';\n}\n.zmdi-local-florist:before {\n  content: '\\f168';\n}\n.zmdi-local-gas-station:before {\n  content: '\\f16f';\n}\n.zmdi-local-grocery-store:before {\n  content: '\\f1cb';\n}\n.zmdi-local-hospital:before {\n  content: '\\f177';\n}\n.zmdi-local-laundry-service:before {\n  content: '\\f1e9';\n}\n.zmdi-local-library:before {\n  content: '\\f18d';\n}\n.zmdi-local-mall:before {\n  content: '\\f195';\n}\n.zmdi-local-movies:before {\n  content: '\\f19d';\n}\n.zmdi-local-offer:before {\n  content: '\\f187';\n}\n.zmdi-local-parking:before {\n  content: '\\f1a5';\n}\n.zmdi-local-parking:before {\n  content: '\\f1a5';\n}\n.zmdi-local-pharmacy:before {\n  content: '\\f176';\n}\n.zmdi-local-phone:before {\n  content: '\\f2be';\n}\n.zmdi-local-pizza:before {\n  content: '\\f1ac';\n}\n.zmdi-local-post-office:before {\n  content: '\\f15a';\n}\n.zmdi-local-printshop:before {\n  content: '\\f1b0';\n}\n.zmdi-local-see:before {\n  content: '\\f28c';\n}\n.zmdi-local-shipping:before {\n  content: '\\f1e6';\n}\n.zmdi-local-store:before {\n  content: '\\f1d4';\n}\n.zmdi-local-taxi:before {\n  content: '\\f123';\n}\n.zmdi-local-wc:before {\n  content: '\\f211';\n}\n.zmdi-my-location:before {\n  content: '\\f299';\n}\n.zmdi-directions:before {\n  content: '\\f1e7';\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/themify-icons/ie7/ie7.css",
    "content": ".ti-wand {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;');\n}\n.ti-volume {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe601;');\n}\n.ti-user {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe602;');\n}\n.ti-unlock {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe603;');\n}\n.ti-unlink {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe604;');\n}\n.ti-trash {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe605;');\n}\n.ti-thought {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe606;');\n}\n.ti-target {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe607;');\n}\n.ti-tag {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe608;');\n}\n.ti-tablet {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe609;');\n}\n.ti-star {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60a;');\n}\n.ti-spray {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60b;');\n}\n.ti-signal {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60c;');\n}\n.ti-shopping-cart {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60d;');\n}\n.ti-shopping-cart-full {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60e;');\n}\n.ti-settings {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60f;');\n}\n.ti-search {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe610;');\n}\n.ti-zoom-in {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe611;');\n}\n.ti-zoom-out {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe612;');\n}\n.ti-cut {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe613;');\n}\n.ti-ruler {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe614;');\n}\n.ti-ruler-pencil {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe615;');\n}\n.ti-ruler-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe616;');\n}\n.ti-bookmark {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe617;');\n}\n.ti-bookmark-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe618;');\n}\n.ti-reload {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe619;');\n}\n.ti-plus {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61a;');\n}\n.ti-pin {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61b;');\n}\n.ti-pencil {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61c;');\n}\n.ti-pencil-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61d;');\n}\n.ti-paint-roller {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61e;');\n}\n.ti-paint-bucket {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61f;');\n}\n.ti-na {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe620;');\n}\n.ti-mobile {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe621;');\n}\n.ti-minus {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe622;');\n}\n.ti-medall {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe623;');\n}\n.ti-medall-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe624;');\n}\n.ti-marker {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe625;');\n}\n.ti-marker-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe626;');\n}\n.ti-arrow-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe627;');\n}\n.ti-arrow-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe628;');\n}\n.ti-arrow-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe629;');\n}\n.ti-arrow-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62a;');\n}\n.ti-lock {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62b;');\n}\n.ti-location-arrow {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62c;');\n}\n.ti-link {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62d;');\n}\n.ti-layout {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62e;');\n}\n.ti-layers {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62f;');\n}\n.ti-layers-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe630;');\n}\n.ti-key {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe631;');\n}\n.ti-import {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe632;');\n}\n.ti-image {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe633;');\n}\n.ti-heart {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe634;');\n}\n.ti-heart-broken {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe635;');\n}\n.ti-hand-stop {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe636;');\n}\n.ti-hand-open {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe637;');\n}\n.ti-hand-drag {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe638;');\n}\n.ti-folder {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe639;');\n}\n.ti-flag {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63a;');\n}\n.ti-flag-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63b;');\n}\n.ti-flag-alt-2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63c;');\n}\n.ti-eye {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63d;');\n}\n.ti-export {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63e;');\n}\n.ti-exchange-vertical {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63f;');\n}\n.ti-desktop {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe640;');\n}\n.ti-cup {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe641;');\n}\n.ti-crown {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe642;');\n}\n.ti-comments {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe643;');\n}\n.ti-comment {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe644;');\n}\n.ti-comment-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe645;');\n}\n.ti-close {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe646;');\n}\n.ti-clip {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe647;');\n}\n.ti-angle-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe648;');\n}\n.ti-angle-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe649;');\n}\n.ti-angle-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64a;');\n}\n.ti-angle-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64b;');\n}\n.ti-check {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64c;');\n}\n.ti-check-box {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64d;');\n}\n.ti-camera {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64e;');\n}\n.ti-announcement {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64f;');\n}\n.ti-brush {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe650;');\n}\n.ti-briefcase {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe651;');\n}\n.ti-bolt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe652;');\n}\n.ti-bolt-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe653;');\n}\n.ti-blackboard {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe654;');\n}\n.ti-bag {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe655;');\n}\n.ti-move {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe656;');\n}\n.ti-arrows-vertical {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe657;');\n}\n.ti-arrows-horizontal {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe658;');\n}\n.ti-fullscreen {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe659;');\n}\n.ti-arrow-top-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65a;');\n}\n.ti-arrow-top-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65b;');\n}\n.ti-arrow-circle-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65c;');\n}\n.ti-arrow-circle-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65d;');\n}\n.ti-arrow-circle-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65e;');\n}\n.ti-arrow-circle-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65f;');\n}\n.ti-angle-double-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe660;');\n}\n.ti-angle-double-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe661;');\n}\n.ti-angle-double-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe662;');\n}\n.ti-angle-double-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe663;');\n}\n.ti-zip {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe664;');\n}\n.ti-world {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe665;');\n}\n.ti-wheelchair {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe666;');\n}\n.ti-view-list {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe667;');\n}\n.ti-view-list-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe668;');\n}\n.ti-view-grid {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe669;');\n}\n.ti-uppercase {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66a;');\n}\n.ti-upload {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66b;');\n}\n.ti-underline {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66c;');\n}\n.ti-truck {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66d;');\n}\n.ti-timer {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66e;');\n}\n.ti-ticket {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66f;');\n}\n.ti-thumb-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe670;');\n}\n.ti-thumb-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe671;');\n}\n.ti-text {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe672;');\n}\n.ti-stats-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe673;');\n}\n.ti-stats-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe674;');\n}\n.ti-split-v {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe675;');\n}\n.ti-split-h {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe676;');\n}\n.ti-smallcap {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe677;');\n}\n.ti-shine {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe678;');\n}\n.ti-shift-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe679;');\n}\n.ti-shift-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67a;');\n}\n.ti-shield {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67b;');\n}\n.ti-notepad {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67c;');\n}\n.ti-server {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67d;');\n}\n.ti-quote-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67e;');\n}\n.ti-quote-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67f;');\n}\n.ti-pulse {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe680;');\n}\n.ti-printer {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe681;');\n}\n.ti-power-off {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe682;');\n}\n.ti-plug {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe683;');\n}\n.ti-pie-chart {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe684;');\n}\n.ti-paragraph {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe685;');\n}\n.ti-panel {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe686;');\n}\n.ti-package {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe687;');\n}\n.ti-music {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe688;');\n}\n.ti-music-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe689;');\n}\n.ti-mouse {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68a;');\n}\n.ti-mouse-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68b;');\n}\n.ti-money {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68c;');\n}\n.ti-microphone {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68d;');\n}\n.ti-menu {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68e;');\n}\n.ti-menu-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68f;');\n}\n.ti-map {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe690;');\n}\n.ti-map-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe691;');\n}\n.ti-loop {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe692;');\n}\n.ti-location-pin {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe693;');\n}\n.ti-list {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe694;');\n}\n.ti-light-bulb {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe695;');\n}\n.ti-Italic {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe696;');\n}\n.ti-info {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe697;');\n}\n.ti-infinite {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe698;');\n}\n.ti-id-badge {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe699;');\n}\n.ti-hummer {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69a;');\n}\n.ti-home {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69b;');\n}\n.ti-help {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69c;');\n}\n.ti-headphone {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69d;');\n}\n.ti-harddrives {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69e;');\n}\n.ti-harddrive {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69f;');\n}\n.ti-gift {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a0;');\n}\n.ti-game {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a1;');\n}\n.ti-filter {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a2;');\n}\n.ti-files {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a3;');\n}\n.ti-file {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a4;');\n}\n.ti-eraser {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a5;');\n}\n.ti-envelope {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a6;');\n}\n.ti-download {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a7;');\n}\n.ti-direction {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a8;');\n}\n.ti-direction-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a9;');\n}\n.ti-dashboard {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6aa;');\n}\n.ti-control-stop {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ab;');\n}\n.ti-control-shuffle {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ac;');\n}\n.ti-control-play {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ad;');\n}\n.ti-control-pause {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ae;');\n}\n.ti-control-forward {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6af;');\n}\n.ti-control-backward {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b0;');\n}\n.ti-cloud {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b1;');\n}\n.ti-cloud-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b2;');\n}\n.ti-cloud-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b3;');\n}\n.ti-clipboard {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b4;');\n}\n.ti-car {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b5;');\n}\n.ti-calendar {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b6;');\n}\n.ti-book {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b7;');\n}\n.ti-bell {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b8;');\n}\n.ti-basketball {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b9;');\n}\n.ti-bar-chart {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ba;');\n}\n.ti-bar-chart-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bb;');\n}\n.ti-back-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bc;');\n}\n.ti-back-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bd;');\n}\n.ti-arrows-corner {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6be;');\n}\n.ti-archive {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bf;');\n}\n.ti-anchor {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c0;');\n}\n.ti-align-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c1;');\n}\n.ti-align-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c2;');\n}\n.ti-align-justify {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c3;');\n}\n.ti-align-center {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c4;');\n}\n.ti-alert {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c5;');\n}\n.ti-alarm-clock {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c6;');\n}\n.ti-agenda {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c7;');\n}\n.ti-write {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c8;');\n}\n.ti-window {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c9;');\n}\n.ti-widgetized {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ca;');\n}\n.ti-widget {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cb;');\n}\n.ti-widget-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cc;');\n}\n.ti-wallet {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cd;');\n}\n.ti-video-clapper {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ce;');\n}\n.ti-video-camera {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cf;');\n}\n.ti-vector {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d0;');\n}\n.ti-themify-logo {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d1;');\n}\n.ti-themify-favicon {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d2;');\n}\n.ti-themify-favicon-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d3;');\n}\n.ti-support {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d4;');\n}\n.ti-stamp {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d5;');\n}\n.ti-split-v-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d6;');\n}\n.ti-slice {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d7;');\n}\n.ti-shortcode {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d8;');\n}\n.ti-shift-right-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d9;');\n}\n.ti-shift-left-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6da;');\n}\n.ti-ruler-alt-2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6db;');\n}\n.ti-receipt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6dc;');\n}\n.ti-pin2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6dd;');\n}\n.ti-pin-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6de;');\n}\n.ti-pencil-alt2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6df;');\n}\n.ti-palette {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e0;');\n}\n.ti-more {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e1;');\n}\n.ti-more-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e2;');\n}\n.ti-microphone-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e3;');\n}\n.ti-magnet {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e4;');\n}\n.ti-line-double {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e5;');\n}\n.ti-line-dotted {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e6;');\n}\n.ti-line-dashed {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e7;');\n}\n.ti-layout-width-full {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e8;');\n}\n.ti-layout-width-default {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e9;');\n}\n.ti-layout-width-default-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ea;');\n}\n.ti-layout-tab {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6eb;');\n}\n.ti-layout-tab-window {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ec;');\n}\n.ti-layout-tab-v {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ed;');\n}\n.ti-layout-tab-min {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ee;');\n}\n.ti-layout-slider {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ef;');\n}\n.ti-layout-slider-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f0;');\n}\n.ti-layout-sidebar-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f1;');\n}\n.ti-layout-sidebar-none {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f2;');\n}\n.ti-layout-sidebar-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f3;');\n}\n.ti-layout-placeholder {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f4;');\n}\n.ti-layout-menu {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f5;');\n}\n.ti-layout-menu-v {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f6;');\n}\n.ti-layout-menu-separated {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f7;');\n}\n.ti-layout-menu-full {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f8;');\n}\n.ti-layout-media-right-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f9;');\n}\n.ti-layout-media-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fa;');\n}\n.ti-layout-media-overlay {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fb;');\n}\n.ti-layout-media-overlay-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fc;');\n}\n.ti-layout-media-overlay-alt-2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fd;');\n}\n.ti-layout-media-left-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fe;');\n}\n.ti-layout-media-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ff;');\n}\n.ti-layout-media-center-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe700;');\n}\n.ti-layout-media-center {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe701;');\n}\n.ti-layout-list-thumb {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe702;');\n}\n.ti-layout-list-thumb-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe703;');\n}\n.ti-layout-list-post {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe704;');\n}\n.ti-layout-list-large-image {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe705;');\n}\n.ti-layout-line-solid {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe706;');\n}\n.ti-layout-grid4 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe707;');\n}\n.ti-layout-grid3 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe708;');\n}\n.ti-layout-grid2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe709;');\n}\n.ti-layout-grid2-thumb {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70a;');\n}\n.ti-layout-cta-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70b;');\n}\n.ti-layout-cta-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70c;');\n}\n.ti-layout-cta-center {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70d;');\n}\n.ti-layout-cta-btn-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70e;');\n}\n.ti-layout-cta-btn-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70f;');\n}\n.ti-layout-column4 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe710;');\n}\n.ti-layout-column3 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe711;');\n}\n.ti-layout-column2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe712;');\n}\n.ti-layout-accordion-separated {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe713;');\n}\n.ti-layout-accordion-merged {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe714;');\n}\n.ti-layout-accordion-list {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe715;');\n}\n.ti-ink-pen {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe716;');\n}\n.ti-info-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe717;');\n}\n.ti-help-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe718;');\n}\n.ti-headphone-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe719;');\n}\n.ti-hand-point-up {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71a;');\n}\n.ti-hand-point-right {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71b;');\n}\n.ti-hand-point-left {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71c;');\n}\n.ti-hand-point-down {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71d;');\n}\n.ti-gallery {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71e;');\n}\n.ti-face-smile {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71f;');\n}\n.ti-face-sad {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe720;');\n}\n.ti-credit-card {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe721;');\n}\n.ti-control-skip-forward {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe722;');\n}\n.ti-control-skip-backward {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe723;');\n}\n.ti-control-record {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe724;');\n}\n.ti-control-eject {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe725;');\n}\n.ti-comments-smiley {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe726;');\n}\n.ti-brush-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe727;');\n}\n.ti-youtube {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe728;');\n}\n.ti-vimeo {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe729;');\n}\n.ti-twitter {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72a;');\n}\n.ti-time {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72b;');\n}\n.ti-tumblr {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72c;');\n}\n.ti-skype {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72d;');\n}\n.ti-share {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72e;');\n}\n.ti-share-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72f;');\n}\n.ti-rocket {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe730;');\n}\n.ti-pinterest {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe731;');\n}\n.ti-new-window {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe732;');\n}\n.ti-microsoft {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe733;');\n}\n.ti-list-ol {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe734;');\n}\n.ti-linkedin {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe735;');\n}\n.ti-layout-sidebar-2 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe736;');\n}\n.ti-layout-grid4-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe737;');\n}\n.ti-layout-grid3-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe738;');\n}\n.ti-layout-grid2-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe739;');\n}\n.ti-layout-column4-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73a;');\n}\n.ti-layout-column3-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73b;');\n}\n.ti-layout-column2-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73c;');\n}\n.ti-instagram {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73d;');\n}\n.ti-google {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73e;');\n}\n.ti-github {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73f;');\n}\n.ti-flickr {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe740;');\n}\n.ti-facebook {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe741;');\n}\n.ti-dropbox {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe742;');\n}\n.ti-dribbble {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe743;');\n}\n.ti-apple {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe744;');\n}\n.ti-andrAdminid {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe745;');\n}\n.ti-save {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe746;');\n}\n.ti-save-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe747;');\n}\n.ti-yahoo {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe748;');\n}\n.ti-wordpress {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe749;');\n}\n.ti-vimeo-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74a;');\n}\n.ti-twitter-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74b;');\n}\n.ti-tumblr-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74c;');\n}\n.ti-trello {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74d;');\n}\n.ti-stack-overflow {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74e;');\n}\n.ti-soundcloud {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74f;');\n}\n.ti-sharethis {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe750;');\n}\n.ti-sharethis-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe751;');\n}\n.ti-reddit {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe752;');\n}\n.ti-pinterest-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe753;');\n}\n.ti-microsoft-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe754;');\n}\n.ti-linux {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe755;');\n}\n.ti-jsfiddle {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe756;');\n}\n.ti-joomla {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe757;');\n}\n.ti-html5 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe758;');\n}\n.ti-flickr-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe759;');\n}\n.ti-email {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75a;');\n}\n.ti-drupal {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75b;');\n}\n.ti-dropbox-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75c;');\n}\n.ti-css3 {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75d;');\n}\n.ti-rss {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75e;');\n}\n.ti-rss-alt {\n\t*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75f;');\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/themify-icons/ie7/ie7.js",
    "content": "/* To avAdminid CSS expressions while still supporting IE 7 and IE 6, use this script */\n/* The script tag referring to this file must be placed before the ending body tag. */\n\n/* Use conditional comments in order to target IE 7 and older:\n\t<!--[if lt IE 8]><!-->\n\t<script src=\"ie7/ie7.js\"></script>\n\t<!--<![endif]-->\n*/\n\n(function() {\n\tfunction addIcon(el, entity) {\n\t\tvar html = el.innerHTML;\n\t\tel.innerHTML = '<span style=\"font-family: \\'themify\\'\">' + entity + '</span>' + html;\n\t}\n\tvar icons = {\n\t\t'ti-wand': '&#xe600;',\n\t\t'ti-volume': '&#xe601;',\n\t\t'ti-user': '&#xe602;',\n\t\t'ti-unlock': '&#xe603;',\n\t\t'ti-unlink': '&#xe604;',\n\t\t'ti-trash': '&#xe605;',\n\t\t'ti-thought': '&#xe606;',\n\t\t'ti-target': '&#xe607;',\n\t\t'ti-tag': '&#xe608;',\n\t\t'ti-tablet': '&#xe609;',\n\t\t'ti-star': '&#xe60a;',\n\t\t'ti-spray': '&#xe60b;',\n\t\t'ti-signal': '&#xe60c;',\n\t\t'ti-shopping-cart': '&#xe60d;',\n\t\t'ti-shopping-cart-full': '&#xe60e;',\n\t\t'ti-settings': '&#xe60f;',\n\t\t'ti-search': '&#xe610;',\n\t\t'ti-zoom-in': '&#xe611;',\n\t\t'ti-zoom-out': '&#xe612;',\n\t\t'ti-cut': '&#xe613;',\n\t\t'ti-ruler': '&#xe614;',\n\t\t'ti-ruler-pencil': '&#xe615;',\n\t\t'ti-ruler-alt': '&#xe616;',\n\t\t'ti-bookmark': '&#xe617;',\n\t\t'ti-bookmark-alt': '&#xe618;',\n\t\t'ti-reload': '&#xe619;',\n\t\t'ti-plus': '&#xe61a;',\n\t\t'ti-pin': '&#xe61b;',\n\t\t'ti-pencil': '&#xe61c;',\n\t\t'ti-pencil-alt': '&#xe61d;',\n\t\t'ti-paint-roller': '&#xe61e;',\n\t\t'ti-paint-bucket': '&#xe61f;',\n\t\t'ti-na': '&#xe620;',\n\t\t'ti-mobile': '&#xe621;',\n\t\t'ti-minus': '&#xe622;',\n\t\t'ti-medall': '&#xe623;',\n\t\t'ti-medall-alt': '&#xe624;',\n\t\t'ti-marker': '&#xe625;',\n\t\t'ti-marker-alt': '&#xe626;',\n\t\t'ti-arrow-up': '&#xe627;',\n\t\t'ti-arrow-right': '&#xe628;',\n\t\t'ti-arrow-left': '&#xe629;',\n\t\t'ti-arrow-down': '&#xe62a;',\n\t\t'ti-lock': '&#xe62b;',\n\t\t'ti-location-arrow': '&#xe62c;',\n\t\t'ti-link': '&#xe62d;',\n\t\t'ti-layout': '&#xe62e;',\n\t\t'ti-layers': '&#xe62f;',\n\t\t'ti-layers-alt': '&#xe630;',\n\t\t'ti-key': '&#xe631;',\n\t\t'ti-import': '&#xe632;',\n\t\t'ti-image': '&#xe633;',\n\t\t'ti-heart': '&#xe634;',\n\t\t'ti-heart-broken': '&#xe635;',\n\t\t'ti-hand-stop': '&#xe636;',\n\t\t'ti-hand-open': '&#xe637;',\n\t\t'ti-hand-drag': '&#xe638;',\n\t\t'ti-folder': '&#xe639;',\n\t\t'ti-flag': '&#xe63a;',\n\t\t'ti-flag-alt': '&#xe63b;',\n\t\t'ti-flag-alt-2': '&#xe63c;',\n\t\t'ti-eye': '&#xe63d;',\n\t\t'ti-export': '&#xe63e;',\n\t\t'ti-exchange-vertical': '&#xe63f;',\n\t\t'ti-desktop': '&#xe640;',\n\t\t'ti-cup': '&#xe641;',\n\t\t'ti-crown': '&#xe642;',\n\t\t'ti-comments': '&#xe643;',\n\t\t'ti-comment': '&#xe644;',\n\t\t'ti-comment-alt': '&#xe645;',\n\t\t'ti-close': '&#xe646;',\n\t\t'ti-clip': '&#xe647;',\n\t\t'ti-angle-up': '&#xe648;',\n\t\t'ti-angle-right': '&#xe649;',\n\t\t'ti-angle-left': '&#xe64a;',\n\t\t'ti-angle-down': '&#xe64b;',\n\t\t'ti-check': '&#xe64c;',\n\t\t'ti-check-box': '&#xe64d;',\n\t\t'ti-camera': '&#xe64e;',\n\t\t'ti-announcement': '&#xe64f;',\n\t\t'ti-brush': '&#xe650;',\n\t\t'ti-briefcase': '&#xe651;',\n\t\t'ti-bolt': '&#xe652;',\n\t\t'ti-bolt-alt': '&#xe653;',\n\t\t'ti-blackboard': '&#xe654;',\n\t\t'ti-bag': '&#xe655;',\n\t\t'ti-move': '&#xe656;',\n\t\t'ti-arrows-vertical': '&#xe657;',\n\t\t'ti-arrows-horizontal': '&#xe658;',\n\t\t'ti-fullscreen': '&#xe659;',\n\t\t'ti-arrow-top-right': '&#xe65a;',\n\t\t'ti-arrow-top-left': '&#xe65b;',\n\t\t'ti-arrow-circle-up': '&#xe65c;',\n\t\t'ti-arrow-circle-right': '&#xe65d;',\n\t\t'ti-arrow-circle-left': '&#xe65e;',\n\t\t'ti-arrow-circle-down': '&#xe65f;',\n\t\t'ti-angle-double-up': '&#xe660;',\n\t\t'ti-angle-double-right': '&#xe661;',\n\t\t'ti-angle-double-left': '&#xe662;',\n\t\t'ti-angle-double-down': '&#xe663;',\n\t\t'ti-zip': '&#xe664;',\n\t\t'ti-world': '&#xe665;',\n\t\t'ti-wheelchair': '&#xe666;',\n\t\t'ti-view-list': '&#xe667;',\n\t\t'ti-view-list-alt': '&#xe668;',\n\t\t'ti-view-grid': '&#xe669;',\n\t\t'ti-uppercase': '&#xe66a;',\n\t\t'ti-upload': '&#xe66b;',\n\t\t'ti-underline': '&#xe66c;',\n\t\t'ti-truck': '&#xe66d;',\n\t\t'ti-timer': '&#xe66e;',\n\t\t'ti-ticket': '&#xe66f;',\n\t\t'ti-thumb-up': '&#xe670;',\n\t\t'ti-thumb-down': '&#xe671;',\n\t\t'ti-text': '&#xe672;',\n\t\t'ti-stats-up': '&#xe673;',\n\t\t'ti-stats-down': '&#xe674;',\n\t\t'ti-split-v': '&#xe675;',\n\t\t'ti-split-h': '&#xe676;',\n\t\t'ti-smallcap': '&#xe677;',\n\t\t'ti-shine': '&#xe678;',\n\t\t'ti-shift-right': '&#xe679;',\n\t\t'ti-shift-left': '&#xe67a;',\n\t\t'ti-shield': '&#xe67b;',\n\t\t'ti-notepad': '&#xe67c;',\n\t\t'ti-server': '&#xe67d;',\n\t\t'ti-quote-right': '&#xe67e;',\n\t\t'ti-quote-left': '&#xe67f;',\n\t\t'ti-pulse': '&#xe680;',\n\t\t'ti-printer': '&#xe681;',\n\t\t'ti-power-off': '&#xe682;',\n\t\t'ti-plug': '&#xe683;',\n\t\t'ti-pie-chart': '&#xe684;',\n\t\t'ti-paragraph': '&#xe685;',\n\t\t'ti-panel': '&#xe686;',\n\t\t'ti-package': '&#xe687;',\n\t\t'ti-music': '&#xe688;',\n\t\t'ti-music-alt': '&#xe689;',\n\t\t'ti-mouse': '&#xe68a;',\n\t\t'ti-mouse-alt': '&#xe68b;',\n\t\t'ti-money': '&#xe68c;',\n\t\t'ti-microphone': '&#xe68d;',\n\t\t'ti-menu': '&#xe68e;',\n\t\t'ti-menu-alt': '&#xe68f;',\n\t\t'ti-map': '&#xe690;',\n\t\t'ti-map-alt': '&#xe691;',\n\t\t'ti-loop': '&#xe692;',\n\t\t'ti-location-pin': '&#xe693;',\n\t\t'ti-list': '&#xe694;',\n\t\t'ti-light-bulb': '&#xe695;',\n\t\t'ti-Italic': '&#xe696;',\n\t\t'ti-info': '&#xe697;',\n\t\t'ti-infinite': '&#xe698;',\n\t\t'ti-id-badge': '&#xe699;',\n\t\t'ti-hummer': '&#xe69a;',\n\t\t'ti-home': '&#xe69b;',\n\t\t'ti-help': '&#xe69c;',\n\t\t'ti-headphone': '&#xe69d;',\n\t\t'ti-harddrives': '&#xe69e;',\n\t\t'ti-harddrive': '&#xe69f;',\n\t\t'ti-gift': '&#xe6a0;',\n\t\t'ti-game': '&#xe6a1;',\n\t\t'ti-filter': '&#xe6a2;',\n\t\t'ti-files': '&#xe6a3;',\n\t\t'ti-file': '&#xe6a4;',\n\t\t'ti-eraser': '&#xe6a5;',\n\t\t'ti-envelope': '&#xe6a6;',\n\t\t'ti-download': '&#xe6a7;',\n\t\t'ti-direction': '&#xe6a8;',\n\t\t'ti-direction-alt': '&#xe6a9;',\n\t\t'ti-dashboard': '&#xe6aa;',\n\t\t'ti-control-stop': '&#xe6ab;',\n\t\t'ti-control-shuffle': '&#xe6ac;',\n\t\t'ti-control-play': '&#xe6ad;',\n\t\t'ti-control-pause': '&#xe6ae;',\n\t\t'ti-control-forward': '&#xe6af;',\n\t\t'ti-control-backward': '&#xe6b0;',\n\t\t'ti-cloud': '&#xe6b1;',\n\t\t'ti-cloud-up': '&#xe6b2;',\n\t\t'ti-cloud-down': '&#xe6b3;',\n\t\t'ti-clipboard': '&#xe6b4;',\n\t\t'ti-car': '&#xe6b5;',\n\t\t'ti-calendar': '&#xe6b6;',\n\t\t'ti-book': '&#xe6b7;',\n\t\t'ti-bell': '&#xe6b8;',\n\t\t'ti-basketball': '&#xe6b9;',\n\t\t'ti-bar-chart': '&#xe6ba;',\n\t\t'ti-bar-chart-alt': '&#xe6bb;',\n\t\t'ti-back-right': '&#xe6bc;',\n\t\t'ti-back-left': '&#xe6bd;',\n\t\t'ti-arrows-corner': '&#xe6be;',\n\t\t'ti-archive': '&#xe6bf;',\n\t\t'ti-anchor': '&#xe6c0;',\n\t\t'ti-align-right': '&#xe6c1;',\n\t\t'ti-align-left': '&#xe6c2;',\n\t\t'ti-align-justify': '&#xe6c3;',\n\t\t'ti-align-center': '&#xe6c4;',\n\t\t'ti-alert': '&#xe6c5;',\n\t\t'ti-alarm-clock': '&#xe6c6;',\n\t\t'ti-agenda': '&#xe6c7;',\n\t\t'ti-write': '&#xe6c8;',\n\t\t'ti-window': '&#xe6c9;',\n\t\t'ti-widgetized': '&#xe6ca;',\n\t\t'ti-widget': '&#xe6cb;',\n\t\t'ti-widget-alt': '&#xe6cc;',\n\t\t'ti-wallet': '&#xe6cd;',\n\t\t'ti-video-clapper': '&#xe6ce;',\n\t\t'ti-video-camera': '&#xe6cf;',\n\t\t'ti-vector': '&#xe6d0;',\n\t\t'ti-themify-logo': '&#xe6d1;',\n\t\t'ti-themify-favicon': '&#xe6d2;',\n\t\t'ti-themify-favicon-alt': '&#xe6d3;',\n\t\t'ti-support': '&#xe6d4;',\n\t\t'ti-stamp': '&#xe6d5;',\n\t\t'ti-split-v-alt': '&#xe6d6;',\n\t\t'ti-slice': '&#xe6d7;',\n\t\t'ti-shortcode': '&#xe6d8;',\n\t\t'ti-shift-right-alt': '&#xe6d9;',\n\t\t'ti-shift-left-alt': '&#xe6da;',\n\t\t'ti-ruler-alt-2': '&#xe6db;',\n\t\t'ti-receipt': '&#xe6dc;',\n\t\t'ti-pin2': '&#xe6dd;',\n\t\t'ti-pin-alt': '&#xe6de;',\n\t\t'ti-pencil-alt2': '&#xe6df;',\n\t\t'ti-palette': '&#xe6e0;',\n\t\t'ti-more': '&#xe6e1;',\n\t\t'ti-more-alt': '&#xe6e2;',\n\t\t'ti-microphone-alt': '&#xe6e3;',\n\t\t'ti-magnet': '&#xe6e4;',\n\t\t'ti-line-double': '&#xe6e5;',\n\t\t'ti-line-dotted': '&#xe6e6;',\n\t\t'ti-line-dashed': '&#xe6e7;',\n\t\t'ti-layout-width-full': '&#xe6e8;',\n\t\t'ti-layout-width-default': '&#xe6e9;',\n\t\t'ti-layout-width-default-alt': '&#xe6ea;',\n\t\t'ti-layout-tab': '&#xe6eb;',\n\t\t'ti-layout-tab-window': '&#xe6ec;',\n\t\t'ti-layout-tab-v': '&#xe6ed;',\n\t\t'ti-layout-tab-min': '&#xe6ee;',\n\t\t'ti-layout-slider': '&#xe6ef;',\n\t\t'ti-layout-slider-alt': '&#xe6f0;',\n\t\t'ti-layout-sidebar-right': '&#xe6f1;',\n\t\t'ti-layout-sidebar-none': '&#xe6f2;',\n\t\t'ti-layout-sidebar-left': '&#xe6f3;',\n\t\t'ti-layout-placeholder': '&#xe6f4;',\n\t\t'ti-layout-menu': '&#xe6f5;',\n\t\t'ti-layout-menu-v': '&#xe6f6;',\n\t\t'ti-layout-menu-separated': '&#xe6f7;',\n\t\t'ti-layout-menu-full': '&#xe6f8;',\n\t\t'ti-layout-media-right-alt': '&#xe6f9;',\n\t\t'ti-layout-media-right': '&#xe6fa;',\n\t\t'ti-layout-media-overlay': '&#xe6fb;',\n\t\t'ti-layout-media-overlay-alt': '&#xe6fc;',\n\t\t'ti-layout-media-overlay-alt-2': '&#xe6fd;',\n\t\t'ti-layout-media-left-alt': '&#xe6fe;',\n\t\t'ti-layout-media-left': '&#xe6ff;',\n\t\t'ti-layout-media-center-alt': '&#xe700;',\n\t\t'ti-layout-media-center': '&#xe701;',\n\t\t'ti-layout-list-thumb': '&#xe702;',\n\t\t'ti-layout-list-thumb-alt': '&#xe703;',\n\t\t'ti-layout-list-post': '&#xe704;',\n\t\t'ti-layout-list-large-image': '&#xe705;',\n\t\t'ti-layout-line-solid': '&#xe706;',\n\t\t'ti-layout-grid4': '&#xe707;',\n\t\t'ti-layout-grid3': '&#xe708;',\n\t\t'ti-layout-grid2': '&#xe709;',\n\t\t'ti-layout-grid2-thumb': '&#xe70a;',\n\t\t'ti-layout-cta-right': '&#xe70b;',\n\t\t'ti-layout-cta-left': '&#xe70c;',\n\t\t'ti-layout-cta-center': '&#xe70d;',\n\t\t'ti-layout-cta-btn-right': '&#xe70e;',\n\t\t'ti-layout-cta-btn-left': '&#xe70f;',\n\t\t'ti-layout-column4': '&#xe710;',\n\t\t'ti-layout-column3': '&#xe711;',\n\t\t'ti-layout-column2': '&#xe712;',\n\t\t'ti-layout-accordion-separated': '&#xe713;',\n\t\t'ti-layout-accordion-merged': '&#xe714;',\n\t\t'ti-layout-accordion-list': '&#xe715;',\n\t\t'ti-ink-pen': '&#xe716;',\n\t\t'ti-info-alt': '&#xe717;',\n\t\t'ti-help-alt': '&#xe718;',\n\t\t'ti-headphone-alt': '&#xe719;',\n\t\t'ti-hand-point-up': '&#xe71a;',\n\t\t'ti-hand-point-right': '&#xe71b;',\n\t\t'ti-hand-point-left': '&#xe71c;',\n\t\t'ti-hand-point-down': '&#xe71d;',\n\t\t'ti-gallery': '&#xe71e;',\n\t\t'ti-face-smile': '&#xe71f;',\n\t\t'ti-face-sad': '&#xe720;',\n\t\t'ti-credit-card': '&#xe721;',\n\t\t'ti-control-skip-forward': '&#xe722;',\n\t\t'ti-control-skip-backward': '&#xe723;',\n\t\t'ti-control-record': '&#xe724;',\n\t\t'ti-control-eject': '&#xe725;',\n\t\t'ti-comments-smiley': '&#xe726;',\n\t\t'ti-brush-alt': '&#xe727;',\n\t\t'ti-youtube': '&#xe728;',\n\t\t'ti-vimeo': '&#xe729;',\n\t\t'ti-twitter': '&#xe72a;',\n\t\t'ti-time': '&#xe72b;',\n\t\t'ti-tumblr': '&#xe72c;',\n\t\t'ti-skype': '&#xe72d;',\n\t\t'ti-share': '&#xe72e;',\n\t\t'ti-share-alt': '&#xe72f;',\n\t\t'ti-rocket': '&#xe730;',\n\t\t'ti-pinterest': '&#xe731;',\n\t\t'ti-new-window': '&#xe732;',\n\t\t'ti-microsoft': '&#xe733;',\n\t\t'ti-list-ol': '&#xe734;',\n\t\t'ti-linkedin': '&#xe735;',\n\t\t'ti-layout-sidebar-2': '&#xe736;',\n\t\t'ti-layout-grid4-alt': '&#xe737;',\n\t\t'ti-layout-grid3-alt': '&#xe738;',\n\t\t'ti-layout-grid2-alt': '&#xe739;',\n\t\t'ti-layout-column4-alt': '&#xe73a;',\n\t\t'ti-layout-column3-alt': '&#xe73b;',\n\t\t'ti-layout-column2-alt': '&#xe73c;',\n\t\t'ti-instagram': '&#xe73d;',\n\t\t'ti-google': '&#xe73e;',\n\t\t'ti-github': '&#xe73f;',\n\t\t'ti-flickr': '&#xe740;',\n\t\t'ti-facebook': '&#xe741;',\n\t\t'ti-dropbox': '&#xe742;',\n\t\t'ti-dribbble': '&#xe743;',\n\t\t'ti-apple': '&#xe744;',\n\t\t'ti-andrAdminid': '&#xe745;',\n\t\t'ti-save': '&#xe746;',\n\t\t'ti-save-alt': '&#xe747;',\n\t\t'ti-yahoo': '&#xe748;',\n\t\t'ti-wordpress': '&#xe749;',\n\t\t'ti-vimeo-alt': '&#xe74a;',\n\t\t'ti-twitter-alt': '&#xe74b;',\n\t\t'ti-tumblr-alt': '&#xe74c;',\n\t\t'ti-trello': '&#xe74d;',\n\t\t'ti-stack-overflow': '&#xe74e;',\n\t\t'ti-soundcloud': '&#xe74f;',\n\t\t'ti-sharethis': '&#xe750;',\n\t\t'ti-sharethis-alt': '&#xe751;',\n\t\t'ti-reddit': '&#xe752;',\n\t\t'ti-pinterest-alt': '&#xe753;',\n\t\t'ti-microsoft-alt': '&#xe754;',\n\t\t'ti-linux': '&#xe755;',\n\t\t'ti-jsfiddle': '&#xe756;',\n\t\t'ti-joomla': '&#xe757;',\n\t\t'ti-html5': '&#xe758;',\n\t\t'ti-flickr-alt': '&#xe759;',\n\t\t'ti-email': '&#xe75a;',\n\t\t'ti-drupal': '&#xe75b;',\n\t\t'ti-dropbox-alt': '&#xe75c;',\n\t\t'ti-css3': '&#xe75d;',\n\t\t'ti-rss': '&#xe75e;',\n\t\t'ti-rss-alt': '&#xe75f;',\n\t\t'0': 0\n\t\t},\n\t\tels = document.getElementsByTagName('*'),\n\t\ti, c, el;\n\tfor (i = 0; ; i += 1) {\n\t\tel = els[i];\n\t\tif(!el) {\n\t\t\tbreak;\n\t\t}\n\t\tc = el.className;\n\t\tc = c.match(/ti-[^\\s'\"]+/);\n\t\tif (c && icons[c[0]]) {\n\t\t\taddIcon(el, icons[c[0]]);\n\t\t}\n\t}\n}());\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/themify-icons/themify-icons.css",
    "content": "@font-face {\n\tfont-family: 'themify';\n\tsrc:url('fonts/themify.eot?-fvbane');\n\tsrc:url('fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'),\n\t\turl('fonts/themify.woff') format('woff'),\n\t\turl('fonts/themify.ttf') format('truetype'),\n\t\turl('fonts/themify.svg?-fvbane#themify') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n[class^=\"ti-\"], [class*=\" ti-\"] {\n\tfont-family: 'themify';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n.ti-wand:before {\n\tcontent: \"\\e600\";\n}\n.ti-volume:before {\n\tcontent: \"\\e601\";\n}\n.ti-user:before {\n\tcontent: \"\\e602\";\n}\n.ti-unlock:before {\n\tcontent: \"\\e603\";\n}\n.ti-unlink:before {\n\tcontent: \"\\e604\";\n}\n.ti-trash:before {\n\tcontent: \"\\e605\";\n}\n.ti-thought:before {\n\tcontent: \"\\e606\";\n}\n.ti-target:before {\n\tcontent: \"\\e607\";\n}\n.ti-tag:before {\n\tcontent: \"\\e608\";\n}\n.ti-tablet:before {\n\tcontent: \"\\e609\";\n}\n.ti-star:before {\n\tcontent: \"\\e60a\";\n}\n.ti-spray:before {\n\tcontent: \"\\e60b\";\n}\n.ti-signal:before {\n\tcontent: \"\\e60c\";\n}\n.ti-shopping-cart:before {\n\tcontent: \"\\e60d\";\n}\n.ti-shopping-cart-full:before {\n\tcontent: \"\\e60e\";\n}\n.ti-settings:before {\n\tcontent: \"\\e60f\";\n}\n.ti-search:before {\n\tcontent: \"\\e610\";\n}\n.ti-zoom-in:before {\n\tcontent: \"\\e611\";\n}\n.ti-zoom-out:before {\n\tcontent: \"\\e612\";\n}\n.ti-cut:before {\n\tcontent: \"\\e613\";\n}\n.ti-ruler:before {\n\tcontent: \"\\e614\";\n}\n.ti-ruler-pencil:before {\n\tcontent: \"\\e615\";\n}\n.ti-ruler-alt:before {\n\tcontent: \"\\e616\";\n}\n.ti-bookmark:before {\n\tcontent: \"\\e617\";\n}\n.ti-bookmark-alt:before {\n\tcontent: \"\\e618\";\n}\n.ti-reload:before {\n\tcontent: \"\\e619\";\n}\n.ti-plus:before {\n\tcontent: \"\\e61a\";\n}\n.ti-pin:before {\n\tcontent: \"\\e61b\";\n}\n.ti-pencil:before {\n\tcontent: \"\\e61c\";\n}\n.ti-pencil-alt:before {\n\tcontent: \"\\e61d\";\n}\n.ti-paint-roller:before {\n\tcontent: \"\\e61e\";\n}\n.ti-paint-bucket:before {\n\tcontent: \"\\e61f\";\n}\n.ti-na:before {\n\tcontent: \"\\e620\";\n}\n.ti-mobile:before {\n\tcontent: \"\\e621\";\n}\n.ti-minus:before {\n\tcontent: \"\\e622\";\n}\n.ti-medall:before {\n\tcontent: \"\\e623\";\n}\n.ti-medall-alt:before {\n\tcontent: \"\\e624\";\n}\n.ti-marker:before {\n\tcontent: \"\\e625\";\n}\n.ti-marker-alt:before {\n\tcontent: \"\\e626\";\n}\n.ti-arrow-up:before {\n\tcontent: \"\\e627\";\n}\n.ti-arrow-right:before {\n\tcontent: \"\\e628\";\n}\n.ti-arrow-left:before {\n\tcontent: \"\\e629\";\n}\n.ti-arrow-down:before {\n\tcontent: \"\\e62a\";\n}\n.ti-lock:before {\n\tcontent: \"\\e62b\";\n}\n.ti-location-arrow:before {\n\tcontent: \"\\e62c\";\n}\n.ti-link:before {\n\tcontent: \"\\e62d\";\n}\n.ti-layout:before {\n\tcontent: \"\\e62e\";\n}\n.ti-layers:before {\n\tcontent: \"\\e62f\";\n}\n.ti-layers-alt:before {\n\tcontent: \"\\e630\";\n}\n.ti-key:before {\n\tcontent: \"\\e631\";\n}\n.ti-import:before {\n\tcontent: \"\\e632\";\n}\n.ti-image:before {\n\tcontent: \"\\e633\";\n}\n.ti-heart:before {\n\tcontent: \"\\e634\";\n}\n.ti-heart-broken:before {\n\tcontent: \"\\e635\";\n}\n.ti-hand-stop:before {\n\tcontent: \"\\e636\";\n}\n.ti-hand-open:before {\n\tcontent: \"\\e637\";\n}\n.ti-hand-drag:before {\n\tcontent: \"\\e638\";\n}\n.ti-folder:before {\n\tcontent: \"\\e639\";\n}\n.ti-flag:before {\n\tcontent: \"\\e63a\";\n}\n.ti-flag-alt:before {\n\tcontent: \"\\e63b\";\n}\n.ti-flag-alt-2:before {\n\tcontent: \"\\e63c\";\n}\n.ti-eye:before {\n\tcontent: \"\\e63d\";\n}\n.ti-export:before {\n\tcontent: \"\\e63e\";\n}\n.ti-exchange-vertical:before {\n\tcontent: \"\\e63f\";\n}\n.ti-desktop:before {\n\tcontent: \"\\e640\";\n}\n.ti-cup:before {\n\tcontent: \"\\e641\";\n}\n.ti-crown:before {\n\tcontent: \"\\e642\";\n}\n.ti-comments:before {\n\tcontent: \"\\e643\";\n}\n.ti-comment:before {\n\tcontent: \"\\e644\";\n}\n.ti-comment-alt:before {\n\tcontent: \"\\e645\";\n}\n.ti-close:before {\n\tcontent: \"\\e646\";\n}\n.ti-clip:before {\n\tcontent: \"\\e647\";\n}\n.ti-angle-up:before {\n\tcontent: \"\\e648\";\n}\n.ti-angle-right:before {\n\tcontent: \"\\e649\";\n}\n.ti-angle-left:before {\n\tcontent: \"\\e64a\";\n}\n.ti-angle-down:before {\n\tcontent: \"\\e64b\";\n}\n.ti-check:before {\n\tcontent: \"\\e64c\";\n}\n.ti-check-box:before {\n\tcontent: \"\\e64d\";\n}\n.ti-camera:before {\n\tcontent: \"\\e64e\";\n}\n.ti-announcement:before {\n\tcontent: \"\\e64f\";\n}\n.ti-brush:before {\n\tcontent: \"\\e650\";\n}\n.ti-briefcase:before {\n\tcontent: \"\\e651\";\n}\n.ti-bolt:before {\n\tcontent: \"\\e652\";\n}\n.ti-bolt-alt:before {\n\tcontent: \"\\e653\";\n}\n.ti-blackboard:before {\n\tcontent: \"\\e654\";\n}\n.ti-bag:before {\n\tcontent: \"\\e655\";\n}\n.ti-move:before {\n\tcontent: \"\\e656\";\n}\n.ti-arrows-vertical:before {\n\tcontent: \"\\e657\";\n}\n.ti-arrows-horizontal:before {\n\tcontent: \"\\e658\";\n}\n.ti-fullscreen:before {\n\tcontent: \"\\e659\";\n}\n.ti-arrow-top-right:before {\n\tcontent: \"\\e65a\";\n}\n.ti-arrow-top-left:before {\n\tcontent: \"\\e65b\";\n}\n.ti-arrow-circle-up:before {\n\tcontent: \"\\e65c\";\n}\n.ti-arrow-circle-right:before {\n\tcontent: \"\\e65d\";\n}\n.ti-arrow-circle-left:before {\n\tcontent: \"\\e65e\";\n}\n.ti-arrow-circle-down:before {\n\tcontent: \"\\e65f\";\n}\n.ti-angle-double-up:before {\n\tcontent: \"\\e660\";\n}\n.ti-angle-double-right:before {\n\tcontent: \"\\e661\";\n}\n.ti-angle-double-left:before {\n\tcontent: \"\\e662\";\n}\n.ti-angle-double-down:before {\n\tcontent: \"\\e663\";\n}\n.ti-zip:before {\n\tcontent: \"\\e664\";\n}\n.ti-world:before {\n\tcontent: \"\\e665\";\n}\n.ti-wheelchair:before {\n\tcontent: \"\\e666\";\n}\n.ti-view-list:before {\n\tcontent: \"\\e667\";\n}\n.ti-view-list-alt:before {\n\tcontent: \"\\e668\";\n}\n.ti-view-grid:before {\n\tcontent: \"\\e669\";\n}\n.ti-uppercase:before {\n\tcontent: \"\\e66a\";\n}\n.ti-upload:before {\n\tcontent: \"\\e66b\";\n}\n.ti-underline:before {\n\tcontent: \"\\e66c\";\n}\n.ti-truck:before {\n\tcontent: \"\\e66d\";\n}\n.ti-timer:before {\n\tcontent: \"\\e66e\";\n}\n.ti-ticket:before {\n\tcontent: \"\\e66f\";\n}\n.ti-thumb-up:before {\n\tcontent: \"\\e670\";\n}\n.ti-thumb-down:before {\n\tcontent: \"\\e671\";\n}\n.ti-text:before {\n\tcontent: \"\\e672\";\n}\n.ti-stats-up:before {\n\tcontent: \"\\e673\";\n}\n.ti-stats-down:before {\n\tcontent: \"\\e674\";\n}\n.ti-split-v:before {\n\tcontent: \"\\e675\";\n}\n.ti-split-h:before {\n\tcontent: \"\\e676\";\n}\n.ti-smallcap:before {\n\tcontent: \"\\e677\";\n}\n.ti-shine:before {\n\tcontent: \"\\e678\";\n}\n.ti-shift-right:before {\n\tcontent: \"\\e679\";\n}\n.ti-shift-left:before {\n\tcontent: \"\\e67a\";\n}\n.ti-shield:before {\n\tcontent: \"\\e67b\";\n}\n.ti-notepad:before {\n\tcontent: \"\\e67c\";\n}\n.ti-server:before {\n\tcontent: \"\\e67d\";\n}\n.ti-quote-right:before {\n\tcontent: \"\\e67e\";\n}\n.ti-quote-left:before {\n\tcontent: \"\\e67f\";\n}\n.ti-pulse:before {\n\tcontent: \"\\e680\";\n}\n.ti-printer:before {\n\tcontent: \"\\e681\";\n}\n.ti-power-off:before {\n\tcontent: \"\\e682\";\n}\n.ti-plug:before {\n\tcontent: \"\\e683\";\n}\n.ti-pie-chart:before {\n\tcontent: \"\\e684\";\n}\n.ti-paragraph:before {\n\tcontent: \"\\e685\";\n}\n.ti-panel:before {\n\tcontent: \"\\e686\";\n}\n.ti-package:before {\n\tcontent: \"\\e687\";\n}\n.ti-music:before {\n\tcontent: \"\\e688\";\n}\n.ti-music-alt:before {\n\tcontent: \"\\e689\";\n}\n.ti-mouse:before {\n\tcontent: \"\\e68a\";\n}\n.ti-mouse-alt:before {\n\tcontent: \"\\e68b\";\n}\n.ti-money:before {\n\tcontent: \"\\e68c\";\n}\n.ti-microphone:before {\n\tcontent: \"\\e68d\";\n}\n.ti-menu:before {\n\tcontent: \"\\e68e\";\n}\n.ti-menu-alt:before {\n\tcontent: \"\\e68f\";\n}\n.ti-map:before {\n\tcontent: \"\\e690\";\n}\n.ti-map-alt:before {\n\tcontent: \"\\e691\";\n}\n.ti-loop:before {\n\tcontent: \"\\e692\";\n}\n.ti-location-pin:before {\n\tcontent: \"\\e693\";\n}\n.ti-list:before {\n\tcontent: \"\\e694\";\n}\n.ti-light-bulb:before {\n\tcontent: \"\\e695\";\n}\n.ti-Italic:before {\n\tcontent: \"\\e696\";\n}\n.ti-info:before {\n\tcontent: \"\\e697\";\n}\n.ti-infinite:before {\n\tcontent: \"\\e698\";\n}\n.ti-id-badge:before {\n\tcontent: \"\\e699\";\n}\n.ti-hummer:before {\n\tcontent: \"\\e69a\";\n}\n.ti-home:before {\n\tcontent: \"\\e69b\";\n}\n.ti-help:before {\n\tcontent: \"\\e69c\";\n}\n.ti-headphone:before {\n\tcontent: \"\\e69d\";\n}\n.ti-harddrives:before {\n\tcontent: \"\\e69e\";\n}\n.ti-harddrive:before {\n\tcontent: \"\\e69f\";\n}\n.ti-gift:before {\n\tcontent: \"\\e6a0\";\n}\n.ti-game:before {\n\tcontent: \"\\e6a1\";\n}\n.ti-filter:before {\n\tcontent: \"\\e6a2\";\n}\n.ti-files:before {\n\tcontent: \"\\e6a3\";\n}\n.ti-file:before {\n\tcontent: \"\\e6a4\";\n}\n.ti-eraser:before {\n\tcontent: \"\\e6a5\";\n}\n.ti-envelope:before {\n\tcontent: \"\\e6a6\";\n}\n.ti-download:before {\n\tcontent: \"\\e6a7\";\n}\n.ti-direction:before {\n\tcontent: \"\\e6a8\";\n}\n.ti-direction-alt:before {\n\tcontent: \"\\e6a9\";\n}\n.ti-dashboard:before {\n\tcontent: \"\\e6aa\";\n}\n.ti-control-stop:before {\n\tcontent: \"\\e6ab\";\n}\n.ti-control-shuffle:before {\n\tcontent: \"\\e6ac\";\n}\n.ti-control-play:before {\n\tcontent: \"\\e6ad\";\n}\n.ti-control-pause:before {\n\tcontent: \"\\e6ae\";\n}\n.ti-control-forward:before {\n\tcontent: \"\\e6af\";\n}\n.ti-control-backward:before {\n\tcontent: \"\\e6b0\";\n}\n.ti-cloud:before {\n\tcontent: \"\\e6b1\";\n}\n.ti-cloud-up:before {\n\tcontent: \"\\e6b2\";\n}\n.ti-cloud-down:before {\n\tcontent: \"\\e6b3\";\n}\n.ti-clipboard:before {\n\tcontent: \"\\e6b4\";\n}\n.ti-car:before {\n\tcontent: \"\\e6b5\";\n}\n.ti-calendar:before {\n\tcontent: \"\\e6b6\";\n}\n.ti-book:before {\n\tcontent: \"\\e6b7\";\n}\n.ti-bell:before {\n\tcontent: \"\\e6b8\";\n}\n.ti-basketball:before {\n\tcontent: \"\\e6b9\";\n}\n.ti-bar-chart:before {\n\tcontent: \"\\e6ba\";\n}\n.ti-bar-chart-alt:before {\n\tcontent: \"\\e6bb\";\n}\n.ti-back-right:before {\n\tcontent: \"\\e6bc\";\n}\n.ti-back-left:before {\n\tcontent: \"\\e6bd\";\n}\n.ti-arrows-corner:before {\n\tcontent: \"\\e6be\";\n}\n.ti-archive:before {\n\tcontent: \"\\e6bf\";\n}\n.ti-anchor:before {\n\tcontent: \"\\e6c0\";\n}\n.ti-align-right:before {\n\tcontent: \"\\e6c1\";\n}\n.ti-align-left:before {\n\tcontent: \"\\e6c2\";\n}\n.ti-align-justify:before {\n\tcontent: \"\\e6c3\";\n}\n.ti-align-center:before {\n\tcontent: \"\\e6c4\";\n}\n.ti-alert:before {\n\tcontent: \"\\e6c5\";\n}\n.ti-alarm-clock:before {\n\tcontent: \"\\e6c6\";\n}\n.ti-agenda:before {\n\tcontent: \"\\e6c7\";\n}\n.ti-write:before {\n\tcontent: \"\\e6c8\";\n}\n.ti-window:before {\n\tcontent: \"\\e6c9\";\n}\n.ti-widgetized:before {\n\tcontent: \"\\e6ca\";\n}\n.ti-widget:before {\n\tcontent: \"\\e6cb\";\n}\n.ti-widget-alt:before {\n\tcontent: \"\\e6cc\";\n}\n.ti-wallet:before {\n\tcontent: \"\\e6cd\";\n}\n.ti-video-clapper:before {\n\tcontent: \"\\e6ce\";\n}\n.ti-video-camera:before {\n\tcontent: \"\\e6cf\";\n}\n.ti-vector:before {\n\tcontent: \"\\e6d0\";\n}\n.ti-themify-logo:before {\n\tcontent: \"\\e6d1\";\n}\n.ti-themify-favicon:before {\n\tcontent: \"\\e6d2\";\n}\n.ti-themify-favicon-alt:before {\n\tcontent: \"\\e6d3\";\n}\n.ti-support:before {\n\tcontent: \"\\e6d4\";\n}\n.ti-stamp:before {\n\tcontent: \"\\e6d5\";\n}\n.ti-split-v-alt:before {\n\tcontent: \"\\e6d6\";\n}\n.ti-slice:before {\n\tcontent: \"\\e6d7\";\n}\n.ti-shortcode:before {\n\tcontent: \"\\e6d8\";\n}\n.ti-shift-right-alt:before {\n\tcontent: \"\\e6d9\";\n}\n.ti-shift-left-alt:before {\n\tcontent: \"\\e6da\";\n}\n.ti-ruler-alt-2:before {\n\tcontent: \"\\e6db\";\n}\n.ti-receipt:before {\n\tcontent: \"\\e6dc\";\n}\n.ti-pin2:before {\n\tcontent: \"\\e6dd\";\n}\n.ti-pin-alt:before {\n\tcontent: \"\\e6de\";\n}\n.ti-pencil-alt2:before {\n\tcontent: \"\\e6df\";\n}\n.ti-palette:before {\n\tcontent: \"\\e6e0\";\n}\n.ti-more:before {\n\tcontent: \"\\e6e1\";\n}\n.ti-more-alt:before {\n\tcontent: \"\\e6e2\";\n}\n.ti-microphone-alt:before {\n\tcontent: \"\\e6e3\";\n}\n.ti-magnet:before {\n\tcontent: \"\\e6e4\";\n}\n.ti-line-double:before {\n\tcontent: \"\\e6e5\";\n}\n.ti-line-dotted:before {\n\tcontent: \"\\e6e6\";\n}\n.ti-line-dashed:before {\n\tcontent: \"\\e6e7\";\n}\n.ti-layout-width-full:before {\n\tcontent: \"\\e6e8\";\n}\n.ti-layout-width-default:before {\n\tcontent: \"\\e6e9\";\n}\n.ti-layout-width-default-alt:before {\n\tcontent: \"\\e6ea\";\n}\n.ti-layout-tab:before {\n\tcontent: \"\\e6eb\";\n}\n.ti-layout-tab-window:before {\n\tcontent: \"\\e6ec\";\n}\n.ti-layout-tab-v:before {\n\tcontent: \"\\e6ed\";\n}\n.ti-layout-tab-min:before {\n\tcontent: \"\\e6ee\";\n}\n.ti-layout-slider:before {\n\tcontent: \"\\e6ef\";\n}\n.ti-layout-slider-alt:before {\n\tcontent: \"\\e6f0\";\n}\n.ti-layout-sidebar-right:before {\n\tcontent: \"\\e6f1\";\n}\n.ti-layout-sidebar-none:before {\n\tcontent: \"\\e6f2\";\n}\n.ti-layout-sidebar-left:before {\n\tcontent: \"\\e6f3\";\n}\n.ti-layout-placeholder:before {\n\tcontent: \"\\e6f4\";\n}\n.ti-layout-menu:before {\n\tcontent: \"\\e6f5\";\n}\n.ti-layout-menu-v:before {\n\tcontent: \"\\e6f6\";\n}\n.ti-layout-menu-separated:before {\n\tcontent: \"\\e6f7\";\n}\n.ti-layout-menu-full:before {\n\tcontent: \"\\e6f8\";\n}\n.ti-layout-media-right-alt:before {\n\tcontent: \"\\e6f9\";\n}\n.ti-layout-media-right:before {\n\tcontent: \"\\e6fa\";\n}\n.ti-layout-media-overlay:before {\n\tcontent: \"\\e6fb\";\n}\n.ti-layout-media-overlay-alt:before {\n\tcontent: \"\\e6fc\";\n}\n.ti-layout-media-overlay-alt-2:before {\n\tcontent: \"\\e6fd\";\n}\n.ti-layout-media-left-alt:before {\n\tcontent: \"\\e6fe\";\n}\n.ti-layout-media-left:before {\n\tcontent: \"\\e6ff\";\n}\n.ti-layout-media-center-alt:before {\n\tcontent: \"\\e700\";\n}\n.ti-layout-media-center:before {\n\tcontent: \"\\e701\";\n}\n.ti-layout-list-thumb:before {\n\tcontent: \"\\e702\";\n}\n.ti-layout-list-thumb-alt:before {\n\tcontent: \"\\e703\";\n}\n.ti-layout-list-post:before {\n\tcontent: \"\\e704\";\n}\n.ti-layout-list-large-image:before {\n\tcontent: \"\\e705\";\n}\n.ti-layout-line-solid:before {\n\tcontent: \"\\e706\";\n}\n.ti-layout-grid4:before {\n\tcontent: \"\\e707\";\n}\n.ti-layout-grid3:before {\n\tcontent: \"\\e708\";\n}\n.ti-layout-grid2:before {\n\tcontent: \"\\e709\";\n}\n.ti-layout-grid2-thumb:before {\n\tcontent: \"\\e70a\";\n}\n.ti-layout-cta-right:before {\n\tcontent: \"\\e70b\";\n}\n.ti-layout-cta-left:before {\n\tcontent: \"\\e70c\";\n}\n.ti-layout-cta-center:before {\n\tcontent: \"\\e70d\";\n}\n.ti-layout-cta-btn-right:before {\n\tcontent: \"\\e70e\";\n}\n.ti-layout-cta-btn-left:before {\n\tcontent: \"\\e70f\";\n}\n.ti-layout-column4:before {\n\tcontent: \"\\e710\";\n}\n.ti-layout-column3:before {\n\tcontent: \"\\e711\";\n}\n.ti-layout-column2:before {\n\tcontent: \"\\e712\";\n}\n.ti-layout-accordion-separated:before {\n\tcontent: \"\\e713\";\n}\n.ti-layout-accordion-merged:before {\n\tcontent: \"\\e714\";\n}\n.ti-layout-accordion-list:before {\n\tcontent: \"\\e715\";\n}\n.ti-ink-pen:before {\n\tcontent: \"\\e716\";\n}\n.ti-info-alt:before {\n\tcontent: \"\\e717\";\n}\n.ti-help-alt:before {\n\tcontent: \"\\e718\";\n}\n.ti-headphone-alt:before {\n\tcontent: \"\\e719\";\n}\n.ti-hand-point-up:before {\n\tcontent: \"\\e71a\";\n}\n.ti-hand-point-right:before {\n\tcontent: \"\\e71b\";\n}\n.ti-hand-point-left:before {\n\tcontent: \"\\e71c\";\n}\n.ti-hand-point-down:before {\n\tcontent: \"\\e71d\";\n}\n.ti-gallery:before {\n\tcontent: \"\\e71e\";\n}\n.ti-face-smile:before {\n\tcontent: \"\\e71f\";\n}\n.ti-face-sad:before {\n\tcontent: \"\\e720\";\n}\n.ti-credit-card:before {\n\tcontent: \"\\e721\";\n}\n.ti-control-skip-forward:before {\n\tcontent: \"\\e722\";\n}\n.ti-control-skip-backward:before {\n\tcontent: \"\\e723\";\n}\n.ti-control-record:before {\n\tcontent: \"\\e724\";\n}\n.ti-control-eject:before {\n\tcontent: \"\\e725\";\n}\n.ti-comments-smiley:before {\n\tcontent: \"\\e726\";\n}\n.ti-brush-alt:before {\n\tcontent: \"\\e727\";\n}\n.ti-youtube:before {\n\tcontent: \"\\e728\";\n}\n.ti-vimeo:before {\n\tcontent: \"\\e729\";\n}\n.ti-twitter:before {\n\tcontent: \"\\e72a\";\n}\n.ti-time:before {\n\tcontent: \"\\e72b\";\n}\n.ti-tumblr:before {\n\tcontent: \"\\e72c\";\n}\n.ti-skype:before {\n\tcontent: \"\\e72d\";\n}\n.ti-share:before {\n\tcontent: \"\\e72e\";\n}\n.ti-share-alt:before {\n\tcontent: \"\\e72f\";\n}\n.ti-rocket:before {\n\tcontent: \"\\e730\";\n}\n.ti-pinterest:before {\n\tcontent: \"\\e731\";\n}\n.ti-new-window:before {\n\tcontent: \"\\e732\";\n}\n.ti-microsoft:before {\n\tcontent: \"\\e733\";\n}\n.ti-list-ol:before {\n\tcontent: \"\\e734\";\n}\n.ti-linkedin:before {\n\tcontent: \"\\e735\";\n}\n.ti-layout-sidebar-2:before {\n\tcontent: \"\\e736\";\n}\n.ti-layout-grid4-alt:before {\n\tcontent: \"\\e737\";\n}\n.ti-layout-grid3-alt:before {\n\tcontent: \"\\e738\";\n}\n.ti-layout-grid2-alt:before {\n\tcontent: \"\\e739\";\n}\n.ti-layout-column4-alt:before {\n\tcontent: \"\\e73a\";\n}\n.ti-layout-column3-alt:before {\n\tcontent: \"\\e73b\";\n}\n.ti-layout-column2-alt:before {\n\tcontent: \"\\e73c\";\n}\n.ti-instagram:before {\n\tcontent: \"\\e73d\";\n}\n.ti-google:before {\n\tcontent: \"\\e73e\";\n}\n.ti-github:before {\n\tcontent: \"\\e73f\";\n}\n.ti-flickr:before {\n\tcontent: \"\\e740\";\n}\n.ti-facebook:before {\n\tcontent: \"\\e741\";\n}\n.ti-dropbox:before {\n\tcontent: \"\\e742\";\n}\n.ti-dribbble:before {\n\tcontent: \"\\e743\";\n}\n.ti-apple:before {\n\tcontent: \"\\e744\";\n}\n.ti-andrAdminid:before {\n\tcontent: \"\\e745\";\n}\n.ti-save:before {\n\tcontent: \"\\e746\";\n}\n.ti-save-alt:before {\n\tcontent: \"\\e747\";\n}\n.ti-yahoo:before {\n\tcontent: \"\\e748\";\n}\n.ti-wordpress:before {\n\tcontent: \"\\e749\";\n}\n.ti-vimeo-alt:before {\n\tcontent: \"\\e74a\";\n}\n.ti-twitter-alt:before {\n\tcontent: \"\\e74b\";\n}\n.ti-tumblr-alt:before {\n\tcontent: \"\\e74c\";\n}\n.ti-trello:before {\n\tcontent: \"\\e74d\";\n}\n.ti-stack-overflow:before {\n\tcontent: \"\\e74e\";\n}\n.ti-soundcloud:before {\n\tcontent: \"\\e74f\";\n}\n.ti-sharethis:before {\n\tcontent: \"\\e750\";\n}\n.ti-sharethis-alt:before {\n\tcontent: \"\\e751\";\n}\n.ti-reddit:before {\n\tcontent: \"\\e752\";\n}\n.ti-pinterest-alt:before {\n\tcontent: \"\\e753\";\n}\n.ti-microsoft-alt:before {\n\tcontent: \"\\e754\";\n}\n.ti-linux:before {\n\tcontent: \"\\e755\";\n}\n.ti-jsfiddle:before {\n\tcontent: \"\\e756\";\n}\n.ti-joomla:before {\n\tcontent: \"\\e757\";\n}\n.ti-html5:before {\n\tcontent: \"\\e758\";\n}\n.ti-flickr-alt:before {\n\tcontent: \"\\e759\";\n}\n.ti-email:before {\n\tcontent: \"\\e75a\";\n}\n.ti-drupal:before {\n\tcontent: \"\\e75b\";\n}\n.ti-dropbox-alt:before {\n\tcontent: \"\\e75c\";\n}\n.ti-css3:before {\n\tcontent: \"\\e75d\";\n}\n.ti-rss:before {\n\tcontent: \"\\e75e\";\n}\n.ti-rss-alt:before {\n\tcontent: \"\\e75f\";\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/themify-icons/themify-icons.less",
    "content": "@font-face {\n  font-family: 'themify';\n  src:url('../scss/icons/themify-icons//fonts/themify.eot?-fvbane');\n  src:url('../scss/icons/themify-icons//fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'),\n    url('../scss/icons/themify-icons//fonts/themify.woff?-fvbane') format('woff'),\n    url('../scss/icons/themify-icons//fonts/themify.ttf?-fvbane') format('truetype'),\n    url('../scss/icons/themify-icons//fonts/themify.svg?-fvbane#themify') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n\n[class^=\"ti-\"], [class*=\" ti-\"] {\n  font-family: 'themify';\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n\n  /* Better Font Rendering =========== */\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.ti-wand:before {\n  content: \"\\e600\";\n}\n.ti-volume:before {\n  content: \"\\e601\";\n}\n.ti-user:before {\n  content: \"\\e602\";\n}\n.ti-unlock:before {\n  content: \"\\e603\";\n}\n.ti-unlink:before {\n  content: \"\\e604\";\n}\n.ti-trash:before {\n  content: \"\\e605\";\n}\n.ti-thought:before {\n  content: \"\\e606\";\n}\n.ti-target:before {\n  content: \"\\e607\";\n}\n.ti-tag:before {\n  content: \"\\e608\";\n}\n.ti-tablet:before {\n  content: \"\\e609\";\n}\n.ti-star:before {\n  content: \"\\e60a\";\n}\n.ti-spray:before {\n  content: \"\\e60b\";\n}\n.ti-signal:before {\n  content: \"\\e60c\";\n}\n.ti-shopping-cart:before {\n  content: \"\\e60d\";\n}\n.ti-shopping-cart-full:before {\n  content: \"\\e60e\";\n}\n.ti-settings:before {\n  content: \"\\e60f\";\n}\n.ti-search:before {\n  content: \"\\e610\";\n}\n.ti-zoom-in:before {\n  content: \"\\e611\";\n}\n.ti-zoom-out:before {\n  content: \"\\e612\";\n}\n.ti-cut:before {\n  content: \"\\e613\";\n}\n.ti-ruler:before {\n  content: \"\\e614\";\n}\n.ti-ruler-pencil:before {\n  content: \"\\e615\";\n}\n.ti-ruler-alt:before {\n  content: \"\\e616\";\n}\n.ti-bookmark:before {\n  content: \"\\e617\";\n}\n.ti-bookmark-alt:before {\n  content: \"\\e618\";\n}\n.ti-reload:before {\n  content: \"\\e619\";\n}\n.ti-plus:before {\n  content: \"\\e61a\";\n}\n.ti-pin:before {\n  content: \"\\e61b\";\n}\n.ti-pencil:before {\n  content: \"\\e61c\";\n}\n.ti-pencil-alt:before {\n  content: \"\\e61d\";\n}\n.ti-paint-roller:before {\n  content: \"\\e61e\";\n}\n.ti-paint-bucket:before {\n  content: \"\\e61f\";\n}\n.ti-na:before {\n  content: \"\\e620\";\n}\n.ti-mobile:before {\n  content: \"\\e621\";\n}\n.ti-minus:before {\n  content: \"\\e622\";\n}\n.ti-medall:before {\n  content: \"\\e623\";\n}\n.ti-medall-alt:before {\n  content: \"\\e624\";\n}\n.ti-marker:before {\n  content: \"\\e625\";\n}\n.ti-marker-alt:before {\n  content: \"\\e626\";\n}\n.ti-arrow-up:before {\n  content: \"\\e627\";\n}\n.ti-arrow-right:before {\n  content: \"\\e628\";\n}\n.ti-arrow-left:before {\n  content: \"\\e629\";\n}\n.ti-arrow-down:before {\n  content: \"\\e62a\";\n}\n.ti-lock:before {\n  content: \"\\e62b\";\n}\n.ti-location-arrow:before {\n  content: \"\\e62c\";\n}\n.ti-link:before {\n  content: \"\\e62d\";\n}\n.ti-layout:before {\n  content: \"\\e62e\";\n}\n.ti-layers:before {\n  content: \"\\e62f\";\n}\n.ti-layers-alt:before {\n  content: \"\\e630\";\n}\n.ti-key:before {\n  content: \"\\e631\";\n}\n.ti-import:before {\n  content: \"\\e632\";\n}\n.ti-image:before {\n  content: \"\\e633\";\n}\n.ti-heart:before {\n  content: \"\\e634\";\n}\n.ti-heart-broken:before {\n  content: \"\\e635\";\n}\n.ti-hand-stop:before {\n  content: \"\\e636\";\n}\n.ti-hand-open:before {\n  content: \"\\e637\";\n}\n.ti-hand-drag:before {\n  content: \"\\e638\";\n}\n.ti-folder:before {\n  content: \"\\e639\";\n}\n.ti-flag:before {\n  content: \"\\e63a\";\n}\n.ti-flag-alt:before {\n  content: \"\\e63b\";\n}\n.ti-flag-alt-2:before {\n  content: \"\\e63c\";\n}\n.ti-eye:before {\n  content: \"\\e63d\";\n}\n.ti-export:before {\n  content: \"\\e63e\";\n}\n.ti-exchange-vertical:before {\n  content: \"\\e63f\";\n}\n.ti-desktop:before {\n  content: \"\\e640\";\n}\n.ti-cup:before {\n  content: \"\\e641\";\n}\n.ti-crown:before {\n  content: \"\\e642\";\n}\n.ti-comments:before {\n  content: \"\\e643\";\n}\n.ti-comment:before {\n  content: \"\\e644\";\n}\n.ti-comment-alt:before {\n  content: \"\\e645\";\n}\n.ti-close:before {\n  content: \"\\e646\";\n}\n.ti-clip:before {\n  content: \"\\e647\";\n}\n.ti-angle-up:before {\n  content: \"\\e648\";\n}\n.ti-angle-right:before {\n  content: \"\\e649\";\n}\n.ti-angle-left:before {\n  content: \"\\e64a\";\n}\n.ti-angle-down:before {\n  content: \"\\e64b\";\n}\n.ti-check:before {\n  content: \"\\e64c\";\n}\n.ti-check-box:before {\n  content: \"\\e64d\";\n}\n.ti-camera:before {\n  content: \"\\e64e\";\n}\n.ti-announcement:before {\n  content: \"\\e64f\";\n}\n.ti-brush:before {\n  content: \"\\e650\";\n}\n.ti-briefcase:before {\n  content: \"\\e651\";\n}\n.ti-bolt:before {\n  content: \"\\e652\";\n}\n.ti-bolt-alt:before {\n  content: \"\\e653\";\n}\n.ti-blackboard:before {\n  content: \"\\e654\";\n}\n.ti-bag:before {\n  content: \"\\e655\";\n}\n.ti-move:before {\n  content: \"\\e656\";\n}\n.ti-arrows-vertical:before {\n  content: \"\\e657\";\n}\n.ti-arrows-horizontal:before {\n  content: \"\\e658\";\n}\n.ti-fullscreen:before {\n  content: \"\\e659\";\n}\n.ti-arrow-top-right:before {\n  content: \"\\e65a\";\n}\n.ti-arrow-top-left:before {\n  content: \"\\e65b\";\n}\n.ti-arrow-circle-up:before {\n  content: \"\\e65c\";\n}\n.ti-arrow-circle-right:before {\n  content: \"\\e65d\";\n}\n.ti-arrow-circle-left:before {\n  content: \"\\e65e\";\n}\n.ti-arrow-circle-down:before {\n  content: \"\\e65f\";\n}\n.ti-angle-double-up:before {\n  content: \"\\e660\";\n}\n.ti-angle-double-right:before {\n  content: \"\\e661\";\n}\n.ti-angle-double-left:before {\n  content: \"\\e662\";\n}\n.ti-angle-double-down:before {\n  content: \"\\e663\";\n}\n.ti-zip:before {\n  content: \"\\e664\";\n}\n.ti-world:before {\n  content: \"\\e665\";\n}\n.ti-wheelchair:before {\n  content: \"\\e666\";\n}\n.ti-view-list:before {\n  content: \"\\e667\";\n}\n.ti-view-list-alt:before {\n  content: \"\\e668\";\n}\n.ti-view-grid:before {\n  content: \"\\e669\";\n}\n.ti-uppercase:before {\n  content: \"\\e66a\";\n}\n.ti-upload:before {\n  content: \"\\e66b\";\n}\n.ti-underline:before {\n  content: \"\\e66c\";\n}\n.ti-truck:before {\n  content: \"\\e66d\";\n}\n.ti-timer:before {\n  content: \"\\e66e\";\n}\n.ti-ticket:before {\n  content: \"\\e66f\";\n}\n.ti-thumb-up:before {\n  content: \"\\e670\";\n}\n.ti-thumb-down:before {\n  content: \"\\e671\";\n}\n.ti-text:before {\n  content: \"\\e672\";\n}\n.ti-stats-up:before {\n  content: \"\\e673\";\n}\n.ti-stats-down:before {\n  content: \"\\e674\";\n}\n.ti-split-v:before {\n  content: \"\\e675\";\n}\n.ti-split-h:before {\n  content: \"\\e676\";\n}\n.ti-smallcap:before {\n  content: \"\\e677\";\n}\n.ti-shine:before {\n  content: \"\\e678\";\n}\n.ti-shift-right:before {\n  content: \"\\e679\";\n}\n.ti-shift-left:before {\n  content: \"\\e67a\";\n}\n.ti-shield:before {\n  content: \"\\e67b\";\n}\n.ti-notepad:before {\n  content: \"\\e67c\";\n}\n.ti-server:before {\n  content: \"\\e67d\";\n}\n.ti-quote-right:before {\n  content: \"\\e67e\";\n}\n.ti-quote-left:before {\n  content: \"\\e67f\";\n}\n.ti-pulse:before {\n  content: \"\\e680\";\n}\n.ti-printer:before {\n  content: \"\\e681\";\n}\n.ti-power-off:before {\n  content: \"\\e682\";\n}\n.ti-plug:before {\n  content: \"\\e683\";\n}\n.ti-pie-chart:before {\n  content: \"\\e684\";\n}\n.ti-paragraph:before {\n  content: \"\\e685\";\n}\n.ti-panel:before {\n  content: \"\\e686\";\n}\n.ti-package:before {\n  content: \"\\e687\";\n}\n.ti-music:before {\n  content: \"\\e688\";\n}\n.ti-music-alt:before {\n  content: \"\\e689\";\n}\n.ti-mouse:before {\n  content: \"\\e68a\";\n}\n.ti-mouse-alt:before {\n  content: \"\\e68b\";\n}\n.ti-money:before {\n  content: \"\\e68c\";\n}\n.ti-microphone:before {\n  content: \"\\e68d\";\n}\n.ti-menu:before {\n  content: \"\\e68e\";\n}\n.ti-menu-alt:before {\n  content: \"\\e68f\";\n}\n.ti-map:before {\n  content: \"\\e690\";\n}\n.ti-map-alt:before {\n  content: \"\\e691\";\n}\n.ti-loop:before {\n  content: \"\\e692\";\n}\n.ti-location-pin:before {\n  content: \"\\e693\";\n}\n.ti-list:before {\n  content: \"\\e694\";\n}\n.ti-light-bulb:before {\n  content: \"\\e695\";\n}\n.ti-Italic:before {\n  content: \"\\e696\";\n}\n.ti-info:before {\n  content: \"\\e697\";\n}\n.ti-infinite:before {\n  content: \"\\e698\";\n}\n.ti-id-badge:before {\n  content: \"\\e699\";\n}\n.ti-hummer:before {\n  content: \"\\e69a\";\n}\n.ti-home:before {\n  content: \"\\e69b\";\n}\n.ti-help:before {\n  content: \"\\e69c\";\n}\n.ti-headphone:before {\n  content: \"\\e69d\";\n}\n.ti-harddrives:before {\n  content: \"\\e69e\";\n}\n.ti-harddrive:before {\n  content: \"\\e69f\";\n}\n.ti-gift:before {\n  content: \"\\e6a0\";\n}\n.ti-game:before {\n  content: \"\\e6a1\";\n}\n.ti-filter:before {\n  content: \"\\e6a2\";\n}\n.ti-files:before {\n  content: \"\\e6a3\";\n}\n.ti-file:before {\n  content: \"\\e6a4\";\n}\n.ti-eraser:before {\n  content: \"\\e6a5\";\n}\n.ti-envelope:before {\n  content: \"\\e6a6\";\n}\n.ti-download:before {\n  content: \"\\e6a7\";\n}\n.ti-direction:before {\n  content: \"\\e6a8\";\n}\n.ti-direction-alt:before {\n  content: \"\\e6a9\";\n}\n.ti-dashboard:before {\n  content: \"\\e6aa\";\n}\n.ti-control-stop:before {\n  content: \"\\e6ab\";\n}\n.ti-control-shuffle:before {\n  content: \"\\e6ac\";\n}\n.ti-control-play:before {\n  content: \"\\e6ad\";\n}\n.ti-control-pause:before {\n  content: \"\\e6ae\";\n}\n.ti-control-forward:before {\n  content: \"\\e6af\";\n}\n.ti-control-backward:before {\n  content: \"\\e6b0\";\n}\n.ti-cloud:before {\n  content: \"\\e6b1\";\n}\n.ti-cloud-up:before {\n  content: \"\\e6b2\";\n}\n.ti-cloud-down:before {\n  content: \"\\e6b3\";\n}\n.ti-clipboard:before {\n  content: \"\\e6b4\";\n}\n.ti-car:before {\n  content: \"\\e6b5\";\n}\n.ti-calendar:before {\n  content: \"\\e6b6\";\n}\n.ti-book:before {\n  content: \"\\e6b7\";\n}\n.ti-bell:before {\n  content: \"\\e6b8\";\n}\n.ti-basketball:before {\n  content: \"\\e6b9\";\n}\n.ti-bar-chart:before {\n  content: \"\\e6ba\";\n}\n.ti-bar-chart-alt:before {\n  content: \"\\e6bb\";\n}\n.ti-back-right:before {\n  content: \"\\e6bc\";\n}\n.ti-back-left:before {\n  content: \"\\e6bd\";\n}\n.ti-arrows-corner:before {\n  content: \"\\e6be\";\n}\n.ti-archive:before {\n  content: \"\\e6bf\";\n}\n.ti-anchor:before {\n  content: \"\\e6c0\";\n}\n.ti-align-right:before {\n  content: \"\\e6c1\";\n}\n.ti-align-left:before {\n  content: \"\\e6c2\";\n}\n.ti-align-justify:before {\n  content: \"\\e6c3\";\n}\n.ti-align-center:before {\n  content: \"\\e6c4\";\n}\n.ti-alert:before {\n  content: \"\\e6c5\";\n}\n.ti-alarm-clock:before {\n  content: \"\\e6c6\";\n}\n.ti-agenda:before {\n  content: \"\\e6c7\";\n}\n.ti-write:before {\n  content: \"\\e6c8\";\n}\n.ti-window:before {\n  content: \"\\e6c9\";\n}\n.ti-widgetized:before {\n  content: \"\\e6ca\";\n}\n.ti-widget:before {\n  content: \"\\e6cb\";\n}\n.ti-widget-alt:before {\n  content: \"\\e6cc\";\n}\n.ti-wallet:before {\n  content: \"\\e6cd\";\n}\n.ti-video-clapper:before {\n  content: \"\\e6ce\";\n}\n.ti-video-camera:before {\n  content: \"\\e6cf\";\n}\n.ti-vector:before {\n  content: \"\\e6d0\";\n}\n.ti-themify-logo:before {\n  content: \"\\e6d1\";\n}\n.ti-themify-favicon:before {\n  content: \"\\e6d2\";\n}\n.ti-themify-favicon-alt:before {\n  content: \"\\e6d3\";\n}\n.ti-support:before {\n  content: \"\\e6d4\";\n}\n.ti-stamp:before {\n  content: \"\\e6d5\";\n}\n.ti-split-v-alt:before {\n  content: \"\\e6d6\";\n}\n.ti-slice:before {\n  content: \"\\e6d7\";\n}\n.ti-shortcode:before {\n  content: \"\\e6d8\";\n}\n.ti-shift-right-alt:before {\n  content: \"\\e6d9\";\n}\n.ti-shift-left-alt:before {\n  content: \"\\e6da\";\n}\n.ti-ruler-alt-2:before {\n  content: \"\\e6db\";\n}\n.ti-receipt:before {\n  content: \"\\e6dc\";\n}\n.ti-pin2:before {\n  content: \"\\e6dd\";\n}\n.ti-pin-alt:before {\n  content: \"\\e6de\";\n}\n.ti-pencil-alt2:before {\n  content: \"\\e6df\";\n}\n.ti-palette:before {\n  content: \"\\e6e0\";\n}\n.ti-more:before {\n  content: \"\\e6e1\";\n}\n.ti-more-alt:before {\n  content: \"\\e6e2\";\n}\n.ti-microphone-alt:before {\n  content: \"\\e6e3\";\n}\n.ti-magnet:before {\n  content: \"\\e6e4\";\n}\n.ti-line-double:before {\n  content: \"\\e6e5\";\n}\n.ti-line-dotted:before {\n  content: \"\\e6e6\";\n}\n.ti-line-dashed:before {\n  content: \"\\e6e7\";\n}\n.ti-layout-width-full:before {\n  content: \"\\e6e8\";\n}\n.ti-layout-width-default:before {\n  content: \"\\e6e9\";\n}\n.ti-layout-width-default-alt:before {\n  content: \"\\e6ea\";\n}\n.ti-layout-tab:before {\n  content: \"\\e6eb\";\n}\n.ti-layout-tab-window:before {\n  content: \"\\e6ec\";\n}\n.ti-layout-tab-v:before {\n  content: \"\\e6ed\";\n}\n.ti-layout-tab-min:before {\n  content: \"\\e6ee\";\n}\n.ti-layout-slider:before {\n  content: \"\\e6ef\";\n}\n.ti-layout-slider-alt:before {\n  content: \"\\e6f0\";\n}\n.ti-layout-sidebar-right:before {\n  content: \"\\e6f1\";\n}\n.ti-layout-sidebar-none:before {\n  content: \"\\e6f2\";\n}\n.ti-layout-sidebar-left:before {\n  content: \"\\e6f3\";\n}\n.ti-layout-placeholder:before {\n  content: \"\\e6f4\";\n}\n.ti-layout-menu:before {\n  content: \"\\e6f5\";\n}\n.ti-layout-menu-v:before {\n  content: \"\\e6f6\";\n}\n.ti-layout-menu-separated:before {\n  content: \"\\e6f7\";\n}\n.ti-layout-menu-full:before {\n  content: \"\\e6f8\";\n}\n.ti-layout-media-right-alt:before {\n  content: \"\\e6f9\";\n}\n.ti-layout-media-right:before {\n  content: \"\\e6fa\";\n}\n.ti-layout-media-overlay:before {\n  content: \"\\e6fb\";\n}\n.ti-layout-media-overlay-alt:before {\n  content: \"\\e6fc\";\n}\n.ti-layout-media-overlay-alt-2:before {\n  content: \"\\e6fd\";\n}\n.ti-layout-media-left-alt:before {\n  content: \"\\e6fe\";\n}\n.ti-layout-media-left:before {\n  content: \"\\e6ff\";\n}\n.ti-layout-media-center-alt:before {\n  content: \"\\e700\";\n}\n.ti-layout-media-center:before {\n  content: \"\\e701\";\n}\n.ti-layout-list-thumb:before {\n  content: \"\\e702\";\n}\n.ti-layout-list-thumb-alt:before {\n  content: \"\\e703\";\n}\n.ti-layout-list-post:before {\n  content: \"\\e704\";\n}\n.ti-layout-list-large-image:before {\n  content: \"\\e705\";\n}\n.ti-layout-line-solid:before {\n  content: \"\\e706\";\n}\n.ti-layout-grid4:before {\n  content: \"\\e707\";\n}\n.ti-layout-grid3:before {\n  content: \"\\e708\";\n}\n.ti-layout-grid2:before {\n  content: \"\\e709\";\n}\n.ti-layout-grid2-thumb:before {\n  content: \"\\e70a\";\n}\n.ti-layout-cta-right:before {\n  content: \"\\e70b\";\n}\n.ti-layout-cta-left:before {\n  content: \"\\e70c\";\n}\n.ti-layout-cta-center:before {\n  content: \"\\e70d\";\n}\n.ti-layout-cta-btn-right:before {\n  content: \"\\e70e\";\n}\n.ti-layout-cta-btn-left:before {\n  content: \"\\e70f\";\n}\n.ti-layout-column4:before {\n  content: \"\\e710\";\n}\n.ti-layout-column3:before {\n  content: \"\\e711\";\n}\n.ti-layout-column2:before {\n  content: \"\\e712\";\n}\n.ti-layout-accordion-separated:before {\n  content: \"\\e713\";\n}\n.ti-layout-accordion-merged:before {\n  content: \"\\e714\";\n}\n.ti-layout-accordion-list:before {\n  content: \"\\e715\";\n}\n.ti-ink-pen:before {\n  content: \"\\e716\";\n}\n.ti-info-alt:before {\n  content: \"\\e717\";\n}\n.ti-help-alt:before {\n  content: \"\\e718\";\n}\n.ti-headphone-alt:before {\n  content: \"\\e719\";\n}\n.ti-hand-point-up:before {\n  content: \"\\e71a\";\n}\n.ti-hand-point-right:before {\n  content: \"\\e71b\";\n}\n.ti-hand-point-left:before {\n  content: \"\\e71c\";\n}\n.ti-hand-point-down:before {\n  content: \"\\e71d\";\n}\n.ti-gallery:before {\n  content: \"\\e71e\";\n}\n.ti-face-smile:before {\n  content: \"\\e71f\";\n}\n.ti-face-sad:before {\n  content: \"\\e720\";\n}\n.ti-credit-card:before {\n  content: \"\\e721\";\n}\n.ti-control-skip-forward:before {\n  content: \"\\e722\";\n}\n.ti-control-skip-backward:before {\n  content: \"\\e723\";\n}\n.ti-control-record:before {\n  content: \"\\e724\";\n}\n.ti-control-eject:before {\n  content: \"\\e725\";\n}\n.ti-comments-smiley:before {\n  content: \"\\e726\";\n}\n.ti-brush-alt:before {\n  content: \"\\e727\";\n}\n.ti-youtube:before {\n  content: \"\\e728\";\n}\n.ti-vimeo:before {\n  content: \"\\e729\";\n}\n.ti-twitter:before {\n  content: \"\\e72a\";\n}\n.ti-time:before {\n  content: \"\\e72b\";\n}\n.ti-tumblr:before {\n  content: \"\\e72c\";\n}\n.ti-skype:before {\n  content: \"\\e72d\";\n}\n.ti-share:before {\n  content: \"\\e72e\";\n}\n.ti-share-alt:before {\n  content: \"\\e72f\";\n}\n.ti-rocket:before {\n  content: \"\\e730\";\n}\n.ti-pinterest:before {\n  content: \"\\e731\";\n}\n.ti-new-window:before {\n  content: \"\\e732\";\n}\n.ti-microsoft:before {\n  content: \"\\e733\";\n}\n.ti-list-ol:before {\n  content: \"\\e734\";\n}\n.ti-linkedin:before {\n  content: \"\\e735\";\n}\n.ti-layout-sidebar-2:before {\n  content: \"\\e736\";\n}\n.ti-layout-grid4-alt:before {\n  content: \"\\e737\";\n}\n.ti-layout-grid3-alt:before {\n  content: \"\\e738\";\n}\n.ti-layout-grid2-alt:before {\n  content: \"\\e739\";\n}\n.ti-layout-column4-alt:before {\n  content: \"\\e73a\";\n}\n.ti-layout-column3-alt:before {\n  content: \"\\e73b\";\n}\n.ti-layout-column2-alt:before {\n  content: \"\\e73c\";\n}\n.ti-instagram:before {\n  content: \"\\e73d\";\n}\n.ti-google:before {\n  content: \"\\e73e\";\n}\n.ti-github:before {\n  content: \"\\e73f\";\n}\n.ti-flickr:before {\n  content: \"\\e740\";\n}\n.ti-facebook:before {\n  content: \"\\e741\";\n}\n.ti-dropbox:before {\n  content: \"\\e742\";\n}\n.ti-dribbble:before {\n  content: \"\\e743\";\n}\n.ti-apple:before {\n  content: \"\\e744\";\n}\n.ti-andrAdminid:before {\n  content: \"\\e745\";\n}\n.ti-save:before {\n  content: \"\\e746\";\n}\n.ti-save-alt:before {\n  content: \"\\e747\";\n}\n.ti-yahoo:before {\n  content: \"\\e748\";\n}\n.ti-wordpress:before {\n  content: \"\\e749\";\n}\n.ti-vimeo-alt:before {\n  content: \"\\e74a\";\n}\n.ti-twitter-alt:before {\n  content: \"\\e74b\";\n}\n.ti-tumblr-alt:before {\n  content: \"\\e74c\";\n}\n.ti-trello:before {\n  content: \"\\e74d\";\n}\n.ti-stack-overflow:before {\n  content: \"\\e74e\";\n}\n.ti-soundcloud:before {\n  content: \"\\e74f\";\n}\n.ti-sharethis:before {\n  content: \"\\e750\";\n}\n.ti-sharethis-alt:before {\n  content: \"\\e751\";\n}\n.ti-reddit:before {\n  content: \"\\e752\";\n}\n.ti-pinterest-alt:before {\n  content: \"\\e753\";\n}\n.ti-microsoft-alt:before {\n  content: \"\\e754\";\n}\n.ti-linux:before {\n  content: \"\\e755\";\n}\n.ti-jsfiddle:before {\n  content: \"\\e756\";\n}\n.ti-joomla:before {\n  content: \"\\e757\";\n}\n.ti-html5:before {\n  content: \"\\e758\";\n}\n.ti-flickr-alt:before {\n  content: \"\\e759\";\n}\n.ti-email:before {\n  content: \"\\e75a\";\n}\n.ti-drupal:before {\n  content: \"\\e75b\";\n}\n.ti-dropbox-alt:before {\n  content: \"\\e75c\";\n}\n.ti-css3:before {\n  content: \"\\e75d\";\n}\n.ti-rss:before {\n  content: \"\\e75e\";\n}\n.ti-rss-alt:before {\n  content: \"\\e75f\";\n}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/css/weather-icons-core.css",
    "content": "@font-face {\n  font-family: 'weathericons';\n  src: url('..//fonts/weathericons-regular-webfont.eot');\n  src: url('..//fonts/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('..//fonts/weathericons-regular-webfont.woff2') format('woff2'), url('..//fonts/weathericons-regular-webfont.woff') format('woff'), url('..//fonts/weathericons-regular-webfont.ttf') format('truetype'), url('..//fonts/weathericons-regular-webfont.svg#weather_iconsregular') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n.wi {\n  display: inline-block;\n  font-family: 'weathericons';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.wi-fw {\n  text-align: center;\n  width: 1.4em;\n}\n.wi-rotate-90 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n  -webkit-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.wi-rotate-180 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n  -webkit-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.wi-rotate-270 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n  -webkit-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.wi-flip-horizontal {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);\n  -webkit-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.wi-flip-vertical {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n  -webkit-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/css/weather-icons-variables.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/css/weather-icons-wind.css",
    "content": "@font-face {\n  font-family: 'weathericons';\n  src: url('..//fonts/weathericons-regular-webfont.eot');\n  src: url('..//fonts/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('..//fonts/weathericons-regular-webfont.woff2') format('woff2'), url('..//fonts/weathericons-regular-webfont.woff') format('woff'), url('..//fonts/weathericons-regular-webfont.ttf') format('truetype'), url('..//fonts/weathericons-regular-webfont.svg#weather_iconsregular') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n.wi {\n  display: inline-block;\n  font-family: 'weathericons';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.wi-fw {\n  text-align: center;\n  width: 1.4em;\n}\n.wi-rotate-90 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n  -webkit-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.wi-rotate-180 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n  -webkit-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.wi-rotate-270 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n  -webkit-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.wi-flip-horizontal {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);\n  -webkit-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.wi-flip-vertical {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n  -webkit-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n.wi-wind:before {\n  content: \"\\f0b1\";\n}\n.wi-wind.towards-0-deg {\n  -webkit-transform: rotate(0deg);\n  -moz-transform: rotate(0deg);\n  -ms-transform: rotate(0deg);\n  -o-transform: rotate(0deg);\n  transform: rotate(0deg);\n}\n.wi-wind.towards-1-deg {\n  -webkit-transform: rotate(1deg);\n  -moz-transform: rotate(1deg);\n  -ms-transform: rotate(1deg);\n  -o-transform: rotate(1deg);\n  transform: rotate(1deg);\n}\n.wi-wind.towards-2-deg {\n  -webkit-transform: rotate(2deg);\n  -moz-transform: rotate(2deg);\n  -ms-transform: rotate(2deg);\n  -o-transform: rotate(2deg);\n  transform: rotate(2deg);\n}\n.wi-wind.towards-3-deg {\n  -webkit-transform: rotate(3deg);\n  -moz-transform: rotate(3deg);\n  -ms-transform: rotate(3deg);\n  -o-transform: rotate(3deg);\n  transform: rotate(3deg);\n}\n.wi-wind.towards-4-deg {\n  -webkit-transform: rotate(4deg);\n  -moz-transform: rotate(4deg);\n  -ms-transform: rotate(4deg);\n  -o-transform: rotate(4deg);\n  transform: rotate(4deg);\n}\n.wi-wind.towards-5-deg {\n  -webkit-transform: rotate(5deg);\n  -moz-transform: rotate(5deg);\n  -ms-transform: rotate(5deg);\n  -o-transform: rotate(5deg);\n  transform: rotate(5deg);\n}\n.wi-wind.towards-6-deg {\n  -webkit-transform: rotate(6deg);\n  -moz-transform: rotate(6deg);\n  -ms-transform: rotate(6deg);\n  -o-transform: rotate(6deg);\n  transform: rotate(6deg);\n}\n.wi-wind.towards-7-deg {\n  -webkit-transform: rotate(7deg);\n  -moz-transform: rotate(7deg);\n  -ms-transform: rotate(7deg);\n  -o-transform: rotate(7deg);\n  transform: rotate(7deg);\n}\n.wi-wind.towards-8-deg {\n  -webkit-transform: rotate(8deg);\n  -moz-transform: rotate(8deg);\n  -ms-transform: rotate(8deg);\n  -o-transform: rotate(8deg);\n  transform: rotate(8deg);\n}\n.wi-wind.towards-9-deg {\n  -webkit-transform: rotate(9deg);\n  -moz-transform: rotate(9deg);\n  -ms-transform: rotate(9deg);\n  -o-transform: rotate(9deg);\n  transform: rotate(9deg);\n}\n.wi-wind.towards-10-deg {\n  -webkit-transform: rotate(10deg);\n  -moz-transform: rotate(10deg);\n  -ms-transform: rotate(10deg);\n  -o-transform: rotate(10deg);\n  transform: rotate(10deg);\n}\n.wi-wind.towards-11-deg {\n  -webkit-transform: rotate(11deg);\n  -moz-transform: rotate(11deg);\n  -ms-transform: rotate(11deg);\n  -o-transform: rotate(11deg);\n  transform: rotate(11deg);\n}\n.wi-wind.towards-12-deg {\n  -webkit-transform: rotate(12deg);\n  -moz-transform: rotate(12deg);\n  -ms-transform: rotate(12deg);\n  -o-transform: rotate(12deg);\n  transform: rotate(12deg);\n}\n.wi-wind.towards-13-deg {\n  -webkit-transform: rotate(13deg);\n  -moz-transform: rotate(13deg);\n  -ms-transform: rotate(13deg);\n  -o-transform: rotate(13deg);\n  transform: rotate(13deg);\n}\n.wi-wind.towards-14-deg {\n  -webkit-transform: rotate(14deg);\n  -moz-transform: rotate(14deg);\n  -ms-transform: rotate(14deg);\n  -o-transform: rotate(14deg);\n  transform: rotate(14deg);\n}\n.wi-wind.towards-15-deg {\n  -webkit-transform: rotate(15deg);\n  -moz-transform: rotate(15deg);\n  -ms-transform: rotate(15deg);\n  -o-transform: rotate(15deg);\n  transform: rotate(15deg);\n}\n.wi-wind.towards-16-deg {\n  -webkit-transform: rotate(16deg);\n  -moz-transform: rotate(16deg);\n  -ms-transform: rotate(16deg);\n  -o-transform: rotate(16deg);\n  transform: rotate(16deg);\n}\n.wi-wind.towards-17-deg {\n  -webkit-transform: rotate(17deg);\n  -moz-transform: rotate(17deg);\n  -ms-transform: rotate(17deg);\n  -o-transform: rotate(17deg);\n  transform: rotate(17deg);\n}\n.wi-wind.towards-18-deg {\n  -webkit-transform: rotate(18deg);\n  -moz-transform: rotate(18deg);\n  -ms-transform: rotate(18deg);\n  -o-transform: rotate(18deg);\n  transform: rotate(18deg);\n}\n.wi-wind.towards-19-deg {\n  -webkit-transform: rotate(19deg);\n  -moz-transform: rotate(19deg);\n  -ms-transform: rotate(19deg);\n  -o-transform: rotate(19deg);\n  transform: rotate(19deg);\n}\n.wi-wind.towards-20-deg {\n  -webkit-transform: rotate(20deg);\n  -moz-transform: rotate(20deg);\n  -ms-transform: rotate(20deg);\n  -o-transform: rotate(20deg);\n  transform: rotate(20deg);\n}\n.wi-wind.towards-21-deg {\n  -webkit-transform: rotate(21deg);\n  -moz-transform: rotate(21deg);\n  -ms-transform: rotate(21deg);\n  -o-transform: rotate(21deg);\n  transform: rotate(21deg);\n}\n.wi-wind.towards-22-deg {\n  -webkit-transform: rotate(22deg);\n  -moz-transform: rotate(22deg);\n  -ms-transform: rotate(22deg);\n  -o-transform: rotate(22deg);\n  transform: rotate(22deg);\n}\n.wi-wind.towards-23-deg {\n  -webkit-transform: rotate(23deg);\n  -moz-transform: rotate(23deg);\n  -ms-transform: rotate(23deg);\n  -o-transform: rotate(23deg);\n  transform: rotate(23deg);\n}\n.wi-wind.towards-24-deg {\n  -webkit-transform: rotate(24deg);\n  -moz-transform: rotate(24deg);\n  -ms-transform: rotate(24deg);\n  -o-transform: rotate(24deg);\n  transform: rotate(24deg);\n}\n.wi-wind.towards-25-deg {\n  -webkit-transform: rotate(25deg);\n  -moz-transform: rotate(25deg);\n  -ms-transform: rotate(25deg);\n  -o-transform: rotate(25deg);\n  transform: rotate(25deg);\n}\n.wi-wind.towards-26-deg {\n  -webkit-transform: rotate(26deg);\n  -moz-transform: rotate(26deg);\n  -ms-transform: rotate(26deg);\n  -o-transform: rotate(26deg);\n  transform: rotate(26deg);\n}\n.wi-wind.towards-27-deg {\n  -webkit-transform: rotate(27deg);\n  -moz-transform: rotate(27deg);\n  -ms-transform: rotate(27deg);\n  -o-transform: rotate(27deg);\n  transform: rotate(27deg);\n}\n.wi-wind.towards-28-deg {\n  -webkit-transform: rotate(28deg);\n  -moz-transform: rotate(28deg);\n  -ms-transform: rotate(28deg);\n  -o-transform: rotate(28deg);\n  transform: rotate(28deg);\n}\n.wi-wind.towards-29-deg {\n  -webkit-transform: rotate(29deg);\n  -moz-transform: rotate(29deg);\n  -ms-transform: rotate(29deg);\n  -o-transform: rotate(29deg);\n  transform: rotate(29deg);\n}\n.wi-wind.towards-30-deg {\n  -webkit-transform: rotate(30deg);\n  -moz-transform: rotate(30deg);\n  -ms-transform: rotate(30deg);\n  -o-transform: rotate(30deg);\n  transform: rotate(30deg);\n}\n.wi-wind.towards-31-deg {\n  -webkit-transform: rotate(31deg);\n  -moz-transform: rotate(31deg);\n  -ms-transform: rotate(31deg);\n  -o-transform: rotate(31deg);\n  transform: rotate(31deg);\n}\n.wi-wind.towards-32-deg {\n  -webkit-transform: rotate(32deg);\n  -moz-transform: rotate(32deg);\n  -ms-transform: rotate(32deg);\n  -o-transform: rotate(32deg);\n  transform: rotate(32deg);\n}\n.wi-wind.towards-33-deg {\n  -webkit-transform: rotate(33deg);\n  -moz-transform: rotate(33deg);\n  -ms-transform: rotate(33deg);\n  -o-transform: rotate(33deg);\n  transform: rotate(33deg);\n}\n.wi-wind.towards-34-deg {\n  -webkit-transform: rotate(34deg);\n  -moz-transform: rotate(34deg);\n  -ms-transform: rotate(34deg);\n  -o-transform: rotate(34deg);\n  transform: rotate(34deg);\n}\n.wi-wind.towards-35-deg {\n  -webkit-transform: rotate(35deg);\n  -moz-transform: rotate(35deg);\n  -ms-transform: rotate(35deg);\n  -o-transform: rotate(35deg);\n  transform: rotate(35deg);\n}\n.wi-wind.towards-36-deg {\n  -webkit-transform: rotate(36deg);\n  -moz-transform: rotate(36deg);\n  -ms-transform: rotate(36deg);\n  -o-transform: rotate(36deg);\n  transform: rotate(36deg);\n}\n.wi-wind.towards-37-deg {\n  -webkit-transform: rotate(37deg);\n  -moz-transform: rotate(37deg);\n  -ms-transform: rotate(37deg);\n  -o-transform: rotate(37deg);\n  transform: rotate(37deg);\n}\n.wi-wind.towards-38-deg {\n  -webkit-transform: rotate(38deg);\n  -moz-transform: rotate(38deg);\n  -ms-transform: rotate(38deg);\n  -o-transform: rotate(38deg);\n  transform: rotate(38deg);\n}\n.wi-wind.towards-39-deg {\n  -webkit-transform: rotate(39deg);\n  -moz-transform: rotate(39deg);\n  -ms-transform: rotate(39deg);\n  -o-transform: rotate(39deg);\n  transform: rotate(39deg);\n}\n.wi-wind.towards-40-deg {\n  -webkit-transform: rotate(40deg);\n  -moz-transform: rotate(40deg);\n  -ms-transform: rotate(40deg);\n  -o-transform: rotate(40deg);\n  transform: rotate(40deg);\n}\n.wi-wind.towards-41-deg {\n  -webkit-transform: rotate(41deg);\n  -moz-transform: rotate(41deg);\n  -ms-transform: rotate(41deg);\n  -o-transform: rotate(41deg);\n  transform: rotate(41deg);\n}\n.wi-wind.towards-42-deg {\n  -webkit-transform: rotate(42deg);\n  -moz-transform: rotate(42deg);\n  -ms-transform: rotate(42deg);\n  -o-transform: rotate(42deg);\n  transform: rotate(42deg);\n}\n.wi-wind.towards-43-deg {\n  -webkit-transform: rotate(43deg);\n  -moz-transform: rotate(43deg);\n  -ms-transform: rotate(43deg);\n  -o-transform: rotate(43deg);\n  transform: rotate(43deg);\n}\n.wi-wind.towards-44-deg {\n  -webkit-transform: rotate(44deg);\n  -moz-transform: rotate(44deg);\n  -ms-transform: rotate(44deg);\n  -o-transform: rotate(44deg);\n  transform: rotate(44deg);\n}\n.wi-wind.towards-45-deg {\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  transform: rotate(45deg);\n}\n.wi-wind.towards-46-deg {\n  -webkit-transform: rotate(46deg);\n  -moz-transform: rotate(46deg);\n  -ms-transform: rotate(46deg);\n  -o-transform: rotate(46deg);\n  transform: rotate(46deg);\n}\n.wi-wind.towards-47-deg {\n  -webkit-transform: rotate(47deg);\n  -moz-transform: rotate(47deg);\n  -ms-transform: rotate(47deg);\n  -o-transform: rotate(47deg);\n  transform: rotate(47deg);\n}\n.wi-wind.towards-48-deg {\n  -webkit-transform: rotate(48deg);\n  -moz-transform: rotate(48deg);\n  -ms-transform: rotate(48deg);\n  -o-transform: rotate(48deg);\n  transform: rotate(48deg);\n}\n.wi-wind.towards-49-deg {\n  -webkit-transform: rotate(49deg);\n  -moz-transform: rotate(49deg);\n  -ms-transform: rotate(49deg);\n  -o-transform: rotate(49deg);\n  transform: rotate(49deg);\n}\n.wi-wind.towards-50-deg {\n  -webkit-transform: rotate(50deg);\n  -moz-transform: rotate(50deg);\n  -ms-transform: rotate(50deg);\n  -o-transform: rotate(50deg);\n  transform: rotate(50deg);\n}\n.wi-wind.towards-51-deg {\n  -webkit-transform: rotate(51deg);\n  -moz-transform: rotate(51deg);\n  -ms-transform: rotate(51deg);\n  -o-transform: rotate(51deg);\n  transform: rotate(51deg);\n}\n.wi-wind.towards-52-deg {\n  -webkit-transform: rotate(52deg);\n  -moz-transform: rotate(52deg);\n  -ms-transform: rotate(52deg);\n  -o-transform: rotate(52deg);\n  transform: rotate(52deg);\n}\n.wi-wind.towards-53-deg {\n  -webkit-transform: rotate(53deg);\n  -moz-transform: rotate(53deg);\n  -ms-transform: rotate(53deg);\n  -o-transform: rotate(53deg);\n  transform: rotate(53deg);\n}\n.wi-wind.towards-54-deg {\n  -webkit-transform: rotate(54deg);\n  -moz-transform: rotate(54deg);\n  -ms-transform: rotate(54deg);\n  -o-transform: rotate(54deg);\n  transform: rotate(54deg);\n}\n.wi-wind.towards-55-deg {\n  -webkit-transform: rotate(55deg);\n  -moz-transform: rotate(55deg);\n  -ms-transform: rotate(55deg);\n  -o-transform: rotate(55deg);\n  transform: rotate(55deg);\n}\n.wi-wind.towards-56-deg {\n  -webkit-transform: rotate(56deg);\n  -moz-transform: rotate(56deg);\n  -ms-transform: rotate(56deg);\n  -o-transform: rotate(56deg);\n  transform: rotate(56deg);\n}\n.wi-wind.towards-57-deg {\n  -webkit-transform: rotate(57deg);\n  -moz-transform: rotate(57deg);\n  -ms-transform: rotate(57deg);\n  -o-transform: rotate(57deg);\n  transform: rotate(57deg);\n}\n.wi-wind.towards-58-deg {\n  -webkit-transform: rotate(58deg);\n  -moz-transform: rotate(58deg);\n  -ms-transform: rotate(58deg);\n  -o-transform: rotate(58deg);\n  transform: rotate(58deg);\n}\n.wi-wind.towards-59-deg {\n  -webkit-transform: rotate(59deg);\n  -moz-transform: rotate(59deg);\n  -ms-transform: rotate(59deg);\n  -o-transform: rotate(59deg);\n  transform: rotate(59deg);\n}\n.wi-wind.towards-60-deg {\n  -webkit-transform: rotate(60deg);\n  -moz-transform: rotate(60deg);\n  -ms-transform: rotate(60deg);\n  -o-transform: rotate(60deg);\n  transform: rotate(60deg);\n}\n.wi-wind.towards-61-deg {\n  -webkit-transform: rotate(61deg);\n  -moz-transform: rotate(61deg);\n  -ms-transform: rotate(61deg);\n  -o-transform: rotate(61deg);\n  transform: rotate(61deg);\n}\n.wi-wind.towards-62-deg {\n  -webkit-transform: rotate(62deg);\n  -moz-transform: rotate(62deg);\n  -ms-transform: rotate(62deg);\n  -o-transform: rotate(62deg);\n  transform: rotate(62deg);\n}\n.wi-wind.towards-63-deg {\n  -webkit-transform: rotate(63deg);\n  -moz-transform: rotate(63deg);\n  -ms-transform: rotate(63deg);\n  -o-transform: rotate(63deg);\n  transform: rotate(63deg);\n}\n.wi-wind.towards-64-deg {\n  -webkit-transform: rotate(64deg);\n  -moz-transform: rotate(64deg);\n  -ms-transform: rotate(64deg);\n  -o-transform: rotate(64deg);\n  transform: rotate(64deg);\n}\n.wi-wind.towards-65-deg {\n  -webkit-transform: rotate(65deg);\n  -moz-transform: rotate(65deg);\n  -ms-transform: rotate(65deg);\n  -o-transform: rotate(65deg);\n  transform: rotate(65deg);\n}\n.wi-wind.towards-66-deg {\n  -webkit-transform: rotate(66deg);\n  -moz-transform: rotate(66deg);\n  -ms-transform: rotate(66deg);\n  -o-transform: rotate(66deg);\n  transform: rotate(66deg);\n}\n.wi-wind.towards-67-deg {\n  -webkit-transform: rotate(67deg);\n  -moz-transform: rotate(67deg);\n  -ms-transform: rotate(67deg);\n  -o-transform: rotate(67deg);\n  transform: rotate(67deg);\n}\n.wi-wind.towards-68-deg {\n  -webkit-transform: rotate(68deg);\n  -moz-transform: rotate(68deg);\n  -ms-transform: rotate(68deg);\n  -o-transform: rotate(68deg);\n  transform: rotate(68deg);\n}\n.wi-wind.towards-69-deg {\n  -webkit-transform: rotate(69deg);\n  -moz-transform: rotate(69deg);\n  -ms-transform: rotate(69deg);\n  -o-transform: rotate(69deg);\n  transform: rotate(69deg);\n}\n.wi-wind.towards-70-deg {\n  -webkit-transform: rotate(70deg);\n  -moz-transform: rotate(70deg);\n  -ms-transform: rotate(70deg);\n  -o-transform: rotate(70deg);\n  transform: rotate(70deg);\n}\n.wi-wind.towards-71-deg {\n  -webkit-transform: rotate(71deg);\n  -moz-transform: rotate(71deg);\n  -ms-transform: rotate(71deg);\n  -o-transform: rotate(71deg);\n  transform: rotate(71deg);\n}\n.wi-wind.towards-72-deg {\n  -webkit-transform: rotate(72deg);\n  -moz-transform: rotate(72deg);\n  -ms-transform: rotate(72deg);\n  -o-transform: rotate(72deg);\n  transform: rotate(72deg);\n}\n.wi-wind.towards-73-deg {\n  -webkit-transform: rotate(73deg);\n  -moz-transform: rotate(73deg);\n  -ms-transform: rotate(73deg);\n  -o-transform: rotate(73deg);\n  transform: rotate(73deg);\n}\n.wi-wind.towards-74-deg {\n  -webkit-transform: rotate(74deg);\n  -moz-transform: rotate(74deg);\n  -ms-transform: rotate(74deg);\n  -o-transform: rotate(74deg);\n  transform: rotate(74deg);\n}\n.wi-wind.towards-75-deg {\n  -webkit-transform: rotate(75deg);\n  -moz-transform: rotate(75deg);\n  -ms-transform: rotate(75deg);\n  -o-transform: rotate(75deg);\n  transform: rotate(75deg);\n}\n.wi-wind.towards-76-deg {\n  -webkit-transform: rotate(76deg);\n  -moz-transform: rotate(76deg);\n  -ms-transform: rotate(76deg);\n  -o-transform: rotate(76deg);\n  transform: rotate(76deg);\n}\n.wi-wind.towards-77-deg {\n  -webkit-transform: rotate(77deg);\n  -moz-transform: rotate(77deg);\n  -ms-transform: rotate(77deg);\n  -o-transform: rotate(77deg);\n  transform: rotate(77deg);\n}\n.wi-wind.towards-78-deg {\n  -webkit-transform: rotate(78deg);\n  -moz-transform: rotate(78deg);\n  -ms-transform: rotate(78deg);\n  -o-transform: rotate(78deg);\n  transform: rotate(78deg);\n}\n.wi-wind.towards-79-deg {\n  -webkit-transform: rotate(79deg);\n  -moz-transform: rotate(79deg);\n  -ms-transform: rotate(79deg);\n  -o-transform: rotate(79deg);\n  transform: rotate(79deg);\n}\n.wi-wind.towards-80-deg {\n  -webkit-transform: rotate(80deg);\n  -moz-transform: rotate(80deg);\n  -ms-transform: rotate(80deg);\n  -o-transform: rotate(80deg);\n  transform: rotate(80deg);\n}\n.wi-wind.towards-81-deg {\n  -webkit-transform: rotate(81deg);\n  -moz-transform: rotate(81deg);\n  -ms-transform: rotate(81deg);\n  -o-transform: rotate(81deg);\n  transform: rotate(81deg);\n}\n.wi-wind.towards-82-deg {\n  -webkit-transform: rotate(82deg);\n  -moz-transform: rotate(82deg);\n  -ms-transform: rotate(82deg);\n  -o-transform: rotate(82deg);\n  transform: rotate(82deg);\n}\n.wi-wind.towards-83-deg {\n  -webkit-transform: rotate(83deg);\n  -moz-transform: rotate(83deg);\n  -ms-transform: rotate(83deg);\n  -o-transform: rotate(83deg);\n  transform: rotate(83deg);\n}\n.wi-wind.towards-84-deg {\n  -webkit-transform: rotate(84deg);\n  -moz-transform: rotate(84deg);\n  -ms-transform: rotate(84deg);\n  -o-transform: rotate(84deg);\n  transform: rotate(84deg);\n}\n.wi-wind.towards-85-deg {\n  -webkit-transform: rotate(85deg);\n  -moz-transform: rotate(85deg);\n  -ms-transform: rotate(85deg);\n  -o-transform: rotate(85deg);\n  transform: rotate(85deg);\n}\n.wi-wind.towards-86-deg {\n  -webkit-transform: rotate(86deg);\n  -moz-transform: rotate(86deg);\n  -ms-transform: rotate(86deg);\n  -o-transform: rotate(86deg);\n  transform: rotate(86deg);\n}\n.wi-wind.towards-87-deg {\n  -webkit-transform: rotate(87deg);\n  -moz-transform: rotate(87deg);\n  -ms-transform: rotate(87deg);\n  -o-transform: rotate(87deg);\n  transform: rotate(87deg);\n}\n.wi-wind.towards-88-deg {\n  -webkit-transform: rotate(88deg);\n  -moz-transform: rotate(88deg);\n  -ms-transform: rotate(88deg);\n  -o-transform: rotate(88deg);\n  transform: rotate(88deg);\n}\n.wi-wind.towards-89-deg {\n  -webkit-transform: rotate(89deg);\n  -moz-transform: rotate(89deg);\n  -ms-transform: rotate(89deg);\n  -o-transform: rotate(89deg);\n  transform: rotate(89deg);\n}\n.wi-wind.towards-90-deg {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.wi-wind.towards-91-deg {\n  -webkit-transform: rotate(91deg);\n  -moz-transform: rotate(91deg);\n  -ms-transform: rotate(91deg);\n  -o-transform: rotate(91deg);\n  transform: rotate(91deg);\n}\n.wi-wind.towards-92-deg {\n  -webkit-transform: rotate(92deg);\n  -moz-transform: rotate(92deg);\n  -ms-transform: rotate(92deg);\n  -o-transform: rotate(92deg);\n  transform: rotate(92deg);\n}\n.wi-wind.towards-93-deg {\n  -webkit-transform: rotate(93deg);\n  -moz-transform: rotate(93deg);\n  -ms-transform: rotate(93deg);\n  -o-transform: rotate(93deg);\n  transform: rotate(93deg);\n}\n.wi-wind.towards-94-deg {\n  -webkit-transform: rotate(94deg);\n  -moz-transform: rotate(94deg);\n  -ms-transform: rotate(94deg);\n  -o-transform: rotate(94deg);\n  transform: rotate(94deg);\n}\n.wi-wind.towards-95-deg {\n  -webkit-transform: rotate(95deg);\n  -moz-transform: rotate(95deg);\n  -ms-transform: rotate(95deg);\n  -o-transform: rotate(95deg);\n  transform: rotate(95deg);\n}\n.wi-wind.towards-96-deg {\n  -webkit-transform: rotate(96deg);\n  -moz-transform: rotate(96deg);\n  -ms-transform: rotate(96deg);\n  -o-transform: rotate(96deg);\n  transform: rotate(96deg);\n}\n.wi-wind.towards-97-deg {\n  -webkit-transform: rotate(97deg);\n  -moz-transform: rotate(97deg);\n  -ms-transform: rotate(97deg);\n  -o-transform: rotate(97deg);\n  transform: rotate(97deg);\n}\n.wi-wind.towards-98-deg {\n  -webkit-transform: rotate(98deg);\n  -moz-transform: rotate(98deg);\n  -ms-transform: rotate(98deg);\n  -o-transform: rotate(98deg);\n  transform: rotate(98deg);\n}\n.wi-wind.towards-99-deg {\n  -webkit-transform: rotate(99deg);\n  -moz-transform: rotate(99deg);\n  -ms-transform: rotate(99deg);\n  -o-transform: rotate(99deg);\n  transform: rotate(99deg);\n}\n.wi-wind.towards-100-deg {\n  -webkit-transform: rotate(100deg);\n  -moz-transform: rotate(100deg);\n  -ms-transform: rotate(100deg);\n  -o-transform: rotate(100deg);\n  transform: rotate(100deg);\n}\n.wi-wind.towards-101-deg {\n  -webkit-transform: rotate(101deg);\n  -moz-transform: rotate(101deg);\n  -ms-transform: rotate(101deg);\n  -o-transform: rotate(101deg);\n  transform: rotate(101deg);\n}\n.wi-wind.towards-102-deg {\n  -webkit-transform: rotate(102deg);\n  -moz-transform: rotate(102deg);\n  -ms-transform: rotate(102deg);\n  -o-transform: rotate(102deg);\n  transform: rotate(102deg);\n}\n.wi-wind.towards-103-deg {\n  -webkit-transform: rotate(103deg);\n  -moz-transform: rotate(103deg);\n  -ms-transform: rotate(103deg);\n  -o-transform: rotate(103deg);\n  transform: rotate(103deg);\n}\n.wi-wind.towards-104-deg {\n  -webkit-transform: rotate(104deg);\n  -moz-transform: rotate(104deg);\n  -ms-transform: rotate(104deg);\n  -o-transform: rotate(104deg);\n  transform: rotate(104deg);\n}\n.wi-wind.towards-105-deg {\n  -webkit-transform: rotate(105deg);\n  -moz-transform: rotate(105deg);\n  -ms-transform: rotate(105deg);\n  -o-transform: rotate(105deg);\n  transform: rotate(105deg);\n}\n.wi-wind.towards-106-deg {\n  -webkit-transform: rotate(106deg);\n  -moz-transform: rotate(106deg);\n  -ms-transform: rotate(106deg);\n  -o-transform: rotate(106deg);\n  transform: rotate(106deg);\n}\n.wi-wind.towards-107-deg {\n  -webkit-transform: rotate(107deg);\n  -moz-transform: rotate(107deg);\n  -ms-transform: rotate(107deg);\n  -o-transform: rotate(107deg);\n  transform: rotate(107deg);\n}\n.wi-wind.towards-108-deg {\n  -webkit-transform: rotate(108deg);\n  -moz-transform: rotate(108deg);\n  -ms-transform: rotate(108deg);\n  -o-transform: rotate(108deg);\n  transform: rotate(108deg);\n}\n.wi-wind.towards-109-deg {\n  -webkit-transform: rotate(109deg);\n  -moz-transform: rotate(109deg);\n  -ms-transform: rotate(109deg);\n  -o-transform: rotate(109deg);\n  transform: rotate(109deg);\n}\n.wi-wind.towards-110-deg {\n  -webkit-transform: rotate(110deg);\n  -moz-transform: rotate(110deg);\n  -ms-transform: rotate(110deg);\n  -o-transform: rotate(110deg);\n  transform: rotate(110deg);\n}\n.wi-wind.towards-111-deg {\n  -webkit-transform: rotate(111deg);\n  -moz-transform: rotate(111deg);\n  -ms-transform: rotate(111deg);\n  -o-transform: rotate(111deg);\n  transform: rotate(111deg);\n}\n.wi-wind.towards-112-deg {\n  -webkit-transform: rotate(112deg);\n  -moz-transform: rotate(112deg);\n  -ms-transform: rotate(112deg);\n  -o-transform: rotate(112deg);\n  transform: rotate(112deg);\n}\n.wi-wind.towards-113-deg {\n  -webkit-transform: rotate(113deg);\n  -moz-transform: rotate(113deg);\n  -ms-transform: rotate(113deg);\n  -o-transform: rotate(113deg);\n  transform: rotate(113deg);\n}\n.wi-wind.towards-114-deg {\n  -webkit-transform: rotate(114deg);\n  -moz-transform: rotate(114deg);\n  -ms-transform: rotate(114deg);\n  -o-transform: rotate(114deg);\n  transform: rotate(114deg);\n}\n.wi-wind.towards-115-deg {\n  -webkit-transform: rotate(115deg);\n  -moz-transform: rotate(115deg);\n  -ms-transform: rotate(115deg);\n  -o-transform: rotate(115deg);\n  transform: rotate(115deg);\n}\n.wi-wind.towards-116-deg {\n  -webkit-transform: rotate(116deg);\n  -moz-transform: rotate(116deg);\n  -ms-transform: rotate(116deg);\n  -o-transform: rotate(116deg);\n  transform: rotate(116deg);\n}\n.wi-wind.towards-117-deg {\n  -webkit-transform: rotate(117deg);\n  -moz-transform: rotate(117deg);\n  -ms-transform: rotate(117deg);\n  -o-transform: rotate(117deg);\n  transform: rotate(117deg);\n}\n.wi-wind.towards-118-deg {\n  -webkit-transform: rotate(118deg);\n  -moz-transform: rotate(118deg);\n  -ms-transform: rotate(118deg);\n  -o-transform: rotate(118deg);\n  transform: rotate(118deg);\n}\n.wi-wind.towards-119-deg {\n  -webkit-transform: rotate(119deg);\n  -moz-transform: rotate(119deg);\n  -ms-transform: rotate(119deg);\n  -o-transform: rotate(119deg);\n  transform: rotate(119deg);\n}\n.wi-wind.towards-120-deg {\n  -webkit-transform: rotate(120deg);\n  -moz-transform: rotate(120deg);\n  -ms-transform: rotate(120deg);\n  -o-transform: rotate(120deg);\n  transform: rotate(120deg);\n}\n.wi-wind.towards-121-deg {\n  -webkit-transform: rotate(121deg);\n  -moz-transform: rotate(121deg);\n  -ms-transform: rotate(121deg);\n  -o-transform: rotate(121deg);\n  transform: rotate(121deg);\n}\n.wi-wind.towards-122-deg {\n  -webkit-transform: rotate(122deg);\n  -moz-transform: rotate(122deg);\n  -ms-transform: rotate(122deg);\n  -o-transform: rotate(122deg);\n  transform: rotate(122deg);\n}\n.wi-wind.towards-123-deg {\n  -webkit-transform: rotate(123deg);\n  -moz-transform: rotate(123deg);\n  -ms-transform: rotate(123deg);\n  -o-transform: rotate(123deg);\n  transform: rotate(123deg);\n}\n.wi-wind.towards-124-deg {\n  -webkit-transform: rotate(124deg);\n  -moz-transform: rotate(124deg);\n  -ms-transform: rotate(124deg);\n  -o-transform: rotate(124deg);\n  transform: rotate(124deg);\n}\n.wi-wind.towards-125-deg {\n  -webkit-transform: rotate(125deg);\n  -moz-transform: rotate(125deg);\n  -ms-transform: rotate(125deg);\n  -o-transform: rotate(125deg);\n  transform: rotate(125deg);\n}\n.wi-wind.towards-126-deg {\n  -webkit-transform: rotate(126deg);\n  -moz-transform: rotate(126deg);\n  -ms-transform: rotate(126deg);\n  -o-transform: rotate(126deg);\n  transform: rotate(126deg);\n}\n.wi-wind.towards-127-deg {\n  -webkit-transform: rotate(127deg);\n  -moz-transform: rotate(127deg);\n  -ms-transform: rotate(127deg);\n  -o-transform: rotate(127deg);\n  transform: rotate(127deg);\n}\n.wi-wind.towards-128-deg {\n  -webkit-transform: rotate(128deg);\n  -moz-transform: rotate(128deg);\n  -ms-transform: rotate(128deg);\n  -o-transform: rotate(128deg);\n  transform: rotate(128deg);\n}\n.wi-wind.towards-129-deg {\n  -webkit-transform: rotate(129deg);\n  -moz-transform: rotate(129deg);\n  -ms-transform: rotate(129deg);\n  -o-transform: rotate(129deg);\n  transform: rotate(129deg);\n}\n.wi-wind.towards-130-deg {\n  -webkit-transform: rotate(130deg);\n  -moz-transform: rotate(130deg);\n  -ms-transform: rotate(130deg);\n  -o-transform: rotate(130deg);\n  transform: rotate(130deg);\n}\n.wi-wind.towards-131-deg {\n  -webkit-transform: rotate(131deg);\n  -moz-transform: rotate(131deg);\n  -ms-transform: rotate(131deg);\n  -o-transform: rotate(131deg);\n  transform: rotate(131deg);\n}\n.wi-wind.towards-132-deg {\n  -webkit-transform: rotate(132deg);\n  -moz-transform: rotate(132deg);\n  -ms-transform: rotate(132deg);\n  -o-transform: rotate(132deg);\n  transform: rotate(132deg);\n}\n.wi-wind.towards-133-deg {\n  -webkit-transform: rotate(133deg);\n  -moz-transform: rotate(133deg);\n  -ms-transform: rotate(133deg);\n  -o-transform: rotate(133deg);\n  transform: rotate(133deg);\n}\n.wi-wind.towards-134-deg {\n  -webkit-transform: rotate(134deg);\n  -moz-transform: rotate(134deg);\n  -ms-transform: rotate(134deg);\n  -o-transform: rotate(134deg);\n  transform: rotate(134deg);\n}\n.wi-wind.towards-135-deg {\n  -webkit-transform: rotate(135deg);\n  -moz-transform: rotate(135deg);\n  -ms-transform: rotate(135deg);\n  -o-transform: rotate(135deg);\n  transform: rotate(135deg);\n}\n.wi-wind.towards-136-deg {\n  -webkit-transform: rotate(136deg);\n  -moz-transform: rotate(136deg);\n  -ms-transform: rotate(136deg);\n  -o-transform: rotate(136deg);\n  transform: rotate(136deg);\n}\n.wi-wind.towards-137-deg {\n  -webkit-transform: rotate(137deg);\n  -moz-transform: rotate(137deg);\n  -ms-transform: rotate(137deg);\n  -o-transform: rotate(137deg);\n  transform: rotate(137deg);\n}\n.wi-wind.towards-138-deg {\n  -webkit-transform: rotate(138deg);\n  -moz-transform: rotate(138deg);\n  -ms-transform: rotate(138deg);\n  -o-transform: rotate(138deg);\n  transform: rotate(138deg);\n}\n.wi-wind.towards-139-deg {\n  -webkit-transform: rotate(139deg);\n  -moz-transform: rotate(139deg);\n  -ms-transform: rotate(139deg);\n  -o-transform: rotate(139deg);\n  transform: rotate(139deg);\n}\n.wi-wind.towards-140-deg {\n  -webkit-transform: rotate(140deg);\n  -moz-transform: rotate(140deg);\n  -ms-transform: rotate(140deg);\n  -o-transform: rotate(140deg);\n  transform: rotate(140deg);\n}\n.wi-wind.towards-141-deg {\n  -webkit-transform: rotate(141deg);\n  -moz-transform: rotate(141deg);\n  -ms-transform: rotate(141deg);\n  -o-transform: rotate(141deg);\n  transform: rotate(141deg);\n}\n.wi-wind.towards-142-deg {\n  -webkit-transform: rotate(142deg);\n  -moz-transform: rotate(142deg);\n  -ms-transform: rotate(142deg);\n  -o-transform: rotate(142deg);\n  transform: rotate(142deg);\n}\n.wi-wind.towards-143-deg {\n  -webkit-transform: rotate(143deg);\n  -moz-transform: rotate(143deg);\n  -ms-transform: rotate(143deg);\n  -o-transform: rotate(143deg);\n  transform: rotate(143deg);\n}\n.wi-wind.towards-144-deg {\n  -webkit-transform: rotate(144deg);\n  -moz-transform: rotate(144deg);\n  -ms-transform: rotate(144deg);\n  -o-transform: rotate(144deg);\n  transform: rotate(144deg);\n}\n.wi-wind.towards-145-deg {\n  -webkit-transform: rotate(145deg);\n  -moz-transform: rotate(145deg);\n  -ms-transform: rotate(145deg);\n  -o-transform: rotate(145deg);\n  transform: rotate(145deg);\n}\n.wi-wind.towards-146-deg {\n  -webkit-transform: rotate(146deg);\n  -moz-transform: rotate(146deg);\n  -ms-transform: rotate(146deg);\n  -o-transform: rotate(146deg);\n  transform: rotate(146deg);\n}\n.wi-wind.towards-147-deg {\n  -webkit-transform: rotate(147deg);\n  -moz-transform: rotate(147deg);\n  -ms-transform: rotate(147deg);\n  -o-transform: rotate(147deg);\n  transform: rotate(147deg);\n}\n.wi-wind.towards-148-deg {\n  -webkit-transform: rotate(148deg);\n  -moz-transform: rotate(148deg);\n  -ms-transform: rotate(148deg);\n  -o-transform: rotate(148deg);\n  transform: rotate(148deg);\n}\n.wi-wind.towards-149-deg {\n  -webkit-transform: rotate(149deg);\n  -moz-transform: rotate(149deg);\n  -ms-transform: rotate(149deg);\n  -o-transform: rotate(149deg);\n  transform: rotate(149deg);\n}\n.wi-wind.towards-150-deg {\n  -webkit-transform: rotate(150deg);\n  -moz-transform: rotate(150deg);\n  -ms-transform: rotate(150deg);\n  -o-transform: rotate(150deg);\n  transform: rotate(150deg);\n}\n.wi-wind.towards-151-deg {\n  -webkit-transform: rotate(151deg);\n  -moz-transform: rotate(151deg);\n  -ms-transform: rotate(151deg);\n  -o-transform: rotate(151deg);\n  transform: rotate(151deg);\n}\n.wi-wind.towards-152-deg {\n  -webkit-transform: rotate(152deg);\n  -moz-transform: rotate(152deg);\n  -ms-transform: rotate(152deg);\n  -o-transform: rotate(152deg);\n  transform: rotate(152deg);\n}\n.wi-wind.towards-153-deg {\n  -webkit-transform: rotate(153deg);\n  -moz-transform: rotate(153deg);\n  -ms-transform: rotate(153deg);\n  -o-transform: rotate(153deg);\n  transform: rotate(153deg);\n}\n.wi-wind.towards-154-deg {\n  -webkit-transform: rotate(154deg);\n  -moz-transform: rotate(154deg);\n  -ms-transform: rotate(154deg);\n  -o-transform: rotate(154deg);\n  transform: rotate(154deg);\n}\n.wi-wind.towards-155-deg {\n  -webkit-transform: rotate(155deg);\n  -moz-transform: rotate(155deg);\n  -ms-transform: rotate(155deg);\n  -o-transform: rotate(155deg);\n  transform: rotate(155deg);\n}\n.wi-wind.towards-156-deg {\n  -webkit-transform: rotate(156deg);\n  -moz-transform: rotate(156deg);\n  -ms-transform: rotate(156deg);\n  -o-transform: rotate(156deg);\n  transform: rotate(156deg);\n}\n.wi-wind.towards-157-deg {\n  -webkit-transform: rotate(157deg);\n  -moz-transform: rotate(157deg);\n  -ms-transform: rotate(157deg);\n  -o-transform: rotate(157deg);\n  transform: rotate(157deg);\n}\n.wi-wind.towards-158-deg {\n  -webkit-transform: rotate(158deg);\n  -moz-transform: rotate(158deg);\n  -ms-transform: rotate(158deg);\n  -o-transform: rotate(158deg);\n  transform: rotate(158deg);\n}\n.wi-wind.towards-159-deg {\n  -webkit-transform: rotate(159deg);\n  -moz-transform: rotate(159deg);\n  -ms-transform: rotate(159deg);\n  -o-transform: rotate(159deg);\n  transform: rotate(159deg);\n}\n.wi-wind.towards-160-deg {\n  -webkit-transform: rotate(160deg);\n  -moz-transform: rotate(160deg);\n  -ms-transform: rotate(160deg);\n  -o-transform: rotate(160deg);\n  transform: rotate(160deg);\n}\n.wi-wind.towards-161-deg {\n  -webkit-transform: rotate(161deg);\n  -moz-transform: rotate(161deg);\n  -ms-transform: rotate(161deg);\n  -o-transform: rotate(161deg);\n  transform: rotate(161deg);\n}\n.wi-wind.towards-162-deg {\n  -webkit-transform: rotate(162deg);\n  -moz-transform: rotate(162deg);\n  -ms-transform: rotate(162deg);\n  -o-transform: rotate(162deg);\n  transform: rotate(162deg);\n}\n.wi-wind.towards-163-deg {\n  -webkit-transform: rotate(163deg);\n  -moz-transform: rotate(163deg);\n  -ms-transform: rotate(163deg);\n  -o-transform: rotate(163deg);\n  transform: rotate(163deg);\n}\n.wi-wind.towards-164-deg {\n  -webkit-transform: rotate(164deg);\n  -moz-transform: rotate(164deg);\n  -ms-transform: rotate(164deg);\n  -o-transform: rotate(164deg);\n  transform: rotate(164deg);\n}\n.wi-wind.towards-165-deg {\n  -webkit-transform: rotate(165deg);\n  -moz-transform: rotate(165deg);\n  -ms-transform: rotate(165deg);\n  -o-transform: rotate(165deg);\n  transform: rotate(165deg);\n}\n.wi-wind.towards-166-deg {\n  -webkit-transform: rotate(166deg);\n  -moz-transform: rotate(166deg);\n  -ms-transform: rotate(166deg);\n  -o-transform: rotate(166deg);\n  transform: rotate(166deg);\n}\n.wi-wind.towards-167-deg {\n  -webkit-transform: rotate(167deg);\n  -moz-transform: rotate(167deg);\n  -ms-transform: rotate(167deg);\n  -o-transform: rotate(167deg);\n  transform: rotate(167deg);\n}\n.wi-wind.towards-168-deg {\n  -webkit-transform: rotate(168deg);\n  -moz-transform: rotate(168deg);\n  -ms-transform: rotate(168deg);\n  -o-transform: rotate(168deg);\n  transform: rotate(168deg);\n}\n.wi-wind.towards-169-deg {\n  -webkit-transform: rotate(169deg);\n  -moz-transform: rotate(169deg);\n  -ms-transform: rotate(169deg);\n  -o-transform: rotate(169deg);\n  transform: rotate(169deg);\n}\n.wi-wind.towards-170-deg {\n  -webkit-transform: rotate(170deg);\n  -moz-transform: rotate(170deg);\n  -ms-transform: rotate(170deg);\n  -o-transform: rotate(170deg);\n  transform: rotate(170deg);\n}\n.wi-wind.towards-171-deg {\n  -webkit-transform: rotate(171deg);\n  -moz-transform: rotate(171deg);\n  -ms-transform: rotate(171deg);\n  -o-transform: rotate(171deg);\n  transform: rotate(171deg);\n}\n.wi-wind.towards-172-deg {\n  -webkit-transform: rotate(172deg);\n  -moz-transform: rotate(172deg);\n  -ms-transform: rotate(172deg);\n  -o-transform: rotate(172deg);\n  transform: rotate(172deg);\n}\n.wi-wind.towards-173-deg {\n  -webkit-transform: rotate(173deg);\n  -moz-transform: rotate(173deg);\n  -ms-transform: rotate(173deg);\n  -o-transform: rotate(173deg);\n  transform: rotate(173deg);\n}\n.wi-wind.towards-174-deg {\n  -webkit-transform: rotate(174deg);\n  -moz-transform: rotate(174deg);\n  -ms-transform: rotate(174deg);\n  -o-transform: rotate(174deg);\n  transform: rotate(174deg);\n}\n.wi-wind.towards-175-deg {\n  -webkit-transform: rotate(175deg);\n  -moz-transform: rotate(175deg);\n  -ms-transform: rotate(175deg);\n  -o-transform: rotate(175deg);\n  transform: rotate(175deg);\n}\n.wi-wind.towards-176-deg {\n  -webkit-transform: rotate(176deg);\n  -moz-transform: rotate(176deg);\n  -ms-transform: rotate(176deg);\n  -o-transform: rotate(176deg);\n  transform: rotate(176deg);\n}\n.wi-wind.towards-177-deg {\n  -webkit-transform: rotate(177deg);\n  -moz-transform: rotate(177deg);\n  -ms-transform: rotate(177deg);\n  -o-transform: rotate(177deg);\n  transform: rotate(177deg);\n}\n.wi-wind.towards-178-deg {\n  -webkit-transform: rotate(178deg);\n  -moz-transform: rotate(178deg);\n  -ms-transform: rotate(178deg);\n  -o-transform: rotate(178deg);\n  transform: rotate(178deg);\n}\n.wi-wind.towards-179-deg {\n  -webkit-transform: rotate(179deg);\n  -moz-transform: rotate(179deg);\n  -ms-transform: rotate(179deg);\n  -o-transform: rotate(179deg);\n  transform: rotate(179deg);\n}\n.wi-wind.towards-180-deg {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.wi-wind.towards-181-deg {\n  -webkit-transform: rotate(181deg);\n  -moz-transform: rotate(181deg);\n  -ms-transform: rotate(181deg);\n  -o-transform: rotate(181deg);\n  transform: rotate(181deg);\n}\n.wi-wind.towards-182-deg {\n  -webkit-transform: rotate(182deg);\n  -moz-transform: rotate(182deg);\n  -ms-transform: rotate(182deg);\n  -o-transform: rotate(182deg);\n  transform: rotate(182deg);\n}\n.wi-wind.towards-183-deg {\n  -webkit-transform: rotate(183deg);\n  -moz-transform: rotate(183deg);\n  -ms-transform: rotate(183deg);\n  -o-transform: rotate(183deg);\n  transform: rotate(183deg);\n}\n.wi-wind.towards-184-deg {\n  -webkit-transform: rotate(184deg);\n  -moz-transform: rotate(184deg);\n  -ms-transform: rotate(184deg);\n  -o-transform: rotate(184deg);\n  transform: rotate(184deg);\n}\n.wi-wind.towards-185-deg {\n  -webkit-transform: rotate(185deg);\n  -moz-transform: rotate(185deg);\n  -ms-transform: rotate(185deg);\n  -o-transform: rotate(185deg);\n  transform: rotate(185deg);\n}\n.wi-wind.towards-186-deg {\n  -webkit-transform: rotate(186deg);\n  -moz-transform: rotate(186deg);\n  -ms-transform: rotate(186deg);\n  -o-transform: rotate(186deg);\n  transform: rotate(186deg);\n}\n.wi-wind.towards-187-deg {\n  -webkit-transform: rotate(187deg);\n  -moz-transform: rotate(187deg);\n  -ms-transform: rotate(187deg);\n  -o-transform: rotate(187deg);\n  transform: rotate(187deg);\n}\n.wi-wind.towards-188-deg {\n  -webkit-transform: rotate(188deg);\n  -moz-transform: rotate(188deg);\n  -ms-transform: rotate(188deg);\n  -o-transform: rotate(188deg);\n  transform: rotate(188deg);\n}\n.wi-wind.towards-189-deg {\n  -webkit-transform: rotate(189deg);\n  -moz-transform: rotate(189deg);\n  -ms-transform: rotate(189deg);\n  -o-transform: rotate(189deg);\n  transform: rotate(189deg);\n}\n.wi-wind.towards-190-deg {\n  -webkit-transform: rotate(190deg);\n  -moz-transform: rotate(190deg);\n  -ms-transform: rotate(190deg);\n  -o-transform: rotate(190deg);\n  transform: rotate(190deg);\n}\n.wi-wind.towards-191-deg {\n  -webkit-transform: rotate(191deg);\n  -moz-transform: rotate(191deg);\n  -ms-transform: rotate(191deg);\n  -o-transform: rotate(191deg);\n  transform: rotate(191deg);\n}\n.wi-wind.towards-192-deg {\n  -webkit-transform: rotate(192deg);\n  -moz-transform: rotate(192deg);\n  -ms-transform: rotate(192deg);\n  -o-transform: rotate(192deg);\n  transform: rotate(192deg);\n}\n.wi-wind.towards-193-deg {\n  -webkit-transform: rotate(193deg);\n  -moz-transform: rotate(193deg);\n  -ms-transform: rotate(193deg);\n  -o-transform: rotate(193deg);\n  transform: rotate(193deg);\n}\n.wi-wind.towards-194-deg {\n  -webkit-transform: rotate(194deg);\n  -moz-transform: rotate(194deg);\n  -ms-transform: rotate(194deg);\n  -o-transform: rotate(194deg);\n  transform: rotate(194deg);\n}\n.wi-wind.towards-195-deg {\n  -webkit-transform: rotate(195deg);\n  -moz-transform: rotate(195deg);\n  -ms-transform: rotate(195deg);\n  -o-transform: rotate(195deg);\n  transform: rotate(195deg);\n}\n.wi-wind.towards-196-deg {\n  -webkit-transform: rotate(196deg);\n  -moz-transform: rotate(196deg);\n  -ms-transform: rotate(196deg);\n  -o-transform: rotate(196deg);\n  transform: rotate(196deg);\n}\n.wi-wind.towards-197-deg {\n  -webkit-transform: rotate(197deg);\n  -moz-transform: rotate(197deg);\n  -ms-transform: rotate(197deg);\n  -o-transform: rotate(197deg);\n  transform: rotate(197deg);\n}\n.wi-wind.towards-198-deg {\n  -webkit-transform: rotate(198deg);\n  -moz-transform: rotate(198deg);\n  -ms-transform: rotate(198deg);\n  -o-transform: rotate(198deg);\n  transform: rotate(198deg);\n}\n.wi-wind.towards-199-deg {\n  -webkit-transform: rotate(199deg);\n  -moz-transform: rotate(199deg);\n  -ms-transform: rotate(199deg);\n  -o-transform: rotate(199deg);\n  transform: rotate(199deg);\n}\n.wi-wind.towards-200-deg {\n  -webkit-transform: rotate(200deg);\n  -moz-transform: rotate(200deg);\n  -ms-transform: rotate(200deg);\n  -o-transform: rotate(200deg);\n  transform: rotate(200deg);\n}\n.wi-wind.towards-201-deg {\n  -webkit-transform: rotate(201deg);\n  -moz-transform: rotate(201deg);\n  -ms-transform: rotate(201deg);\n  -o-transform: rotate(201deg);\n  transform: rotate(201deg);\n}\n.wi-wind.towards-202-deg {\n  -webkit-transform: rotate(202deg);\n  -moz-transform: rotate(202deg);\n  -ms-transform: rotate(202deg);\n  -o-transform: rotate(202deg);\n  transform: rotate(202deg);\n}\n.wi-wind.towards-203-deg {\n  -webkit-transform: rotate(203deg);\n  -moz-transform: rotate(203deg);\n  -ms-transform: rotate(203deg);\n  -o-transform: rotate(203deg);\n  transform: rotate(203deg);\n}\n.wi-wind.towards-204-deg {\n  -webkit-transform: rotate(204deg);\n  -moz-transform: rotate(204deg);\n  -ms-transform: rotate(204deg);\n  -o-transform: rotate(204deg);\n  transform: rotate(204deg);\n}\n.wi-wind.towards-205-deg {\n  -webkit-transform: rotate(205deg);\n  -moz-transform: rotate(205deg);\n  -ms-transform: rotate(205deg);\n  -o-transform: rotate(205deg);\n  transform: rotate(205deg);\n}\n.wi-wind.towards-206-deg {\n  -webkit-transform: rotate(206deg);\n  -moz-transform: rotate(206deg);\n  -ms-transform: rotate(206deg);\n  -o-transform: rotate(206deg);\n  transform: rotate(206deg);\n}\n.wi-wind.towards-207-deg {\n  -webkit-transform: rotate(207deg);\n  -moz-transform: rotate(207deg);\n  -ms-transform: rotate(207deg);\n  -o-transform: rotate(207deg);\n  transform: rotate(207deg);\n}\n.wi-wind.towards-208-deg {\n  -webkit-transform: rotate(208deg);\n  -moz-transform: rotate(208deg);\n  -ms-transform: rotate(208deg);\n  -o-transform: rotate(208deg);\n  transform: rotate(208deg);\n}\n.wi-wind.towards-209-deg {\n  -webkit-transform: rotate(209deg);\n  -moz-transform: rotate(209deg);\n  -ms-transform: rotate(209deg);\n  -o-transform: rotate(209deg);\n  transform: rotate(209deg);\n}\n.wi-wind.towards-210-deg {\n  -webkit-transform: rotate(210deg);\n  -moz-transform: rotate(210deg);\n  -ms-transform: rotate(210deg);\n  -o-transform: rotate(210deg);\n  transform: rotate(210deg);\n}\n.wi-wind.towards-211-deg {\n  -webkit-transform: rotate(211deg);\n  -moz-transform: rotate(211deg);\n  -ms-transform: rotate(211deg);\n  -o-transform: rotate(211deg);\n  transform: rotate(211deg);\n}\n.wi-wind.towards-212-deg {\n  -webkit-transform: rotate(212deg);\n  -moz-transform: rotate(212deg);\n  -ms-transform: rotate(212deg);\n  -o-transform: rotate(212deg);\n  transform: rotate(212deg);\n}\n.wi-wind.towards-213-deg {\n  -webkit-transform: rotate(213deg);\n  -moz-transform: rotate(213deg);\n  -ms-transform: rotate(213deg);\n  -o-transform: rotate(213deg);\n  transform: rotate(213deg);\n}\n.wi-wind.towards-214-deg {\n  -webkit-transform: rotate(214deg);\n  -moz-transform: rotate(214deg);\n  -ms-transform: rotate(214deg);\n  -o-transform: rotate(214deg);\n  transform: rotate(214deg);\n}\n.wi-wind.towards-215-deg {\n  -webkit-transform: rotate(215deg);\n  -moz-transform: rotate(215deg);\n  -ms-transform: rotate(215deg);\n  -o-transform: rotate(215deg);\n  transform: rotate(215deg);\n}\n.wi-wind.towards-216-deg {\n  -webkit-transform: rotate(216deg);\n  -moz-transform: rotate(216deg);\n  -ms-transform: rotate(216deg);\n  -o-transform: rotate(216deg);\n  transform: rotate(216deg);\n}\n.wi-wind.towards-217-deg {\n  -webkit-transform: rotate(217deg);\n  -moz-transform: rotate(217deg);\n  -ms-transform: rotate(217deg);\n  -o-transform: rotate(217deg);\n  transform: rotate(217deg);\n}\n.wi-wind.towards-218-deg {\n  -webkit-transform: rotate(218deg);\n  -moz-transform: rotate(218deg);\n  -ms-transform: rotate(218deg);\n  -o-transform: rotate(218deg);\n  transform: rotate(218deg);\n}\n.wi-wind.towards-219-deg {\n  -webkit-transform: rotate(219deg);\n  -moz-transform: rotate(219deg);\n  -ms-transform: rotate(219deg);\n  -o-transform: rotate(219deg);\n  transform: rotate(219deg);\n}\n.wi-wind.towards-220-deg {\n  -webkit-transform: rotate(220deg);\n  -moz-transform: rotate(220deg);\n  -ms-transform: rotate(220deg);\n  -o-transform: rotate(220deg);\n  transform: rotate(220deg);\n}\n.wi-wind.towards-221-deg {\n  -webkit-transform: rotate(221deg);\n  -moz-transform: rotate(221deg);\n  -ms-transform: rotate(221deg);\n  -o-transform: rotate(221deg);\n  transform: rotate(221deg);\n}\n.wi-wind.towards-222-deg {\n  -webkit-transform: rotate(222deg);\n  -moz-transform: rotate(222deg);\n  -ms-transform: rotate(222deg);\n  -o-transform: rotate(222deg);\n  transform: rotate(222deg);\n}\n.wi-wind.towards-223-deg {\n  -webkit-transform: rotate(223deg);\n  -moz-transform: rotate(223deg);\n  -ms-transform: rotate(223deg);\n  -o-transform: rotate(223deg);\n  transform: rotate(223deg);\n}\n.wi-wind.towards-224-deg {\n  -webkit-transform: rotate(224deg);\n  -moz-transform: rotate(224deg);\n  -ms-transform: rotate(224deg);\n  -o-transform: rotate(224deg);\n  transform: rotate(224deg);\n}\n.wi-wind.towards-225-deg {\n  -webkit-transform: rotate(225deg);\n  -moz-transform: rotate(225deg);\n  -ms-transform: rotate(225deg);\n  -o-transform: rotate(225deg);\n  transform: rotate(225deg);\n}\n.wi-wind.towards-226-deg {\n  -webkit-transform: rotate(226deg);\n  -moz-transform: rotate(226deg);\n  -ms-transform: rotate(226deg);\n  -o-transform: rotate(226deg);\n  transform: rotate(226deg);\n}\n.wi-wind.towards-227-deg {\n  -webkit-transform: rotate(227deg);\n  -moz-transform: rotate(227deg);\n  -ms-transform: rotate(227deg);\n  -o-transform: rotate(227deg);\n  transform: rotate(227deg);\n}\n.wi-wind.towards-228-deg {\n  -webkit-transform: rotate(228deg);\n  -moz-transform: rotate(228deg);\n  -ms-transform: rotate(228deg);\n  -o-transform: rotate(228deg);\n  transform: rotate(228deg);\n}\n.wi-wind.towards-229-deg {\n  -webkit-transform: rotate(229deg);\n  -moz-transform: rotate(229deg);\n  -ms-transform: rotate(229deg);\n  -o-transform: rotate(229deg);\n  transform: rotate(229deg);\n}\n.wi-wind.towards-230-deg {\n  -webkit-transform: rotate(230deg);\n  -moz-transform: rotate(230deg);\n  -ms-transform: rotate(230deg);\n  -o-transform: rotate(230deg);\n  transform: rotate(230deg);\n}\n.wi-wind.towards-231-deg {\n  -webkit-transform: rotate(231deg);\n  -moz-transform: rotate(231deg);\n  -ms-transform: rotate(231deg);\n  -o-transform: rotate(231deg);\n  transform: rotate(231deg);\n}\n.wi-wind.towards-232-deg {\n  -webkit-transform: rotate(232deg);\n  -moz-transform: rotate(232deg);\n  -ms-transform: rotate(232deg);\n  -o-transform: rotate(232deg);\n  transform: rotate(232deg);\n}\n.wi-wind.towards-233-deg {\n  -webkit-transform: rotate(233deg);\n  -moz-transform: rotate(233deg);\n  -ms-transform: rotate(233deg);\n  -o-transform: rotate(233deg);\n  transform: rotate(233deg);\n}\n.wi-wind.towards-234-deg {\n  -webkit-transform: rotate(234deg);\n  -moz-transform: rotate(234deg);\n  -ms-transform: rotate(234deg);\n  -o-transform: rotate(234deg);\n  transform: rotate(234deg);\n}\n.wi-wind.towards-235-deg {\n  -webkit-transform: rotate(235deg);\n  -moz-transform: rotate(235deg);\n  -ms-transform: rotate(235deg);\n  -o-transform: rotate(235deg);\n  transform: rotate(235deg);\n}\n.wi-wind.towards-236-deg {\n  -webkit-transform: rotate(236deg);\n  -moz-transform: rotate(236deg);\n  -ms-transform: rotate(236deg);\n  -o-transform: rotate(236deg);\n  transform: rotate(236deg);\n}\n.wi-wind.towards-237-deg {\n  -webkit-transform: rotate(237deg);\n  -moz-transform: rotate(237deg);\n  -ms-transform: rotate(237deg);\n  -o-transform: rotate(237deg);\n  transform: rotate(237deg);\n}\n.wi-wind.towards-238-deg {\n  -webkit-transform: rotate(238deg);\n  -moz-transform: rotate(238deg);\n  -ms-transform: rotate(238deg);\n  -o-transform: rotate(238deg);\n  transform: rotate(238deg);\n}\n.wi-wind.towards-239-deg {\n  -webkit-transform: rotate(239deg);\n  -moz-transform: rotate(239deg);\n  -ms-transform: rotate(239deg);\n  -o-transform: rotate(239deg);\n  transform: rotate(239deg);\n}\n.wi-wind.towards-240-deg {\n  -webkit-transform: rotate(240deg);\n  -moz-transform: rotate(240deg);\n  -ms-transform: rotate(240deg);\n  -o-transform: rotate(240deg);\n  transform: rotate(240deg);\n}\n.wi-wind.towards-241-deg {\n  -webkit-transform: rotate(241deg);\n  -moz-transform: rotate(241deg);\n  -ms-transform: rotate(241deg);\n  -o-transform: rotate(241deg);\n  transform: rotate(241deg);\n}\n.wi-wind.towards-242-deg {\n  -webkit-transform: rotate(242deg);\n  -moz-transform: rotate(242deg);\n  -ms-transform: rotate(242deg);\n  -o-transform: rotate(242deg);\n  transform: rotate(242deg);\n}\n.wi-wind.towards-243-deg {\n  -webkit-transform: rotate(243deg);\n  -moz-transform: rotate(243deg);\n  -ms-transform: rotate(243deg);\n  -o-transform: rotate(243deg);\n  transform: rotate(243deg);\n}\n.wi-wind.towards-244-deg {\n  -webkit-transform: rotate(244deg);\n  -moz-transform: rotate(244deg);\n  -ms-transform: rotate(244deg);\n  -o-transform: rotate(244deg);\n  transform: rotate(244deg);\n}\n.wi-wind.towards-245-deg {\n  -webkit-transform: rotate(245deg);\n  -moz-transform: rotate(245deg);\n  -ms-transform: rotate(245deg);\n  -o-transform: rotate(245deg);\n  transform: rotate(245deg);\n}\n.wi-wind.towards-246-deg {\n  -webkit-transform: rotate(246deg);\n  -moz-transform: rotate(246deg);\n  -ms-transform: rotate(246deg);\n  -o-transform: rotate(246deg);\n  transform: rotate(246deg);\n}\n.wi-wind.towards-247-deg {\n  -webkit-transform: rotate(247deg);\n  -moz-transform: rotate(247deg);\n  -ms-transform: rotate(247deg);\n  -o-transform: rotate(247deg);\n  transform: rotate(247deg);\n}\n.wi-wind.towards-248-deg {\n  -webkit-transform: rotate(248deg);\n  -moz-transform: rotate(248deg);\n  -ms-transform: rotate(248deg);\n  -o-transform: rotate(248deg);\n  transform: rotate(248deg);\n}\n.wi-wind.towards-249-deg {\n  -webkit-transform: rotate(249deg);\n  -moz-transform: rotate(249deg);\n  -ms-transform: rotate(249deg);\n  -o-transform: rotate(249deg);\n  transform: rotate(249deg);\n}\n.wi-wind.towards-250-deg {\n  -webkit-transform: rotate(250deg);\n  -moz-transform: rotate(250deg);\n  -ms-transform: rotate(250deg);\n  -o-transform: rotate(250deg);\n  transform: rotate(250deg);\n}\n.wi-wind.towards-251-deg {\n  -webkit-transform: rotate(251deg);\n  -moz-transform: rotate(251deg);\n  -ms-transform: rotate(251deg);\n  -o-transform: rotate(251deg);\n  transform: rotate(251deg);\n}\n.wi-wind.towards-252-deg {\n  -webkit-transform: rotate(252deg);\n  -moz-transform: rotate(252deg);\n  -ms-transform: rotate(252deg);\n  -o-transform: rotate(252deg);\n  transform: rotate(252deg);\n}\n.wi-wind.towards-253-deg {\n  -webkit-transform: rotate(253deg);\n  -moz-transform: rotate(253deg);\n  -ms-transform: rotate(253deg);\n  -o-transform: rotate(253deg);\n  transform: rotate(253deg);\n}\n.wi-wind.towards-254-deg {\n  -webkit-transform: rotate(254deg);\n  -moz-transform: rotate(254deg);\n  -ms-transform: rotate(254deg);\n  -o-transform: rotate(254deg);\n  transform: rotate(254deg);\n}\n.wi-wind.towards-255-deg {\n  -webkit-transform: rotate(255deg);\n  -moz-transform: rotate(255deg);\n  -ms-transform: rotate(255deg);\n  -o-transform: rotate(255deg);\n  transform: rotate(255deg);\n}\n.wi-wind.towards-256-deg {\n  -webkit-transform: rotate(256deg);\n  -moz-transform: rotate(256deg);\n  -ms-transform: rotate(256deg);\n  -o-transform: rotate(256deg);\n  transform: rotate(256deg);\n}\n.wi-wind.towards-257-deg {\n  -webkit-transform: rotate(257deg);\n  -moz-transform: rotate(257deg);\n  -ms-transform: rotate(257deg);\n  -o-transform: rotate(257deg);\n  transform: rotate(257deg);\n}\n.wi-wind.towards-258-deg {\n  -webkit-transform: rotate(258deg);\n  -moz-transform: rotate(258deg);\n  -ms-transform: rotate(258deg);\n  -o-transform: rotate(258deg);\n  transform: rotate(258deg);\n}\n.wi-wind.towards-259-deg {\n  -webkit-transform: rotate(259deg);\n  -moz-transform: rotate(259deg);\n  -ms-transform: rotate(259deg);\n  -o-transform: rotate(259deg);\n  transform: rotate(259deg);\n}\n.wi-wind.towards-260-deg {\n  -webkit-transform: rotate(260deg);\n  -moz-transform: rotate(260deg);\n  -ms-transform: rotate(260deg);\n  -o-transform: rotate(260deg);\n  transform: rotate(260deg);\n}\n.wi-wind.towards-261-deg {\n  -webkit-transform: rotate(261deg);\n  -moz-transform: rotate(261deg);\n  -ms-transform: rotate(261deg);\n  -o-transform: rotate(261deg);\n  transform: rotate(261deg);\n}\n.wi-wind.towards-262-deg {\n  -webkit-transform: rotate(262deg);\n  -moz-transform: rotate(262deg);\n  -ms-transform: rotate(262deg);\n  -o-transform: rotate(262deg);\n  transform: rotate(262deg);\n}\n.wi-wind.towards-263-deg {\n  -webkit-transform: rotate(263deg);\n  -moz-transform: rotate(263deg);\n  -ms-transform: rotate(263deg);\n  -o-transform: rotate(263deg);\n  transform: rotate(263deg);\n}\n.wi-wind.towards-264-deg {\n  -webkit-transform: rotate(264deg);\n  -moz-transform: rotate(264deg);\n  -ms-transform: rotate(264deg);\n  -o-transform: rotate(264deg);\n  transform: rotate(264deg);\n}\n.wi-wind.towards-265-deg {\n  -webkit-transform: rotate(265deg);\n  -moz-transform: rotate(265deg);\n  -ms-transform: rotate(265deg);\n  -o-transform: rotate(265deg);\n  transform: rotate(265deg);\n}\n.wi-wind.towards-266-deg {\n  -webkit-transform: rotate(266deg);\n  -moz-transform: rotate(266deg);\n  -ms-transform: rotate(266deg);\n  -o-transform: rotate(266deg);\n  transform: rotate(266deg);\n}\n.wi-wind.towards-267-deg {\n  -webkit-transform: rotate(267deg);\n  -moz-transform: rotate(267deg);\n  -ms-transform: rotate(267deg);\n  -o-transform: rotate(267deg);\n  transform: rotate(267deg);\n}\n.wi-wind.towards-268-deg {\n  -webkit-transform: rotate(268deg);\n  -moz-transform: rotate(268deg);\n  -ms-transform: rotate(268deg);\n  -o-transform: rotate(268deg);\n  transform: rotate(268deg);\n}\n.wi-wind.towards-269-deg {\n  -webkit-transform: rotate(269deg);\n  -moz-transform: rotate(269deg);\n  -ms-transform: rotate(269deg);\n  -o-transform: rotate(269deg);\n  transform: rotate(269deg);\n}\n.wi-wind.towards-270-deg {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.wi-wind.towards-271-deg {\n  -webkit-transform: rotate(271deg);\n  -moz-transform: rotate(271deg);\n  -ms-transform: rotate(271deg);\n  -o-transform: rotate(271deg);\n  transform: rotate(271deg);\n}\n.wi-wind.towards-272-deg {\n  -webkit-transform: rotate(272deg);\n  -moz-transform: rotate(272deg);\n  -ms-transform: rotate(272deg);\n  -o-transform: rotate(272deg);\n  transform: rotate(272deg);\n}\n.wi-wind.towards-273-deg {\n  -webkit-transform: rotate(273deg);\n  -moz-transform: rotate(273deg);\n  -ms-transform: rotate(273deg);\n  -o-transform: rotate(273deg);\n  transform: rotate(273deg);\n}\n.wi-wind.towards-274-deg {\n  -webkit-transform: rotate(274deg);\n  -moz-transform: rotate(274deg);\n  -ms-transform: rotate(274deg);\n  -o-transform: rotate(274deg);\n  transform: rotate(274deg);\n}\n.wi-wind.towards-275-deg {\n  -webkit-transform: rotate(275deg);\n  -moz-transform: rotate(275deg);\n  -ms-transform: rotate(275deg);\n  -o-transform: rotate(275deg);\n  transform: rotate(275deg);\n}\n.wi-wind.towards-276-deg {\n  -webkit-transform: rotate(276deg);\n  -moz-transform: rotate(276deg);\n  -ms-transform: rotate(276deg);\n  -o-transform: rotate(276deg);\n  transform: rotate(276deg);\n}\n.wi-wind.towards-277-deg {\n  -webkit-transform: rotate(277deg);\n  -moz-transform: rotate(277deg);\n  -ms-transform: rotate(277deg);\n  -o-transform: rotate(277deg);\n  transform: rotate(277deg);\n}\n.wi-wind.towards-278-deg {\n  -webkit-transform: rotate(278deg);\n  -moz-transform: rotate(278deg);\n  -ms-transform: rotate(278deg);\n  -o-transform: rotate(278deg);\n  transform: rotate(278deg);\n}\n.wi-wind.towards-279-deg {\n  -webkit-transform: rotate(279deg);\n  -moz-transform: rotate(279deg);\n  -ms-transform: rotate(279deg);\n  -o-transform: rotate(279deg);\n  transform: rotate(279deg);\n}\n.wi-wind.towards-280-deg {\n  -webkit-transform: rotate(280deg);\n  -moz-transform: rotate(280deg);\n  -ms-transform: rotate(280deg);\n  -o-transform: rotate(280deg);\n  transform: rotate(280deg);\n}\n.wi-wind.towards-281-deg {\n  -webkit-transform: rotate(281deg);\n  -moz-transform: rotate(281deg);\n  -ms-transform: rotate(281deg);\n  -o-transform: rotate(281deg);\n  transform: rotate(281deg);\n}\n.wi-wind.towards-282-deg {\n  -webkit-transform: rotate(282deg);\n  -moz-transform: rotate(282deg);\n  -ms-transform: rotate(282deg);\n  -o-transform: rotate(282deg);\n  transform: rotate(282deg);\n}\n.wi-wind.towards-283-deg {\n  -webkit-transform: rotate(283deg);\n  -moz-transform: rotate(283deg);\n  -ms-transform: rotate(283deg);\n  -o-transform: rotate(283deg);\n  transform: rotate(283deg);\n}\n.wi-wind.towards-284-deg {\n  -webkit-transform: rotate(284deg);\n  -moz-transform: rotate(284deg);\n  -ms-transform: rotate(284deg);\n  -o-transform: rotate(284deg);\n  transform: rotate(284deg);\n}\n.wi-wind.towards-285-deg {\n  -webkit-transform: rotate(285deg);\n  -moz-transform: rotate(285deg);\n  -ms-transform: rotate(285deg);\n  -o-transform: rotate(285deg);\n  transform: rotate(285deg);\n}\n.wi-wind.towards-286-deg {\n  -webkit-transform: rotate(286deg);\n  -moz-transform: rotate(286deg);\n  -ms-transform: rotate(286deg);\n  -o-transform: rotate(286deg);\n  transform: rotate(286deg);\n}\n.wi-wind.towards-287-deg {\n  -webkit-transform: rotate(287deg);\n  -moz-transform: rotate(287deg);\n  -ms-transform: rotate(287deg);\n  -o-transform: rotate(287deg);\n  transform: rotate(287deg);\n}\n.wi-wind.towards-288-deg {\n  -webkit-transform: rotate(288deg);\n  -moz-transform: rotate(288deg);\n  -ms-transform: rotate(288deg);\n  -o-transform: rotate(288deg);\n  transform: rotate(288deg);\n}\n.wi-wind.towards-289-deg {\n  -webkit-transform: rotate(289deg);\n  -moz-transform: rotate(289deg);\n  -ms-transform: rotate(289deg);\n  -o-transform: rotate(289deg);\n  transform: rotate(289deg);\n}\n.wi-wind.towards-290-deg {\n  -webkit-transform: rotate(290deg);\n  -moz-transform: rotate(290deg);\n  -ms-transform: rotate(290deg);\n  -o-transform: rotate(290deg);\n  transform: rotate(290deg);\n}\n.wi-wind.towards-291-deg {\n  -webkit-transform: rotate(291deg);\n  -moz-transform: rotate(291deg);\n  -ms-transform: rotate(291deg);\n  -o-transform: rotate(291deg);\n  transform: rotate(291deg);\n}\n.wi-wind.towards-292-deg {\n  -webkit-transform: rotate(292deg);\n  -moz-transform: rotate(292deg);\n  -ms-transform: rotate(292deg);\n  -o-transform: rotate(292deg);\n  transform: rotate(292deg);\n}\n.wi-wind.towards-293-deg {\n  -webkit-transform: rotate(293deg);\n  -moz-transform: rotate(293deg);\n  -ms-transform: rotate(293deg);\n  -o-transform: rotate(293deg);\n  transform: rotate(293deg);\n}\n.wi-wind.towards-294-deg {\n  -webkit-transform: rotate(294deg);\n  -moz-transform: rotate(294deg);\n  -ms-transform: rotate(294deg);\n  -o-transform: rotate(294deg);\n  transform: rotate(294deg);\n}\n.wi-wind.towards-295-deg {\n  -webkit-transform: rotate(295deg);\n  -moz-transform: rotate(295deg);\n  -ms-transform: rotate(295deg);\n  -o-transform: rotate(295deg);\n  transform: rotate(295deg);\n}\n.wi-wind.towards-296-deg {\n  -webkit-transform: rotate(296deg);\n  -moz-transform: rotate(296deg);\n  -ms-transform: rotate(296deg);\n  -o-transform: rotate(296deg);\n  transform: rotate(296deg);\n}\n.wi-wind.towards-297-deg {\n  -webkit-transform: rotate(297deg);\n  -moz-transform: rotate(297deg);\n  -ms-transform: rotate(297deg);\n  -o-transform: rotate(297deg);\n  transform: rotate(297deg);\n}\n.wi-wind.towards-298-deg {\n  -webkit-transform: rotate(298deg);\n  -moz-transform: rotate(298deg);\n  -ms-transform: rotate(298deg);\n  -o-transform: rotate(298deg);\n  transform: rotate(298deg);\n}\n.wi-wind.towards-299-deg {\n  -webkit-transform: rotate(299deg);\n  -moz-transform: rotate(299deg);\n  -ms-transform: rotate(299deg);\n  -o-transform: rotate(299deg);\n  transform: rotate(299deg);\n}\n.wi-wind.towards-300-deg {\n  -webkit-transform: rotate(300deg);\n  -moz-transform: rotate(300deg);\n  -ms-transform: rotate(300deg);\n  -o-transform: rotate(300deg);\n  transform: rotate(300deg);\n}\n.wi-wind.towards-301-deg {\n  -webkit-transform: rotate(301deg);\n  -moz-transform: rotate(301deg);\n  -ms-transform: rotate(301deg);\n  -o-transform: rotate(301deg);\n  transform: rotate(301deg);\n}\n.wi-wind.towards-302-deg {\n  -webkit-transform: rotate(302deg);\n  -moz-transform: rotate(302deg);\n  -ms-transform: rotate(302deg);\n  -o-transform: rotate(302deg);\n  transform: rotate(302deg);\n}\n.wi-wind.towards-303-deg {\n  -webkit-transform: rotate(303deg);\n  -moz-transform: rotate(303deg);\n  -ms-transform: rotate(303deg);\n  -o-transform: rotate(303deg);\n  transform: rotate(303deg);\n}\n.wi-wind.towards-304-deg {\n  -webkit-transform: rotate(304deg);\n  -moz-transform: rotate(304deg);\n  -ms-transform: rotate(304deg);\n  -o-transform: rotate(304deg);\n  transform: rotate(304deg);\n}\n.wi-wind.towards-305-deg {\n  -webkit-transform: rotate(305deg);\n  -moz-transform: rotate(305deg);\n  -ms-transform: rotate(305deg);\n  -o-transform: rotate(305deg);\n  transform: rotate(305deg);\n}\n.wi-wind.towards-306-deg {\n  -webkit-transform: rotate(306deg);\n  -moz-transform: rotate(306deg);\n  -ms-transform: rotate(306deg);\n  -o-transform: rotate(306deg);\n  transform: rotate(306deg);\n}\n.wi-wind.towards-307-deg {\n  -webkit-transform: rotate(307deg);\n  -moz-transform: rotate(307deg);\n  -ms-transform: rotate(307deg);\n  -o-transform: rotate(307deg);\n  transform: rotate(307deg);\n}\n.wi-wind.towards-308-deg {\n  -webkit-transform: rotate(308deg);\n  -moz-transform: rotate(308deg);\n  -ms-transform: rotate(308deg);\n  -o-transform: rotate(308deg);\n  transform: rotate(308deg);\n}\n.wi-wind.towards-309-deg {\n  -webkit-transform: rotate(309deg);\n  -moz-transform: rotate(309deg);\n  -ms-transform: rotate(309deg);\n  -o-transform: rotate(309deg);\n  transform: rotate(309deg);\n}\n.wi-wind.towards-310-deg {\n  -webkit-transform: rotate(310deg);\n  -moz-transform: rotate(310deg);\n  -ms-transform: rotate(310deg);\n  -o-transform: rotate(310deg);\n  transform: rotate(310deg);\n}\n.wi-wind.towards-311-deg {\n  -webkit-transform: rotate(311deg);\n  -moz-transform: rotate(311deg);\n  -ms-transform: rotate(311deg);\n  -o-transform: rotate(311deg);\n  transform: rotate(311deg);\n}\n.wi-wind.towards-312-deg {\n  -webkit-transform: rotate(312deg);\n  -moz-transform: rotate(312deg);\n  -ms-transform: rotate(312deg);\n  -o-transform: rotate(312deg);\n  transform: rotate(312deg);\n}\n.wi-wind.towards-313-deg {\n  -webkit-transform: rotate(313deg);\n  -moz-transform: rotate(313deg);\n  -ms-transform: rotate(313deg);\n  -o-transform: rotate(313deg);\n  transform: rotate(313deg);\n}\n.wi-wind.towards-314-deg {\n  -webkit-transform: rotate(314deg);\n  -moz-transform: rotate(314deg);\n  -ms-transform: rotate(314deg);\n  -o-transform: rotate(314deg);\n  transform: rotate(314deg);\n}\n.wi-wind.towards-315-deg {\n  -webkit-transform: rotate(315deg);\n  -moz-transform: rotate(315deg);\n  -ms-transform: rotate(315deg);\n  -o-transform: rotate(315deg);\n  transform: rotate(315deg);\n}\n.wi-wind.towards-316-deg {\n  -webkit-transform: rotate(316deg);\n  -moz-transform: rotate(316deg);\n  -ms-transform: rotate(316deg);\n  -o-transform: rotate(316deg);\n  transform: rotate(316deg);\n}\n.wi-wind.towards-317-deg {\n  -webkit-transform: rotate(317deg);\n  -moz-transform: rotate(317deg);\n  -ms-transform: rotate(317deg);\n  -o-transform: rotate(317deg);\n  transform: rotate(317deg);\n}\n.wi-wind.towards-318-deg {\n  -webkit-transform: rotate(318deg);\n  -moz-transform: rotate(318deg);\n  -ms-transform: rotate(318deg);\n  -o-transform: rotate(318deg);\n  transform: rotate(318deg);\n}\n.wi-wind.towards-319-deg {\n  -webkit-transform: rotate(319deg);\n  -moz-transform: rotate(319deg);\n  -ms-transform: rotate(319deg);\n  -o-transform: rotate(319deg);\n  transform: rotate(319deg);\n}\n.wi-wind.towards-320-deg {\n  -webkit-transform: rotate(320deg);\n  -moz-transform: rotate(320deg);\n  -ms-transform: rotate(320deg);\n  -o-transform: rotate(320deg);\n  transform: rotate(320deg);\n}\n.wi-wind.towards-321-deg {\n  -webkit-transform: rotate(321deg);\n  -moz-transform: rotate(321deg);\n  -ms-transform: rotate(321deg);\n  -o-transform: rotate(321deg);\n  transform: rotate(321deg);\n}\n.wi-wind.towards-322-deg {\n  -webkit-transform: rotate(322deg);\n  -moz-transform: rotate(322deg);\n  -ms-transform: rotate(322deg);\n  -o-transform: rotate(322deg);\n  transform: rotate(322deg);\n}\n.wi-wind.towards-323-deg {\n  -webkit-transform: rotate(323deg);\n  -moz-transform: rotate(323deg);\n  -ms-transform: rotate(323deg);\n  -o-transform: rotate(323deg);\n  transform: rotate(323deg);\n}\n.wi-wind.towards-324-deg {\n  -webkit-transform: rotate(324deg);\n  -moz-transform: rotate(324deg);\n  -ms-transform: rotate(324deg);\n  -o-transform: rotate(324deg);\n  transform: rotate(324deg);\n}\n.wi-wind.towards-325-deg {\n  -webkit-transform: rotate(325deg);\n  -moz-transform: rotate(325deg);\n  -ms-transform: rotate(325deg);\n  -o-transform: rotate(325deg);\n  transform: rotate(325deg);\n}\n.wi-wind.towards-326-deg {\n  -webkit-transform: rotate(326deg);\n  -moz-transform: rotate(326deg);\n  -ms-transform: rotate(326deg);\n  -o-transform: rotate(326deg);\n  transform: rotate(326deg);\n}\n.wi-wind.towards-327-deg {\n  -webkit-transform: rotate(327deg);\n  -moz-transform: rotate(327deg);\n  -ms-transform: rotate(327deg);\n  -o-transform: rotate(327deg);\n  transform: rotate(327deg);\n}\n.wi-wind.towards-328-deg {\n  -webkit-transform: rotate(328deg);\n  -moz-transform: rotate(328deg);\n  -ms-transform: rotate(328deg);\n  -o-transform: rotate(328deg);\n  transform: rotate(328deg);\n}\n.wi-wind.towards-329-deg {\n  -webkit-transform: rotate(329deg);\n  -moz-transform: rotate(329deg);\n  -ms-transform: rotate(329deg);\n  -o-transform: rotate(329deg);\n  transform: rotate(329deg);\n}\n.wi-wind.towards-330-deg {\n  -webkit-transform: rotate(330deg);\n  -moz-transform: rotate(330deg);\n  -ms-transform: rotate(330deg);\n  -o-transform: rotate(330deg);\n  transform: rotate(330deg);\n}\n.wi-wind.towards-331-deg {\n  -webkit-transform: rotate(331deg);\n  -moz-transform: rotate(331deg);\n  -ms-transform: rotate(331deg);\n  -o-transform: rotate(331deg);\n  transform: rotate(331deg);\n}\n.wi-wind.towards-332-deg {\n  -webkit-transform: rotate(332deg);\n  -moz-transform: rotate(332deg);\n  -ms-transform: rotate(332deg);\n  -o-transform: rotate(332deg);\n  transform: rotate(332deg);\n}\n.wi-wind.towards-333-deg {\n  -webkit-transform: rotate(333deg);\n  -moz-transform: rotate(333deg);\n  -ms-transform: rotate(333deg);\n  -o-transform: rotate(333deg);\n  transform: rotate(333deg);\n}\n.wi-wind.towards-334-deg {\n  -webkit-transform: rotate(334deg);\n  -moz-transform: rotate(334deg);\n  -ms-transform: rotate(334deg);\n  -o-transform: rotate(334deg);\n  transform: rotate(334deg);\n}\n.wi-wind.towards-335-deg {\n  -webkit-transform: rotate(335deg);\n  -moz-transform: rotate(335deg);\n  -ms-transform: rotate(335deg);\n  -o-transform: rotate(335deg);\n  transform: rotate(335deg);\n}\n.wi-wind.towards-336-deg {\n  -webkit-transform: rotate(336deg);\n  -moz-transform: rotate(336deg);\n  -ms-transform: rotate(336deg);\n  -o-transform: rotate(336deg);\n  transform: rotate(336deg);\n}\n.wi-wind.towards-337-deg {\n  -webkit-transform: rotate(337deg);\n  -moz-transform: rotate(337deg);\n  -ms-transform: rotate(337deg);\n  -o-transform: rotate(337deg);\n  transform: rotate(337deg);\n}\n.wi-wind.towards-338-deg {\n  -webkit-transform: rotate(338deg);\n  -moz-transform: rotate(338deg);\n  -ms-transform: rotate(338deg);\n  -o-transform: rotate(338deg);\n  transform: rotate(338deg);\n}\n.wi-wind.towards-339-deg {\n  -webkit-transform: rotate(339deg);\n  -moz-transform: rotate(339deg);\n  -ms-transform: rotate(339deg);\n  -o-transform: rotate(339deg);\n  transform: rotate(339deg);\n}\n.wi-wind.towards-340-deg {\n  -webkit-transform: rotate(340deg);\n  -moz-transform: rotate(340deg);\n  -ms-transform: rotate(340deg);\n  -o-transform: rotate(340deg);\n  transform: rotate(340deg);\n}\n.wi-wind.towards-341-deg {\n  -webkit-transform: rotate(341deg);\n  -moz-transform: rotate(341deg);\n  -ms-transform: rotate(341deg);\n  -o-transform: rotate(341deg);\n  transform: rotate(341deg);\n}\n.wi-wind.towards-342-deg {\n  -webkit-transform: rotate(342deg);\n  -moz-transform: rotate(342deg);\n  -ms-transform: rotate(342deg);\n  -o-transform: rotate(342deg);\n  transform: rotate(342deg);\n}\n.wi-wind.towards-343-deg {\n  -webkit-transform: rotate(343deg);\n  -moz-transform: rotate(343deg);\n  -ms-transform: rotate(343deg);\n  -o-transform: rotate(343deg);\n  transform: rotate(343deg);\n}\n.wi-wind.towards-344-deg {\n  -webkit-transform: rotate(344deg);\n  -moz-transform: rotate(344deg);\n  -ms-transform: rotate(344deg);\n  -o-transform: rotate(344deg);\n  transform: rotate(344deg);\n}\n.wi-wind.towards-345-deg {\n  -webkit-transform: rotate(345deg);\n  -moz-transform: rotate(345deg);\n  -ms-transform: rotate(345deg);\n  -o-transform: rotate(345deg);\n  transform: rotate(345deg);\n}\n.wi-wind.towards-346-deg {\n  -webkit-transform: rotate(346deg);\n  -moz-transform: rotate(346deg);\n  -ms-transform: rotate(346deg);\n  -o-transform: rotate(346deg);\n  transform: rotate(346deg);\n}\n.wi-wind.towards-347-deg {\n  -webkit-transform: rotate(347deg);\n  -moz-transform: rotate(347deg);\n  -ms-transform: rotate(347deg);\n  -o-transform: rotate(347deg);\n  transform: rotate(347deg);\n}\n.wi-wind.towards-348-deg {\n  -webkit-transform: rotate(348deg);\n  -moz-transform: rotate(348deg);\n  -ms-transform: rotate(348deg);\n  -o-transform: rotate(348deg);\n  transform: rotate(348deg);\n}\n.wi-wind.towards-349-deg {\n  -webkit-transform: rotate(349deg);\n  -moz-transform: rotate(349deg);\n  -ms-transform: rotate(349deg);\n  -o-transform: rotate(349deg);\n  transform: rotate(349deg);\n}\n.wi-wind.towards-350-deg {\n  -webkit-transform: rotate(350deg);\n  -moz-transform: rotate(350deg);\n  -ms-transform: rotate(350deg);\n  -o-transform: rotate(350deg);\n  transform: rotate(350deg);\n}\n.wi-wind.towards-351-deg {\n  -webkit-transform: rotate(351deg);\n  -moz-transform: rotate(351deg);\n  -ms-transform: rotate(351deg);\n  -o-transform: rotate(351deg);\n  transform: rotate(351deg);\n}\n.wi-wind.towards-352-deg {\n  -webkit-transform: rotate(352deg);\n  -moz-transform: rotate(352deg);\n  -ms-transform: rotate(352deg);\n  -o-transform: rotate(352deg);\n  transform: rotate(352deg);\n}\n.wi-wind.towards-353-deg {\n  -webkit-transform: rotate(353deg);\n  -moz-transform: rotate(353deg);\n  -ms-transform: rotate(353deg);\n  -o-transform: rotate(353deg);\n  transform: rotate(353deg);\n}\n.wi-wind.towards-354-deg {\n  -webkit-transform: rotate(354deg);\n  -moz-transform: rotate(354deg);\n  -ms-transform: rotate(354deg);\n  -o-transform: rotate(354deg);\n  transform: rotate(354deg);\n}\n.wi-wind.towards-355-deg {\n  -webkit-transform: rotate(355deg);\n  -moz-transform: rotate(355deg);\n  -ms-transform: rotate(355deg);\n  -o-transform: rotate(355deg);\n  transform: rotate(355deg);\n}\n.wi-wind.towards-356-deg {\n  -webkit-transform: rotate(356deg);\n  -moz-transform: rotate(356deg);\n  -ms-transform: rotate(356deg);\n  -o-transform: rotate(356deg);\n  transform: rotate(356deg);\n}\n.wi-wind.towards-357-deg {\n  -webkit-transform: rotate(357deg);\n  -moz-transform: rotate(357deg);\n  -ms-transform: rotate(357deg);\n  -o-transform: rotate(357deg);\n  transform: rotate(357deg);\n}\n.wi-wind.towards-358-deg {\n  -webkit-transform: rotate(358deg);\n  -moz-transform: rotate(358deg);\n  -ms-transform: rotate(358deg);\n  -o-transform: rotate(358deg);\n  transform: rotate(358deg);\n}\n.wi-wind.towards-359-deg {\n  -webkit-transform: rotate(359deg);\n  -moz-transform: rotate(359deg);\n  -ms-transform: rotate(359deg);\n  -o-transform: rotate(359deg);\n  transform: rotate(359deg);\n}\n.wi-wind.towards-360-deg {\n  -webkit-transform: rotate(0deg);\n  -moz-transform: rotate(0deg);\n  -ms-transform: rotate(0deg);\n  -o-transform: rotate(0deg);\n  transform: rotate(0deg);\n}\n.wi-wind.from-0-deg {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.wi-wind.from-1-deg {\n  -webkit-transform: rotate(181deg);\n  -moz-transform: rotate(181deg);\n  -ms-transform: rotate(181deg);\n  -o-transform: rotate(181deg);\n  transform: rotate(181deg);\n}\n.wi-wind.from-2-deg {\n  -webkit-transform: rotate(182deg);\n  -moz-transform: rotate(182deg);\n  -ms-transform: rotate(182deg);\n  -o-transform: rotate(182deg);\n  transform: rotate(182deg);\n}\n.wi-wind.from-3-deg {\n  -webkit-transform: rotate(183deg);\n  -moz-transform: rotate(183deg);\n  -ms-transform: rotate(183deg);\n  -o-transform: rotate(183deg);\n  transform: rotate(183deg);\n}\n.wi-wind.from-4-deg {\n  -webkit-transform: rotate(184deg);\n  -moz-transform: rotate(184deg);\n  -ms-transform: rotate(184deg);\n  -o-transform: rotate(184deg);\n  transform: rotate(184deg);\n}\n.wi-wind.from-5-deg {\n  -webkit-transform: rotate(185deg);\n  -moz-transform: rotate(185deg);\n  -ms-transform: rotate(185deg);\n  -o-transform: rotate(185deg);\n  transform: rotate(185deg);\n}\n.wi-wind.from-6-deg {\n  -webkit-transform: rotate(186deg);\n  -moz-transform: rotate(186deg);\n  -ms-transform: rotate(186deg);\n  -o-transform: rotate(186deg);\n  transform: rotate(186deg);\n}\n.wi-wind.from-7-deg {\n  -webkit-transform: rotate(187deg);\n  -moz-transform: rotate(187deg);\n  -ms-transform: rotate(187deg);\n  -o-transform: rotate(187deg);\n  transform: rotate(187deg);\n}\n.wi-wind.from-8-deg {\n  -webkit-transform: rotate(188deg);\n  -moz-transform: rotate(188deg);\n  -ms-transform: rotate(188deg);\n  -o-transform: rotate(188deg);\n  transform: rotate(188deg);\n}\n.wi-wind.from-9-deg {\n  -webkit-transform: rotate(189deg);\n  -moz-transform: rotate(189deg);\n  -ms-transform: rotate(189deg);\n  -o-transform: rotate(189deg);\n  transform: rotate(189deg);\n}\n.wi-wind.from-10-deg {\n  -webkit-transform: rotate(190deg);\n  -moz-transform: rotate(190deg);\n  -ms-transform: rotate(190deg);\n  -o-transform: rotate(190deg);\n  transform: rotate(190deg);\n}\n.wi-wind.from-11-deg {\n  -webkit-transform: rotate(191deg);\n  -moz-transform: rotate(191deg);\n  -ms-transform: rotate(191deg);\n  -o-transform: rotate(191deg);\n  transform: rotate(191deg);\n}\n.wi-wind.from-12-deg {\n  -webkit-transform: rotate(192deg);\n  -moz-transform: rotate(192deg);\n  -ms-transform: rotate(192deg);\n  -o-transform: rotate(192deg);\n  transform: rotate(192deg);\n}\n.wi-wind.from-13-deg {\n  -webkit-transform: rotate(193deg);\n  -moz-transform: rotate(193deg);\n  -ms-transform: rotate(193deg);\n  -o-transform: rotate(193deg);\n  transform: rotate(193deg);\n}\n.wi-wind.from-14-deg {\n  -webkit-transform: rotate(194deg);\n  -moz-transform: rotate(194deg);\n  -ms-transform: rotate(194deg);\n  -o-transform: rotate(194deg);\n  transform: rotate(194deg);\n}\n.wi-wind.from-15-deg {\n  -webkit-transform: rotate(195deg);\n  -moz-transform: rotate(195deg);\n  -ms-transform: rotate(195deg);\n  -o-transform: rotate(195deg);\n  transform: rotate(195deg);\n}\n.wi-wind.from-16-deg {\n  -webkit-transform: rotate(196deg);\n  -moz-transform: rotate(196deg);\n  -ms-transform: rotate(196deg);\n  -o-transform: rotate(196deg);\n  transform: rotate(196deg);\n}\n.wi-wind.from-17-deg {\n  -webkit-transform: rotate(197deg);\n  -moz-transform: rotate(197deg);\n  -ms-transform: rotate(197deg);\n  -o-transform: rotate(197deg);\n  transform: rotate(197deg);\n}\n.wi-wind.from-18-deg {\n  -webkit-transform: rotate(198deg);\n  -moz-transform: rotate(198deg);\n  -ms-transform: rotate(198deg);\n  -o-transform: rotate(198deg);\n  transform: rotate(198deg);\n}\n.wi-wind.from-19-deg {\n  -webkit-transform: rotate(199deg);\n  -moz-transform: rotate(199deg);\n  -ms-transform: rotate(199deg);\n  -o-transform: rotate(199deg);\n  transform: rotate(199deg);\n}\n.wi-wind.from-20-deg {\n  -webkit-transform: rotate(200deg);\n  -moz-transform: rotate(200deg);\n  -ms-transform: rotate(200deg);\n  -o-transform: rotate(200deg);\n  transform: rotate(200deg);\n}\n.wi-wind.from-21-deg {\n  -webkit-transform: rotate(201deg);\n  -moz-transform: rotate(201deg);\n  -ms-transform: rotate(201deg);\n  -o-transform: rotate(201deg);\n  transform: rotate(201deg);\n}\n.wi-wind.from-22-deg {\n  -webkit-transform: rotate(202deg);\n  -moz-transform: rotate(202deg);\n  -ms-transform: rotate(202deg);\n  -o-transform: rotate(202deg);\n  transform: rotate(202deg);\n}\n.wi-wind.from-23-deg {\n  -webkit-transform: rotate(203deg);\n  -moz-transform: rotate(203deg);\n  -ms-transform: rotate(203deg);\n  -o-transform: rotate(203deg);\n  transform: rotate(203deg);\n}\n.wi-wind.from-24-deg {\n  -webkit-transform: rotate(204deg);\n  -moz-transform: rotate(204deg);\n  -ms-transform: rotate(204deg);\n  -o-transform: rotate(204deg);\n  transform: rotate(204deg);\n}\n.wi-wind.from-25-deg {\n  -webkit-transform: rotate(205deg);\n  -moz-transform: rotate(205deg);\n  -ms-transform: rotate(205deg);\n  -o-transform: rotate(205deg);\n  transform: rotate(205deg);\n}\n.wi-wind.from-26-deg {\n  -webkit-transform: rotate(206deg);\n  -moz-transform: rotate(206deg);\n  -ms-transform: rotate(206deg);\n  -o-transform: rotate(206deg);\n  transform: rotate(206deg);\n}\n.wi-wind.from-27-deg {\n  -webkit-transform: rotate(207deg);\n  -moz-transform: rotate(207deg);\n  -ms-transform: rotate(207deg);\n  -o-transform: rotate(207deg);\n  transform: rotate(207deg);\n}\n.wi-wind.from-28-deg {\n  -webkit-transform: rotate(208deg);\n  -moz-transform: rotate(208deg);\n  -ms-transform: rotate(208deg);\n  -o-transform: rotate(208deg);\n  transform: rotate(208deg);\n}\n.wi-wind.from-29-deg {\n  -webkit-transform: rotate(209deg);\n  -moz-transform: rotate(209deg);\n  -ms-transform: rotate(209deg);\n  -o-transform: rotate(209deg);\n  transform: rotate(209deg);\n}\n.wi-wind.from-30-deg {\n  -webkit-transform: rotate(210deg);\n  -moz-transform: rotate(210deg);\n  -ms-transform: rotate(210deg);\n  -o-transform: rotate(210deg);\n  transform: rotate(210deg);\n}\n.wi-wind.from-31-deg {\n  -webkit-transform: rotate(211deg);\n  -moz-transform: rotate(211deg);\n  -ms-transform: rotate(211deg);\n  -o-transform: rotate(211deg);\n  transform: rotate(211deg);\n}\n.wi-wind.from-32-deg {\n  -webkit-transform: rotate(212deg);\n  -moz-transform: rotate(212deg);\n  -ms-transform: rotate(212deg);\n  -o-transform: rotate(212deg);\n  transform: rotate(212deg);\n}\n.wi-wind.from-33-deg {\n  -webkit-transform: rotate(213deg);\n  -moz-transform: rotate(213deg);\n  -ms-transform: rotate(213deg);\n  -o-transform: rotate(213deg);\n  transform: rotate(213deg);\n}\n.wi-wind.from-34-deg {\n  -webkit-transform: rotate(214deg);\n  -moz-transform: rotate(214deg);\n  -ms-transform: rotate(214deg);\n  -o-transform: rotate(214deg);\n  transform: rotate(214deg);\n}\n.wi-wind.from-35-deg {\n  -webkit-transform: rotate(215deg);\n  -moz-transform: rotate(215deg);\n  -ms-transform: rotate(215deg);\n  -o-transform: rotate(215deg);\n  transform: rotate(215deg);\n}\n.wi-wind.from-36-deg {\n  -webkit-transform: rotate(216deg);\n  -moz-transform: rotate(216deg);\n  -ms-transform: rotate(216deg);\n  -o-transform: rotate(216deg);\n  transform: rotate(216deg);\n}\n.wi-wind.from-37-deg {\n  -webkit-transform: rotate(217deg);\n  -moz-transform: rotate(217deg);\n  -ms-transform: rotate(217deg);\n  -o-transform: rotate(217deg);\n  transform: rotate(217deg);\n}\n.wi-wind.from-38-deg {\n  -webkit-transform: rotate(218deg);\n  -moz-transform: rotate(218deg);\n  -ms-transform: rotate(218deg);\n  -o-transform: rotate(218deg);\n  transform: rotate(218deg);\n}\n.wi-wind.from-39-deg {\n  -webkit-transform: rotate(219deg);\n  -moz-transform: rotate(219deg);\n  -ms-transform: rotate(219deg);\n  -o-transform: rotate(219deg);\n  transform: rotate(219deg);\n}\n.wi-wind.from-40-deg {\n  -webkit-transform: rotate(220deg);\n  -moz-transform: rotate(220deg);\n  -ms-transform: rotate(220deg);\n  -o-transform: rotate(220deg);\n  transform: rotate(220deg);\n}\n.wi-wind.from-41-deg {\n  -webkit-transform: rotate(221deg);\n  -moz-transform: rotate(221deg);\n  -ms-transform: rotate(221deg);\n  -o-transform: rotate(221deg);\n  transform: rotate(221deg);\n}\n.wi-wind.from-42-deg {\n  -webkit-transform: rotate(222deg);\n  -moz-transform: rotate(222deg);\n  -ms-transform: rotate(222deg);\n  -o-transform: rotate(222deg);\n  transform: rotate(222deg);\n}\n.wi-wind.from-43-deg {\n  -webkit-transform: rotate(223deg);\n  -moz-transform: rotate(223deg);\n  -ms-transform: rotate(223deg);\n  -o-transform: rotate(223deg);\n  transform: rotate(223deg);\n}\n.wi-wind.from-44-deg {\n  -webkit-transform: rotate(224deg);\n  -moz-transform: rotate(224deg);\n  -ms-transform: rotate(224deg);\n  -o-transform: rotate(224deg);\n  transform: rotate(224deg);\n}\n.wi-wind.from-45-deg {\n  -webkit-transform: rotate(225deg);\n  -moz-transform: rotate(225deg);\n  -ms-transform: rotate(225deg);\n  -o-transform: rotate(225deg);\n  transform: rotate(225deg);\n}\n.wi-wind.from-46-deg {\n  -webkit-transform: rotate(226deg);\n  -moz-transform: rotate(226deg);\n  -ms-transform: rotate(226deg);\n  -o-transform: rotate(226deg);\n  transform: rotate(226deg);\n}\n.wi-wind.from-47-deg {\n  -webkit-transform: rotate(227deg);\n  -moz-transform: rotate(227deg);\n  -ms-transform: rotate(227deg);\n  -o-transform: rotate(227deg);\n  transform: rotate(227deg);\n}\n.wi-wind.from-48-deg {\n  -webkit-transform: rotate(228deg);\n  -moz-transform: rotate(228deg);\n  -ms-transform: rotate(228deg);\n  -o-transform: rotate(228deg);\n  transform: rotate(228deg);\n}\n.wi-wind.from-49-deg {\n  -webkit-transform: rotate(229deg);\n  -moz-transform: rotate(229deg);\n  -ms-transform: rotate(229deg);\n  -o-transform: rotate(229deg);\n  transform: rotate(229deg);\n}\n.wi-wind.from-50-deg {\n  -webkit-transform: rotate(230deg);\n  -moz-transform: rotate(230deg);\n  -ms-transform: rotate(230deg);\n  -o-transform: rotate(230deg);\n  transform: rotate(230deg);\n}\n.wi-wind.from-51-deg {\n  -webkit-transform: rotate(231deg);\n  -moz-transform: rotate(231deg);\n  -ms-transform: rotate(231deg);\n  -o-transform: rotate(231deg);\n  transform: rotate(231deg);\n}\n.wi-wind.from-52-deg {\n  -webkit-transform: rotate(232deg);\n  -moz-transform: rotate(232deg);\n  -ms-transform: rotate(232deg);\n  -o-transform: rotate(232deg);\n  transform: rotate(232deg);\n}\n.wi-wind.from-53-deg {\n  -webkit-transform: rotate(233deg);\n  -moz-transform: rotate(233deg);\n  -ms-transform: rotate(233deg);\n  -o-transform: rotate(233deg);\n  transform: rotate(233deg);\n}\n.wi-wind.from-54-deg {\n  -webkit-transform: rotate(234deg);\n  -moz-transform: rotate(234deg);\n  -ms-transform: rotate(234deg);\n  -o-transform: rotate(234deg);\n  transform: rotate(234deg);\n}\n.wi-wind.from-55-deg {\n  -webkit-transform: rotate(235deg);\n  -moz-transform: rotate(235deg);\n  -ms-transform: rotate(235deg);\n  -o-transform: rotate(235deg);\n  transform: rotate(235deg);\n}\n.wi-wind.from-56-deg {\n  -webkit-transform: rotate(236deg);\n  -moz-transform: rotate(236deg);\n  -ms-transform: rotate(236deg);\n  -o-transform: rotate(236deg);\n  transform: rotate(236deg);\n}\n.wi-wind.from-57-deg {\n  -webkit-transform: rotate(237deg);\n  -moz-transform: rotate(237deg);\n  -ms-transform: rotate(237deg);\n  -o-transform: rotate(237deg);\n  transform: rotate(237deg);\n}\n.wi-wind.from-58-deg {\n  -webkit-transform: rotate(238deg);\n  -moz-transform: rotate(238deg);\n  -ms-transform: rotate(238deg);\n  -o-transform: rotate(238deg);\n  transform: rotate(238deg);\n}\n.wi-wind.from-59-deg {\n  -webkit-transform: rotate(239deg);\n  -moz-transform: rotate(239deg);\n  -ms-transform: rotate(239deg);\n  -o-transform: rotate(239deg);\n  transform: rotate(239deg);\n}\n.wi-wind.from-60-deg {\n  -webkit-transform: rotate(240deg);\n  -moz-transform: rotate(240deg);\n  -ms-transform: rotate(240deg);\n  -o-transform: rotate(240deg);\n  transform: rotate(240deg);\n}\n.wi-wind.from-61-deg {\n  -webkit-transform: rotate(241deg);\n  -moz-transform: rotate(241deg);\n  -ms-transform: rotate(241deg);\n  -o-transform: rotate(241deg);\n  transform: rotate(241deg);\n}\n.wi-wind.from-62-deg {\n  -webkit-transform: rotate(242deg);\n  -moz-transform: rotate(242deg);\n  -ms-transform: rotate(242deg);\n  -o-transform: rotate(242deg);\n  transform: rotate(242deg);\n}\n.wi-wind.from-63-deg {\n  -webkit-transform: rotate(243deg);\n  -moz-transform: rotate(243deg);\n  -ms-transform: rotate(243deg);\n  -o-transform: rotate(243deg);\n  transform: rotate(243deg);\n}\n.wi-wind.from-64-deg {\n  -webkit-transform: rotate(244deg);\n  -moz-transform: rotate(244deg);\n  -ms-transform: rotate(244deg);\n  -o-transform: rotate(244deg);\n  transform: rotate(244deg);\n}\n.wi-wind.from-65-deg {\n  -webkit-transform: rotate(245deg);\n  -moz-transform: rotate(245deg);\n  -ms-transform: rotate(245deg);\n  -o-transform: rotate(245deg);\n  transform: rotate(245deg);\n}\n.wi-wind.from-66-deg {\n  -webkit-transform: rotate(246deg);\n  -moz-transform: rotate(246deg);\n  -ms-transform: rotate(246deg);\n  -o-transform: rotate(246deg);\n  transform: rotate(246deg);\n}\n.wi-wind.from-67-deg {\n  -webkit-transform: rotate(247deg);\n  -moz-transform: rotate(247deg);\n  -ms-transform: rotate(247deg);\n  -o-transform: rotate(247deg);\n  transform: rotate(247deg);\n}\n.wi-wind.from-68-deg {\n  -webkit-transform: rotate(248deg);\n  -moz-transform: rotate(248deg);\n  -ms-transform: rotate(248deg);\n  -o-transform: rotate(248deg);\n  transform: rotate(248deg);\n}\n.wi-wind.from-69-deg {\n  -webkit-transform: rotate(249deg);\n  -moz-transform: rotate(249deg);\n  -ms-transform: rotate(249deg);\n  -o-transform: rotate(249deg);\n  transform: rotate(249deg);\n}\n.wi-wind.from-70-deg {\n  -webkit-transform: rotate(250deg);\n  -moz-transform: rotate(250deg);\n  -ms-transform: rotate(250deg);\n  -o-transform: rotate(250deg);\n  transform: rotate(250deg);\n}\n.wi-wind.from-71-deg {\n  -webkit-transform: rotate(251deg);\n  -moz-transform: rotate(251deg);\n  -ms-transform: rotate(251deg);\n  -o-transform: rotate(251deg);\n  transform: rotate(251deg);\n}\n.wi-wind.from-72-deg {\n  -webkit-transform: rotate(252deg);\n  -moz-transform: rotate(252deg);\n  -ms-transform: rotate(252deg);\n  -o-transform: rotate(252deg);\n  transform: rotate(252deg);\n}\n.wi-wind.from-73-deg {\n  -webkit-transform: rotate(253deg);\n  -moz-transform: rotate(253deg);\n  -ms-transform: rotate(253deg);\n  -o-transform: rotate(253deg);\n  transform: rotate(253deg);\n}\n.wi-wind.from-74-deg {\n  -webkit-transform: rotate(254deg);\n  -moz-transform: rotate(254deg);\n  -ms-transform: rotate(254deg);\n  -o-transform: rotate(254deg);\n  transform: rotate(254deg);\n}\n.wi-wind.from-75-deg {\n  -webkit-transform: rotate(255deg);\n  -moz-transform: rotate(255deg);\n  -ms-transform: rotate(255deg);\n  -o-transform: rotate(255deg);\n  transform: rotate(255deg);\n}\n.wi-wind.from-76-deg {\n  -webkit-transform: rotate(256deg);\n  -moz-transform: rotate(256deg);\n  -ms-transform: rotate(256deg);\n  -o-transform: rotate(256deg);\n  transform: rotate(256deg);\n}\n.wi-wind.from-77-deg {\n  -webkit-transform: rotate(257deg);\n  -moz-transform: rotate(257deg);\n  -ms-transform: rotate(257deg);\n  -o-transform: rotate(257deg);\n  transform: rotate(257deg);\n}\n.wi-wind.from-78-deg {\n  -webkit-transform: rotate(258deg);\n  -moz-transform: rotate(258deg);\n  -ms-transform: rotate(258deg);\n  -o-transform: rotate(258deg);\n  transform: rotate(258deg);\n}\n.wi-wind.from-79-deg {\n  -webkit-transform: rotate(259deg);\n  -moz-transform: rotate(259deg);\n  -ms-transform: rotate(259deg);\n  -o-transform: rotate(259deg);\n  transform: rotate(259deg);\n}\n.wi-wind.from-80-deg {\n  -webkit-transform: rotate(260deg);\n  -moz-transform: rotate(260deg);\n  -ms-transform: rotate(260deg);\n  -o-transform: rotate(260deg);\n  transform: rotate(260deg);\n}\n.wi-wind.from-81-deg {\n  -webkit-transform: rotate(261deg);\n  -moz-transform: rotate(261deg);\n  -ms-transform: rotate(261deg);\n  -o-transform: rotate(261deg);\n  transform: rotate(261deg);\n}\n.wi-wind.from-82-deg {\n  -webkit-transform: rotate(262deg);\n  -moz-transform: rotate(262deg);\n  -ms-transform: rotate(262deg);\n  -o-transform: rotate(262deg);\n  transform: rotate(262deg);\n}\n.wi-wind.from-83-deg {\n  -webkit-transform: rotate(263deg);\n  -moz-transform: rotate(263deg);\n  -ms-transform: rotate(263deg);\n  -o-transform: rotate(263deg);\n  transform: rotate(263deg);\n}\n.wi-wind.from-84-deg {\n  -webkit-transform: rotate(264deg);\n  -moz-transform: rotate(264deg);\n  -ms-transform: rotate(264deg);\n  -o-transform: rotate(264deg);\n  transform: rotate(264deg);\n}\n.wi-wind.from-85-deg {\n  -webkit-transform: rotate(265deg);\n  -moz-transform: rotate(265deg);\n  -ms-transform: rotate(265deg);\n  -o-transform: rotate(265deg);\n  transform: rotate(265deg);\n}\n.wi-wind.from-86-deg {\n  -webkit-transform: rotate(266deg);\n  -moz-transform: rotate(266deg);\n  -ms-transform: rotate(266deg);\n  -o-transform: rotate(266deg);\n  transform: rotate(266deg);\n}\n.wi-wind.from-87-deg {\n  -webkit-transform: rotate(267deg);\n  -moz-transform: rotate(267deg);\n  -ms-transform: rotate(267deg);\n  -o-transform: rotate(267deg);\n  transform: rotate(267deg);\n}\n.wi-wind.from-88-deg {\n  -webkit-transform: rotate(268deg);\n  -moz-transform: rotate(268deg);\n  -ms-transform: rotate(268deg);\n  -o-transform: rotate(268deg);\n  transform: rotate(268deg);\n}\n.wi-wind.from-89-deg {\n  -webkit-transform: rotate(269deg);\n  -moz-transform: rotate(269deg);\n  -ms-transform: rotate(269deg);\n  -o-transform: rotate(269deg);\n  transform: rotate(269deg);\n}\n.wi-wind.from-90-deg {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.wi-wind.from-91-deg {\n  -webkit-transform: rotate(271deg);\n  -moz-transform: rotate(271deg);\n  -ms-transform: rotate(271deg);\n  -o-transform: rotate(271deg);\n  transform: rotate(271deg);\n}\n.wi-wind.from-92-deg {\n  -webkit-transform: rotate(272deg);\n  -moz-transform: rotate(272deg);\n  -ms-transform: rotate(272deg);\n  -o-transform: rotate(272deg);\n  transform: rotate(272deg);\n}\n.wi-wind.from-93-deg {\n  -webkit-transform: rotate(273deg);\n  -moz-transform: rotate(273deg);\n  -ms-transform: rotate(273deg);\n  -o-transform: rotate(273deg);\n  transform: rotate(273deg);\n}\n.wi-wind.from-94-deg {\n  -webkit-transform: rotate(274deg);\n  -moz-transform: rotate(274deg);\n  -ms-transform: rotate(274deg);\n  -o-transform: rotate(274deg);\n  transform: rotate(274deg);\n}\n.wi-wind.from-95-deg {\n  -webkit-transform: rotate(275deg);\n  -moz-transform: rotate(275deg);\n  -ms-transform: rotate(275deg);\n  -o-transform: rotate(275deg);\n  transform: rotate(275deg);\n}\n.wi-wind.from-96-deg {\n  -webkit-transform: rotate(276deg);\n  -moz-transform: rotate(276deg);\n  -ms-transform: rotate(276deg);\n  -o-transform: rotate(276deg);\n  transform: rotate(276deg);\n}\n.wi-wind.from-97-deg {\n  -webkit-transform: rotate(277deg);\n  -moz-transform: rotate(277deg);\n  -ms-transform: rotate(277deg);\n  -o-transform: rotate(277deg);\n  transform: rotate(277deg);\n}\n.wi-wind.from-98-deg {\n  -webkit-transform: rotate(278deg);\n  -moz-transform: rotate(278deg);\n  -ms-transform: rotate(278deg);\n  -o-transform: rotate(278deg);\n  transform: rotate(278deg);\n}\n.wi-wind.from-99-deg {\n  -webkit-transform: rotate(279deg);\n  -moz-transform: rotate(279deg);\n  -ms-transform: rotate(279deg);\n  -o-transform: rotate(279deg);\n  transform: rotate(279deg);\n}\n.wi-wind.from-100-deg {\n  -webkit-transform: rotate(280deg);\n  -moz-transform: rotate(280deg);\n  -ms-transform: rotate(280deg);\n  -o-transform: rotate(280deg);\n  transform: rotate(280deg);\n}\n.wi-wind.from-101-deg {\n  -webkit-transform: rotate(281deg);\n  -moz-transform: rotate(281deg);\n  -ms-transform: rotate(281deg);\n  -o-transform: rotate(281deg);\n  transform: rotate(281deg);\n}\n.wi-wind.from-102-deg {\n  -webkit-transform: rotate(282deg);\n  -moz-transform: rotate(282deg);\n  -ms-transform: rotate(282deg);\n  -o-transform: rotate(282deg);\n  transform: rotate(282deg);\n}\n.wi-wind.from-103-deg {\n  -webkit-transform: rotate(283deg);\n  -moz-transform: rotate(283deg);\n  -ms-transform: rotate(283deg);\n  -o-transform: rotate(283deg);\n  transform: rotate(283deg);\n}\n.wi-wind.from-104-deg {\n  -webkit-transform: rotate(284deg);\n  -moz-transform: rotate(284deg);\n  -ms-transform: rotate(284deg);\n  -o-transform: rotate(284deg);\n  transform: rotate(284deg);\n}\n.wi-wind.from-105-deg {\n  -webkit-transform: rotate(285deg);\n  -moz-transform: rotate(285deg);\n  -ms-transform: rotate(285deg);\n  -o-transform: rotate(285deg);\n  transform: rotate(285deg);\n}\n.wi-wind.from-106-deg {\n  -webkit-transform: rotate(286deg);\n  -moz-transform: rotate(286deg);\n  -ms-transform: rotate(286deg);\n  -o-transform: rotate(286deg);\n  transform: rotate(286deg);\n}\n.wi-wind.from-107-deg {\n  -webkit-transform: rotate(287deg);\n  -moz-transform: rotate(287deg);\n  -ms-transform: rotate(287deg);\n  -o-transform: rotate(287deg);\n  transform: rotate(287deg);\n}\n.wi-wind.from-108-deg {\n  -webkit-transform: rotate(288deg);\n  -moz-transform: rotate(288deg);\n  -ms-transform: rotate(288deg);\n  -o-transform: rotate(288deg);\n  transform: rotate(288deg);\n}\n.wi-wind.from-109-deg {\n  -webkit-transform: rotate(289deg);\n  -moz-transform: rotate(289deg);\n  -ms-transform: rotate(289deg);\n  -o-transform: rotate(289deg);\n  transform: rotate(289deg);\n}\n.wi-wind.from-110-deg {\n  -webkit-transform: rotate(290deg);\n  -moz-transform: rotate(290deg);\n  -ms-transform: rotate(290deg);\n  -o-transform: rotate(290deg);\n  transform: rotate(290deg);\n}\n.wi-wind.from-111-deg {\n  -webkit-transform: rotate(291deg);\n  -moz-transform: rotate(291deg);\n  -ms-transform: rotate(291deg);\n  -o-transform: rotate(291deg);\n  transform: rotate(291deg);\n}\n.wi-wind.from-112-deg {\n  -webkit-transform: rotate(292deg);\n  -moz-transform: rotate(292deg);\n  -ms-transform: rotate(292deg);\n  -o-transform: rotate(292deg);\n  transform: rotate(292deg);\n}\n.wi-wind.from-113-deg {\n  -webkit-transform: rotate(293deg);\n  -moz-transform: rotate(293deg);\n  -ms-transform: rotate(293deg);\n  -o-transform: rotate(293deg);\n  transform: rotate(293deg);\n}\n.wi-wind.from-114-deg {\n  -webkit-transform: rotate(294deg);\n  -moz-transform: rotate(294deg);\n  -ms-transform: rotate(294deg);\n  -o-transform: rotate(294deg);\n  transform: rotate(294deg);\n}\n.wi-wind.from-115-deg {\n  -webkit-transform: rotate(295deg);\n  -moz-transform: rotate(295deg);\n  -ms-transform: rotate(295deg);\n  -o-transform: rotate(295deg);\n  transform: rotate(295deg);\n}\n.wi-wind.from-116-deg {\n  -webkit-transform: rotate(296deg);\n  -moz-transform: rotate(296deg);\n  -ms-transform: rotate(296deg);\n  -o-transform: rotate(296deg);\n  transform: rotate(296deg);\n}\n.wi-wind.from-117-deg {\n  -webkit-transform: rotate(297deg);\n  -moz-transform: rotate(297deg);\n  -ms-transform: rotate(297deg);\n  -o-transform: rotate(297deg);\n  transform: rotate(297deg);\n}\n.wi-wind.from-118-deg {\n  -webkit-transform: rotate(298deg);\n  -moz-transform: rotate(298deg);\n  -ms-transform: rotate(298deg);\n  -o-transform: rotate(298deg);\n  transform: rotate(298deg);\n}\n.wi-wind.from-119-deg {\n  -webkit-transform: rotate(299deg);\n  -moz-transform: rotate(299deg);\n  -ms-transform: rotate(299deg);\n  -o-transform: rotate(299deg);\n  transform: rotate(299deg);\n}\n.wi-wind.from-120-deg {\n  -webkit-transform: rotate(300deg);\n  -moz-transform: rotate(300deg);\n  -ms-transform: rotate(300deg);\n  -o-transform: rotate(300deg);\n  transform: rotate(300deg);\n}\n.wi-wind.from-121-deg {\n  -webkit-transform: rotate(301deg);\n  -moz-transform: rotate(301deg);\n  -ms-transform: rotate(301deg);\n  -o-transform: rotate(301deg);\n  transform: rotate(301deg);\n}\n.wi-wind.from-122-deg {\n  -webkit-transform: rotate(302deg);\n  -moz-transform: rotate(302deg);\n  -ms-transform: rotate(302deg);\n  -o-transform: rotate(302deg);\n  transform: rotate(302deg);\n}\n.wi-wind.from-123-deg {\n  -webkit-transform: rotate(303deg);\n  -moz-transform: rotate(303deg);\n  -ms-transform: rotate(303deg);\n  -o-transform: rotate(303deg);\n  transform: rotate(303deg);\n}\n.wi-wind.from-124-deg {\n  -webkit-transform: rotate(304deg);\n  -moz-transform: rotate(304deg);\n  -ms-transform: rotate(304deg);\n  -o-transform: rotate(304deg);\n  transform: rotate(304deg);\n}\n.wi-wind.from-125-deg {\n  -webkit-transform: rotate(305deg);\n  -moz-transform: rotate(305deg);\n  -ms-transform: rotate(305deg);\n  -o-transform: rotate(305deg);\n  transform: rotate(305deg);\n}\n.wi-wind.from-126-deg {\n  -webkit-transform: rotate(306deg);\n  -moz-transform: rotate(306deg);\n  -ms-transform: rotate(306deg);\n  -o-transform: rotate(306deg);\n  transform: rotate(306deg);\n}\n.wi-wind.from-127-deg {\n  -webkit-transform: rotate(307deg);\n  -moz-transform: rotate(307deg);\n  -ms-transform: rotate(307deg);\n  -o-transform: rotate(307deg);\n  transform: rotate(307deg);\n}\n.wi-wind.from-128-deg {\n  -webkit-transform: rotate(308deg);\n  -moz-transform: rotate(308deg);\n  -ms-transform: rotate(308deg);\n  -o-transform: rotate(308deg);\n  transform: rotate(308deg);\n}\n.wi-wind.from-129-deg {\n  -webkit-transform: rotate(309deg);\n  -moz-transform: rotate(309deg);\n  -ms-transform: rotate(309deg);\n  -o-transform: rotate(309deg);\n  transform: rotate(309deg);\n}\n.wi-wind.from-130-deg {\n  -webkit-transform: rotate(310deg);\n  -moz-transform: rotate(310deg);\n  -ms-transform: rotate(310deg);\n  -o-transform: rotate(310deg);\n  transform: rotate(310deg);\n}\n.wi-wind.from-131-deg {\n  -webkit-transform: rotate(311deg);\n  -moz-transform: rotate(311deg);\n  -ms-transform: rotate(311deg);\n  -o-transform: rotate(311deg);\n  transform: rotate(311deg);\n}\n.wi-wind.from-132-deg {\n  -webkit-transform: rotate(312deg);\n  -moz-transform: rotate(312deg);\n  -ms-transform: rotate(312deg);\n  -o-transform: rotate(312deg);\n  transform: rotate(312deg);\n}\n.wi-wind.from-133-deg {\n  -webkit-transform: rotate(313deg);\n  -moz-transform: rotate(313deg);\n  -ms-transform: rotate(313deg);\n  -o-transform: rotate(313deg);\n  transform: rotate(313deg);\n}\n.wi-wind.from-134-deg {\n  -webkit-transform: rotate(314deg);\n  -moz-transform: rotate(314deg);\n  -ms-transform: rotate(314deg);\n  -o-transform: rotate(314deg);\n  transform: rotate(314deg);\n}\n.wi-wind.from-135-deg {\n  -webkit-transform: rotate(315deg);\n  -moz-transform: rotate(315deg);\n  -ms-transform: rotate(315deg);\n  -o-transform: rotate(315deg);\n  transform: rotate(315deg);\n}\n.wi-wind.from-136-deg {\n  -webkit-transform: rotate(316deg);\n  -moz-transform: rotate(316deg);\n  -ms-transform: rotate(316deg);\n  -o-transform: rotate(316deg);\n  transform: rotate(316deg);\n}\n.wi-wind.from-137-deg {\n  -webkit-transform: rotate(317deg);\n  -moz-transform: rotate(317deg);\n  -ms-transform: rotate(317deg);\n  -o-transform: rotate(317deg);\n  transform: rotate(317deg);\n}\n.wi-wind.from-138-deg {\n  -webkit-transform: rotate(318deg);\n  -moz-transform: rotate(318deg);\n  -ms-transform: rotate(318deg);\n  -o-transform: rotate(318deg);\n  transform: rotate(318deg);\n}\n.wi-wind.from-139-deg {\n  -webkit-transform: rotate(319deg);\n  -moz-transform: rotate(319deg);\n  -ms-transform: rotate(319deg);\n  -o-transform: rotate(319deg);\n  transform: rotate(319deg);\n}\n.wi-wind.from-140-deg {\n  -webkit-transform: rotate(320deg);\n  -moz-transform: rotate(320deg);\n  -ms-transform: rotate(320deg);\n  -o-transform: rotate(320deg);\n  transform: rotate(320deg);\n}\n.wi-wind.from-141-deg {\n  -webkit-transform: rotate(321deg);\n  -moz-transform: rotate(321deg);\n  -ms-transform: rotate(321deg);\n  -o-transform: rotate(321deg);\n  transform: rotate(321deg);\n}\n.wi-wind.from-142-deg {\n  -webkit-transform: rotate(322deg);\n  -moz-transform: rotate(322deg);\n  -ms-transform: rotate(322deg);\n  -o-transform: rotate(322deg);\n  transform: rotate(322deg);\n}\n.wi-wind.from-143-deg {\n  -webkit-transform: rotate(323deg);\n  -moz-transform: rotate(323deg);\n  -ms-transform: rotate(323deg);\n  -o-transform: rotate(323deg);\n  transform: rotate(323deg);\n}\n.wi-wind.from-144-deg {\n  -webkit-transform: rotate(324deg);\n  -moz-transform: rotate(324deg);\n  -ms-transform: rotate(324deg);\n  -o-transform: rotate(324deg);\n  transform: rotate(324deg);\n}\n.wi-wind.from-145-deg {\n  -webkit-transform: rotate(325deg);\n  -moz-transform: rotate(325deg);\n  -ms-transform: rotate(325deg);\n  -o-transform: rotate(325deg);\n  transform: rotate(325deg);\n}\n.wi-wind.from-146-deg {\n  -webkit-transform: rotate(326deg);\n  -moz-transform: rotate(326deg);\n  -ms-transform: rotate(326deg);\n  -o-transform: rotate(326deg);\n  transform: rotate(326deg);\n}\n.wi-wind.from-147-deg {\n  -webkit-transform: rotate(327deg);\n  -moz-transform: rotate(327deg);\n  -ms-transform: rotate(327deg);\n  -o-transform: rotate(327deg);\n  transform: rotate(327deg);\n}\n.wi-wind.from-148-deg {\n  -webkit-transform: rotate(328deg);\n  -moz-transform: rotate(328deg);\n  -ms-transform: rotate(328deg);\n  -o-transform: rotate(328deg);\n  transform: rotate(328deg);\n}\n.wi-wind.from-149-deg {\n  -webkit-transform: rotate(329deg);\n  -moz-transform: rotate(329deg);\n  -ms-transform: rotate(329deg);\n  -o-transform: rotate(329deg);\n  transform: rotate(329deg);\n}\n.wi-wind.from-150-deg {\n  -webkit-transform: rotate(330deg);\n  -moz-transform: rotate(330deg);\n  -ms-transform: rotate(330deg);\n  -o-transform: rotate(330deg);\n  transform: rotate(330deg);\n}\n.wi-wind.from-151-deg {\n  -webkit-transform: rotate(331deg);\n  -moz-transform: rotate(331deg);\n  -ms-transform: rotate(331deg);\n  -o-transform: rotate(331deg);\n  transform: rotate(331deg);\n}\n.wi-wind.from-152-deg {\n  -webkit-transform: rotate(332deg);\n  -moz-transform: rotate(332deg);\n  -ms-transform: rotate(332deg);\n  -o-transform: rotate(332deg);\n  transform: rotate(332deg);\n}\n.wi-wind.from-153-deg {\n  -webkit-transform: rotate(333deg);\n  -moz-transform: rotate(333deg);\n  -ms-transform: rotate(333deg);\n  -o-transform: rotate(333deg);\n  transform: rotate(333deg);\n}\n.wi-wind.from-154-deg {\n  -webkit-transform: rotate(334deg);\n  -moz-transform: rotate(334deg);\n  -ms-transform: rotate(334deg);\n  -o-transform: rotate(334deg);\n  transform: rotate(334deg);\n}\n.wi-wind.from-155-deg {\n  -webkit-transform: rotate(335deg);\n  -moz-transform: rotate(335deg);\n  -ms-transform: rotate(335deg);\n  -o-transform: rotate(335deg);\n  transform: rotate(335deg);\n}\n.wi-wind.from-156-deg {\n  -webkit-transform: rotate(336deg);\n  -moz-transform: rotate(336deg);\n  -ms-transform: rotate(336deg);\n  -o-transform: rotate(336deg);\n  transform: rotate(336deg);\n}\n.wi-wind.from-157-deg {\n  -webkit-transform: rotate(337deg);\n  -moz-transform: rotate(337deg);\n  -ms-transform: rotate(337deg);\n  -o-transform: rotate(337deg);\n  transform: rotate(337deg);\n}\n.wi-wind.from-158-deg {\n  -webkit-transform: rotate(338deg);\n  -moz-transform: rotate(338deg);\n  -ms-transform: rotate(338deg);\n  -o-transform: rotate(338deg);\n  transform: rotate(338deg);\n}\n.wi-wind.from-159-deg {\n  -webkit-transform: rotate(339deg);\n  -moz-transform: rotate(339deg);\n  -ms-transform: rotate(339deg);\n  -o-transform: rotate(339deg);\n  transform: rotate(339deg);\n}\n.wi-wind.from-160-deg {\n  -webkit-transform: rotate(340deg);\n  -moz-transform: rotate(340deg);\n  -ms-transform: rotate(340deg);\n  -o-transform: rotate(340deg);\n  transform: rotate(340deg);\n}\n.wi-wind.from-161-deg {\n  -webkit-transform: rotate(341deg);\n  -moz-transform: rotate(341deg);\n  -ms-transform: rotate(341deg);\n  -o-transform: rotate(341deg);\n  transform: rotate(341deg);\n}\n.wi-wind.from-162-deg {\n  -webkit-transform: rotate(342deg);\n  -moz-transform: rotate(342deg);\n  -ms-transform: rotate(342deg);\n  -o-transform: rotate(342deg);\n  transform: rotate(342deg);\n}\n.wi-wind.from-163-deg {\n  -webkit-transform: rotate(343deg);\n  -moz-transform: rotate(343deg);\n  -ms-transform: rotate(343deg);\n  -o-transform: rotate(343deg);\n  transform: rotate(343deg);\n}\n.wi-wind.from-164-deg {\n  -webkit-transform: rotate(344deg);\n  -moz-transform: rotate(344deg);\n  -ms-transform: rotate(344deg);\n  -o-transform: rotate(344deg);\n  transform: rotate(344deg);\n}\n.wi-wind.from-165-deg {\n  -webkit-transform: rotate(345deg);\n  -moz-transform: rotate(345deg);\n  -ms-transform: rotate(345deg);\n  -o-transform: rotate(345deg);\n  transform: rotate(345deg);\n}\n.wi-wind.from-166-deg {\n  -webkit-transform: rotate(346deg);\n  -moz-transform: rotate(346deg);\n  -ms-transform: rotate(346deg);\n  -o-transform: rotate(346deg);\n  transform: rotate(346deg);\n}\n.wi-wind.from-167-deg {\n  -webkit-transform: rotate(347deg);\n  -moz-transform: rotate(347deg);\n  -ms-transform: rotate(347deg);\n  -o-transform: rotate(347deg);\n  transform: rotate(347deg);\n}\n.wi-wind.from-168-deg {\n  -webkit-transform: rotate(348deg);\n  -moz-transform: rotate(348deg);\n  -ms-transform: rotate(348deg);\n  -o-transform: rotate(348deg);\n  transform: rotate(348deg);\n}\n.wi-wind.from-169-deg {\n  -webkit-transform: rotate(349deg);\n  -moz-transform: rotate(349deg);\n  -ms-transform: rotate(349deg);\n  -o-transform: rotate(349deg);\n  transform: rotate(349deg);\n}\n.wi-wind.from-170-deg {\n  -webkit-transform: rotate(350deg);\n  -moz-transform: rotate(350deg);\n  -ms-transform: rotate(350deg);\n  -o-transform: rotate(350deg);\n  transform: rotate(350deg);\n}\n.wi-wind.from-171-deg {\n  -webkit-transform: rotate(351deg);\n  -moz-transform: rotate(351deg);\n  -ms-transform: rotate(351deg);\n  -o-transform: rotate(351deg);\n  transform: rotate(351deg);\n}\n.wi-wind.from-172-deg {\n  -webkit-transform: rotate(352deg);\n  -moz-transform: rotate(352deg);\n  -ms-transform: rotate(352deg);\n  -o-transform: rotate(352deg);\n  transform: rotate(352deg);\n}\n.wi-wind.from-173-deg {\n  -webkit-transform: rotate(353deg);\n  -moz-transform: rotate(353deg);\n  -ms-transform: rotate(353deg);\n  -o-transform: rotate(353deg);\n  transform: rotate(353deg);\n}\n.wi-wind.from-174-deg {\n  -webkit-transform: rotate(354deg);\n  -moz-transform: rotate(354deg);\n  -ms-transform: rotate(354deg);\n  -o-transform: rotate(354deg);\n  transform: rotate(354deg);\n}\n.wi-wind.from-175-deg {\n  -webkit-transform: rotate(355deg);\n  -moz-transform: rotate(355deg);\n  -ms-transform: rotate(355deg);\n  -o-transform: rotate(355deg);\n  transform: rotate(355deg);\n}\n.wi-wind.from-176-deg {\n  -webkit-transform: rotate(356deg);\n  -moz-transform: rotate(356deg);\n  -ms-transform: rotate(356deg);\n  -o-transform: rotate(356deg);\n  transform: rotate(356deg);\n}\n.wi-wind.from-177-deg {\n  -webkit-transform: rotate(357deg);\n  -moz-transform: rotate(357deg);\n  -ms-transform: rotate(357deg);\n  -o-transform: rotate(357deg);\n  transform: rotate(357deg);\n}\n.wi-wind.from-178-deg {\n  -webkit-transform: rotate(358deg);\n  -moz-transform: rotate(358deg);\n  -ms-transform: rotate(358deg);\n  -o-transform: rotate(358deg);\n  transform: rotate(358deg);\n}\n.wi-wind.from-179-deg {\n  -webkit-transform: rotate(359deg);\n  -moz-transform: rotate(359deg);\n  -ms-transform: rotate(359deg);\n  -o-transform: rotate(359deg);\n  transform: rotate(359deg);\n}\n.wi-wind.from-180-deg {\n  -webkit-transform: rotate(0deg);\n  -moz-transform: rotate(0deg);\n  -ms-transform: rotate(0deg);\n  -o-transform: rotate(0deg);\n  transform: rotate(0deg);\n}\n.wi-wind.from-181-deg {\n  -webkit-transform: rotate(1deg);\n  -moz-transform: rotate(1deg);\n  -ms-transform: rotate(1deg);\n  -o-transform: rotate(1deg);\n  transform: rotate(1deg);\n}\n.wi-wind.from-182-deg {\n  -webkit-transform: rotate(2deg);\n  -moz-transform: rotate(2deg);\n  -ms-transform: rotate(2deg);\n  -o-transform: rotate(2deg);\n  transform: rotate(2deg);\n}\n.wi-wind.from-183-deg {\n  -webkit-transform: rotate(3deg);\n  -moz-transform: rotate(3deg);\n  -ms-transform: rotate(3deg);\n  -o-transform: rotate(3deg);\n  transform: rotate(3deg);\n}\n.wi-wind.from-184-deg {\n  -webkit-transform: rotate(4deg);\n  -moz-transform: rotate(4deg);\n  -ms-transform: rotate(4deg);\n  -o-transform: rotate(4deg);\n  transform: rotate(4deg);\n}\n.wi-wind.from-185-deg {\n  -webkit-transform: rotate(5deg);\n  -moz-transform: rotate(5deg);\n  -ms-transform: rotate(5deg);\n  -o-transform: rotate(5deg);\n  transform: rotate(5deg);\n}\n.wi-wind.from-186-deg {\n  -webkit-transform: rotate(6deg);\n  -moz-transform: rotate(6deg);\n  -ms-transform: rotate(6deg);\n  -o-transform: rotate(6deg);\n  transform: rotate(6deg);\n}\n.wi-wind.from-187-deg {\n  -webkit-transform: rotate(7deg);\n  -moz-transform: rotate(7deg);\n  -ms-transform: rotate(7deg);\n  -o-transform: rotate(7deg);\n  transform: rotate(7deg);\n}\n.wi-wind.from-188-deg {\n  -webkit-transform: rotate(8deg);\n  -moz-transform: rotate(8deg);\n  -ms-transform: rotate(8deg);\n  -o-transform: rotate(8deg);\n  transform: rotate(8deg);\n}\n.wi-wind.from-189-deg {\n  -webkit-transform: rotate(9deg);\n  -moz-transform: rotate(9deg);\n  -ms-transform: rotate(9deg);\n  -o-transform: rotate(9deg);\n  transform: rotate(9deg);\n}\n.wi-wind.from-190-deg {\n  -webkit-transform: rotate(10deg);\n  -moz-transform: rotate(10deg);\n  -ms-transform: rotate(10deg);\n  -o-transform: rotate(10deg);\n  transform: rotate(10deg);\n}\n.wi-wind.from-191-deg {\n  -webkit-transform: rotate(11deg);\n  -moz-transform: rotate(11deg);\n  -ms-transform: rotate(11deg);\n  -o-transform: rotate(11deg);\n  transform: rotate(11deg);\n}\n.wi-wind.from-192-deg {\n  -webkit-transform: rotate(12deg);\n  -moz-transform: rotate(12deg);\n  -ms-transform: rotate(12deg);\n  -o-transform: rotate(12deg);\n  transform: rotate(12deg);\n}\n.wi-wind.from-193-deg {\n  -webkit-transform: rotate(13deg);\n  -moz-transform: rotate(13deg);\n  -ms-transform: rotate(13deg);\n  -o-transform: rotate(13deg);\n  transform: rotate(13deg);\n}\n.wi-wind.from-194-deg {\n  -webkit-transform: rotate(14deg);\n  -moz-transform: rotate(14deg);\n  -ms-transform: rotate(14deg);\n  -o-transform: rotate(14deg);\n  transform: rotate(14deg);\n}\n.wi-wind.from-195-deg {\n  -webkit-transform: rotate(15deg);\n  -moz-transform: rotate(15deg);\n  -ms-transform: rotate(15deg);\n  -o-transform: rotate(15deg);\n  transform: rotate(15deg);\n}\n.wi-wind.from-196-deg {\n  -webkit-transform: rotate(16deg);\n  -moz-transform: rotate(16deg);\n  -ms-transform: rotate(16deg);\n  -o-transform: rotate(16deg);\n  transform: rotate(16deg);\n}\n.wi-wind.from-197-deg {\n  -webkit-transform: rotate(17deg);\n  -moz-transform: rotate(17deg);\n  -ms-transform: rotate(17deg);\n  -o-transform: rotate(17deg);\n  transform: rotate(17deg);\n}\n.wi-wind.from-198-deg {\n  -webkit-transform: rotate(18deg);\n  -moz-transform: rotate(18deg);\n  -ms-transform: rotate(18deg);\n  -o-transform: rotate(18deg);\n  transform: rotate(18deg);\n}\n.wi-wind.from-199-deg {\n  -webkit-transform: rotate(19deg);\n  -moz-transform: rotate(19deg);\n  -ms-transform: rotate(19deg);\n  -o-transform: rotate(19deg);\n  transform: rotate(19deg);\n}\n.wi-wind.from-200-deg {\n  -webkit-transform: rotate(20deg);\n  -moz-transform: rotate(20deg);\n  -ms-transform: rotate(20deg);\n  -o-transform: rotate(20deg);\n  transform: rotate(20deg);\n}\n.wi-wind.from-201-deg {\n  -webkit-transform: rotate(21deg);\n  -moz-transform: rotate(21deg);\n  -ms-transform: rotate(21deg);\n  -o-transform: rotate(21deg);\n  transform: rotate(21deg);\n}\n.wi-wind.from-202-deg {\n  -webkit-transform: rotate(22deg);\n  -moz-transform: rotate(22deg);\n  -ms-transform: rotate(22deg);\n  -o-transform: rotate(22deg);\n  transform: rotate(22deg);\n}\n.wi-wind.from-203-deg {\n  -webkit-transform: rotate(23deg);\n  -moz-transform: rotate(23deg);\n  -ms-transform: rotate(23deg);\n  -o-transform: rotate(23deg);\n  transform: rotate(23deg);\n}\n.wi-wind.from-204-deg {\n  -webkit-transform: rotate(24deg);\n  -moz-transform: rotate(24deg);\n  -ms-transform: rotate(24deg);\n  -o-transform: rotate(24deg);\n  transform: rotate(24deg);\n}\n.wi-wind.from-205-deg {\n  -webkit-transform: rotate(25deg);\n  -moz-transform: rotate(25deg);\n  -ms-transform: rotate(25deg);\n  -o-transform: rotate(25deg);\n  transform: rotate(25deg);\n}\n.wi-wind.from-206-deg {\n  -webkit-transform: rotate(26deg);\n  -moz-transform: rotate(26deg);\n  -ms-transform: rotate(26deg);\n  -o-transform: rotate(26deg);\n  transform: rotate(26deg);\n}\n.wi-wind.from-207-deg {\n  -webkit-transform: rotate(27deg);\n  -moz-transform: rotate(27deg);\n  -ms-transform: rotate(27deg);\n  -o-transform: rotate(27deg);\n  transform: rotate(27deg);\n}\n.wi-wind.from-208-deg {\n  -webkit-transform: rotate(28deg);\n  -moz-transform: rotate(28deg);\n  -ms-transform: rotate(28deg);\n  -o-transform: rotate(28deg);\n  transform: rotate(28deg);\n}\n.wi-wind.from-209-deg {\n  -webkit-transform: rotate(29deg);\n  -moz-transform: rotate(29deg);\n  -ms-transform: rotate(29deg);\n  -o-transform: rotate(29deg);\n  transform: rotate(29deg);\n}\n.wi-wind.from-210-deg {\n  -webkit-transform: rotate(30deg);\n  -moz-transform: rotate(30deg);\n  -ms-transform: rotate(30deg);\n  -o-transform: rotate(30deg);\n  transform: rotate(30deg);\n}\n.wi-wind.from-211-deg {\n  -webkit-transform: rotate(31deg);\n  -moz-transform: rotate(31deg);\n  -ms-transform: rotate(31deg);\n  -o-transform: rotate(31deg);\n  transform: rotate(31deg);\n}\n.wi-wind.from-212-deg {\n  -webkit-transform: rotate(32deg);\n  -moz-transform: rotate(32deg);\n  -ms-transform: rotate(32deg);\n  -o-transform: rotate(32deg);\n  transform: rotate(32deg);\n}\n.wi-wind.from-213-deg {\n  -webkit-transform: rotate(33deg);\n  -moz-transform: rotate(33deg);\n  -ms-transform: rotate(33deg);\n  -o-transform: rotate(33deg);\n  transform: rotate(33deg);\n}\n.wi-wind.from-214-deg {\n  -webkit-transform: rotate(34deg);\n  -moz-transform: rotate(34deg);\n  -ms-transform: rotate(34deg);\n  -o-transform: rotate(34deg);\n  transform: rotate(34deg);\n}\n.wi-wind.from-215-deg {\n  -webkit-transform: rotate(35deg);\n  -moz-transform: rotate(35deg);\n  -ms-transform: rotate(35deg);\n  -o-transform: rotate(35deg);\n  transform: rotate(35deg);\n}\n.wi-wind.from-216-deg {\n  -webkit-transform: rotate(36deg);\n  -moz-transform: rotate(36deg);\n  -ms-transform: rotate(36deg);\n  -o-transform: rotate(36deg);\n  transform: rotate(36deg);\n}\n.wi-wind.from-217-deg {\n  -webkit-transform: rotate(37deg);\n  -moz-transform: rotate(37deg);\n  -ms-transform: rotate(37deg);\n  -o-transform: rotate(37deg);\n  transform: rotate(37deg);\n}\n.wi-wind.from-218-deg {\n  -webkit-transform: rotate(38deg);\n  -moz-transform: rotate(38deg);\n  -ms-transform: rotate(38deg);\n  -o-transform: rotate(38deg);\n  transform: rotate(38deg);\n}\n.wi-wind.from-219-deg {\n  -webkit-transform: rotate(39deg);\n  -moz-transform: rotate(39deg);\n  -ms-transform: rotate(39deg);\n  -o-transform: rotate(39deg);\n  transform: rotate(39deg);\n}\n.wi-wind.from-220-deg {\n  -webkit-transform: rotate(40deg);\n  -moz-transform: rotate(40deg);\n  -ms-transform: rotate(40deg);\n  -o-transform: rotate(40deg);\n  transform: rotate(40deg);\n}\n.wi-wind.from-221-deg {\n  -webkit-transform: rotate(41deg);\n  -moz-transform: rotate(41deg);\n  -ms-transform: rotate(41deg);\n  -o-transform: rotate(41deg);\n  transform: rotate(41deg);\n}\n.wi-wind.from-222-deg {\n  -webkit-transform: rotate(42deg);\n  -moz-transform: rotate(42deg);\n  -ms-transform: rotate(42deg);\n  -o-transform: rotate(42deg);\n  transform: rotate(42deg);\n}\n.wi-wind.from-223-deg {\n  -webkit-transform: rotate(43deg);\n  -moz-transform: rotate(43deg);\n  -ms-transform: rotate(43deg);\n  -o-transform: rotate(43deg);\n  transform: rotate(43deg);\n}\n.wi-wind.from-224-deg {\n  -webkit-transform: rotate(44deg);\n  -moz-transform: rotate(44deg);\n  -ms-transform: rotate(44deg);\n  -o-transform: rotate(44deg);\n  transform: rotate(44deg);\n}\n.wi-wind.from-225-deg {\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  transform: rotate(45deg);\n}\n.wi-wind.from-226-deg {\n  -webkit-transform: rotate(46deg);\n  -moz-transform: rotate(46deg);\n  -ms-transform: rotate(46deg);\n  -o-transform: rotate(46deg);\n  transform: rotate(46deg);\n}\n.wi-wind.from-227-deg {\n  -webkit-transform: rotate(47deg);\n  -moz-transform: rotate(47deg);\n  -ms-transform: rotate(47deg);\n  -o-transform: rotate(47deg);\n  transform: rotate(47deg);\n}\n.wi-wind.from-228-deg {\n  -webkit-transform: rotate(48deg);\n  -moz-transform: rotate(48deg);\n  -ms-transform: rotate(48deg);\n  -o-transform: rotate(48deg);\n  transform: rotate(48deg);\n}\n.wi-wind.from-229-deg {\n  -webkit-transform: rotate(49deg);\n  -moz-transform: rotate(49deg);\n  -ms-transform: rotate(49deg);\n  -o-transform: rotate(49deg);\n  transform: rotate(49deg);\n}\n.wi-wind.from-230-deg {\n  -webkit-transform: rotate(50deg);\n  -moz-transform: rotate(50deg);\n  -ms-transform: rotate(50deg);\n  -o-transform: rotate(50deg);\n  transform: rotate(50deg);\n}\n.wi-wind.from-231-deg {\n  -webkit-transform: rotate(51deg);\n  -moz-transform: rotate(51deg);\n  -ms-transform: rotate(51deg);\n  -o-transform: rotate(51deg);\n  transform: rotate(51deg);\n}\n.wi-wind.from-232-deg {\n  -webkit-transform: rotate(52deg);\n  -moz-transform: rotate(52deg);\n  -ms-transform: rotate(52deg);\n  -o-transform: rotate(52deg);\n  transform: rotate(52deg);\n}\n.wi-wind.from-233-deg {\n  -webkit-transform: rotate(53deg);\n  -moz-transform: rotate(53deg);\n  -ms-transform: rotate(53deg);\n  -o-transform: rotate(53deg);\n  transform: rotate(53deg);\n}\n.wi-wind.from-234-deg {\n  -webkit-transform: rotate(54deg);\n  -moz-transform: rotate(54deg);\n  -ms-transform: rotate(54deg);\n  -o-transform: rotate(54deg);\n  transform: rotate(54deg);\n}\n.wi-wind.from-235-deg {\n  -webkit-transform: rotate(55deg);\n  -moz-transform: rotate(55deg);\n  -ms-transform: rotate(55deg);\n  -o-transform: rotate(55deg);\n  transform: rotate(55deg);\n}\n.wi-wind.from-236-deg {\n  -webkit-transform: rotate(56deg);\n  -moz-transform: rotate(56deg);\n  -ms-transform: rotate(56deg);\n  -o-transform: rotate(56deg);\n  transform: rotate(56deg);\n}\n.wi-wind.from-237-deg {\n  -webkit-transform: rotate(57deg);\n  -moz-transform: rotate(57deg);\n  -ms-transform: rotate(57deg);\n  -o-transform: rotate(57deg);\n  transform: rotate(57deg);\n}\n.wi-wind.from-238-deg {\n  -webkit-transform: rotate(58deg);\n  -moz-transform: rotate(58deg);\n  -ms-transform: rotate(58deg);\n  -o-transform: rotate(58deg);\n  transform: rotate(58deg);\n}\n.wi-wind.from-239-deg {\n  -webkit-transform: rotate(59deg);\n  -moz-transform: rotate(59deg);\n  -ms-transform: rotate(59deg);\n  -o-transform: rotate(59deg);\n  transform: rotate(59deg);\n}\n.wi-wind.from-240-deg {\n  -webkit-transform: rotate(60deg);\n  -moz-transform: rotate(60deg);\n  -ms-transform: rotate(60deg);\n  -o-transform: rotate(60deg);\n  transform: rotate(60deg);\n}\n.wi-wind.from-241-deg {\n  -webkit-transform: rotate(61deg);\n  -moz-transform: rotate(61deg);\n  -ms-transform: rotate(61deg);\n  -o-transform: rotate(61deg);\n  transform: rotate(61deg);\n}\n.wi-wind.from-242-deg {\n  -webkit-transform: rotate(62deg);\n  -moz-transform: rotate(62deg);\n  -ms-transform: rotate(62deg);\n  -o-transform: rotate(62deg);\n  transform: rotate(62deg);\n}\n.wi-wind.from-243-deg {\n  -webkit-transform: rotate(63deg);\n  -moz-transform: rotate(63deg);\n  -ms-transform: rotate(63deg);\n  -o-transform: rotate(63deg);\n  transform: rotate(63deg);\n}\n.wi-wind.from-244-deg {\n  -webkit-transform: rotate(64deg);\n  -moz-transform: rotate(64deg);\n  -ms-transform: rotate(64deg);\n  -o-transform: rotate(64deg);\n  transform: rotate(64deg);\n}\n.wi-wind.from-245-deg {\n  -webkit-transform: rotate(65deg);\n  -moz-transform: rotate(65deg);\n  -ms-transform: rotate(65deg);\n  -o-transform: rotate(65deg);\n  transform: rotate(65deg);\n}\n.wi-wind.from-246-deg {\n  -webkit-transform: rotate(66deg);\n  -moz-transform: rotate(66deg);\n  -ms-transform: rotate(66deg);\n  -o-transform: rotate(66deg);\n  transform: rotate(66deg);\n}\n.wi-wind.from-247-deg {\n  -webkit-transform: rotate(67deg);\n  -moz-transform: rotate(67deg);\n  -ms-transform: rotate(67deg);\n  -o-transform: rotate(67deg);\n  transform: rotate(67deg);\n}\n.wi-wind.from-248-deg {\n  -webkit-transform: rotate(68deg);\n  -moz-transform: rotate(68deg);\n  -ms-transform: rotate(68deg);\n  -o-transform: rotate(68deg);\n  transform: rotate(68deg);\n}\n.wi-wind.from-249-deg {\n  -webkit-transform: rotate(69deg);\n  -moz-transform: rotate(69deg);\n  -ms-transform: rotate(69deg);\n  -o-transform: rotate(69deg);\n  transform: rotate(69deg);\n}\n.wi-wind.from-250-deg {\n  -webkit-transform: rotate(70deg);\n  -moz-transform: rotate(70deg);\n  -ms-transform: rotate(70deg);\n  -o-transform: rotate(70deg);\n  transform: rotate(70deg);\n}\n.wi-wind.from-251-deg {\n  -webkit-transform: rotate(71deg);\n  -moz-transform: rotate(71deg);\n  -ms-transform: rotate(71deg);\n  -o-transform: rotate(71deg);\n  transform: rotate(71deg);\n}\n.wi-wind.from-252-deg {\n  -webkit-transform: rotate(72deg);\n  -moz-transform: rotate(72deg);\n  -ms-transform: rotate(72deg);\n  -o-transform: rotate(72deg);\n  transform: rotate(72deg);\n}\n.wi-wind.from-253-deg {\n  -webkit-transform: rotate(73deg);\n  -moz-transform: rotate(73deg);\n  -ms-transform: rotate(73deg);\n  -o-transform: rotate(73deg);\n  transform: rotate(73deg);\n}\n.wi-wind.from-254-deg {\n  -webkit-transform: rotate(74deg);\n  -moz-transform: rotate(74deg);\n  -ms-transform: rotate(74deg);\n  -o-transform: rotate(74deg);\n  transform: rotate(74deg);\n}\n.wi-wind.from-255-deg {\n  -webkit-transform: rotate(75deg);\n  -moz-transform: rotate(75deg);\n  -ms-transform: rotate(75deg);\n  -o-transform: rotate(75deg);\n  transform: rotate(75deg);\n}\n.wi-wind.from-256-deg {\n  -webkit-transform: rotate(76deg);\n  -moz-transform: rotate(76deg);\n  -ms-transform: rotate(76deg);\n  -o-transform: rotate(76deg);\n  transform: rotate(76deg);\n}\n.wi-wind.from-257-deg {\n  -webkit-transform: rotate(77deg);\n  -moz-transform: rotate(77deg);\n  -ms-transform: rotate(77deg);\n  -o-transform: rotate(77deg);\n  transform: rotate(77deg);\n}\n.wi-wind.from-258-deg {\n  -webkit-transform: rotate(78deg);\n  -moz-transform: rotate(78deg);\n  -ms-transform: rotate(78deg);\n  -o-transform: rotate(78deg);\n  transform: rotate(78deg);\n}\n.wi-wind.from-259-deg {\n  -webkit-transform: rotate(79deg);\n  -moz-transform: rotate(79deg);\n  -ms-transform: rotate(79deg);\n  -o-transform: rotate(79deg);\n  transform: rotate(79deg);\n}\n.wi-wind.from-260-deg {\n  -webkit-transform: rotate(80deg);\n  -moz-transform: rotate(80deg);\n  -ms-transform: rotate(80deg);\n  -o-transform: rotate(80deg);\n  transform: rotate(80deg);\n}\n.wi-wind.from-261-deg {\n  -webkit-transform: rotate(81deg);\n  -moz-transform: rotate(81deg);\n  -ms-transform: rotate(81deg);\n  -o-transform: rotate(81deg);\n  transform: rotate(81deg);\n}\n.wi-wind.from-262-deg {\n  -webkit-transform: rotate(82deg);\n  -moz-transform: rotate(82deg);\n  -ms-transform: rotate(82deg);\n  -o-transform: rotate(82deg);\n  transform: rotate(82deg);\n}\n.wi-wind.from-263-deg {\n  -webkit-transform: rotate(83deg);\n  -moz-transform: rotate(83deg);\n  -ms-transform: rotate(83deg);\n  -o-transform: rotate(83deg);\n  transform: rotate(83deg);\n}\n.wi-wind.from-264-deg {\n  -webkit-transform: rotate(84deg);\n  -moz-transform: rotate(84deg);\n  -ms-transform: rotate(84deg);\n  -o-transform: rotate(84deg);\n  transform: rotate(84deg);\n}\n.wi-wind.from-265-deg {\n  -webkit-transform: rotate(85deg);\n  -moz-transform: rotate(85deg);\n  -ms-transform: rotate(85deg);\n  -o-transform: rotate(85deg);\n  transform: rotate(85deg);\n}\n.wi-wind.from-266-deg {\n  -webkit-transform: rotate(86deg);\n  -moz-transform: rotate(86deg);\n  -ms-transform: rotate(86deg);\n  -o-transform: rotate(86deg);\n  transform: rotate(86deg);\n}\n.wi-wind.from-267-deg {\n  -webkit-transform: rotate(87deg);\n  -moz-transform: rotate(87deg);\n  -ms-transform: rotate(87deg);\n  -o-transform: rotate(87deg);\n  transform: rotate(87deg);\n}\n.wi-wind.from-268-deg {\n  -webkit-transform: rotate(88deg);\n  -moz-transform: rotate(88deg);\n  -ms-transform: rotate(88deg);\n  -o-transform: rotate(88deg);\n  transform: rotate(88deg);\n}\n.wi-wind.from-269-deg {\n  -webkit-transform: rotate(89deg);\n  -moz-transform: rotate(89deg);\n  -ms-transform: rotate(89deg);\n  -o-transform: rotate(89deg);\n  transform: rotate(89deg);\n}\n.wi-wind.from-270-deg {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.wi-wind.from-271-deg {\n  -webkit-transform: rotate(91deg);\n  -moz-transform: rotate(91deg);\n  -ms-transform: rotate(91deg);\n  -o-transform: rotate(91deg);\n  transform: rotate(91deg);\n}\n.wi-wind.from-272-deg {\n  -webkit-transform: rotate(92deg);\n  -moz-transform: rotate(92deg);\n  -ms-transform: rotate(92deg);\n  -o-transform: rotate(92deg);\n  transform: rotate(92deg);\n}\n.wi-wind.from-273-deg {\n  -webkit-transform: rotate(93deg);\n  -moz-transform: rotate(93deg);\n  -ms-transform: rotate(93deg);\n  -o-transform: rotate(93deg);\n  transform: rotate(93deg);\n}\n.wi-wind.from-274-deg {\n  -webkit-transform: rotate(94deg);\n  -moz-transform: rotate(94deg);\n  -ms-transform: rotate(94deg);\n  -o-transform: rotate(94deg);\n  transform: rotate(94deg);\n}\n.wi-wind.from-275-deg {\n  -webkit-transform: rotate(95deg);\n  -moz-transform: rotate(95deg);\n  -ms-transform: rotate(95deg);\n  -o-transform: rotate(95deg);\n  transform: rotate(95deg);\n}\n.wi-wind.from-276-deg {\n  -webkit-transform: rotate(96deg);\n  -moz-transform: rotate(96deg);\n  -ms-transform: rotate(96deg);\n  -o-transform: rotate(96deg);\n  transform: rotate(96deg);\n}\n.wi-wind.from-277-deg {\n  -webkit-transform: rotate(97deg);\n  -moz-transform: rotate(97deg);\n  -ms-transform: rotate(97deg);\n  -o-transform: rotate(97deg);\n  transform: rotate(97deg);\n}\n.wi-wind.from-278-deg {\n  -webkit-transform: rotate(98deg);\n  -moz-transform: rotate(98deg);\n  -ms-transform: rotate(98deg);\n  -o-transform: rotate(98deg);\n  transform: rotate(98deg);\n}\n.wi-wind.from-279-deg {\n  -webkit-transform: rotate(99deg);\n  -moz-transform: rotate(99deg);\n  -ms-transform: rotate(99deg);\n  -o-transform: rotate(99deg);\n  transform: rotate(99deg);\n}\n.wi-wind.from-280-deg {\n  -webkit-transform: rotate(100deg);\n  -moz-transform: rotate(100deg);\n  -ms-transform: rotate(100deg);\n  -o-transform: rotate(100deg);\n  transform: rotate(100deg);\n}\n.wi-wind.from-281-deg {\n  -webkit-transform: rotate(101deg);\n  -moz-transform: rotate(101deg);\n  -ms-transform: rotate(101deg);\n  -o-transform: rotate(101deg);\n  transform: rotate(101deg);\n}\n.wi-wind.from-282-deg {\n  -webkit-transform: rotate(102deg);\n  -moz-transform: rotate(102deg);\n  -ms-transform: rotate(102deg);\n  -o-transform: rotate(102deg);\n  transform: rotate(102deg);\n}\n.wi-wind.from-283-deg {\n  -webkit-transform: rotate(103deg);\n  -moz-transform: rotate(103deg);\n  -ms-transform: rotate(103deg);\n  -o-transform: rotate(103deg);\n  transform: rotate(103deg);\n}\n.wi-wind.from-284-deg {\n  -webkit-transform: rotate(104deg);\n  -moz-transform: rotate(104deg);\n  -ms-transform: rotate(104deg);\n  -o-transform: rotate(104deg);\n  transform: rotate(104deg);\n}\n.wi-wind.from-285-deg {\n  -webkit-transform: rotate(105deg);\n  -moz-transform: rotate(105deg);\n  -ms-transform: rotate(105deg);\n  -o-transform: rotate(105deg);\n  transform: rotate(105deg);\n}\n.wi-wind.from-286-deg {\n  -webkit-transform: rotate(106deg);\n  -moz-transform: rotate(106deg);\n  -ms-transform: rotate(106deg);\n  -o-transform: rotate(106deg);\n  transform: rotate(106deg);\n}\n.wi-wind.from-287-deg {\n  -webkit-transform: rotate(107deg);\n  -moz-transform: rotate(107deg);\n  -ms-transform: rotate(107deg);\n  -o-transform: rotate(107deg);\n  transform: rotate(107deg);\n}\n.wi-wind.from-288-deg {\n  -webkit-transform: rotate(108deg);\n  -moz-transform: rotate(108deg);\n  -ms-transform: rotate(108deg);\n  -o-transform: rotate(108deg);\n  transform: rotate(108deg);\n}\n.wi-wind.from-289-deg {\n  -webkit-transform: rotate(109deg);\n  -moz-transform: rotate(109deg);\n  -ms-transform: rotate(109deg);\n  -o-transform: rotate(109deg);\n  transform: rotate(109deg);\n}\n.wi-wind.from-290-deg {\n  -webkit-transform: rotate(110deg);\n  -moz-transform: rotate(110deg);\n  -ms-transform: rotate(110deg);\n  -o-transform: rotate(110deg);\n  transform: rotate(110deg);\n}\n.wi-wind.from-291-deg {\n  -webkit-transform: rotate(111deg);\n  -moz-transform: rotate(111deg);\n  -ms-transform: rotate(111deg);\n  -o-transform: rotate(111deg);\n  transform: rotate(111deg);\n}\n.wi-wind.from-292-deg {\n  -webkit-transform: rotate(112deg);\n  -moz-transform: rotate(112deg);\n  -ms-transform: rotate(112deg);\n  -o-transform: rotate(112deg);\n  transform: rotate(112deg);\n}\n.wi-wind.from-293-deg {\n  -webkit-transform: rotate(113deg);\n  -moz-transform: rotate(113deg);\n  -ms-transform: rotate(113deg);\n  -o-transform: rotate(113deg);\n  transform: rotate(113deg);\n}\n.wi-wind.from-294-deg {\n  -webkit-transform: rotate(114deg);\n  -moz-transform: rotate(114deg);\n  -ms-transform: rotate(114deg);\n  -o-transform: rotate(114deg);\n  transform: rotate(114deg);\n}\n.wi-wind.from-295-deg {\n  -webkit-transform: rotate(115deg);\n  -moz-transform: rotate(115deg);\n  -ms-transform: rotate(115deg);\n  -o-transform: rotate(115deg);\n  transform: rotate(115deg);\n}\n.wi-wind.from-296-deg {\n  -webkit-transform: rotate(116deg);\n  -moz-transform: rotate(116deg);\n  -ms-transform: rotate(116deg);\n  -o-transform: rotate(116deg);\n  transform: rotate(116deg);\n}\n.wi-wind.from-297-deg {\n  -webkit-transform: rotate(117deg);\n  -moz-transform: rotate(117deg);\n  -ms-transform: rotate(117deg);\n  -o-transform: rotate(117deg);\n  transform: rotate(117deg);\n}\n.wi-wind.from-298-deg {\n  -webkit-transform: rotate(118deg);\n  -moz-transform: rotate(118deg);\n  -ms-transform: rotate(118deg);\n  -o-transform: rotate(118deg);\n  transform: rotate(118deg);\n}\n.wi-wind.from-299-deg {\n  -webkit-transform: rotate(119deg);\n  -moz-transform: rotate(119deg);\n  -ms-transform: rotate(119deg);\n  -o-transform: rotate(119deg);\n  transform: rotate(119deg);\n}\n.wi-wind.from-300-deg {\n  -webkit-transform: rotate(120deg);\n  -moz-transform: rotate(120deg);\n  -ms-transform: rotate(120deg);\n  -o-transform: rotate(120deg);\n  transform: rotate(120deg);\n}\n.wi-wind.from-301-deg {\n  -webkit-transform: rotate(121deg);\n  -moz-transform: rotate(121deg);\n  -ms-transform: rotate(121deg);\n  -o-transform: rotate(121deg);\n  transform: rotate(121deg);\n}\n.wi-wind.from-302-deg {\n  -webkit-transform: rotate(122deg);\n  -moz-transform: rotate(122deg);\n  -ms-transform: rotate(122deg);\n  -o-transform: rotate(122deg);\n  transform: rotate(122deg);\n}\n.wi-wind.from-303-deg {\n  -webkit-transform: rotate(123deg);\n  -moz-transform: rotate(123deg);\n  -ms-transform: rotate(123deg);\n  -o-transform: rotate(123deg);\n  transform: rotate(123deg);\n}\n.wi-wind.from-304-deg {\n  -webkit-transform: rotate(124deg);\n  -moz-transform: rotate(124deg);\n  -ms-transform: rotate(124deg);\n  -o-transform: rotate(124deg);\n  transform: rotate(124deg);\n}\n.wi-wind.from-305-deg {\n  -webkit-transform: rotate(125deg);\n  -moz-transform: rotate(125deg);\n  -ms-transform: rotate(125deg);\n  -o-transform: rotate(125deg);\n  transform: rotate(125deg);\n}\n.wi-wind.from-306-deg {\n  -webkit-transform: rotate(126deg);\n  -moz-transform: rotate(126deg);\n  -ms-transform: rotate(126deg);\n  -o-transform: rotate(126deg);\n  transform: rotate(126deg);\n}\n.wi-wind.from-307-deg {\n  -webkit-transform: rotate(127deg);\n  -moz-transform: rotate(127deg);\n  -ms-transform: rotate(127deg);\n  -o-transform: rotate(127deg);\n  transform: rotate(127deg);\n}\n.wi-wind.from-308-deg {\n  -webkit-transform: rotate(128deg);\n  -moz-transform: rotate(128deg);\n  -ms-transform: rotate(128deg);\n  -o-transform: rotate(128deg);\n  transform: rotate(128deg);\n}\n.wi-wind.from-309-deg {\n  -webkit-transform: rotate(129deg);\n  -moz-transform: rotate(129deg);\n  -ms-transform: rotate(129deg);\n  -o-transform: rotate(129deg);\n  transform: rotate(129deg);\n}\n.wi-wind.from-310-deg {\n  -webkit-transform: rotate(130deg);\n  -moz-transform: rotate(130deg);\n  -ms-transform: rotate(130deg);\n  -o-transform: rotate(130deg);\n  transform: rotate(130deg);\n}\n.wi-wind.from-311-deg {\n  -webkit-transform: rotate(131deg);\n  -moz-transform: rotate(131deg);\n  -ms-transform: rotate(131deg);\n  -o-transform: rotate(131deg);\n  transform: rotate(131deg);\n}\n.wi-wind.from-312-deg {\n  -webkit-transform: rotate(132deg);\n  -moz-transform: rotate(132deg);\n  -ms-transform: rotate(132deg);\n  -o-transform: rotate(132deg);\n  transform: rotate(132deg);\n}\n.wi-wind.from-313-deg {\n  -webkit-transform: rotate(133deg);\n  -moz-transform: rotate(133deg);\n  -ms-transform: rotate(133deg);\n  -o-transform: rotate(133deg);\n  transform: rotate(133deg);\n}\n.wi-wind.from-314-deg {\n  -webkit-transform: rotate(134deg);\n  -moz-transform: rotate(134deg);\n  -ms-transform: rotate(134deg);\n  -o-transform: rotate(134deg);\n  transform: rotate(134deg);\n}\n.wi-wind.from-315-deg {\n  -webkit-transform: rotate(135deg);\n  -moz-transform: rotate(135deg);\n  -ms-transform: rotate(135deg);\n  -o-transform: rotate(135deg);\n  transform: rotate(135deg);\n}\n.wi-wind.from-316-deg {\n  -webkit-transform: rotate(136deg);\n  -moz-transform: rotate(136deg);\n  -ms-transform: rotate(136deg);\n  -o-transform: rotate(136deg);\n  transform: rotate(136deg);\n}\n.wi-wind.from-317-deg {\n  -webkit-transform: rotate(137deg);\n  -moz-transform: rotate(137deg);\n  -ms-transform: rotate(137deg);\n  -o-transform: rotate(137deg);\n  transform: rotate(137deg);\n}\n.wi-wind.from-318-deg {\n  -webkit-transform: rotate(138deg);\n  -moz-transform: rotate(138deg);\n  -ms-transform: rotate(138deg);\n  -o-transform: rotate(138deg);\n  transform: rotate(138deg);\n}\n.wi-wind.from-319-deg {\n  -webkit-transform: rotate(139deg);\n  -moz-transform: rotate(139deg);\n  -ms-transform: rotate(139deg);\n  -o-transform: rotate(139deg);\n  transform: rotate(139deg);\n}\n.wi-wind.from-320-deg {\n  -webkit-transform: rotate(140deg);\n  -moz-transform: rotate(140deg);\n  -ms-transform: rotate(140deg);\n  -o-transform: rotate(140deg);\n  transform: rotate(140deg);\n}\n.wi-wind.from-321-deg {\n  -webkit-transform: rotate(141deg);\n  -moz-transform: rotate(141deg);\n  -ms-transform: rotate(141deg);\n  -o-transform: rotate(141deg);\n  transform: rotate(141deg);\n}\n.wi-wind.from-322-deg {\n  -webkit-transform: rotate(142deg);\n  -moz-transform: rotate(142deg);\n  -ms-transform: rotate(142deg);\n  -o-transform: rotate(142deg);\n  transform: rotate(142deg);\n}\n.wi-wind.from-323-deg {\n  -webkit-transform: rotate(143deg);\n  -moz-transform: rotate(143deg);\n  -ms-transform: rotate(143deg);\n  -o-transform: rotate(143deg);\n  transform: rotate(143deg);\n}\n.wi-wind.from-324-deg {\n  -webkit-transform: rotate(144deg);\n  -moz-transform: rotate(144deg);\n  -ms-transform: rotate(144deg);\n  -o-transform: rotate(144deg);\n  transform: rotate(144deg);\n}\n.wi-wind.from-325-deg {\n  -webkit-transform: rotate(145deg);\n  -moz-transform: rotate(145deg);\n  -ms-transform: rotate(145deg);\n  -o-transform: rotate(145deg);\n  transform: rotate(145deg);\n}\n.wi-wind.from-326-deg {\n  -webkit-transform: rotate(146deg);\n  -moz-transform: rotate(146deg);\n  -ms-transform: rotate(146deg);\n  -o-transform: rotate(146deg);\n  transform: rotate(146deg);\n}\n.wi-wind.from-327-deg {\n  -webkit-transform: rotate(147deg);\n  -moz-transform: rotate(147deg);\n  -ms-transform: rotate(147deg);\n  -o-transform: rotate(147deg);\n  transform: rotate(147deg);\n}\n.wi-wind.from-328-deg {\n  -webkit-transform: rotate(148deg);\n  -moz-transform: rotate(148deg);\n  -ms-transform: rotate(148deg);\n  -o-transform: rotate(148deg);\n  transform: rotate(148deg);\n}\n.wi-wind.from-329-deg {\n  -webkit-transform: rotate(149deg);\n  -moz-transform: rotate(149deg);\n  -ms-transform: rotate(149deg);\n  -o-transform: rotate(149deg);\n  transform: rotate(149deg);\n}\n.wi-wind.from-330-deg {\n  -webkit-transform: rotate(150deg);\n  -moz-transform: rotate(150deg);\n  -ms-transform: rotate(150deg);\n  -o-transform: rotate(150deg);\n  transform: rotate(150deg);\n}\n.wi-wind.from-331-deg {\n  -webkit-transform: rotate(151deg);\n  -moz-transform: rotate(151deg);\n  -ms-transform: rotate(151deg);\n  -o-transform: rotate(151deg);\n  transform: rotate(151deg);\n}\n.wi-wind.from-332-deg {\n  -webkit-transform: rotate(152deg);\n  -moz-transform: rotate(152deg);\n  -ms-transform: rotate(152deg);\n  -o-transform: rotate(152deg);\n  transform: rotate(152deg);\n}\n.wi-wind.from-333-deg {\n  -webkit-transform: rotate(153deg);\n  -moz-transform: rotate(153deg);\n  -ms-transform: rotate(153deg);\n  -o-transform: rotate(153deg);\n  transform: rotate(153deg);\n}\n.wi-wind.from-334-deg {\n  -webkit-transform: rotate(154deg);\n  -moz-transform: rotate(154deg);\n  -ms-transform: rotate(154deg);\n  -o-transform: rotate(154deg);\n  transform: rotate(154deg);\n}\n.wi-wind.from-335-deg {\n  -webkit-transform: rotate(155deg);\n  -moz-transform: rotate(155deg);\n  -ms-transform: rotate(155deg);\n  -o-transform: rotate(155deg);\n  transform: rotate(155deg);\n}\n.wi-wind.from-336-deg {\n  -webkit-transform: rotate(156deg);\n  -moz-transform: rotate(156deg);\n  -ms-transform: rotate(156deg);\n  -o-transform: rotate(156deg);\n  transform: rotate(156deg);\n}\n.wi-wind.from-337-deg {\n  -webkit-transform: rotate(157deg);\n  -moz-transform: rotate(157deg);\n  -ms-transform: rotate(157deg);\n  -o-transform: rotate(157deg);\n  transform: rotate(157deg);\n}\n.wi-wind.from-338-deg {\n  -webkit-transform: rotate(158deg);\n  -moz-transform: rotate(158deg);\n  -ms-transform: rotate(158deg);\n  -o-transform: rotate(158deg);\n  transform: rotate(158deg);\n}\n.wi-wind.from-339-deg {\n  -webkit-transform: rotate(159deg);\n  -moz-transform: rotate(159deg);\n  -ms-transform: rotate(159deg);\n  -o-transform: rotate(159deg);\n  transform: rotate(159deg);\n}\n.wi-wind.from-340-deg {\n  -webkit-transform: rotate(160deg);\n  -moz-transform: rotate(160deg);\n  -ms-transform: rotate(160deg);\n  -o-transform: rotate(160deg);\n  transform: rotate(160deg);\n}\n.wi-wind.from-341-deg {\n  -webkit-transform: rotate(161deg);\n  -moz-transform: rotate(161deg);\n  -ms-transform: rotate(161deg);\n  -o-transform: rotate(161deg);\n  transform: rotate(161deg);\n}\n.wi-wind.from-342-deg {\n  -webkit-transform: rotate(162deg);\n  -moz-transform: rotate(162deg);\n  -ms-transform: rotate(162deg);\n  -o-transform: rotate(162deg);\n  transform: rotate(162deg);\n}\n.wi-wind.from-343-deg {\n  -webkit-transform: rotate(163deg);\n  -moz-transform: rotate(163deg);\n  -ms-transform: rotate(163deg);\n  -o-transform: rotate(163deg);\n  transform: rotate(163deg);\n}\n.wi-wind.from-344-deg {\n  -webkit-transform: rotate(164deg);\n  -moz-transform: rotate(164deg);\n  -ms-transform: rotate(164deg);\n  -o-transform: rotate(164deg);\n  transform: rotate(164deg);\n}\n.wi-wind.from-345-deg {\n  -webkit-transform: rotate(165deg);\n  -moz-transform: rotate(165deg);\n  -ms-transform: rotate(165deg);\n  -o-transform: rotate(165deg);\n  transform: rotate(165deg);\n}\n.wi-wind.from-346-deg {\n  -webkit-transform: rotate(166deg);\n  -moz-transform: rotate(166deg);\n  -ms-transform: rotate(166deg);\n  -o-transform: rotate(166deg);\n  transform: rotate(166deg);\n}\n.wi-wind.from-347-deg {\n  -webkit-transform: rotate(167deg);\n  -moz-transform: rotate(167deg);\n  -ms-transform: rotate(167deg);\n  -o-transform: rotate(167deg);\n  transform: rotate(167deg);\n}\n.wi-wind.from-348-deg {\n  -webkit-transform: rotate(168deg);\n  -moz-transform: rotate(168deg);\n  -ms-transform: rotate(168deg);\n  -o-transform: rotate(168deg);\n  transform: rotate(168deg);\n}\n.wi-wind.from-349-deg {\n  -webkit-transform: rotate(169deg);\n  -moz-transform: rotate(169deg);\n  -ms-transform: rotate(169deg);\n  -o-transform: rotate(169deg);\n  transform: rotate(169deg);\n}\n.wi-wind.from-350-deg {\n  -webkit-transform: rotate(170deg);\n  -moz-transform: rotate(170deg);\n  -ms-transform: rotate(170deg);\n  -o-transform: rotate(170deg);\n  transform: rotate(170deg);\n}\n.wi-wind.from-351-deg {\n  -webkit-transform: rotate(171deg);\n  -moz-transform: rotate(171deg);\n  -ms-transform: rotate(171deg);\n  -o-transform: rotate(171deg);\n  transform: rotate(171deg);\n}\n.wi-wind.from-352-deg {\n  -webkit-transform: rotate(172deg);\n  -moz-transform: rotate(172deg);\n  -ms-transform: rotate(172deg);\n  -o-transform: rotate(172deg);\n  transform: rotate(172deg);\n}\n.wi-wind.from-353-deg {\n  -webkit-transform: rotate(173deg);\n  -moz-transform: rotate(173deg);\n  -ms-transform: rotate(173deg);\n  -o-transform: rotate(173deg);\n  transform: rotate(173deg);\n}\n.wi-wind.from-354-deg {\n  -webkit-transform: rotate(174deg);\n  -moz-transform: rotate(174deg);\n  -ms-transform: rotate(174deg);\n  -o-transform: rotate(174deg);\n  transform: rotate(174deg);\n}\n.wi-wind.from-355-deg {\n  -webkit-transform: rotate(175deg);\n  -moz-transform: rotate(175deg);\n  -ms-transform: rotate(175deg);\n  -o-transform: rotate(175deg);\n  transform: rotate(175deg);\n}\n.wi-wind.from-356-deg {\n  -webkit-transform: rotate(176deg);\n  -moz-transform: rotate(176deg);\n  -ms-transform: rotate(176deg);\n  -o-transform: rotate(176deg);\n  transform: rotate(176deg);\n}\n.wi-wind.from-357-deg {\n  -webkit-transform: rotate(177deg);\n  -moz-transform: rotate(177deg);\n  -ms-transform: rotate(177deg);\n  -o-transform: rotate(177deg);\n  transform: rotate(177deg);\n}\n.wi-wind.from-358-deg {\n  -webkit-transform: rotate(178deg);\n  -moz-transform: rotate(178deg);\n  -ms-transform: rotate(178deg);\n  -o-transform: rotate(178deg);\n  transform: rotate(178deg);\n}\n.wi-wind.from-359-deg {\n  -webkit-transform: rotate(179deg);\n  -moz-transform: rotate(179deg);\n  -ms-transform: rotate(179deg);\n  -o-transform: rotate(179deg);\n  transform: rotate(179deg);\n}\n.wi-wind.from-360-deg {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.wi-towards-n {\n  -webkit-transform: rotate(0deg);\n  -moz-transform: rotate(0deg);\n  -ms-transform: rotate(0deg);\n  -o-transform: rotate(0deg);\n  transform: rotate(0deg);\n}\n.wi-towards-nne {\n  -webkit-transform: rotate(23deg);\n  -moz-transform: rotate(23deg);\n  -ms-transform: rotate(23deg);\n  -o-transform: rotate(23deg);\n  transform: rotate(23deg);\n}\n.wi-towards-ne {\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  transform: rotate(45deg);\n}\n.wi-towards-ene {\n  -webkit-transform: rotate(68deg);\n  -moz-transform: rotate(68deg);\n  -ms-transform: rotate(68deg);\n  -o-transform: rotate(68deg);\n  transform: rotate(68deg);\n}\n.wi-towards-e {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.wi-towards-ese {\n  -webkit-transform: rotate(113deg);\n  -moz-transform: rotate(113deg);\n  -ms-transform: rotate(113deg);\n  -o-transform: rotate(113deg);\n  transform: rotate(113deg);\n}\n.wi-towards-se {\n  -webkit-transform: rotate(135deg);\n  -moz-transform: rotate(135deg);\n  -ms-transform: rotate(135deg);\n  -o-transform: rotate(135deg);\n  transform: rotate(135deg);\n}\n.wi-towards-sse {\n  -webkit-transform: rotate(158deg);\n  -moz-transform: rotate(158deg);\n  -ms-transform: rotate(158deg);\n  -o-transform: rotate(158deg);\n  transform: rotate(158deg);\n}\n.wi-towards-s {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.wi-towards-ssw {\n  -webkit-transform: rotate(203deg);\n  -moz-transform: rotate(203deg);\n  -ms-transform: rotate(203deg);\n  -o-transform: rotate(203deg);\n  transform: rotate(203deg);\n}\n.wi-towards-sw {\n  -webkit-transform: rotate(225deg);\n  -moz-transform: rotate(225deg);\n  -ms-transform: rotate(225deg);\n  -o-transform: rotate(225deg);\n  transform: rotate(225deg);\n}\n.wi-towards-wsw {\n  -webkit-transform: rotate(248deg);\n  -moz-transform: rotate(248deg);\n  -ms-transform: rotate(248deg);\n  -o-transform: rotate(248deg);\n  transform: rotate(248deg);\n}\n.wi-towards-w {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.wi-towards-wnw {\n  -webkit-transform: rotate(293deg);\n  -moz-transform: rotate(293deg);\n  -ms-transform: rotate(293deg);\n  -o-transform: rotate(293deg);\n  transform: rotate(293deg);\n}\n.wi-towards-nw {\n  -webkit-transform: rotate(313deg);\n  -moz-transform: rotate(313deg);\n  -ms-transform: rotate(313deg);\n  -o-transform: rotate(313deg);\n  transform: rotate(313deg);\n}\n.wi-towards-nnw {\n  -webkit-transform: rotate(336deg);\n  -moz-transform: rotate(336deg);\n  -ms-transform: rotate(336deg);\n  -o-transform: rotate(336deg);\n  transform: rotate(336deg);\n}\n.wi-from-n {\n  -webkit-transform: rotate(180deg);\n  -moz-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  -o-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.wi-from-nne {\n  -webkit-transform: rotate(203deg);\n  -moz-transform: rotate(203deg);\n  -ms-transform: rotate(203deg);\n  -o-transform: rotate(203deg);\n  transform: rotate(203deg);\n}\n.wi-from-ne {\n  -webkit-transform: rotate(225deg);\n  -moz-transform: rotate(225deg);\n  -ms-transform: rotate(225deg);\n  -o-transform: rotate(225deg);\n  transform: rotate(225deg);\n}\n.wi-from-ene {\n  -webkit-transform: rotate(248deg);\n  -moz-transform: rotate(248deg);\n  -ms-transform: rotate(248deg);\n  -o-transform: rotate(248deg);\n  transform: rotate(248deg);\n}\n.wi-from-e {\n  -webkit-transform: rotate(270deg);\n  -moz-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  -o-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.wi-from-ese {\n  -webkit-transform: rotate(293deg);\n  -moz-transform: rotate(293deg);\n  -ms-transform: rotate(293deg);\n  -o-transform: rotate(293deg);\n  transform: rotate(293deg);\n}\n.wi-from-se {\n  -webkit-transform: rotate(315deg);\n  -moz-transform: rotate(315deg);\n  -ms-transform: rotate(315deg);\n  -o-transform: rotate(315deg);\n  transform: rotate(315deg);\n}\n.wi-from-sse {\n  -webkit-transform: rotate(338deg);\n  -moz-transform: rotate(338deg);\n  -ms-transform: rotate(338deg);\n  -o-transform: rotate(338deg);\n  transform: rotate(338deg);\n}\n.wi-from-s {\n  -webkit-transform: rotate(0deg);\n  -moz-transform: rotate(0deg);\n  -ms-transform: rotate(0deg);\n  -o-transform: rotate(0deg);\n  transform: rotate(0deg);\n}\n.wi-from-ssw {\n  -webkit-transform: rotate(23deg);\n  -moz-transform: rotate(23deg);\n  -ms-transform: rotate(23deg);\n  -o-transform: rotate(23deg);\n  transform: rotate(23deg);\n}\n.wi-from-sw {\n  -webkit-transform: rotate(45deg);\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  transform: rotate(45deg);\n}\n.wi-from-wsw {\n  -webkit-transform: rotate(68deg);\n  -moz-transform: rotate(68deg);\n  -ms-transform: rotate(68deg);\n  -o-transform: rotate(68deg);\n  transform: rotate(68deg);\n}\n.wi-from-w {\n  -webkit-transform: rotate(90deg);\n  -moz-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  -o-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.wi-from-wnw {\n  -webkit-transform: rotate(113deg);\n  -moz-transform: rotate(113deg);\n  -ms-transform: rotate(113deg);\n  -o-transform: rotate(113deg);\n  transform: rotate(113deg);\n}\n.wi-from-nw {\n  -webkit-transform: rotate(133deg);\n  -moz-transform: rotate(133deg);\n  -ms-transform: rotate(133deg);\n  -o-transform: rotate(133deg);\n  transform: rotate(133deg);\n}\n.wi-from-nnw {\n  -webkit-transform: rotate(156deg);\n  -moz-transform: rotate(156deg);\n  -ms-transform: rotate(156deg);\n  -o-transform: rotate(156deg);\n  transform: rotate(156deg);\n}\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/css/weather-icons.css",
    "content": "/*!\n *  Weather Icons 2.0\n *  Updated August 1, 2015\n *  Weather themed icons for Bootstrap\n *  Author - Erik Flowers - erik@helloerik.com\n *  Email: erik@helloerik.com\n *  Twitter: http://twitter.com/Erik_UX\n *  ------------------------------------------------------------------------------\n *  Maintained at http://erikflowers.github.io/weather-icons\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - Font licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - CSS, SCSS and LESS are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Inspired by and works great as a companion with Font Awesome\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n */\n\n@font-face {\n    font-family: 'weathericons';\n    src: url('..//fonts/weathericons-regular-webfont.eot');\n    src: url('..//fonts/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('..//fonts/weathericons-regular-webfont.woff2') format('woff2'), url('..//fonts/weathericons-regular-webfont.woff') format('woff'), url('..//fonts/weathericons-regular-webfont.ttf') format('truetype'), url('..//fonts/weathericons-regular-webfont.svg#weather_iconsregular') format('svg');\n    font-weight: normal;\n    font-style: normal;\n}\n\n.wi {\n    display: inline-block;\n    font-family: 'weathericons';\n    font-style: normal;\n    font-weight: normal;\n    line-height: 1;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n\n.wi-fw {\n    text-align: center;\n    width: 1.4em;\n}\n\n.wi-rotate-90 {\n    filter: progid: DXImageTransform.Microsoft.BasicImage(rotation=1);\n    -webkit-transform: rotate(90deg);\n    -ms-transform: rotate(90deg);\n    transform: rotate(90deg);\n}\n\n.wi-rotate-180 {\n    filter: progid: DXImageTransform.Microsoft.BasicImage(rotation=2);\n    -webkit-transform: rotate(180deg);\n    -ms-transform: rotate(180deg);\n    transform: rotate(180deg);\n}\n\n.wi-rotate-270 {\n    filter: progid: DXImageTransform.Microsoft.BasicImage(rotation=3);\n    -webkit-transform: rotate(270deg);\n    -ms-transform: rotate(270deg);\n    transform: rotate(270deg);\n}\n\n.wi-flip-horizontal {\n    filter: progid: DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);\n    -webkit-transform: scale(-1, 1);\n    -ms-transform: scale(-1, 1);\n    transform: scale(-1, 1);\n}\n\n.wi-flip-vertical {\n    filter: progid: DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n    -webkit-transform: scale(1, -1);\n    -ms-transform: scale(1, -1);\n    transform: scale(1, -1);\n}\n\n.wi-day-sunny:before {\n    content: \"\\f00d\";\n}\n\n.wi-day-cloudy:before {\n    content: \"\\f002\";\n}\n\n.wi-day-cloudy-gusts:before {\n    content: \"\\f000\";\n}\n\n.wi-day-cloudy-windy:before {\n    content: \"\\f001\";\n}\n\n.wi-day-fog:before {\n    content: \"\\f003\";\n}\n\n.wi-day-hail:before {\n    content: \"\\f004\";\n}\n\n.wi-day-haze:before {\n    content: \"\\f0b6\";\n}\n\n.wi-day-lightning:before {\n    content: \"\\f005\";\n}\n\n.wi-day-rain:before {\n    content: \"\\f008\";\n}\n\n.wi-day-rain-mix:before {\n    content: \"\\f006\";\n}\n\n.wi-day-rain-wind:before {\n    content: \"\\f007\";\n}\n\n.wi-day-showers:before {\n    content: \"\\f009\";\n}\n\n.wi-day-sleet:before {\n    content: \"\\f0b2\";\n}\n\n.wi-day-sleet-storm:before {\n    content: \"\\f068\";\n}\n\n.wi-day-snow:before {\n    content: \"\\f00a\";\n}\n\n.wi-day-snow-thunderstorm:before {\n    content: \"\\f06b\";\n}\n\n.wi-day-snow-wind:before {\n    content: \"\\f065\";\n}\n\n.wi-day-sprinkle:before {\n    content: \"\\f00b\";\n}\n\n.wi-day-storm-showers:before {\n    content: \"\\f00e\";\n}\n\n.wi-day-sunny-overcast:before {\n    content: \"\\f00c\";\n}\n\n.wi-day-thunderstorm:before {\n    content: \"\\f010\";\n}\n\n.wi-day-windy:before {\n    content: \"\\f085\";\n}\n\n.wi-solar-eclipse:before {\n    content: \"\\f06e\";\n}\n\n.wi-hot:before {\n    content: \"\\f072\";\n}\n\n.wi-day-cloudy-high:before {\n    content: \"\\f07d\";\n}\n\n.wi-day-light-wind:before {\n    content: \"\\f0c4\";\n}\n\n.wi-night-clear:before {\n    content: \"\\f02e\";\n}\n\n.wi-night-alt-cloudy:before {\n    content: \"\\f086\";\n}\n\n.wi-night-alt-cloudy-gusts:before {\n    content: \"\\f022\";\n}\n\n.wi-night-alt-cloudy-windy:before {\n    content: \"\\f023\";\n}\n\n.wi-night-alt-hail:before {\n    content: \"\\f024\";\n}\n\n.wi-night-alt-lightning:before {\n    content: \"\\f025\";\n}\n\n.wi-night-alt-rain:before {\n    content: \"\\f028\";\n}\n\n.wi-night-alt-rain-mix:before {\n    content: \"\\f026\";\n}\n\n.wi-night-alt-rain-wind:before {\n    content: \"\\f027\";\n}\n\n.wi-night-alt-showers:before {\n    content: \"\\f029\";\n}\n\n.wi-night-alt-sleet:before {\n    content: \"\\f0b4\";\n}\n\n.wi-night-alt-sleet-storm:before {\n    content: \"\\f06a\";\n}\n\n.wi-night-alt-snow:before {\n    content: \"\\f02a\";\n}\n\n.wi-night-alt-snow-thunderstorm:before {\n    content: \"\\f06d\";\n}\n\n.wi-night-alt-snow-wind:before {\n    content: \"\\f067\";\n}\n\n.wi-night-alt-sprinkle:before {\n    content: \"\\f02b\";\n}\n\n.wi-night-alt-storm-showers:before {\n    content: \"\\f02c\";\n}\n\n.wi-night-alt-thunderstorm:before {\n    content: \"\\f02d\";\n}\n\n.wi-night-cloudy:before {\n    content: \"\\f031\";\n}\n\n.wi-night-cloudy-gusts:before {\n    content: \"\\f02f\";\n}\n\n.wi-night-cloudy-windy:before {\n    content: \"\\f030\";\n}\n\n.wi-night-fog:before {\n    content: \"\\f04a\";\n}\n\n.wi-night-hail:before {\n    content: \"\\f032\";\n}\n\n.wi-night-lightning:before {\n    content: \"\\f033\";\n}\n\n.wi-night-partly-cloudy:before {\n    content: \"\\f083\";\n}\n\n.wi-night-rain:before {\n    content: \"\\f036\";\n}\n\n.wi-night-rain-mix:before {\n    content: \"\\f034\";\n}\n\n.wi-night-rain-wind:before {\n    content: \"\\f035\";\n}\n\n.wi-night-showers:before {\n    content: \"\\f037\";\n}\n\n.wi-night-sleet:before {\n    content: \"\\f0b3\";\n}\n\n.wi-night-sleet-storm:before {\n    content: \"\\f069\";\n}\n\n.wi-night-snow:before {\n    content: \"\\f038\";\n}\n\n.wi-night-snow-thunderstorm:before {\n    content: \"\\f06c\";\n}\n\n.wi-night-snow-wind:before {\n    content: \"\\f066\";\n}\n\n.wi-night-sprinkle:before {\n    content: \"\\f039\";\n}\n\n.wi-night-storm-showers:before {\n    content: \"\\f03a\";\n}\n\n.wi-night-thunderstorm:before {\n    content: \"\\f03b\";\n}\n\n.wi-lunar-eclipse:before {\n    content: \"\\f070\";\n}\n\n.wi-stars:before {\n    content: \"\\f077\";\n}\n\n.wi-storm-showers:before {\n    content: \"\\f01d\";\n}\n\n.wi-thunderstorm:before {\n    content: \"\\f01e\";\n}\n\n.wi-night-alt-cloudy-high:before {\n    content: \"\\f07e\";\n}\n\n.wi-night-cloudy-high:before {\n    content: \"\\f080\";\n}\n\n.wi-night-alt-partly-cloudy:before {\n    content: \"\\f081\";\n}\n\n.wi-cloud:before {\n    content: \"\\f041\";\n}\n\n.wi-cloudy:before {\n    content: \"\\f013\";\n}\n\n.wi-cloudy-gusts:before {\n    content: \"\\f011\";\n}\n\n.wi-cloudy-windy:before {\n    content: \"\\f012\";\n}\n\n.wi-fog:before {\n    content: \"\\f014\";\n}\n\n.wi-hail:before {\n    content: \"\\f015\";\n}\n\n.wi-rain:before {\n    content: \"\\f019\";\n}\n\n.wi-rain-mix:before {\n    content: \"\\f017\";\n}\n\n.wi-rain-wind:before {\n    content: \"\\f018\";\n}\n\n.wi-showers:before {\n    content: \"\\f01a\";\n}\n\n.wi-sleet:before {\n    content: \"\\f0b5\";\n}\n\n.wi-snow:before {\n    content: \"\\f01b\";\n}\n\n.wi-sprinkle:before {\n    content: \"\\f01c\";\n}\n\n.wi-storm-showers:before {\n    content: \"\\f01d\";\n}\n\n.wi-thunderstorm:before {\n    content: \"\\f01e\";\n}\n\n.wi-snow-wind:before {\n    content: \"\\f064\";\n}\n\n.wi-snow:before {\n    content: \"\\f01b\";\n}\n\n.wi-smog:before {\n    content: \"\\f074\";\n}\n\n.wi-smoke:before {\n    content: \"\\f062\";\n}\n\n.wi-lightning:before {\n    content: \"\\f016\";\n}\n\n.wi-raindrops:before {\n    content: \"\\f04e\";\n}\n\n.wi-raindrop:before {\n    content: \"\\f078\";\n}\n\n.wi-dust:before {\n    content: \"\\f063\";\n}\n\n.wi-snowflake-cold:before {\n    content: \"\\f076\";\n}\n\n.wi-windy:before {\n    content: \"\\f021\";\n}\n\n.wi-strong-wind:before {\n    content: \"\\f050\";\n}\n\n.wi-sandstorm:before {\n    content: \"\\f082\";\n}\n\n.wi-earthquake:before {\n    content: \"\\f0c6\";\n}\n\n.wi-fire:before {\n    content: \"\\f0c7\";\n}\n\n.wi-flood:before {\n    content: \"\\f07c\";\n}\n\n.wi-meteor:before {\n    content: \"\\f071\";\n}\n\n.wi-tsunami:before {\n    content: \"\\f0c5\";\n}\n\n.wi-volcano:before {\n    content: \"\\f0c8\";\n}\n\n.wi-hurricane:before {\n    content: \"\\f073\";\n}\n\n.wi-tornado:before {\n    content: \"\\f056\";\n}\n\n.wi-small-craft-advisory:before {\n    content: \"\\f0cc\";\n}\n\n.wi-gale-warning:before {\n    content: \"\\f0cd\";\n}\n\n.wi-storm-warning:before {\n    content: \"\\f0ce\";\n}\n\n.wi-hurricane-warning:before {\n    content: \"\\f0cf\";\n}\n\n.wi-wind-direction:before {\n    content: \"\\f0b1\";\n}\n\n.wi-alien:before {\n    content: \"\\f075\";\n}\n\n.wi-celsius:before {\n    content: \"\\f03c\";\n}\n\n.wi-fahrenheit:before {\n    content: \"\\f045\";\n}\n\n.wi-degrees:before {\n    content: \"\\f042\";\n}\n\n.wi-thermometer:before {\n    content: \"\\f055\";\n}\n\n.wi-thermometer-exterior:before {\n    content: \"\\f053\";\n}\n\n.wi-thermometer-internal:before {\n    content: \"\\f054\";\n}\n\n.wi-cloud-down:before {\n    content: \"\\f03d\";\n}\n\n.wi-cloud-up:before {\n    content: \"\\f040\";\n}\n\n.wi-cloud-refresh:before {\n    content: \"\\f03e\";\n}\n\n.wi-horizon:before {\n    content: \"\\f047\";\n}\n\n.wi-horizon-alt:before {\n    content: \"\\f046\";\n}\n\n.wi-sunrise:before {\n    content: \"\\f051\";\n}\n\n.wi-sunset:before {\n    content: \"\\f052\";\n}\n\n.wi-moonrise:before {\n    content: \"\\f0c9\";\n}\n\n.wi-moonset:before {\n    content: \"\\f0ca\";\n}\n\n.wi-refresh:before {\n    content: \"\\f04c\";\n}\n\n.wi-refresh-alt:before {\n    content: \"\\f04b\";\n}\n\n.wi-umbrella:before {\n    content: \"\\f084\";\n}\n\n.wi-barometer:before {\n    content: \"\\f079\";\n}\n\n.wi-humidity:before {\n    content: \"\\f07a\";\n}\n\n.wi-na:before {\n    content: \"\\f07b\";\n}\n\n.wi-train:before {\n    content: \"\\f0cb\";\n}\n\n.wi-moon-new:before {\n    content: \"\\f095\";\n}\n\n.wi-moon-waxing-cresent-1:before {\n    content: \"\\f096\";\n}\n\n.wi-moon-waxing-cresent-2:before {\n    content: \"\\f097\";\n}\n\n.wi-moon-waxing-cresent-3:before {\n    content: \"\\f098\";\n}\n\n.wi-moon-waxing-cresent-4:before {\n    content: \"\\f099\";\n}\n\n.wi-moon-waxing-cresent-5:before {\n    content: \"\\f09a\";\n}\n\n.wi-moon-waxing-cresent-6:before {\n    content: \"\\f09b\";\n}\n\n.wi-moon-first-quarter:before {\n    content: \"\\f09c\";\n}\n\n.wi-moon-waxing-gibbous-1:before {\n    content: \"\\f09d\";\n}\n\n.wi-moon-waxing-gibbous-2:before {\n    content: \"\\f09e\";\n}\n\n.wi-moon-waxing-gibbous-3:before {\n    content: \"\\f09f\";\n}\n\n.wi-moon-waxing-gibbous-4:before {\n    content: \"\\f0a0\";\n}\n\n.wi-moon-waxing-gibbous-5:before {\n    content: \"\\f0a1\";\n}\n\n.wi-moon-waxing-gibbous-6:before {\n    content: \"\\f0a2\";\n}\n\n.wi-moon-full:before {\n    content: \"\\f0a3\";\n}\n\n.wi-moon-waning-gibbous-1:before {\n    content: \"\\f0a4\";\n}\n\n.wi-moon-waning-gibbous-2:before {\n    content: \"\\f0a5\";\n}\n\n.wi-moon-waning-gibbous-3:before {\n    content: \"\\f0a6\";\n}\n\n.wi-moon-waning-gibbous-4:before {\n    content: \"\\f0a7\";\n}\n\n.wi-moon-waning-gibbous-5:before {\n    content: \"\\f0a8\";\n}\n\n.wi-moon-waning-gibbous-6:before {\n    content: \"\\f0a9\";\n}\n\n.wi-moon-third-quarter:before {\n    content: \"\\f0aa\";\n}\n\n.wi-moon-waning-crescent-1:before {\n    content: \"\\f0ab\";\n}\n\n.wi-moon-waning-crescent-2:before {\n    content: \"\\f0ac\";\n}\n\n.wi-moon-waning-crescent-3:before {\n    content: \"\\f0ad\";\n}\n\n.wi-moon-waning-crescent-4:before {\n    content: \"\\f0ae\";\n}\n\n.wi-moon-waning-crescent-5:before {\n    content: \"\\f0af\";\n}\n\n.wi-moon-waning-crescent-6:before {\n    content: \"\\f0b0\";\n}\n\n.wi-moon-alt-new:before {\n    content: \"\\f0eb\";\n}\n\n.wi-moon-alt-waxing-cresent-1:before {\n    content: \"\\f0d0\";\n}\n\n.wi-moon-alt-waxing-cresent-2:before {\n    content: \"\\f0d1\";\n}\n\n.wi-moon-alt-waxing-cresent-3:before {\n    content: \"\\f0d2\";\n}\n\n.wi-moon-alt-waxing-cresent-4:before {\n    content: \"\\f0d3\";\n}\n\n.wi-moon-alt-waxing-cresent-5:before {\n    content: \"\\f0d4\";\n}\n\n.wi-moon-alt-waxing-cresent-6:before {\n    content: \"\\f0d5\";\n}\n\n.wi-moon-alt-first-quarter:before {\n    content: \"\\f0d6\";\n}\n\n.wi-moon-alt-waxing-gibbous-1:before {\n    content: \"\\f0d7\";\n}\n\n.wi-moon-alt-waxing-gibbous-2:before {\n    content: \"\\f0d8\";\n}\n\n.wi-moon-alt-waxing-gibbous-3:before {\n    content: \"\\f0d9\";\n}\n\n.wi-moon-alt-waxing-gibbous-4:before {\n    content: \"\\f0da\";\n}\n\n.wi-moon-alt-waxing-gibbous-5:before {\n    content: \"\\f0db\";\n}\n\n.wi-moon-alt-waxing-gibbous-6:before {\n    content: \"\\f0dc\";\n}\n\n.wi-moon-alt-full:before {\n    content: \"\\f0dd\";\n}\n\n.wi-moon-alt-waning-gibbous-1:before {\n    content: \"\\f0de\";\n}\n\n.wi-moon-alt-waning-gibbous-2:before {\n    content: \"\\f0df\";\n}\n\n.wi-moon-alt-waning-gibbous-3:before {\n    content: \"\\f0e0\";\n}\n\n.wi-moon-alt-waning-gibbous-4:before {\n    content: \"\\f0e1\";\n}\n\n.wi-moon-alt-waning-gibbous-5:before {\n    content: \"\\f0e2\";\n}\n\n.wi-moon-alt-waning-gibbous-6:before {\n    content: \"\\f0e3\";\n}\n\n.wi-moon-alt-third-quarter:before {\n    content: \"\\f0e4\";\n}\n\n.wi-moon-alt-waning-crescent-1:before {\n    content: \"\\f0e5\";\n}\n\n.wi-moon-alt-waning-crescent-2:before {\n    content: \"\\f0e6\";\n}\n\n.wi-moon-alt-waning-crescent-3:before {\n    content: \"\\f0e7\";\n}\n\n.wi-moon-alt-waning-crescent-4:before {\n    content: \"\\f0e8\";\n}\n\n.wi-moon-alt-waning-crescent-5:before {\n    content: \"\\f0e9\";\n}\n\n.wi-moon-alt-waning-crescent-6:before {\n    content: \"\\f0ea\";\n}\n\n.wi-moon-0:before {\n    content: \"\\f095\";\n}\n\n.wi-moon-1:before {\n    content: \"\\f096\";\n}\n\n.wi-moon-2:before {\n    content: \"\\f097\";\n}\n\n.wi-moon-3:before {\n    content: \"\\f098\";\n}\n\n.wi-moon-4:before {\n    content: \"\\f099\";\n}\n\n.wi-moon-5:before {\n    content: \"\\f09a\";\n}\n\n.wi-moon-6:before {\n    content: \"\\f09b\";\n}\n\n.wi-moon-7:before {\n    content: \"\\f09c\";\n}\n\n.wi-moon-8:before {\n    content: \"\\f09d\";\n}\n\n.wi-moon-9:before {\n    content: \"\\f09e\";\n}\n\n.wi-moon-10:before {\n    content: \"\\f09f\";\n}\n\n.wi-moon-11:before {\n    content: \"\\f0a0\";\n}\n\n.wi-moon-12:before {\n    content: \"\\f0a1\";\n}\n\n.wi-moon-13:before {\n    content: \"\\f0a2\";\n}\n\n.wi-moon-14:before {\n    content: \"\\f0a3\";\n}\n\n.wi-moon-15:before {\n    content: \"\\f0a4\";\n}\n\n.wi-moon-16:before {\n    content: \"\\f0a5\";\n}\n\n.wi-moon-17:before {\n    content: \"\\f0a6\";\n}\n\n.wi-moon-18:before {\n    content: \"\\f0a7\";\n}\n\n.wi-moon-19:before {\n    content: \"\\f0a8\";\n}\n\n.wi-moon-20:before {\n    content: \"\\f0a9\";\n}\n\n.wi-moon-21:before {\n    content: \"\\f0aa\";\n}\n\n.wi-moon-22:before {\n    content: \"\\f0ab\";\n}\n\n.wi-moon-23:before {\n    content: \"\\f0ac\";\n}\n\n.wi-moon-24:before {\n    content: \"\\f0ad\";\n}\n\n.wi-moon-25:before {\n    content: \"\\f0ae\";\n}\n\n.wi-moon-26:before {\n    content: \"\\f0af\";\n}\n\n.wi-moon-27:before {\n    content: \"\\f0b0\";\n}\n\n.wi-time-1:before {\n    content: \"\\f08a\";\n}\n\n.wi-time-2:before {\n    content: \"\\f08b\";\n}\n\n.wi-time-3:before {\n    content: \"\\f08c\";\n}\n\n.wi-time-4:before {\n    content: \"\\f08d\";\n}\n\n.wi-time-5:before {\n    content: \"\\f08e\";\n}\n\n.wi-time-6:before {\n    content: \"\\f08f\";\n}\n\n.wi-time-7:before {\n    content: \"\\f090\";\n}\n\n.wi-time-8:before {\n    content: \"\\f091\";\n}\n\n.wi-time-9:before {\n    content: \"\\f092\";\n}\n\n.wi-time-10:before {\n    content: \"\\f093\";\n}\n\n.wi-time-11:before {\n    content: \"\\f094\";\n}\n\n.wi-time-12:before {\n    content: \"\\f089\";\n}\n\n.wi-direction-up:before {\n    content: \"\\f058\";\n}\n\n.wi-direction-up-right:before {\n    content: \"\\f057\";\n}\n\n.wi-direction-right:before {\n    content: \"\\f04d\";\n}\n\n.wi-direction-down-right:before {\n    content: \"\\f088\";\n}\n\n.wi-direction-down:before {\n    content: \"\\f044\";\n}\n\n.wi-direction-down-left:before {\n    content: \"\\f043\";\n}\n\n.wi-direction-left:before {\n    content: \"\\f048\";\n}\n\n.wi-direction-up-left:before {\n    content: \"\\f087\";\n}\n\n.wi-wind-beaufort-0:before {\n    content: \"\\f0b7\";\n}\n\n.wi-wind-beaufort-1:before {\n    content: \"\\f0b8\";\n}\n\n.wi-wind-beaufort-2:before {\n    content: \"\\f0b9\";\n}\n\n.wi-wind-beaufort-3:before {\n    content: \"\\f0ba\";\n}\n\n.wi-wind-beaufort-4:before {\n    content: \"\\f0bb\";\n}\n\n.wi-wind-beaufort-5:before {\n    content: \"\\f0bc\";\n}\n\n.wi-wind-beaufort-6:before {\n    content: \"\\f0bd\";\n}\n\n.wi-wind-beaufort-7:before {\n    content: \"\\f0be\";\n}\n\n.wi-wind-beaufort-8:before {\n    content: \"\\f0bf\";\n}\n\n.wi-wind-beaufort-9:before {\n    content: \"\\f0c0\";\n}\n\n.wi-wind-beaufort-10:before {\n    content: \"\\f0c1\";\n}\n\n.wi-wind-beaufort-11:before {\n    content: \"\\f0c2\";\n}\n\n.wi-wind-beaufort-12:before {\n    content: \"\\f0c3\";\n}\n\n.wi-yahoo-0:before {\n    content: \"\\f056\";\n}\n\n.wi-yahoo-1:before {\n    content: \"\\f00e\";\n}\n\n.wi-yahoo-2:before {\n    content: \"\\f073\";\n}\n\n.wi-yahoo-3:before {\n    content: \"\\f01e\";\n}\n\n.wi-yahoo-4:before {\n    content: \"\\f01e\";\n}\n\n.wi-yahoo-5:before {\n    content: \"\\f017\";\n}\n\n.wi-yahoo-6:before {\n    content: \"\\f017\";\n}\n\n.wi-yahoo-7:before {\n    content: \"\\f017\";\n}\n\n.wi-yahoo-8:before {\n    content: \"\\f015\";\n}\n\n.wi-yahoo-9:before {\n    content: \"\\f01a\";\n}\n\n.wi-yahoo-10:before {\n    content: \"\\f015\";\n}\n\n.wi-yahoo-11:before {\n    content: \"\\f01a\";\n}\n\n.wi-yahoo-12:before {\n    content: \"\\f01a\";\n}\n\n.wi-yahoo-13:before {\n    content: \"\\f01b\";\n}\n\n.wi-yahoo-14:before {\n    content: \"\\f00a\";\n}\n\n.wi-yahoo-15:before {\n    content: \"\\f064\";\n}\n\n.wi-yahoo-16:before {\n    content: \"\\f01b\";\n}\n\n.wi-yahoo-17:before {\n    content: \"\\f015\";\n}\n\n.wi-yahoo-18:before {\n    content: \"\\f017\";\n}\n\n.wi-yahoo-19:before {\n    content: \"\\f063\";\n}\n\n.wi-yahoo-20:before {\n    content: \"\\f014\";\n}\n\n.wi-yahoo-21:before {\n    content: \"\\f021\";\n}\n\n.wi-yahoo-22:before {\n    content: \"\\f062\";\n}\n\n.wi-yahoo-23:before {\n    content: \"\\f050\";\n}\n\n.wi-yahoo-24:before {\n    content: \"\\f050\";\n}\n\n.wi-yahoo-25:before {\n    content: \"\\f076\";\n}\n\n.wi-yahoo-26:before {\n    content: \"\\f013\";\n}\n\n.wi-yahoo-27:before {\n    content: \"\\f031\";\n}\n\n.wi-yahoo-28:before {\n    content: \"\\f002\";\n}\n\n.wi-yahoo-29:before {\n    content: \"\\f031\";\n}\n\n.wi-yahoo-30:before {\n    content: \"\\f002\";\n}\n\n.wi-yahoo-31:before {\n    content: \"\\f02e\";\n}\n\n.wi-yahoo-32:before {\n    content: \"\\f00d\";\n}\n\n.wi-yahoo-33:before {\n    content: \"\\f083\";\n}\n\n.wi-yahoo-34:before {\n    content: \"\\f00c\";\n}\n\n.wi-yahoo-35:before {\n    content: \"\\f017\";\n}\n\n.wi-yahoo-36:before {\n    content: \"\\f072\";\n}\n\n.wi-yahoo-37:before {\n    content: \"\\f00e\";\n}\n\n.wi-yahoo-38:before {\n    content: \"\\f00e\";\n}\n\n.wi-yahoo-39:before {\n    content: \"\\f00e\";\n}\n\n.wi-yahoo-40:before {\n    content: \"\\f01a\";\n}\n\n.wi-yahoo-41:before {\n    content: \"\\f064\";\n}\n\n.wi-yahoo-42:before {\n    content: \"\\f01b\";\n}\n\n.wi-yahoo-43:before {\n    content: \"\\f064\";\n}\n\n.wi-yahoo-44:before {\n    content: \"\\f00c\";\n}\n\n.wi-yahoo-45:before {\n    content: \"\\f00e\";\n}\n\n.wi-yahoo-46:before {\n    content: \"\\f01b\";\n}\n\n.wi-yahoo-47:before {\n    content: \"\\f00e\";\n}\n\n.wi-yahoo-3200:before {\n    content: \"\\f077\";\n}\n\n.wi-forecast-io-clear-day:before {\n    content: \"\\f00d\";\n}\n\n.wi-forecast-io-clear-night:before {\n    content: \"\\f02e\";\n}\n\n.wi-forecast-io-rain:before {\n    content: \"\\f019\";\n}\n\n.wi-forecast-io-snow:before {\n    content: \"\\f01b\";\n}\n\n.wi-forecast-io-sleet:before {\n    content: \"\\f0b5\";\n}\n\n.wi-forecast-io-wind:before {\n    content: \"\\f050\";\n}\n\n.wi-forecast-io-fog:before {\n    content: \"\\f014\";\n}\n\n.wi-forecast-io-cloudy:before {\n    content: \"\\f013\";\n}\n\n.wi-forecast-io-partly-cloudy-day:before {\n    content: \"\\f002\";\n}\n\n.wi-forecast-io-partly-cloudy-night:before {\n    content: \"\\f031\";\n}\n\n.wi-forecast-io-hail:before {\n    content: \"\\f015\";\n}\n\n.wi-forecast-io-thunderstorm:before {\n    content: \"\\f01e\";\n}\n\n.wi-forecast-io-tornado:before {\n    content: \"\\f056\";\n}\n\n.wi-wmo4680-0:before,\n.wi-wmo4680-00:before {\n    content: \"\\f055\";\n}\n\n.wi-wmo4680-1:before,\n.wi-wmo4680-01:before {\n    content: \"\\f013\";\n}\n\n.wi-wmo4680-2:before,\n.wi-wmo4680-02:before {\n    content: \"\\f055\";\n}\n\n.wi-wmo4680-3:before,\n.wi-wmo4680-03:before {\n    content: \"\\f013\";\n}\n\n.wi-wmo4680-4:before,\n.wi-wmo4680-04:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-5:before,\n.wi-wmo4680-05:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-10:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-11:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-12:before {\n    content: \"\\f016\";\n}\n\n.wi-wmo4680-18:before {\n    content: \"\\f050\";\n}\n\n.wi-wmo4680-20:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-21:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-22:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-23:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-24:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-25:before {\n    content: \"\\f015\";\n}\n\n.wi-wmo4680-26:before {\n    content: \"\\f01e\";\n}\n\n.wi-wmo4680-27:before {\n    content: \"\\f063\";\n}\n\n.wi-wmo4680-28:before {\n    content: \"\\f063\";\n}\n\n.wi-wmo4680-29:before {\n    content: \"\\f063\";\n}\n\n.wi-wmo4680-30:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-31:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-32:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-33:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-34:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-35:before {\n    content: \"\\f014\";\n}\n\n.wi-wmo4680-40:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-41:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-42:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-43:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-44:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-45:before {\n    content: \"\\f015\";\n}\n\n.wi-wmo4680-46:before {\n    content: \"\\f015\";\n}\n\n.wi-wmo4680-47:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-48:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-50:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-51:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-52:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-53:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-54:before {\n    content: \"\\f076\";\n}\n\n.wi-wmo4680-55:before {\n    content: \"\\f076\";\n}\n\n.wi-wmo4680-56:before {\n    content: \"\\f076\";\n}\n\n.wi-wmo4680-57:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-58:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-60:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-61:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-62:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-63:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-64:before {\n    content: \"\\f015\";\n}\n\n.wi-wmo4680-65:before {\n    content: \"\\f015\";\n}\n\n.wi-wmo4680-66:before {\n    content: \"\\f015\";\n}\n\n.wi-wmo4680-67:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-68:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-70:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-71:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-72:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-73:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-74:before {\n    content: \"\\f076\";\n}\n\n.wi-wmo4680-75:before {\n    content: \"\\f076\";\n}\n\n.wi-wmo4680-76:before {\n    content: \"\\f076\";\n}\n\n.wi-wmo4680-77:before {\n    content: \"\\f01b\";\n}\n\n.wi-wmo4680-78:before {\n    content: \"\\f076\";\n}\n\n.wi-wmo4680-80:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-81:before {\n    content: \"\\f01c\";\n}\n\n.wi-wmo4680-82:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-83:before {\n    content: \"\\f019\";\n}\n\n.wi-wmo4680-84:before {\n    content: \"\\f01d\";\n}\n\n.wi-wmo4680-85:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-86:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-87:before {\n    content: \"\\f017\";\n}\n\n.wi-wmo4680-89:before {\n    content: \"\\f015\";\n}\n\n.wi-wmo4680-90:before {\n    content: \"\\f016\";\n}\n\n.wi-wmo4680-91:before {\n    content: \"\\f01d\";\n}\n\n.wi-wmo4680-92:before {\n    content: \"\\f01e\";\n}\n\n.wi-wmo4680-93:before {\n    content: \"\\f01e\";\n}\n\n.wi-wmo4680-94:before {\n    content: \"\\f016\";\n}\n\n.wi-wmo4680-95:before {\n    content: \"\\f01e\";\n}\n\n.wi-wmo4680-96:before {\n    content: \"\\f01e\";\n}\n\n.wi-wmo4680-99:before {\n    content: \"\\f056\";\n}\n\n.wi-owm-200:before {\n    content: \"\\f01e\";\n}\n\n.wi-owm-201:before {\n    content: \"\\f01e\";\n}\n\n.wi-owm-202:before {\n    content: \"\\f01e\";\n}\n\n.wi-owm-210:before {\n    content: \"\\f016\";\n}\n\n.wi-owm-211:before {\n    content: \"\\f016\";\n}\n\n.wi-owm-212:before {\n    content: \"\\f016\";\n}\n\n.wi-owm-221:before {\n    content: \"\\f016\";\n}\n\n.wi-owm-230:before {\n    content: \"\\f01e\";\n}\n\n.wi-owm-231:before {\n    content: \"\\f01e\";\n}\n\n.wi-owm-232:before {\n    content: \"\\f01e\";\n}\n\n.wi-owm-300:before {\n    content: \"\\f01c\";\n}\n\n.wi-owm-301:before {\n    content: \"\\f01c\";\n}\n\n.wi-owm-302:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-310:before {\n    content: \"\\f017\";\n}\n\n.wi-owm-311:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-312:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-313:before {\n    content: \"\\f01a\";\n}\n\n.wi-owm-314:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-321:before {\n    content: \"\\f01c\";\n}\n\n.wi-owm-500:before {\n    content: \"\\f01c\";\n}\n\n.wi-owm-501:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-502:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-503:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-504:before {\n    content: \"\\f019\";\n}\n\n.wi-owm-511:before {\n    content: \"\\f017\";\n}\n\n.wi-owm-520:before {\n    content: \"\\f01a\";\n}\n\n.wi-owm-521:before {\n    content: \"\\f01a\";\n}\n\n.wi-owm-522:before {\n    content: \"\\f01a\";\n}\n\n.wi-owm-531:before {\n    content: \"\\f01d\";\n}\n\n.wi-owm-600:before {\n    content: \"\\f01b\";\n}\n\n.wi-owm-601:before {\n    content: \"\\f01b\";\n}\n\n.wi-owm-602:before {\n    content: \"\\f0b5\";\n}\n\n.wi-owm-611:before {\n    content: \"\\f017\";\n}\n\n.wi-owm-612:before {\n    content: \"\\f017\";\n}\n\n.wi-owm-615:before {\n    content: \"\\f017\";\n}\n\n.wi-owm-616:before {\n    content: \"\\f017\";\n}\n\n.wi-owm-620:before {\n    content: \"\\f017\";\n}\n\n.wi-owm-621:before {\n    content: \"\\f01b\";\n}\n\n.wi-owm-622:before {\n    content: \"\\f01b\";\n}\n\n.wi-owm-701:before {\n    content: \"\\f01a\";\n}\n\n.wi-owm-711:before {\n    content: \"\\f062\";\n}\n\n.wi-owm-721:before {\n    content: \"\\f0b6\";\n}\n\n.wi-owm-731:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-741:before {\n    content: \"\\f014\";\n}\n\n.wi-owm-761:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-762:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-771:before {\n    content: \"\\f011\";\n}\n\n.wi-owm-781:before {\n    content: \"\\f056\";\n}\n\n.wi-owm-800:before {\n    content: \"\\f00d\";\n}\n\n.wi-owm-801:before {\n    content: \"\\f011\";\n}\n\n.wi-owm-802:before {\n    content: \"\\f011\";\n}\n\n.wi-owm-803:before {\n    content: \"\\f011\";\n}\n\n.wi-owm-803:before {\n    content: \"\\f012\";\n}\n\n.wi-owm-804:before {\n    content: \"\\f013\";\n}\n\n.wi-owm-900:before {\n    content: \"\\f056\";\n}\n\n.wi-owm-901:before {\n    content: \"\\f01d\";\n}\n\n.wi-owm-902:before {\n    content: \"\\f073\";\n}\n\n.wi-owm-903:before {\n    content: \"\\f076\";\n}\n\n.wi-owm-904:before {\n    content: \"\\f072\";\n}\n\n.wi-owm-905:before {\n    content: \"\\f021\";\n}\n\n.wi-owm-906:before {\n    content: \"\\f015\";\n}\n\n.wi-owm-957:before {\n    content: \"\\f050\";\n}\n\n.wi-owm-day-200:before {\n    content: \"\\f010\";\n}\n\n.wi-owm-day-201:before {\n    content: \"\\f010\";\n}\n\n.wi-owm-day-202:before {\n    content: \"\\f010\";\n}\n\n.wi-owm-day-210:before {\n    content: \"\\f005\";\n}\n\n.wi-owm-day-211:before {\n    content: \"\\f005\";\n}\n\n.wi-owm-day-212:before {\n    content: \"\\f005\";\n}\n\n.wi-owm-day-221:before {\n    content: \"\\f005\";\n}\n\n.wi-owm-day-230:before {\n    content: \"\\f010\";\n}\n\n.wi-owm-day-231:before {\n    content: \"\\f010\";\n}\n\n.wi-owm-day-232:before {\n    content: \"\\f010\";\n}\n\n.wi-owm-day-300:before {\n    content: \"\\f00b\";\n}\n\n.wi-owm-day-301:before {\n    content: \"\\f00b\";\n}\n\n.wi-owm-day-302:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-310:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-311:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-312:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-313:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-314:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-321:before {\n    content: \"\\f00b\";\n}\n\n.wi-owm-day-500:before {\n    content: \"\\f00b\";\n}\n\n.wi-owm-day-501:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-502:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-503:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-504:before {\n    content: \"\\f008\";\n}\n\n.wi-owm-day-511:before {\n    content: \"\\f006\";\n}\n\n.wi-owm-day-520:before {\n    content: \"\\f009\";\n}\n\n.wi-owm-day-521:before {\n    content: \"\\f009\";\n}\n\n.wi-owm-day-522:before {\n    content: \"\\f009\";\n}\n\n.wi-owm-day-531:before {\n    content: \"\\f00e\";\n}\n\n.wi-owm-day-600:before {\n    content: \"\\f00a\";\n}\n\n.wi-owm-day-601:before {\n    content: \"\\f0b2\";\n}\n\n.wi-owm-day-602:before {\n    content: \"\\f00a\";\n}\n\n.wi-owm-day-611:before {\n    content: \"\\f006\";\n}\n\n.wi-owm-day-612:before {\n    content: \"\\f006\";\n}\n\n.wi-owm-day-615:before {\n    content: \"\\f006\";\n}\n\n.wi-owm-day-616:before {\n    content: \"\\f006\";\n}\n\n.wi-owm-day-620:before {\n    content: \"\\f006\";\n}\n\n.wi-owm-day-621:before {\n    content: \"\\f00a\";\n}\n\n.wi-owm-day-622:before {\n    content: \"\\f00a\";\n}\n\n.wi-owm-day-701:before {\n    content: \"\\f009\";\n}\n\n.wi-owm-day-711:before {\n    content: \"\\f062\";\n}\n\n.wi-owm-day-721:before {\n    content: \"\\f0b6\";\n}\n\n.wi-owm-day-731:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-day-741:before {\n    content: \"\\f003\";\n}\n\n.wi-owm-day-761:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-day-762:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-day-781:before {\n    content: \"\\f056\";\n}\n\n.wi-owm-day-800:before {\n    content: \"\\f00d\";\n}\n\n.wi-owm-day-801:before {\n    content: \"\\f000\";\n}\n\n.wi-owm-day-802:before {\n    content: \"\\f000\";\n}\n\n.wi-owm-day-803:before {\n    content: \"\\f000\";\n}\n\n.wi-owm-day-804:before {\n    content: \"\\f00c\";\n}\n\n.wi-owm-day-900:before {\n    content: \"\\f056\";\n}\n\n.wi-owm-day-902:before {\n    content: \"\\f073\";\n}\n\n.wi-owm-day-903:before {\n    content: \"\\f076\";\n}\n\n.wi-owm-day-904:before {\n    content: \"\\f072\";\n}\n\n.wi-owm-day-906:before {\n    content: \"\\f004\";\n}\n\n.wi-owm-day-957:before {\n    content: \"\\f050\";\n}\n\n.wi-owm-night-200:before {\n    content: \"\\f02d\";\n}\n\n.wi-owm-night-201:before {\n    content: \"\\f02d\";\n}\n\n.wi-owm-night-202:before {\n    content: \"\\f02d\";\n}\n\n.wi-owm-night-210:before {\n    content: \"\\f025\";\n}\n\n.wi-owm-night-211:before {\n    content: \"\\f025\";\n}\n\n.wi-owm-night-212:before {\n    content: \"\\f025\";\n}\n\n.wi-owm-night-221:before {\n    content: \"\\f025\";\n}\n\n.wi-owm-night-230:before {\n    content: \"\\f02d\";\n}\n\n.wi-owm-night-231:before {\n    content: \"\\f02d\";\n}\n\n.wi-owm-night-232:before {\n    content: \"\\f02d\";\n}\n\n.wi-owm-night-300:before {\n    content: \"\\f02b\";\n}\n\n.wi-owm-night-301:before {\n    content: \"\\f02b\";\n}\n\n.wi-owm-night-302:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-310:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-311:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-312:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-313:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-314:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-321:before {\n    content: \"\\f02b\";\n}\n\n.wi-owm-night-500:before {\n    content: \"\\f02b\";\n}\n\n.wi-owm-night-501:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-502:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-503:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-504:before {\n    content: \"\\f028\";\n}\n\n.wi-owm-night-511:before {\n    content: \"\\f026\";\n}\n\n.wi-owm-night-520:before {\n    content: \"\\f029\";\n}\n\n.wi-owm-night-521:before {\n    content: \"\\f029\";\n}\n\n.wi-owm-night-522:before {\n    content: \"\\f029\";\n}\n\n.wi-owm-night-531:before {\n    content: \"\\f02c\";\n}\n\n.wi-owm-night-600:before {\n    content: \"\\f02a\";\n}\n\n.wi-owm-night-601:before {\n    content: \"\\f0b4\";\n}\n\n.wi-owm-night-602:before {\n    content: \"\\f02a\";\n}\n\n.wi-owm-night-611:before {\n    content: \"\\f026\";\n}\n\n.wi-owm-night-612:before {\n    content: \"\\f026\";\n}\n\n.wi-owm-night-615:before {\n    content: \"\\f026\";\n}\n\n.wi-owm-night-616:before {\n    content: \"\\f026\";\n}\n\n.wi-owm-night-620:before {\n    content: \"\\f026\";\n}\n\n.wi-owm-night-621:before {\n    content: \"\\f02a\";\n}\n\n.wi-owm-night-622:before {\n    content: \"\\f02a\";\n}\n\n.wi-owm-night-701:before {\n    content: \"\\f029\";\n}\n\n.wi-owm-night-711:before {\n    content: \"\\f062\";\n}\n\n.wi-owm-night-721:before {\n    content: \"\\f0b6\";\n}\n\n.wi-owm-night-731:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-night-741:before {\n    content: \"\\f04a\";\n}\n\n.wi-owm-night-761:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-night-762:before {\n    content: \"\\f063\";\n}\n\n.wi-owm-night-781:before {\n    content: \"\\f056\";\n}\n\n.wi-owm-night-800:before {\n    content: \"\\f02e\";\n}\n\n.wi-owm-night-801:before {\n    content: \"\\f022\";\n}\n\n.wi-owm-night-802:before {\n    content: \"\\f022\";\n}\n\n.wi-owm-night-803:before {\n    content: \"\\f022\";\n}\n\n.wi-owm-night-804:before {\n    content: \"\\f086\";\n}\n\n.wi-owm-night-900:before {\n    content: \"\\f056\";\n}\n\n.wi-owm-night-902:before {\n    content: \"\\f073\";\n}\n\n.wi-owm-night-903:before {\n    content: \"\\f076\";\n}\n\n.wi-owm-night-904:before {\n    content: \"\\f072\";\n}\n\n.wi-owm-night-906:before {\n    content: \"\\f024\";\n}\n\n.wi-owm-night-957:before {\n    content: \"\\f050\";\n}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-beaufort.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-day.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-direction.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-misc.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-moon.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-neutral.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-night.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-time.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/css/variables-wind-names.css",
    "content": ""
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-beaufort.less",
    "content": ".wi-wind-beaufort-0:before {content: @wind-beaufort-0;}\n.wi-wind-beaufort-1:before {content: @wind-beaufort-1;}\n.wi-wind-beaufort-2:before {content: @wind-beaufort-2;}\n.wi-wind-beaufort-3:before {content: @wind-beaufort-3;}\n.wi-wind-beaufort-4:before {content: @wind-beaufort-4;}\n.wi-wind-beaufort-5:before {content: @wind-beaufort-5;}\n.wi-wind-beaufort-6:before {content: @wind-beaufort-6;}\n.wi-wind-beaufort-7:before {content: @wind-beaufort-7;}\n.wi-wind-beaufort-8:before {content: @wind-beaufort-8;}\n.wi-wind-beaufort-9:before {content: @wind-beaufort-9;}\n.wi-wind-beaufort-10:before {content: @wind-beaufort-10;}\n.wi-wind-beaufort-11:before {content: @wind-beaufort-11;}\n.wi-wind-beaufort-12:before {content: @wind-beaufort-12;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-day.less",
    "content": ".wi-day-sunny:before {content: @day-sunny;}\n.wi-day-cloudy:before {content: @day-cloudy;}\n.wi-day-cloudy-gusts:before {content: @day-cloudy-gusts;}\n.wi-day-cloudy-windy:before {content: @day-cloudy-windy;}\n.wi-day-fog:before {content: @day-fog;}\n.wi-day-hail:before {content: @day-hail;}\n.wi-day-haze:before {content: @day-haze;}\n.wi-day-lightning:before {content: @day-lightning;}\n.wi-day-rain:before {content: @day-rain;}\n.wi-day-rain-mix:before {content: @day-rain-mix;}\n.wi-day-rain-wind:before {content: @day-rain-wind;}\n.wi-day-showers:before {content: @day-showers;}\n.wi-day-sleet:before {content: @day-sleet;}\n.wi-day-sleet-storm:before {content: @day-sleet-storm;}\n.wi-day-snow:before {content: @day-snow;}\n.wi-day-snow-thunderstorm:before {content: @day-snow-thunderstorm;}\n.wi-day-snow-wind:before {content: @day-snow-wind;}\n.wi-day-sprinkle:before {content: @day-sprinkle;}\n.wi-day-storm-showers:before {content: @day-storm-showers;}\n.wi-day-sunny-overcast:before {content: @day-sunny-overcast;}\n.wi-day-thunderstorm:before {content: @day-thunderstorm;}\n.wi-day-windy:before {content: @day-windy;}\n.wi-solar-eclipse:before {content: @solar-eclipse;}\n.wi-hot:before {content: @hot;}\n.wi-day-cloudy-high:before {content: @day-cloudy-high;}\n.wi-day-light-wind:before {content: @day-light-wind;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-direction.less",
    "content": ".wi-direction-up:before {content: @direction-up;}\n.wi-direction-up-right:before {content: @direction-up-right;}\n.wi-direction-right:before {content: @direction-right;}\n.wi-direction-down-right:before {content: @direction-down-right;}\n.wi-direction-down:before {content: @direction-down;}\n.wi-direction-down-left:before {content: @direction-down-left;}\n.wi-direction-left:before {content: @direction-left;}\n.wi-direction-up-left:before {content: @direction-up-left;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-misc.less",
    "content": ".wi-alien:before {content: @alien;}\n.wi-celsius:before {content: @celsius;}\n.wi-fahrenheit:before {content: @fahrenheit;}\n.wi-degrees:before {content: @degrees;}\n.wi-thermometer:before {content: @thermometer;}\n.wi-thermometer-exterior:before {content: @thermometer-exterior;}\n.wi-thermometer-internal:before {content: @thermometer-internal;}\n.wi-cloud-down:before {content: @cloud-down;}\n.wi-cloud-up:before {content: @cloud-up;}\n.wi-cloud-refresh:before {content: @cloud-refresh;}\n.wi-horizon:before {content: @horizon;}\n.wi-horizon-alt:before {content: @horizon-alt;}\n.wi-sunrise:before {content: @sunrise;}\n.wi-sunset:before {content: @sunset;}\n.wi-moonrise:before {content: @moonrise;}\n.wi-moonset:before {content: @moonset;}\n.wi-refresh:before {content: @refresh;}\n.wi-refresh-alt:before {content: @refresh-alt;}\n.wi-umbrella:before {content: @umbrella;}\n.wi-barometer:before {content: @barometer;}\n.wi-humidity:before {content: @humidity;}\n.wi-na:before {content: @na;}\n.wi-train:before {content: @train;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-moon-aliases.less",
    "content": ".wi-moon-0:before {content: @moon-new;}\n.wi-moon-1:before {content: @moon-waxing-cresent-1;}\n.wi-moon-2:before {content: @moon-waxing-cresent-2;}\n.wi-moon-3:before {content: @moon-waxing-cresent-3;}\n.wi-moon-4:before {content: @moon-waxing-cresent-4;}\n.wi-moon-5:before {content: @moon-waxing-cresent-5;}\n.wi-moon-6:before {content: @moon-waxing-cresent-6;}\n.wi-moon-7:before {content: @moon-first-quarter;}\n.wi-moon-8:before {content: @moon-waxing-gibbous-1;}\n.wi-moon-9:before {content: @moon-waxing-gibbous-2;}\n.wi-moon-10:before {content: @moon-waxing-gibbous-3;}\n.wi-moon-11:before {content: @moon-waxing-gibbous-4;}\n.wi-moon-12:before {content: @moon-waxing-gibbous-5;}\n.wi-moon-13:before {content: @moon-waxing-gibbous-6;}\n.wi-moon-14:before {content: @moon-full;}\n.wi-moon-15:before {content: @moon-waning-gibbous-1;}\n.wi-moon-16:before {content: @moon-waning-gibbous-2;}\n.wi-moon-17:before {content: @moon-waning-gibbous-3;}\n.wi-moon-18:before {content: @moon-waning-gibbous-4;}\n.wi-moon-19:before {content: @moon-waning-gibbous-5;}\n.wi-moon-20:before {content: @moon-waning-gibbous-6;}\n.wi-moon-21:before {content: @moon-third-quarter;}\n.wi-moon-22:before {content: @moon-waning-crescent-1;}\n.wi-moon-23:before {content: @moon-waning-crescent-2;}\n.wi-moon-24:before {content: @moon-waning-crescent-3;}\n.wi-moon-25:before {content: @moon-waning-crescent-4;}\n.wi-moon-26:before {content: @moon-waning-crescent-5;}\n.wi-moon-27:before {content: @moon-waning-crescent-6;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-moon.less",
    "content": ".wi-moon-new:before {content: @moon-new;}\n.wi-moon-waxing-cresent-1:before {content: @moon-waxing-cresent-1;}\n.wi-moon-waxing-cresent-2:before {content: @moon-waxing-cresent-2;}\n.wi-moon-waxing-cresent-3:before {content: @moon-waxing-cresent-3;}\n.wi-moon-waxing-cresent-4:before {content: @moon-waxing-cresent-4;}\n.wi-moon-waxing-cresent-5:before {content: @moon-waxing-cresent-5;}\n.wi-moon-waxing-cresent-6:before {content: @moon-waxing-cresent-6;}\n.wi-moon-first-quarter:before {content: @moon-first-quarter;}\n.wi-moon-waxing-gibbous-1:before {content: @moon-waxing-gibbous-1;}\n.wi-moon-waxing-gibbous-2:before {content: @moon-waxing-gibbous-2;}\n.wi-moon-waxing-gibbous-3:before {content: @moon-waxing-gibbous-3;}\n.wi-moon-waxing-gibbous-4:before {content: @moon-waxing-gibbous-4;}\n.wi-moon-waxing-gibbous-5:before {content: @moon-waxing-gibbous-5;}\n.wi-moon-waxing-gibbous-6:before {content: @moon-waxing-gibbous-6;}\n.wi-moon-full:before {content: @moon-full;}\n.wi-moon-waning-gibbous-1:before {content: @moon-waning-gibbous-1;}\n.wi-moon-waning-gibbous-2:before {content: @moon-waning-gibbous-2;}\n.wi-moon-waning-gibbous-3:before {content: @moon-waning-gibbous-3;}\n.wi-moon-waning-gibbous-4:before {content: @moon-waning-gibbous-4;}\n.wi-moon-waning-gibbous-5:before {content: @moon-waning-gibbous-5;}\n.wi-moon-waning-gibbous-6:before {content: @moon-waning-gibbous-6;}\n.wi-moon-third-quarter:before {content: @moon-third-quarter;}\n.wi-moon-waning-crescent-1:before {content: @moon-waning-crescent-1;}\n.wi-moon-waning-crescent-2:before {content: @moon-waning-crescent-2;}\n.wi-moon-waning-crescent-3:before {content: @moon-waning-crescent-3;}\n.wi-moon-waning-crescent-4:before {content: @moon-waning-crescent-4;}\n.wi-moon-waning-crescent-5:before {content: @moon-waning-crescent-5;}\n.wi-moon-waning-crescent-6:before {content: @moon-waning-crescent-6;}\n.wi-moon-alt-new:before {content: @moon-alt-new;}\n.wi-moon-alt-waxing-cresent-1:before {content: @moon-alt-waxing-cresent-1;}\n.wi-moon-alt-waxing-cresent-2:before {content: @moon-alt-waxing-cresent-2;}\n.wi-moon-alt-waxing-cresent-3:before {content: @moon-alt-waxing-cresent-3;}\n.wi-moon-alt-waxing-cresent-4:before {content: @moon-alt-waxing-cresent-4;}\n.wi-moon-alt-waxing-cresent-5:before {content: @moon-alt-waxing-cresent-5;}\n.wi-moon-alt-waxing-cresent-6:before {content: @moon-alt-waxing-cresent-6;}\n.wi-moon-alt-first-quarter:before {content: @moon-alt-first-quarter;}\n.wi-moon-alt-waxing-gibbous-1:before {content: @moon-alt-waxing-gibbous-1;}\n.wi-moon-alt-waxing-gibbous-2:before {content: @moon-alt-waxing-gibbous-2;}\n.wi-moon-alt-waxing-gibbous-3:before {content: @moon-alt-waxing-gibbous-3;}\n.wi-moon-alt-waxing-gibbous-4:before {content: @moon-alt-waxing-gibbous-4;}\n.wi-moon-alt-waxing-gibbous-5:before {content: @moon-alt-waxing-gibbous-5;}\n.wi-moon-alt-waxing-gibbous-6:before {content: @moon-alt-waxing-gibbous-6;}\n.wi-moon-alt-full:before {content: @moon-alt-full;}\n.wi-moon-alt-waning-gibbous-1:before {content: @moon-alt-waning-gibbous-1;}\n.wi-moon-alt-waning-gibbous-2:before {content: @moon-alt-waning-gibbous-2;}\n.wi-moon-alt-waning-gibbous-3:before {content: @moon-alt-waning-gibbous-3;}\n.wi-moon-alt-waning-gibbous-4:before {content: @moon-alt-waning-gibbous-4;}\n.wi-moon-alt-waning-gibbous-5:before {content: @moon-alt-waning-gibbous-5;}\n.wi-moon-alt-waning-gibbous-6:before {content: @moon-alt-waning-gibbous-6;}\n.wi-moon-alt-third-quarter:before {content: @moon-alt-third-quarter;}\n.wi-moon-alt-waning-crescent-1:before {content: @moon-alt-waning-crescent-1;}\n.wi-moon-alt-waning-crescent-2:before {content: @moon-alt-waning-crescent-2;}\n.wi-moon-alt-waning-crescent-3:before {content: @moon-alt-waning-crescent-3;}\n.wi-moon-alt-waning-crescent-4:before {content: @moon-alt-waning-crescent-4;}\n.wi-moon-alt-waning-crescent-5:before {content: @moon-alt-waning-crescent-5;}\n.wi-moon-alt-waning-crescent-6:before {content: @moon-alt-waning-crescent-6;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-neutral.less",
    "content": ".wi-cloud:before {content: @cloud;}\n.wi-cloudy:before {content: @cloudy;}\n.wi-cloudy-gusts:before {content: @cloudy-gusts;}\n.wi-cloudy-windy:before {content: @cloudy-windy;}\n.wi-fog:before {content: @fog;}\n.wi-hail:before {content: @hail;}\n.wi-rain:before {content: @rain;}\n.wi-rain-mix:before {content: @rain-mix;}\n.wi-rain-wind:before {content: @rain-wind;}\n.wi-showers:before {content: @showers;}\n.wi-sleet:before {content: @sleet;}\n.wi-snow:before {content: @snow;}\n.wi-sprinkle:before {content: @sprinkle;}\n.wi-storm-showers:before {content: @storm-showers;}\n.wi-thunderstorm:before {content: @thunderstorm;}\n.wi-snow-wind:before {content: @snow-wind;}\n.wi-snow:before {content: @snow;}\n.wi-smog:before {content: @smog;}\n.wi-smoke:before {content: @smoke;}\n.wi-lightning:before {content: @lightning;}\n.wi-raindrops:before {content: @raindrops;}\n.wi-raindrop:before {content: @raindrop;}\n.wi-dust:before {content: @dust;}\n.wi-snowflake-cold:before {content: @snowflake-cold;}\n.wi-windy:before {content: @windy;}\n.wi-strong-wind:before {content: @strong-wind;}\n.wi-sandstorm:before {content: @sandstorm;}\n.wi-earthquake:before {content: @earthquake;}\n.wi-fire:before {content: @fire;}\n.wi-flood:before {content: @flood;}\n.wi-meteor:before {content: @meteor;}\n.wi-tsunami:before {content: @tsunami;}\n.wi-volcano:before {content: @volcano;}\n.wi-hurricane:before {content: @hurricane;}\n.wi-tornado:before {content: @tornado;}\n.wi-small-craft-advisory:before {content: @small-craft-advisory;}\n.wi-gale-warning:before {content: @gale-warning;}\n.wi-storm-warning:before {content: @storm-warning;}\n.wi-hurricane-warning:before {content: @hurricane-warning;}\n.wi-wind-direction:before {content: @wind-direction;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-night.less",
    "content": ".wi-night-clear:before {content: @night-clear;}\n.wi-night-alt-cloudy:before {content: @night-alt-cloudy;}\n.wi-night-alt-cloudy-gusts:before {content: @night-alt-cloudy-gusts;}\n.wi-night-alt-cloudy-windy:before {content: @night-alt-cloudy-windy;}\n.wi-night-alt-hail:before {content: @night-alt-hail;}\n.wi-night-alt-lightning:before {content: @night-alt-lightning;}\n.wi-night-alt-rain:before {content: @night-alt-rain;}\n.wi-night-alt-rain-mix:before {content: @night-alt-rain-mix;}\n.wi-night-alt-rain-wind:before {content: @night-alt-rain-wind;}\n.wi-night-alt-showers:before {content: @night-alt-showers;}\n.wi-night-alt-sleet:before {content: @night-alt-sleet;}\n.wi-night-alt-sleet-storm:before {content: @night-alt-sleet-storm;}\n.wi-night-alt-snow:before {content: @night-alt-snow;}\n.wi-night-alt-snow-thunderstorm:before {content: @night-alt-snow-thunderstorm;}\n.wi-night-alt-snow-wind:before {content: @night-alt-snow-wind;}\n.wi-night-alt-sprinkle:before {content: @night-alt-sprinkle;}\n.wi-night-alt-storm-showers:before {content: @night-alt-storm-showers;}\n.wi-night-alt-thunderstorm:before {content: @night-alt-thunderstorm;}\n.wi-night-cloudy:before {content: @night-cloudy;}\n.wi-night-cloudy-gusts:before {content: @night-cloudy-gusts;}\n.wi-night-cloudy-windy:before {content: @night-cloudy-windy;}\n.wi-night-fog:before {content: @night-fog;}\n.wi-night-hail:before {content: @night-hail;}\n.wi-night-lightning:before {content: @night-lightning;}\n.wi-night-partly-cloudy:before {content: @night-partly-cloudy;}\n.wi-night-rain:before {content: @night-rain;}\n.wi-night-rain-mix:before {content: @night-rain-mix;}\n.wi-night-rain-wind:before {content: @night-rain-wind;}\n.wi-night-showers:before {content: @night-showers;}\n.wi-night-sleet:before {content: @night-sleet;}\n.wi-night-sleet-storm:before {content: @night-sleet-storm;}\n.wi-night-snow:before {content: @night-snow;}\n.wi-night-snow-thunderstorm:before {content: @night-snow-thunderstorm;}\n.wi-night-snow-wind:before {content: @night-snow-wind;}\n.wi-night-sprinkle:before {content: @night-sprinkle;}\n.wi-night-storm-showers:before {content: @night-storm-showers;}\n.wi-night-thunderstorm:before {content: @night-thunderstorm;}\n.wi-lunar-eclipse:before {content: @lunar-eclipse;}\n.wi-stars:before {content: @stars;}\n.wi-storm-showers:before {content: @storm-showers;}\n.wi-thunderstorm:before {content: @thunderstorm;}\n.wi-night-alt-cloudy-high:before {content: @night-alt-cloudy-high;}\n.wi-night-cloudy-high:before {content: @night-cloudy-high;}\n.wi-night-alt-partly-cloudy:before {content: @night-alt-partly-cloudy;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-time.less",
    "content": ".wi-time-1:before {content: @time-1;}\n.wi-time-2:before {content: @time-2;}\n.wi-time-3:before {content: @time-3;}\n.wi-time-4:before {content: @time-4;}\n.wi-time-5:before {content: @time-5;}\n.wi-time-6:before {content: @time-6;}\n.wi-time-7:before {content: @time-7;}\n.wi-time-8:before {content: @time-8;}\n.wi-time-9:before {content: @time-9;}\n.wi-time-10:before {content: @time-10;}\n.wi-time-11:before {content: @time-11;}\n.wi-time-12:before {content: @time-12;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-wind-aliases.less",
    "content": ".wi-towards-n    {\n  .wi-wind.towards-0-deg;\n}\n.wi-towards-nne   {\n  .wi-wind.towards-23-deg;\n}\n.wi-towards-ne    {\n  .wi-wind.towards-45-deg;\n}\n.wi-towards-ene   {\n  .wi-wind.towards-68-deg;\n}\n.wi-towards-e    {\n  .wi-wind.towards-90-deg;\n}\n.wi-towards-ese   {\n  .wi-wind.towards-113-deg;\n}\n.wi-towards-se    {\n  .wi-wind.towards-135-deg;\n}\n.wi-towards-sse   {\n  .wi-wind.towards-158-deg;\n}\n.wi-towards-s    {\n  .wi-wind.towards-180-deg;\n}\n.wi-towards-ssw   {\n  .wi-wind.towards-203-deg;\n}\n.wi-towards-sw    {\n  .wi-wind.towards-225-deg;\n}\n.wi-towards-wsw   {\n  .wi-wind.towards-248-deg;\n}\n.wi-towards-w    {\n  .wi-wind.towards-270-deg;\n}\n.wi-towards-wnw   {\n  .wi-wind.towards-293-deg;\n}\n.wi-towards-nw    {\n  .wi-wind.towards-313-deg;\n}\n.wi-towards-nnw   {\n  .wi-wind.towards-336-deg;\n}\n.wi-from-n    {\n  .wi-wind.from-0-deg;\n}\n.wi-from-nne   {\n  .wi-wind.from-23-deg;\n}\n.wi-from-ne    {\n  .wi-wind.from-45-deg;\n}\n.wi-from-ene   {\n  .wi-wind.from-68-deg;\n}\n.wi-from-e    {\n  .wi-wind.from-90-deg;\n}\n.wi-from-ese   {\n  .wi-wind.from-113-deg;\n}\n.wi-from-se    {\n  .wi-wind.from-135-deg;\n}\n.wi-from-sse   {\n  .wi-wind.from-158-deg;\n}\n.wi-from-s    {\n  .wi-wind.from-180-deg;\n}\n.wi-from-ssw   {\n  .wi-wind.from-203-deg;\n}\n.wi-from-sw    {\n  .wi-wind.from-225-deg;\n}\n.wi-from-wsw   {\n  .wi-wind.from-248-deg;\n}\n.wi-from-w    {\n  .wi-wind.from-270-deg;\n}\n.wi-from-wnw   {\n  .wi-wind.from-293-deg;\n}\n.wi-from-nw    {\n  .wi-wind.from-313-deg;\n}\n.wi-from-nnw   {\n  .wi-wind.from-336-deg;\n}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-wind-degrees.less",
    "content": ".@{wi-css-prefix}-wind { \n  &.towards-0-deg {.wind-rotate(0deg);}\n  &.towards-1-deg {.wind-rotate(1deg);}\n  &.towards-2-deg {.wind-rotate(2deg);}\n  &.towards-3-deg {.wind-rotate(3deg);}\n  &.towards-4-deg {.wind-rotate(4deg);}\n  &.towards-5-deg {.wind-rotate(5deg);}\n  &.towards-6-deg {.wind-rotate(6deg);}\n  &.towards-7-deg {.wind-rotate(7deg);}\n  &.towards-8-deg {.wind-rotate(8deg);}\n  &.towards-9-deg {.wind-rotate(9deg);}\n  &.towards-10-deg {.wind-rotate(10deg);}\n  &.towards-11-deg {.wind-rotate(11deg);}\n  &.towards-12-deg {.wind-rotate(12deg);}\n  &.towards-13-deg {.wind-rotate(13deg);}\n  &.towards-14-deg {.wind-rotate(14deg);}\n  &.towards-15-deg {.wind-rotate(15deg);}\n  &.towards-16-deg {.wind-rotate(16deg);}\n  &.towards-17-deg {.wind-rotate(17deg);}\n  &.towards-18-deg {.wind-rotate(18deg);}\n  &.towards-19-deg {.wind-rotate(19deg);}\n  &.towards-20-deg {.wind-rotate(20deg);}\n  &.towards-21-deg {.wind-rotate(21deg);}\n  &.towards-22-deg {.wind-rotate(22deg);}\n  &.towards-23-deg {.wind-rotate(23deg);}\n  &.towards-24-deg {.wind-rotate(24deg);}\n  &.towards-25-deg {.wind-rotate(25deg);}\n  &.towards-26-deg {.wind-rotate(26deg);}\n  &.towards-27-deg {.wind-rotate(27deg);}\n  &.towards-28-deg {.wind-rotate(28deg);}\n  &.towards-29-deg {.wind-rotate(29deg);}\n  &.towards-30-deg {.wind-rotate(30deg);}\n  &.towards-31-deg {.wind-rotate(31deg);}\n  &.towards-32-deg {.wind-rotate(32deg);}\n  &.towards-33-deg {.wind-rotate(33deg);}\n  &.towards-34-deg {.wind-rotate(34deg);}\n  &.towards-35-deg {.wind-rotate(35deg);}\n  &.towards-36-deg {.wind-rotate(36deg);}\n  &.towards-37-deg {.wind-rotate(37deg);}\n  &.towards-38-deg {.wind-rotate(38deg);}\n  &.towards-39-deg {.wind-rotate(39deg);}\n  &.towards-40-deg {.wind-rotate(40deg);}\n  &.towards-41-deg {.wind-rotate(41deg);}\n  &.towards-42-deg {.wind-rotate(42deg);}\n  &.towards-43-deg {.wind-rotate(43deg);}\n  &.towards-44-deg {.wind-rotate(44deg);}\n  &.towards-45-deg {.wind-rotate(45deg);}\n  &.towards-46-deg {.wind-rotate(46deg);}\n  &.towards-47-deg {.wind-rotate(47deg);}\n  &.towards-48-deg {.wind-rotate(48deg);}\n  &.towards-49-deg {.wind-rotate(49deg);}\n  &.towards-50-deg {.wind-rotate(50deg);}\n  &.towards-51-deg {.wind-rotate(51deg);}\n  &.towards-52-deg {.wind-rotate(52deg);}\n  &.towards-53-deg {.wind-rotate(53deg);}\n  &.towards-54-deg {.wind-rotate(54deg);}\n  &.towards-55-deg {.wind-rotate(55deg);}\n  &.towards-56-deg {.wind-rotate(56deg);}\n  &.towards-57-deg {.wind-rotate(57deg);}\n  &.towards-58-deg {.wind-rotate(58deg);}\n  &.towards-59-deg {.wind-rotate(59deg);}\n  &.towards-60-deg {.wind-rotate(60deg);}\n  &.towards-61-deg {.wind-rotate(61deg);}\n  &.towards-62-deg {.wind-rotate(62deg);}\n  &.towards-63-deg {.wind-rotate(63deg);}\n  &.towards-64-deg {.wind-rotate(64deg);}\n  &.towards-65-deg {.wind-rotate(65deg);}\n  &.towards-66-deg {.wind-rotate(66deg);}\n  &.towards-67-deg {.wind-rotate(67deg);}\n  &.towards-68-deg {.wind-rotate(68deg);}\n  &.towards-69-deg {.wind-rotate(69deg);}\n  &.towards-70-deg {.wind-rotate(70deg);}\n  &.towards-71-deg {.wind-rotate(71deg);}\n  &.towards-72-deg {.wind-rotate(72deg);}\n  &.towards-73-deg {.wind-rotate(73deg);}\n  &.towards-74-deg {.wind-rotate(74deg);}\n  &.towards-75-deg {.wind-rotate(75deg);}\n  &.towards-76-deg {.wind-rotate(76deg);}\n  &.towards-77-deg {.wind-rotate(77deg);}\n  &.towards-78-deg {.wind-rotate(78deg);}\n  &.towards-79-deg {.wind-rotate(79deg);}\n  &.towards-80-deg {.wind-rotate(80deg);}\n  &.towards-81-deg {.wind-rotate(81deg);}\n  &.towards-82-deg {.wind-rotate(82deg);}\n  &.towards-83-deg {.wind-rotate(83deg);}\n  &.towards-84-deg {.wind-rotate(84deg);}\n  &.towards-85-deg {.wind-rotate(85deg);}\n  &.towards-86-deg {.wind-rotate(86deg);}\n  &.towards-87-deg {.wind-rotate(87deg);}\n  &.towards-88-deg {.wind-rotate(88deg);}\n  &.towards-89-deg {.wind-rotate(89deg);}\n  &.towards-90-deg {.wind-rotate(90deg);}\n  &.towards-91-deg {.wind-rotate(91deg);}\n  &.towards-92-deg {.wind-rotate(92deg);}\n  &.towards-93-deg {.wind-rotate(93deg);}\n  &.towards-94-deg {.wind-rotate(94deg);}\n  &.towards-95-deg {.wind-rotate(95deg);}\n  &.towards-96-deg {.wind-rotate(96deg);}\n  &.towards-97-deg {.wind-rotate(97deg);}\n  &.towards-98-deg {.wind-rotate(98deg);}\n  &.towards-99-deg {.wind-rotate(99deg);}\n  &.towards-100-deg {.wind-rotate(100deg);}\n  &.towards-101-deg {.wind-rotate(101deg);}\n  &.towards-102-deg {.wind-rotate(102deg);}\n  &.towards-103-deg {.wind-rotate(103deg);}\n  &.towards-104-deg {.wind-rotate(104deg);}\n  &.towards-105-deg {.wind-rotate(105deg);}\n  &.towards-106-deg {.wind-rotate(106deg);}\n  &.towards-107-deg {.wind-rotate(107deg);}\n  &.towards-108-deg {.wind-rotate(108deg);}\n  &.towards-109-deg {.wind-rotate(109deg);}\n  &.towards-110-deg {.wind-rotate(110deg);}\n  &.towards-111-deg {.wind-rotate(111deg);}\n  &.towards-112-deg {.wind-rotate(112deg);}\n  &.towards-113-deg {.wind-rotate(113deg);}\n  &.towards-114-deg {.wind-rotate(114deg);}\n  &.towards-115-deg {.wind-rotate(115deg);}\n  &.towards-116-deg {.wind-rotate(116deg);}\n  &.towards-117-deg {.wind-rotate(117deg);}\n  &.towards-118-deg {.wind-rotate(118deg);}\n  &.towards-119-deg {.wind-rotate(119deg);}\n  &.towards-120-deg {.wind-rotate(120deg);}\n  &.towards-121-deg {.wind-rotate(121deg);}\n  &.towards-122-deg {.wind-rotate(122deg);}\n  &.towards-123-deg {.wind-rotate(123deg);}\n  &.towards-124-deg {.wind-rotate(124deg);}\n  &.towards-125-deg {.wind-rotate(125deg);}\n  &.towards-126-deg {.wind-rotate(126deg);}\n  &.towards-127-deg {.wind-rotate(127deg);}\n  &.towards-128-deg {.wind-rotate(128deg);}\n  &.towards-129-deg {.wind-rotate(129deg);}\n  &.towards-130-deg {.wind-rotate(130deg);}\n  &.towards-131-deg {.wind-rotate(131deg);}\n  &.towards-132-deg {.wind-rotate(132deg);}\n  &.towards-133-deg {.wind-rotate(133deg);}\n  &.towards-134-deg {.wind-rotate(134deg);}\n  &.towards-135-deg {.wind-rotate(135deg);}\n  &.towards-136-deg {.wind-rotate(136deg);}\n  &.towards-137-deg {.wind-rotate(137deg);}\n  &.towards-138-deg {.wind-rotate(138deg);}\n  &.towards-139-deg {.wind-rotate(139deg);}\n  &.towards-140-deg {.wind-rotate(140deg);}\n  &.towards-141-deg {.wind-rotate(141deg);}\n  &.towards-142-deg {.wind-rotate(142deg);}\n  &.towards-143-deg {.wind-rotate(143deg);}\n  &.towards-144-deg {.wind-rotate(144deg);}\n  &.towards-145-deg {.wind-rotate(145deg);}\n  &.towards-146-deg {.wind-rotate(146deg);}\n  &.towards-147-deg {.wind-rotate(147deg);}\n  &.towards-148-deg {.wind-rotate(148deg);}\n  &.towards-149-deg {.wind-rotate(149deg);}\n  &.towards-150-deg {.wind-rotate(150deg);}\n  &.towards-151-deg {.wind-rotate(151deg);}\n  &.towards-152-deg {.wind-rotate(152deg);}\n  &.towards-153-deg {.wind-rotate(153deg);}\n  &.towards-154-deg {.wind-rotate(154deg);}\n  &.towards-155-deg {.wind-rotate(155deg);}\n  &.towards-156-deg {.wind-rotate(156deg);}\n  &.towards-157-deg {.wind-rotate(157deg);}\n  &.towards-158-deg {.wind-rotate(158deg);}\n  &.towards-159-deg {.wind-rotate(159deg);}\n  &.towards-160-deg {.wind-rotate(160deg);}\n  &.towards-161-deg {.wind-rotate(161deg);}\n  &.towards-162-deg {.wind-rotate(162deg);}\n  &.towards-163-deg {.wind-rotate(163deg);}\n  &.towards-164-deg {.wind-rotate(164deg);}\n  &.towards-165-deg {.wind-rotate(165deg);}\n  &.towards-166-deg {.wind-rotate(166deg);}\n  &.towards-167-deg {.wind-rotate(167deg);}\n  &.towards-168-deg {.wind-rotate(168deg);}\n  &.towards-169-deg {.wind-rotate(169deg);}\n  &.towards-170-deg {.wind-rotate(170deg);}\n  &.towards-171-deg {.wind-rotate(171deg);}\n  &.towards-172-deg {.wind-rotate(172deg);}\n  &.towards-173-deg {.wind-rotate(173deg);}\n  &.towards-174-deg {.wind-rotate(174deg);}\n  &.towards-175-deg {.wind-rotate(175deg);}\n  &.towards-176-deg {.wind-rotate(176deg);}\n  &.towards-177-deg {.wind-rotate(177deg);}\n  &.towards-178-deg {.wind-rotate(178deg);}\n  &.towards-179-deg {.wind-rotate(179deg);}\n  &.towards-180-deg {.wind-rotate(180deg);}\n  &.towards-181-deg {.wind-rotate(181deg);}\n  &.towards-182-deg {.wind-rotate(182deg);}\n  &.towards-183-deg {.wind-rotate(183deg);}\n  &.towards-184-deg {.wind-rotate(184deg);}\n  &.towards-185-deg {.wind-rotate(185deg);}\n  &.towards-186-deg {.wind-rotate(186deg);}\n  &.towards-187-deg {.wind-rotate(187deg);}\n  &.towards-188-deg {.wind-rotate(188deg);}\n  &.towards-189-deg {.wind-rotate(189deg);}\n  &.towards-190-deg {.wind-rotate(190deg);}\n  &.towards-191-deg {.wind-rotate(191deg);}\n  &.towards-192-deg {.wind-rotate(192deg);}\n  &.towards-193-deg {.wind-rotate(193deg);}\n  &.towards-194-deg {.wind-rotate(194deg);}\n  &.towards-195-deg {.wind-rotate(195deg);}\n  &.towards-196-deg {.wind-rotate(196deg);}\n  &.towards-197-deg {.wind-rotate(197deg);}\n  &.towards-198-deg {.wind-rotate(198deg);}\n  &.towards-199-deg {.wind-rotate(199deg);}\n  &.towards-200-deg {.wind-rotate(200deg);}\n  &.towards-201-deg {.wind-rotate(201deg);}\n  &.towards-202-deg {.wind-rotate(202deg);}\n  &.towards-203-deg {.wind-rotate(203deg);}\n  &.towards-204-deg {.wind-rotate(204deg);}\n  &.towards-205-deg {.wind-rotate(205deg);}\n  &.towards-206-deg {.wind-rotate(206deg);}\n  &.towards-207-deg {.wind-rotate(207deg);}\n  &.towards-208-deg {.wind-rotate(208deg);}\n  &.towards-209-deg {.wind-rotate(209deg);}\n  &.towards-210-deg {.wind-rotate(210deg);}\n  &.towards-211-deg {.wind-rotate(211deg);}\n  &.towards-212-deg {.wind-rotate(212deg);}\n  &.towards-213-deg {.wind-rotate(213deg);}\n  &.towards-214-deg {.wind-rotate(214deg);}\n  &.towards-215-deg {.wind-rotate(215deg);}\n  &.towards-216-deg {.wind-rotate(216deg);}\n  &.towards-217-deg {.wind-rotate(217deg);}\n  &.towards-218-deg {.wind-rotate(218deg);}\n  &.towards-219-deg {.wind-rotate(219deg);}\n  &.towards-220-deg {.wind-rotate(220deg);}\n  &.towards-221-deg {.wind-rotate(221deg);}\n  &.towards-222-deg {.wind-rotate(222deg);}\n  &.towards-223-deg {.wind-rotate(223deg);}\n  &.towards-224-deg {.wind-rotate(224deg);}\n  &.towards-225-deg {.wind-rotate(225deg);}\n  &.towards-226-deg {.wind-rotate(226deg);}\n  &.towards-227-deg {.wind-rotate(227deg);}\n  &.towards-228-deg {.wind-rotate(228deg);}\n  &.towards-229-deg {.wind-rotate(229deg);}\n  &.towards-230-deg {.wind-rotate(230deg);}\n  &.towards-231-deg {.wind-rotate(231deg);}\n  &.towards-232-deg {.wind-rotate(232deg);}\n  &.towards-233-deg {.wind-rotate(233deg);}\n  &.towards-234-deg {.wind-rotate(234deg);}\n  &.towards-235-deg {.wind-rotate(235deg);}\n  &.towards-236-deg {.wind-rotate(236deg);}\n  &.towards-237-deg {.wind-rotate(237deg);}\n  &.towards-238-deg {.wind-rotate(238deg);}\n  &.towards-239-deg {.wind-rotate(239deg);}\n  &.towards-240-deg {.wind-rotate(240deg);}\n  &.towards-241-deg {.wind-rotate(241deg);}\n  &.towards-242-deg {.wind-rotate(242deg);}\n  &.towards-243-deg {.wind-rotate(243deg);}\n  &.towards-244-deg {.wind-rotate(244deg);}\n  &.towards-245-deg {.wind-rotate(245deg);}\n  &.towards-246-deg {.wind-rotate(246deg);}\n  &.towards-247-deg {.wind-rotate(247deg);}\n  &.towards-248-deg {.wind-rotate(248deg);}\n  &.towards-249-deg {.wind-rotate(249deg);}\n  &.towards-250-deg {.wind-rotate(250deg);}\n  &.towards-251-deg {.wind-rotate(251deg);}\n  &.towards-252-deg {.wind-rotate(252deg);}\n  &.towards-253-deg {.wind-rotate(253deg);}\n  &.towards-254-deg {.wind-rotate(254deg);}\n  &.towards-255-deg {.wind-rotate(255deg);}\n  &.towards-256-deg {.wind-rotate(256deg);}\n  &.towards-257-deg {.wind-rotate(257deg);}\n  &.towards-258-deg {.wind-rotate(258deg);}\n  &.towards-259-deg {.wind-rotate(259deg);}\n  &.towards-260-deg {.wind-rotate(260deg);}\n  &.towards-261-deg {.wind-rotate(261deg);}\n  &.towards-262-deg {.wind-rotate(262deg);}\n  &.towards-263-deg {.wind-rotate(263deg);}\n  &.towards-264-deg {.wind-rotate(264deg);}\n  &.towards-265-deg {.wind-rotate(265deg);}\n  &.towards-266-deg {.wind-rotate(266deg);}\n  &.towards-267-deg {.wind-rotate(267deg);}\n  &.towards-268-deg {.wind-rotate(268deg);}\n  &.towards-269-deg {.wind-rotate(269deg);}\n  &.towards-270-deg {.wind-rotate(270deg);}\n  &.towards-271-deg {.wind-rotate(271deg);}\n  &.towards-272-deg {.wind-rotate(272deg);}\n  &.towards-273-deg {.wind-rotate(273deg);}\n  &.towards-274-deg {.wind-rotate(274deg);}\n  &.towards-275-deg {.wind-rotate(275deg);}\n  &.towards-276-deg {.wind-rotate(276deg);}\n  &.towards-277-deg {.wind-rotate(277deg);}\n  &.towards-278-deg {.wind-rotate(278deg);}\n  &.towards-279-deg {.wind-rotate(279deg);}\n  &.towards-280-deg {.wind-rotate(280deg);}\n  &.towards-281-deg {.wind-rotate(281deg);}\n  &.towards-282-deg {.wind-rotate(282deg);}\n  &.towards-283-deg {.wind-rotate(283deg);}\n  &.towards-284-deg {.wind-rotate(284deg);}\n  &.towards-285-deg {.wind-rotate(285deg);}\n  &.towards-286-deg {.wind-rotate(286deg);}\n  &.towards-287-deg {.wind-rotate(287deg);}\n  &.towards-288-deg {.wind-rotate(288deg);}\n  &.towards-289-deg {.wind-rotate(289deg);}\n  &.towards-290-deg {.wind-rotate(290deg);}\n  &.towards-291-deg {.wind-rotate(291deg);}\n  &.towards-292-deg {.wind-rotate(292deg);}\n  &.towards-293-deg {.wind-rotate(293deg);}\n  &.towards-294-deg {.wind-rotate(294deg);}\n  &.towards-295-deg {.wind-rotate(295deg);}\n  &.towards-296-deg {.wind-rotate(296deg);}\n  &.towards-297-deg {.wind-rotate(297deg);}\n  &.towards-298-deg {.wind-rotate(298deg);}\n  &.towards-299-deg {.wind-rotate(299deg);}\n  &.towards-300-deg {.wind-rotate(300deg);}\n  &.towards-301-deg {.wind-rotate(301deg);}\n  &.towards-302-deg {.wind-rotate(302deg);}\n  &.towards-303-deg {.wind-rotate(303deg);}\n  &.towards-304-deg {.wind-rotate(304deg);}\n  &.towards-305-deg {.wind-rotate(305deg);}\n  &.towards-306-deg {.wind-rotate(306deg);}\n  &.towards-307-deg {.wind-rotate(307deg);}\n  &.towards-308-deg {.wind-rotate(308deg);}\n  &.towards-309-deg {.wind-rotate(309deg);}\n  &.towards-310-deg {.wind-rotate(310deg);}\n  &.towards-311-deg {.wind-rotate(311deg);}\n  &.towards-312-deg {.wind-rotate(312deg);}\n  &.towards-313-deg {.wind-rotate(313deg);}\n  &.towards-314-deg {.wind-rotate(314deg);}\n  &.towards-315-deg {.wind-rotate(315deg);}\n  &.towards-316-deg {.wind-rotate(316deg);}\n  &.towards-317-deg {.wind-rotate(317deg);}\n  &.towards-318-deg {.wind-rotate(318deg);}\n  &.towards-319-deg {.wind-rotate(319deg);}\n  &.towards-320-deg {.wind-rotate(320deg);}\n  &.towards-321-deg {.wind-rotate(321deg);}\n  &.towards-322-deg {.wind-rotate(322deg);}\n  &.towards-323-deg {.wind-rotate(323deg);}\n  &.towards-324-deg {.wind-rotate(324deg);}\n  &.towards-325-deg {.wind-rotate(325deg);}\n  &.towards-326-deg {.wind-rotate(326deg);}\n  &.towards-327-deg {.wind-rotate(327deg);}\n  &.towards-328-deg {.wind-rotate(328deg);}\n  &.towards-329-deg {.wind-rotate(329deg);}\n  &.towards-330-deg {.wind-rotate(330deg);}\n  &.towards-331-deg {.wind-rotate(331deg);}\n  &.towards-332-deg {.wind-rotate(332deg);}\n  &.towards-333-deg {.wind-rotate(333deg);}\n  &.towards-334-deg {.wind-rotate(334deg);}\n  &.towards-335-deg {.wind-rotate(335deg);}\n  &.towards-336-deg {.wind-rotate(336deg);}\n  &.towards-337-deg {.wind-rotate(337deg);}\n  &.towards-338-deg {.wind-rotate(338deg);}\n  &.towards-339-deg {.wind-rotate(339deg);}\n  &.towards-340-deg {.wind-rotate(340deg);}\n  &.towards-341-deg {.wind-rotate(341deg);}\n  &.towards-342-deg {.wind-rotate(342deg);}\n  &.towards-343-deg {.wind-rotate(343deg);}\n  &.towards-344-deg {.wind-rotate(344deg);}\n  &.towards-345-deg {.wind-rotate(345deg);}\n  &.towards-346-deg {.wind-rotate(346deg);}\n  &.towards-347-deg {.wind-rotate(347deg);}\n  &.towards-348-deg {.wind-rotate(348deg);}\n  &.towards-349-deg {.wind-rotate(349deg);}\n  &.towards-350-deg {.wind-rotate(350deg);}\n  &.towards-351-deg {.wind-rotate(351deg);}\n  &.towards-352-deg {.wind-rotate(352deg);}\n  &.towards-353-deg {.wind-rotate(353deg);}\n  &.towards-354-deg {.wind-rotate(354deg);}\n  &.towards-355-deg {.wind-rotate(355deg);}\n  &.towards-356-deg {.wind-rotate(356deg);}\n  &.towards-357-deg {.wind-rotate(357deg);}\n  &.towards-358-deg {.wind-rotate(358deg);}\n  &.towards-359-deg {.wind-rotate(359deg);}\n  &.towards-360-deg {.wind-rotate(0deg);}\n  &.from-0-deg {.wind-rotate(180deg);}\n  &.from-1-deg {.wind-rotate(181deg);}\n  &.from-2-deg {.wind-rotate(182deg);}\n  &.from-3-deg {.wind-rotate(183deg);}\n  &.from-4-deg {.wind-rotate(184deg);}\n  &.from-5-deg {.wind-rotate(185deg);}\n  &.from-6-deg {.wind-rotate(186deg);}\n  &.from-7-deg {.wind-rotate(187deg);}\n  &.from-8-deg {.wind-rotate(188deg);}\n  &.from-9-deg {.wind-rotate(189deg);}\n  &.from-10-deg {.wind-rotate(190deg);}\n  &.from-11-deg {.wind-rotate(191deg);}\n  &.from-12-deg {.wind-rotate(192deg);}\n  &.from-13-deg {.wind-rotate(193deg);}\n  &.from-14-deg {.wind-rotate(194deg);}\n  &.from-15-deg {.wind-rotate(195deg);}\n  &.from-16-deg {.wind-rotate(196deg);}\n  &.from-17-deg {.wind-rotate(197deg);}\n  &.from-18-deg {.wind-rotate(198deg);}\n  &.from-19-deg {.wind-rotate(199deg);}\n  &.from-20-deg {.wind-rotate(200deg);}\n  &.from-21-deg {.wind-rotate(201deg);}\n  &.from-22-deg {.wind-rotate(202deg);}\n  &.from-23-deg {.wind-rotate(203deg);}\n  &.from-24-deg {.wind-rotate(204deg);}\n  &.from-25-deg {.wind-rotate(205deg);}\n  &.from-26-deg {.wind-rotate(206deg);}\n  &.from-27-deg {.wind-rotate(207deg);}\n  &.from-28-deg {.wind-rotate(208deg);}\n  &.from-29-deg {.wind-rotate(209deg);}\n  &.from-30-deg {.wind-rotate(210deg);}\n  &.from-31-deg {.wind-rotate(211deg);}\n  &.from-32-deg {.wind-rotate(212deg);}\n  &.from-33-deg {.wind-rotate(213deg);}\n  &.from-34-deg {.wind-rotate(214deg);}\n  &.from-35-deg {.wind-rotate(215deg);}\n  &.from-36-deg {.wind-rotate(216deg);}\n  &.from-37-deg {.wind-rotate(217deg);}\n  &.from-38-deg {.wind-rotate(218deg);}\n  &.from-39-deg {.wind-rotate(219deg);}\n  &.from-40-deg {.wind-rotate(220deg);}\n  &.from-41-deg {.wind-rotate(221deg);}\n  &.from-42-deg {.wind-rotate(222deg);}\n  &.from-43-deg {.wind-rotate(223deg);}\n  &.from-44-deg {.wind-rotate(224deg);}\n  &.from-45-deg {.wind-rotate(225deg);}\n  &.from-46-deg {.wind-rotate(226deg);}\n  &.from-47-deg {.wind-rotate(227deg);}\n  &.from-48-deg {.wind-rotate(228deg);}\n  &.from-49-deg {.wind-rotate(229deg);}\n  &.from-50-deg {.wind-rotate(230deg);}\n  &.from-51-deg {.wind-rotate(231deg);}\n  &.from-52-deg {.wind-rotate(232deg);}\n  &.from-53-deg {.wind-rotate(233deg);}\n  &.from-54-deg {.wind-rotate(234deg);}\n  &.from-55-deg {.wind-rotate(235deg);}\n  &.from-56-deg {.wind-rotate(236deg);}\n  &.from-57-deg {.wind-rotate(237deg);}\n  &.from-58-deg {.wind-rotate(238deg);}\n  &.from-59-deg {.wind-rotate(239deg);}\n  &.from-60-deg {.wind-rotate(240deg);}\n  &.from-61-deg {.wind-rotate(241deg);}\n  &.from-62-deg {.wind-rotate(242deg);}\n  &.from-63-deg {.wind-rotate(243deg);}\n  &.from-64-deg {.wind-rotate(244deg);}\n  &.from-65-deg {.wind-rotate(245deg);}\n  &.from-66-deg {.wind-rotate(246deg);}\n  &.from-67-deg {.wind-rotate(247deg);}\n  &.from-68-deg {.wind-rotate(248deg);}\n  &.from-69-deg {.wind-rotate(249deg);}\n  &.from-70-deg {.wind-rotate(250deg);}\n  &.from-71-deg {.wind-rotate(251deg);}\n  &.from-72-deg {.wind-rotate(252deg);}\n  &.from-73-deg {.wind-rotate(253deg);}\n  &.from-74-deg {.wind-rotate(254deg);}\n  &.from-75-deg {.wind-rotate(255deg);}\n  &.from-76-deg {.wind-rotate(256deg);}\n  &.from-77-deg {.wind-rotate(257deg);}\n  &.from-78-deg {.wind-rotate(258deg);}\n  &.from-79-deg {.wind-rotate(259deg);}\n  &.from-80-deg {.wind-rotate(260deg);}\n  &.from-81-deg {.wind-rotate(261deg);}\n  &.from-82-deg {.wind-rotate(262deg);}\n  &.from-83-deg {.wind-rotate(263deg);}\n  &.from-84-deg {.wind-rotate(264deg);}\n  &.from-85-deg {.wind-rotate(265deg);}\n  &.from-86-deg {.wind-rotate(266deg);}\n  &.from-87-deg {.wind-rotate(267deg);}\n  &.from-88-deg {.wind-rotate(268deg);}\n  &.from-89-deg {.wind-rotate(269deg);}\n  &.from-90-deg {.wind-rotate(270deg);}\n  &.from-91-deg {.wind-rotate(271deg);}\n  &.from-92-deg {.wind-rotate(272deg);}\n  &.from-93-deg {.wind-rotate(273deg);}\n  &.from-94-deg {.wind-rotate(274deg);}\n  &.from-95-deg {.wind-rotate(275deg);}\n  &.from-96-deg {.wind-rotate(276deg);}\n  &.from-97-deg {.wind-rotate(277deg);}\n  &.from-98-deg {.wind-rotate(278deg);}\n  &.from-99-deg {.wind-rotate(279deg);}\n  &.from-100-deg {.wind-rotate(280deg);}\n  &.from-101-deg {.wind-rotate(281deg);}\n  &.from-102-deg {.wind-rotate(282deg);}\n  &.from-103-deg {.wind-rotate(283deg);}\n  &.from-104-deg {.wind-rotate(284deg);}\n  &.from-105-deg {.wind-rotate(285deg);}\n  &.from-106-deg {.wind-rotate(286deg);}\n  &.from-107-deg {.wind-rotate(287deg);}\n  &.from-108-deg {.wind-rotate(288deg);}\n  &.from-109-deg {.wind-rotate(289deg);}\n  &.from-110-deg {.wind-rotate(290deg);}\n  &.from-111-deg {.wind-rotate(291deg);}\n  &.from-112-deg {.wind-rotate(292deg);}\n  &.from-113-deg {.wind-rotate(293deg);}\n  &.from-114-deg {.wind-rotate(294deg);}\n  &.from-115-deg {.wind-rotate(295deg);}\n  &.from-116-deg {.wind-rotate(296deg);}\n  &.from-117-deg {.wind-rotate(297deg);}\n  &.from-118-deg {.wind-rotate(298deg);}\n  &.from-119-deg {.wind-rotate(299deg);}\n  &.from-120-deg {.wind-rotate(300deg);}\n  &.from-121-deg {.wind-rotate(301deg);}\n  &.from-122-deg {.wind-rotate(302deg);}\n  &.from-123-deg {.wind-rotate(303deg);}\n  &.from-124-deg {.wind-rotate(304deg);}\n  &.from-125-deg {.wind-rotate(305deg);}\n  &.from-126-deg {.wind-rotate(306deg);}\n  &.from-127-deg {.wind-rotate(307deg);}\n  &.from-128-deg {.wind-rotate(308deg);}\n  &.from-129-deg {.wind-rotate(309deg);}\n  &.from-130-deg {.wind-rotate(310deg);}\n  &.from-131-deg {.wind-rotate(311deg);}\n  &.from-132-deg {.wind-rotate(312deg);}\n  &.from-133-deg {.wind-rotate(313deg);}\n  &.from-134-deg {.wind-rotate(314deg);}\n  &.from-135-deg {.wind-rotate(315deg);}\n  &.from-136-deg {.wind-rotate(316deg);}\n  &.from-137-deg {.wind-rotate(317deg);}\n  &.from-138-deg {.wind-rotate(318deg);}\n  &.from-139-deg {.wind-rotate(319deg);}\n  &.from-140-deg {.wind-rotate(320deg);}\n  &.from-141-deg {.wind-rotate(321deg);}\n  &.from-142-deg {.wind-rotate(322deg);}\n  &.from-143-deg {.wind-rotate(323deg);}\n  &.from-144-deg {.wind-rotate(324deg);}\n  &.from-145-deg {.wind-rotate(325deg);}\n  &.from-146-deg {.wind-rotate(326deg);}\n  &.from-147-deg {.wind-rotate(327deg);}\n  &.from-148-deg {.wind-rotate(328deg);}\n  &.from-149-deg {.wind-rotate(329deg);}\n  &.from-150-deg {.wind-rotate(330deg);}\n  &.from-151-deg {.wind-rotate(331deg);}\n  &.from-152-deg {.wind-rotate(332deg);}\n  &.from-153-deg {.wind-rotate(333deg);}\n  &.from-154-deg {.wind-rotate(334deg);}\n  &.from-155-deg {.wind-rotate(335deg);}\n  &.from-156-deg {.wind-rotate(336deg);}\n  &.from-157-deg {.wind-rotate(337deg);}\n  &.from-158-deg {.wind-rotate(338deg);}\n  &.from-159-deg {.wind-rotate(339deg);}\n  &.from-160-deg {.wind-rotate(340deg);}\n  &.from-161-deg {.wind-rotate(341deg);}\n  &.from-162-deg {.wind-rotate(342deg);}\n  &.from-163-deg {.wind-rotate(343deg);}\n  &.from-164-deg {.wind-rotate(344deg);}\n  &.from-165-deg {.wind-rotate(345deg);}\n  &.from-166-deg {.wind-rotate(346deg);}\n  &.from-167-deg {.wind-rotate(347deg);}\n  &.from-168-deg {.wind-rotate(348deg);}\n  &.from-169-deg {.wind-rotate(349deg);}\n  &.from-170-deg {.wind-rotate(350deg);}\n  &.from-171-deg {.wind-rotate(351deg);}\n  &.from-172-deg {.wind-rotate(352deg);}\n  &.from-173-deg {.wind-rotate(353deg);}\n  &.from-174-deg {.wind-rotate(354deg);}\n  &.from-175-deg {.wind-rotate(355deg);}\n  &.from-176-deg {.wind-rotate(356deg);}\n  &.from-177-deg {.wind-rotate(357deg);}\n  &.from-178-deg {.wind-rotate(358deg);}\n  &.from-179-deg {.wind-rotate(359deg);}\n  &.from-180-deg {.wind-rotate(0deg);}\n  &.from-181-deg {.wind-rotate(1deg);}\n  &.from-182-deg {.wind-rotate(2deg);}\n  &.from-183-deg {.wind-rotate(3deg);}\n  &.from-184-deg {.wind-rotate(4deg);}\n  &.from-185-deg {.wind-rotate(5deg);}\n  &.from-186-deg {.wind-rotate(6deg);}\n  &.from-187-deg {.wind-rotate(7deg);}\n  &.from-188-deg {.wind-rotate(8deg);}\n  &.from-189-deg {.wind-rotate(9deg);}\n  &.from-190-deg {.wind-rotate(10deg);}\n  &.from-191-deg {.wind-rotate(11deg);}\n  &.from-192-deg {.wind-rotate(12deg);}\n  &.from-193-deg {.wind-rotate(13deg);}\n  &.from-194-deg {.wind-rotate(14deg);}\n  &.from-195-deg {.wind-rotate(15deg);}\n  &.from-196-deg {.wind-rotate(16deg);}\n  &.from-197-deg {.wind-rotate(17deg);}\n  &.from-198-deg {.wind-rotate(18deg);}\n  &.from-199-deg {.wind-rotate(19deg);}\n  &.from-200-deg {.wind-rotate(20deg);}\n  &.from-201-deg {.wind-rotate(21deg);}\n  &.from-202-deg {.wind-rotate(22deg);}\n  &.from-203-deg {.wind-rotate(23deg);}\n  &.from-204-deg {.wind-rotate(24deg);}\n  &.from-205-deg {.wind-rotate(25deg);}\n  &.from-206-deg {.wind-rotate(26deg);}\n  &.from-207-deg {.wind-rotate(27deg);}\n  &.from-208-deg {.wind-rotate(28deg);}\n  &.from-209-deg {.wind-rotate(29deg);}\n  &.from-210-deg {.wind-rotate(30deg);}\n  &.from-211-deg {.wind-rotate(31deg);}\n  &.from-212-deg {.wind-rotate(32deg);}\n  &.from-213-deg {.wind-rotate(33deg);}\n  &.from-214-deg {.wind-rotate(34deg);}\n  &.from-215-deg {.wind-rotate(35deg);}\n  &.from-216-deg {.wind-rotate(36deg);}\n  &.from-217-deg {.wind-rotate(37deg);}\n  &.from-218-deg {.wind-rotate(38deg);}\n  &.from-219-deg {.wind-rotate(39deg);}\n  &.from-220-deg {.wind-rotate(40deg);}\n  &.from-221-deg {.wind-rotate(41deg);}\n  &.from-222-deg {.wind-rotate(42deg);}\n  &.from-223-deg {.wind-rotate(43deg);}\n  &.from-224-deg {.wind-rotate(44deg);}\n  &.from-225-deg {.wind-rotate(45deg);}\n  &.from-226-deg {.wind-rotate(46deg);}\n  &.from-227-deg {.wind-rotate(47deg);}\n  &.from-228-deg {.wind-rotate(48deg);}\n  &.from-229-deg {.wind-rotate(49deg);}\n  &.from-230-deg {.wind-rotate(50deg);}\n  &.from-231-deg {.wind-rotate(51deg);}\n  &.from-232-deg {.wind-rotate(52deg);}\n  &.from-233-deg {.wind-rotate(53deg);}\n  &.from-234-deg {.wind-rotate(54deg);}\n  &.from-235-deg {.wind-rotate(55deg);}\n  &.from-236-deg {.wind-rotate(56deg);}\n  &.from-237-deg {.wind-rotate(57deg);}\n  &.from-238-deg {.wind-rotate(58deg);}\n  &.from-239-deg {.wind-rotate(59deg);}\n  &.from-240-deg {.wind-rotate(60deg);}\n  &.from-241-deg {.wind-rotate(61deg);}\n  &.from-242-deg {.wind-rotate(62deg);}\n  &.from-243-deg {.wind-rotate(63deg);}\n  &.from-244-deg {.wind-rotate(64deg);}\n  &.from-245-deg {.wind-rotate(65deg);}\n  &.from-246-deg {.wind-rotate(66deg);}\n  &.from-247-deg {.wind-rotate(67deg);}\n  &.from-248-deg {.wind-rotate(68deg);}\n  &.from-249-deg {.wind-rotate(69deg);}\n  &.from-250-deg {.wind-rotate(70deg);}\n  &.from-251-deg {.wind-rotate(71deg);}\n  &.from-252-deg {.wind-rotate(72deg);}\n  &.from-253-deg {.wind-rotate(73deg);}\n  &.from-254-deg {.wind-rotate(74deg);}\n  &.from-255-deg {.wind-rotate(75deg);}\n  &.from-256-deg {.wind-rotate(76deg);}\n  &.from-257-deg {.wind-rotate(77deg);}\n  &.from-258-deg {.wind-rotate(78deg);}\n  &.from-259-deg {.wind-rotate(79deg);}\n  &.from-260-deg {.wind-rotate(80deg);}\n  &.from-261-deg {.wind-rotate(81deg);}\n  &.from-262-deg {.wind-rotate(82deg);}\n  &.from-263-deg {.wind-rotate(83deg);}\n  &.from-264-deg {.wind-rotate(84deg);}\n  &.from-265-deg {.wind-rotate(85deg);}\n  &.from-266-deg {.wind-rotate(86deg);}\n  &.from-267-deg {.wind-rotate(87deg);}\n  &.from-268-deg {.wind-rotate(88deg);}\n  &.from-269-deg {.wind-rotate(89deg);}\n  &.from-270-deg {.wind-rotate(90deg);}\n  &.from-271-deg {.wind-rotate(91deg);}\n  &.from-272-deg {.wind-rotate(92deg);}\n  &.from-273-deg {.wind-rotate(93deg);}\n  &.from-274-deg {.wind-rotate(94deg);}\n  &.from-275-deg {.wind-rotate(95deg);}\n  &.from-276-deg {.wind-rotate(96deg);}\n  &.from-277-deg {.wind-rotate(97deg);}\n  &.from-278-deg {.wind-rotate(98deg);}\n  &.from-279-deg {.wind-rotate(99deg);}\n  &.from-280-deg {.wind-rotate(100deg);}\n  &.from-281-deg {.wind-rotate(101deg);}\n  &.from-282-deg {.wind-rotate(102deg);}\n  &.from-283-deg {.wind-rotate(103deg);}\n  &.from-284-deg {.wind-rotate(104deg);}\n  &.from-285-deg {.wind-rotate(105deg);}\n  &.from-286-deg {.wind-rotate(106deg);}\n  &.from-287-deg {.wind-rotate(107deg);}\n  &.from-288-deg {.wind-rotate(108deg);}\n  &.from-289-deg {.wind-rotate(109deg);}\n  &.from-290-deg {.wind-rotate(110deg);}\n  &.from-291-deg {.wind-rotate(111deg);}\n  &.from-292-deg {.wind-rotate(112deg);}\n  &.from-293-deg {.wind-rotate(113deg);}\n  &.from-294-deg {.wind-rotate(114deg);}\n  &.from-295-deg {.wind-rotate(115deg);}\n  &.from-296-deg {.wind-rotate(116deg);}\n  &.from-297-deg {.wind-rotate(117deg);}\n  &.from-298-deg {.wind-rotate(118deg);}\n  &.from-299-deg {.wind-rotate(119deg);}\n  &.from-300-deg {.wind-rotate(120deg);}\n  &.from-301-deg {.wind-rotate(121deg);}\n  &.from-302-deg {.wind-rotate(122deg);}\n  &.from-303-deg {.wind-rotate(123deg);}\n  &.from-304-deg {.wind-rotate(124deg);}\n  &.from-305-deg {.wind-rotate(125deg);}\n  &.from-306-deg {.wind-rotate(126deg);}\n  &.from-307-deg {.wind-rotate(127deg);}\n  &.from-308-deg {.wind-rotate(128deg);}\n  &.from-309-deg {.wind-rotate(129deg);}\n  &.from-310-deg {.wind-rotate(130deg);}\n  &.from-311-deg {.wind-rotate(131deg);}\n  &.from-312-deg {.wind-rotate(132deg);}\n  &.from-313-deg {.wind-rotate(133deg);}\n  &.from-314-deg {.wind-rotate(134deg);}\n  &.from-315-deg {.wind-rotate(135deg);}\n  &.from-316-deg {.wind-rotate(136deg);}\n  &.from-317-deg {.wind-rotate(137deg);}\n  &.from-318-deg {.wind-rotate(138deg);}\n  &.from-319-deg {.wind-rotate(139deg);}\n  &.from-320-deg {.wind-rotate(140deg);}\n  &.from-321-deg {.wind-rotate(141deg);}\n  &.from-322-deg {.wind-rotate(142deg);}\n  &.from-323-deg {.wind-rotate(143deg);}\n  &.from-324-deg {.wind-rotate(144deg);}\n  &.from-325-deg {.wind-rotate(145deg);}\n  &.from-326-deg {.wind-rotate(146deg);}\n  &.from-327-deg {.wind-rotate(147deg);}\n  &.from-328-deg {.wind-rotate(148deg);}\n  &.from-329-deg {.wind-rotate(149deg);}\n  &.from-330-deg {.wind-rotate(150deg);}\n  &.from-331-deg {.wind-rotate(151deg);}\n  &.from-332-deg {.wind-rotate(152deg);}\n  &.from-333-deg {.wind-rotate(153deg);}\n  &.from-334-deg {.wind-rotate(154deg);}\n  &.from-335-deg {.wind-rotate(155deg);}\n  &.from-336-deg {.wind-rotate(156deg);}\n  &.from-337-deg {.wind-rotate(157deg);}\n  &.from-338-deg {.wind-rotate(158deg);}\n  &.from-339-deg {.wind-rotate(159deg);}\n  &.from-340-deg {.wind-rotate(160deg);}\n  &.from-341-deg {.wind-rotate(161deg);}\n  &.from-342-deg {.wind-rotate(162deg);}\n  &.from-343-deg {.wind-rotate(163deg);}\n  &.from-344-deg {.wind-rotate(164deg);}\n  &.from-345-deg {.wind-rotate(165deg);}\n  &.from-346-deg {.wind-rotate(166deg);}\n  &.from-347-deg {.wind-rotate(167deg);}\n  &.from-348-deg {.wind-rotate(168deg);}\n  &.from-349-deg {.wind-rotate(169deg);}\n  &.from-350-deg {.wind-rotate(170deg);}\n  &.from-351-deg {.wind-rotate(171deg);}\n  &.from-352-deg {.wind-rotate(172deg);}\n  &.from-353-deg {.wind-rotate(173deg);}\n  &.from-354-deg {.wind-rotate(174deg);}\n  &.from-355-deg {.wind-rotate(175deg);}\n  &.from-356-deg {.wind-rotate(176deg);}\n  &.from-357-deg {.wind-rotate(177deg);}\n  &.from-358-deg {.wind-rotate(178deg);}\n  &.from-359-deg {.wind-rotate(179deg);}\n  &.from-360-deg {.wind-rotate(180deg);} \n}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-classes/classes-wind.less",
    "content": "// Wind Variables 2.0\n\n@wind: \"\\f0b1\";\n\n.@{wi-css-prefix}-wind:before { content: @wind; }\n.wind-rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n  -moz-transform: rotate(@degrees);\n  -ms-transform: rotate(@degrees);\n  -o-transform: rotate(@degrees);\n  transform: rotate(@degrees);\n}\n\n@import \"classes-wind-degrees.less\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-beaufort.less",
    "content": "@wind-beaufort-0: \"\\f0b7\";\n@wind-beaufort-1: \"\\f0b8\";\n@wind-beaufort-2: \"\\f0b9\";\n@wind-beaufort-3: \"\\f0ba\";\n@wind-beaufort-4: \"\\f0bb\";\n@wind-beaufort-5: \"\\f0bc\";\n@wind-beaufort-6: \"\\f0bd\";\n@wind-beaufort-7: \"\\f0be\";\n@wind-beaufort-8: \"\\f0bf\";\n@wind-beaufort-9: \"\\f0c0\";\n@wind-beaufort-10: \"\\f0c1\";\n@wind-beaufort-11: \"\\f0c2\";\n@wind-beaufort-12: \"\\f0c3\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-day.less",
    "content": "@day-sunny: \"\\f00d\";\n@day-cloudy: \"\\f002\";\n@day-cloudy-gusts: \"\\f000\";\n@day-cloudy-windy: \"\\f001\";\n@day-fog: \"\\f003\";\n@day-hail: \"\\f004\";\n@day-haze: \"\\f0b6\";\n@day-lightning: \"\\f005\";\n@day-rain: \"\\f008\";\n@day-rain-mix: \"\\f006\";\n@day-rain-wind: \"\\f007\";\n@day-showers: \"\\f009\";\n@day-sleet: \"\\f0b2\";\n@day-sleet-storm: \"\\f068\";\n@day-snow: \"\\f00a\";\n@day-snow-thunderstorm: \"\\f06b\";\n@day-snow-wind: \"\\f065\";\n@day-sprinkle: \"\\f00b\";\n@day-storm-showers: \"\\f00e\";\n@day-sunny-overcast: \"\\f00c\";\n@day-thunderstorm: \"\\f010\";\n@day-windy: \"\\f085\";\n@solar-eclipse: \"\\f06e\";\n@hot: \"\\f072\";\n@day-cloudy-high: \"\\f07d\";\n@day-light-wind: \"\\f0c4\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-direction.less",
    "content": "@direction-up: \"\\f058\";\n@direction-up-right: \"\\f057\";\n@direction-right: \"\\f04d\";\n@direction-down-right: \"\\f088\";\n@direction-down: \"\\f044\";\n@direction-down-left: \"\\f043\";\n@direction-left: \"\\f048\";\n@direction-up-left: \"\\f087\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-misc.less",
    "content": "@alien: \"\\f075\";\n@celsius: \"\\f03c\";\n@fahrenheit: \"\\f045\";\n@degrees: \"\\f042\";\n@thermometer: \"\\f055\";\n@thermometer-exterior: \"\\f053\";\n@thermometer-internal: \"\\f054\";\n@cloud-down: \"\\f03d\";\n@cloud-up: \"\\f040\";\n@cloud-refresh: \"\\f03e\";\n@horizon: \"\\f047\";\n@horizon-alt: \"\\f046\";\n@sunrise: \"\\f051\";\n@sunset: \"\\f052\";\n@moonrise: \"\\f0c9\";\n@moonset: \"\\f0ca\";\n@refresh: \"\\f04c\";\n@refresh-alt: \"\\f04b\";\n@umbrella: \"\\f084\";\n@barometer: \"\\f079\";\n@humidity: \"\\f07a\";\n@na: \"\\f07b\";\n@train: \"\\f0cb\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-moon.less",
    "content": "@moon-new: \"\\f095\";\n@moon-waxing-cresent-1: \"\\f096\";\n@moon-waxing-cresent-2: \"\\f097\";\n@moon-waxing-cresent-3: \"\\f098\";\n@moon-waxing-cresent-4: \"\\f099\";\n@moon-waxing-cresent-5: \"\\f09a\";\n@moon-waxing-cresent-6: \"\\f09b\";\n@moon-first-quarter: \"\\f09c\";\n@moon-waxing-gibbous-1: \"\\f09d\";\n@moon-waxing-gibbous-2: \"\\f09e\";\n@moon-waxing-gibbous-3: \"\\f09f\";\n@moon-waxing-gibbous-4: \"\\f0a0\";\n@moon-waxing-gibbous-5: \"\\f0a1\";\n@moon-waxing-gibbous-6: \"\\f0a2\";\n@moon-full: \"\\f0a3\";\n@moon-waning-gibbous-1: \"\\f0a4\";\n@moon-waning-gibbous-2: \"\\f0a5\";\n@moon-waning-gibbous-3: \"\\f0a6\";\n@moon-waning-gibbous-4: \"\\f0a7\";\n@moon-waning-gibbous-5: \"\\f0a8\";\n@moon-waning-gibbous-6: \"\\f0a9\";\n@moon-third-quarter: \"\\f0aa\";\n@moon-waning-crescent-1: \"\\f0ab\";\n@moon-waning-crescent-2: \"\\f0ac\";\n@moon-waning-crescent-3: \"\\f0ad\";\n@moon-waning-crescent-4: \"\\f0ae\";\n@moon-waning-crescent-5: \"\\f0af\";\n@moon-waning-crescent-6: \"\\f0b0\";\n@moon-alt-new: \"\\f0eb\";\n@moon-alt-waxing-cresent-1: \"\\f0d0\";\n@moon-alt-waxing-cresent-2: \"\\f0d1\";\n@moon-alt-waxing-cresent-3: \"\\f0d2\";\n@moon-alt-waxing-cresent-4: \"\\f0d3\";\n@moon-alt-waxing-cresent-5: \"\\f0d4\";\n@moon-alt-waxing-cresent-6: \"\\f0d5\";\n@moon-alt-first-quarter: \"\\f0d6\";\n@moon-alt-waxing-gibbous-1: \"\\f0d7\";\n@moon-alt-waxing-gibbous-2: \"\\f0d8\";\n@moon-alt-waxing-gibbous-3: \"\\f0d9\";\n@moon-alt-waxing-gibbous-4: \"\\f0da\";\n@moon-alt-waxing-gibbous-5: \"\\f0db\";\n@moon-alt-waxing-gibbous-6: \"\\f0dc\";\n@moon-alt-full: \"\\f0dd\";\n@moon-alt-waning-gibbous-1: \"\\f0de\";\n@moon-alt-waning-gibbous-2: \"\\f0df\";\n@moon-alt-waning-gibbous-3: \"\\f0e0\";\n@moon-alt-waning-gibbous-4: \"\\f0e1\";\n@moon-alt-waning-gibbous-5: \"\\f0e2\";\n@moon-alt-waning-gibbous-6: \"\\f0e3\";\n@moon-alt-third-quarter: \"\\f0e4\";\n@moon-alt-waning-crescent-1: \"\\f0e5\";\n@moon-alt-waning-crescent-2: \"\\f0e6\";\n@moon-alt-waning-crescent-3: \"\\f0e7\";\n@moon-alt-waning-crescent-4: \"\\f0e8\";\n@moon-alt-waning-crescent-5: \"\\f0e9\";\n@moon-alt-waning-crescent-6: \"\\f0ea\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-neutral.less",
    "content": "@cloud: \"\\f041\";\n@cloudy: \"\\f013\";\n@cloudy-gusts: \"\\f011\";\n@cloudy-windy: \"\\f012\";\n@fog: \"\\f014\";\n@hail: \"\\f015\";\n@rain: \"\\f019\";\n@rain-mix: \"\\f017\";\n@rain-wind: \"\\f018\";\n@showers: \"\\f01a\";\n@sleet: \"\\f0b5\";\n@snow: \"\\f01b\";\n@sprinkle: \"\\f01c\";\n@storm-showers: \"\\f01d\";\n@thunderstorm: \"\\f01e\";\n@snow-wind: \"\\f064\";\n@snow: \"\\f01b\";\n@smog: \"\\f074\";\n@smoke: \"\\f062\";\n@lightning: \"\\f016\";\n@raindrops: \"\\f04e\";\n@raindrop: \"\\f078\";\n@dust: \"\\f063\";\n@snowflake-cold: \"\\f076\";\n@windy: \"\\f021\";\n@strong-wind: \"\\f050\";\n@sandstorm: \"\\f082\";\n@earthquake: \"\\f0c6\";\n@fire: \"\\f0c7\";\n@flood: \"\\f07c\";\n@meteor: \"\\f071\";\n@tsunami: \"\\f0c5\";\n@volcano: \"\\f0c8\";\n@hurricane: \"\\f073\";\n@tornado: \"\\f056\";\n@small-craft-advisory: \"\\f0cc\";\n@gale-warning: \"\\f0cd\";\n@storm-warning: \"\\f0ce\";\n@hurricane-warning: \"\\f0cf\";\n@wind-direction: \"\\f0b1\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-night.less",
    "content": "@night-clear: \"\\f02e\";\n@night-alt-cloudy: \"\\f086\";\n@night-alt-cloudy-gusts: \"\\f022\";\n@night-alt-cloudy-windy: \"\\f023\";\n@night-alt-hail: \"\\f024\";\n@night-alt-lightning: \"\\f025\";\n@night-alt-rain: \"\\f028\";\n@night-alt-rain-mix: \"\\f026\";\n@night-alt-rain-wind: \"\\f027\";\n@night-alt-showers: \"\\f029\";\n@night-alt-sleet: \"\\f0b4\";\n@night-alt-sleet-storm: \"\\f06a\";\n@night-alt-snow: \"\\f02a\";\n@night-alt-snow-thunderstorm: \"\\f06d\";\n@night-alt-snow-wind: \"\\f067\";\n@night-alt-sprinkle: \"\\f02b\";\n@night-alt-storm-showers: \"\\f02c\";\n@night-alt-thunderstorm: \"\\f02d\";\n@night-cloudy: \"\\f031\";\n@night-cloudy-gusts: \"\\f02f\";\n@night-cloudy-windy: \"\\f030\";\n@night-fog: \"\\f04a\";\n@night-hail: \"\\f032\";\n@night-lightning: \"\\f033\";\n@night-partly-cloudy: \"\\f083\";\n@night-rain: \"\\f036\";\n@night-rain-mix: \"\\f034\";\n@night-rain-wind: \"\\f035\";\n@night-showers: \"\\f037\";\n@night-sleet: \"\\f0b3\";\n@night-sleet-storm: \"\\f069\";\n@night-snow: \"\\f038\";\n@night-snow-thunderstorm: \"\\f06c\";\n@night-snow-wind: \"\\f066\";\n@night-sprinkle: \"\\f039\";\n@night-storm-showers: \"\\f03a\";\n@night-thunderstorm: \"\\f03b\";\n@lunar-eclipse: \"\\f070\";\n@stars: \"\\f077\";\n@storm-showers: \"\\f01d\";\n@thunderstorm: \"\\f01e\";\n@night-alt-cloudy-high: \"\\f07e\";\n@night-cloudy-high: \"\\f080\";\n@night-alt-partly-cloudy: \"\\f081\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-time.less",
    "content": "@time-1: \"\\f08a\";\n@time-2: \"\\f08b\";\n@time-3: \"\\f08c\";\n@time-4: \"\\f08d\";\n@time-5: \"\\f08e\";\n@time-6: \"\\f08f\";\n@time-7: \"\\f090\";\n@time-8: \"\\f091\";\n@time-9: \"\\f092\";\n@time-10: \"\\f093\";\n@time-11: \"\\f094\";\n@time-12: \"\\f089\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/icon-variables/variables-wind-names.less",
    "content": "@n: \"\\f0b1\";\n@nne: \"\\f0b1\";\n@ne: \"\\f0b1\";\n@ene: \"\\f0b1\";\n@e: \"\\f0b1\";\n@ese: \"\\f0b1\";\n@se: \"\\f0b1\";\n@sse: \"\\f0b1\";\n@s: \"\\f0b1\";\n@ssw: \"\\f0b1\";\n@sw: \"\\f0b1\";\n@wsw: \"\\f0b1\";\n@w: \"\\f0b1\";\n@wnw: \"\\f0b1\";\n@nw: \"\\f0b1\";\n@nnw: \"\\f0b1\";\n@n: \"\\f0b1\";\n@nne: \"\\f0b1\";\n@ne: \"\\f0b1\";\n@ene: \"\\f0b1\";\n@e: \"\\f0b1\";\n@ese: \"\\f0b1\";\n@se: \"\\f0b1\";\n@sse: \"\\f0b1\";\n@s: \"\\f0b1\";\n@ssw: \"\\f0b1\";\n@sw: \"\\f0b1\";\n@wsw: \"\\f0b1\";\n@w: \"\\f0b1\";\n@wnw: \"\\f0b1\";\n@nw: \"\\f0b1\";\n@nnw: \"\\f0b1\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/mappings/wi-forecast-io.less",
    "content": ".@{wi-css-prefix}-forecast-io-clear-day:before            { content: @day-sunny     ; }\n.@{wi-css-prefix}-forecast-io-clear-night:before          { content: @night-clear   ; }\n.@{wi-css-prefix}-forecast-io-rain:before                 { content: @rain          ; }\n.@{wi-css-prefix}-forecast-io-snow:before                 { content: @snow          ; }\n.@{wi-css-prefix}-forecast-io-sleet:before                { content: @sleet         ; }\n.@{wi-css-prefix}-forecast-io-wind:before                 { content: @strong-wind   ; }\n.@{wi-css-prefix}-forecast-io-fog:before                  { content: @fog           ; }\n.@{wi-css-prefix}-forecast-io-cloudy:before               { content: @cloudy        ; }\n.@{wi-css-prefix}-forecast-io-partly-cloudy-day:before    { content: @day-cloudy    ; }\n.@{wi-css-prefix}-forecast-io-partly-cloudy-night:before  { content: @night-cloudy  ; }\n.@{wi-css-prefix}-forecast-io-hail:before                 { content: @hail          ; }\n.@{wi-css-prefix}-forecast-io-thunderstorm:before         { content: @thunderstorm  ; }\n.@{wi-css-prefix}-forecast-io-tornado:before              { content: @tornado       ; }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/mappings/wi-owm.less",
    "content": "// Neutral\n    .@{wi-css-prefix}-owm-200:before                            { content: @thunderstorm                ; }\n    .@{wi-css-prefix}-owm-201:before                            { content: @thunderstorm                ; }\n    .@{wi-css-prefix}-owm-202:before                            { content: @thunderstorm                ; }\n    .@{wi-css-prefix}-owm-210:before                            { content: @lightning                   ; }\n    .@{wi-css-prefix}-owm-211:before                            { content: @lightning                   ; }\n    .@{wi-css-prefix}-owm-212:before                            { content: @lightning                   ; }\n    .@{wi-css-prefix}-owm-221:before                            { content: @lightning                   ; }\n    .@{wi-css-prefix}-owm-230:before                            { content: @thunderstorm                ; }\n    .@{wi-css-prefix}-owm-231:before                            { content: @thunderstorm                ; }\n    .@{wi-css-prefix}-owm-232:before                            { content: @thunderstorm                ; }\n    .@{wi-css-prefix}-owm-300:before                            { content: @sprinkle                    ; }\n    .@{wi-css-prefix}-owm-301:before                            { content: @sprinkle                    ; }\n    .@{wi-css-prefix}-owm-302:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-310:before                            { content: @rain-mix                    ; }\n    .@{wi-css-prefix}-owm-311:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-312:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-313:before                            { content: @showers                     ; }\n    .@{wi-css-prefix}-owm-314:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-321:before                            { content: @sprinkle                    ; }\n    .@{wi-css-prefix}-owm-500:before                            { content: @sprinkle                    ; }\n    .@{wi-css-prefix}-owm-501:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-502:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-503:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-504:before                            { content: @rain                        ; }\n    .@{wi-css-prefix}-owm-511:before                            { content: @rain-mix                    ; }\n    .@{wi-css-prefix}-owm-520:before                            { content: @showers                     ; }\n    .@{wi-css-prefix}-owm-521:before                            { content: @showers                     ; }\n    .@{wi-css-prefix}-owm-522:before                            { content: @showers                     ; }\n    .@{wi-css-prefix}-owm-531:before                            { content: @storm-showers               ; }\n    .@{wi-css-prefix}-owm-600:before                            { content: @snow                        ; }\n    .@{wi-css-prefix}-owm-601:before                            { content: @snow                        ; }\n    .@{wi-css-prefix}-owm-602:before                            { content: @sleet                       ; }\n    .@{wi-css-prefix}-owm-611:before                            { content: @rain-mix                    ; }\n    .@{wi-css-prefix}-owm-612:before                            { content: @rain-mix                    ; }\n    .@{wi-css-prefix}-owm-615:before                            { content: @rain-mix                    ; }\n    .@{wi-css-prefix}-owm-616:before                            { content: @rain-mix                    ; }\n    .@{wi-css-prefix}-owm-620:before                            { content: @rain-mix                    ; }\n    .@{wi-css-prefix}-owm-621:before                            { content: @snow                        ; }\n    .@{wi-css-prefix}-owm-622:before                            { content: @snow                        ; }\n    .@{wi-css-prefix}-owm-701:before                            { content: @showers                     ; }\n    .@{wi-css-prefix}-owm-711:before                            { content: @smoke                       ; }\n    .@{wi-css-prefix}-owm-721:before                            { content: @day-haze                    ; }\n    .@{wi-css-prefix}-owm-731:before                            { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-741:before                            { content: @fog                         ; }\n    .@{wi-css-prefix}-owm-761:before                            { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-762:before                            { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-771:before                            { content: @cloudy-gusts                ; }\n    .@{wi-css-prefix}-owm-781:before                            { content: @tornado                     ; }\n    .@{wi-css-prefix}-owm-800:before                            { content: @day-sunny                   ; }\n    .@{wi-css-prefix}-owm-801:before                            { content: @cloudy-gusts                ; }\n    .@{wi-css-prefix}-owm-802:before                            { content: @cloudy-gusts                ; }\n    .@{wi-css-prefix}-owm-803:before                            { content: @cloudy-gusts                ; }\n    .@{wi-css-prefix}-owm-803:before                            { content: @cloudy-windy                ; }\n    .@{wi-css-prefix}-owm-804:before                            { content: @cloudy                      ; }\n    .@{wi-css-prefix}-owm-900:before                            { content: @tornado                     ; }\n    .@{wi-css-prefix}-owm-901:before                            { content: @storm-showers               ; }\n    .@{wi-css-prefix}-owm-902:before                            { content: @hurricane                   ; }\n    .@{wi-css-prefix}-owm-903:before                            { content: @snowflake-cold              ; }\n    .@{wi-css-prefix}-owm-904:before                            { content: @hot                         ; }\n    .@{wi-css-prefix}-owm-905:before                            { content: @windy                       ; }\n    .@{wi-css-prefix}-owm-906:before                            { content: @hail                        ; }\n    .@{wi-css-prefix}-owm-957:before                            { content: @strong-wind                 ; }\n    //Day\n    .@{wi-css-prefix}-owm-day-200:before                        { content: @day-thunderstorm            ; }\n    .@{wi-css-prefix}-owm-day-201:before                        { content: @day-thunderstorm            ; }\n    .@{wi-css-prefix}-owm-day-202:before                        { content: @day-thunderstorm            ; }\n    .@{wi-css-prefix}-owm-day-210:before                        { content: @day-lightning               ; }\n    .@{wi-css-prefix}-owm-day-211:before                        { content: @day-lightning               ; }\n    .@{wi-css-prefix}-owm-day-212:before                        { content: @day-lightning               ; }\n    .@{wi-css-prefix}-owm-day-221:before                        { content: @day-lightning               ; }\n    .@{wi-css-prefix}-owm-day-230:before                        { content: @day-thunderstorm            ; }\n    .@{wi-css-prefix}-owm-day-231:before                        { content: @day-thunderstorm            ; }\n    .@{wi-css-prefix}-owm-day-232:before                        { content: @day-thunderstorm            ; }\n    .@{wi-css-prefix}-owm-day-300:before                        { content: @day-sprinkle                ; }\n    .@{wi-css-prefix}-owm-day-301:before                        { content: @day-sprinkle                ; }\n    .@{wi-css-prefix}-owm-day-302:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-310:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-311:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-312:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-313:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-314:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-321:before                        { content: @day-sprinkle                ; }\n    .@{wi-css-prefix}-owm-day-500:before                        { content: @day-sprinkle                ; }\n    .@{wi-css-prefix}-owm-day-501:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-502:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-503:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-504:before                        { content: @day-rain                    ; }\n    .@{wi-css-prefix}-owm-day-511:before                        { content: @day-rain-mix                ; }\n    .@{wi-css-prefix}-owm-day-520:before                        { content: @day-showers                 ; }\n    .@{wi-css-prefix}-owm-day-521:before                        { content: @day-showers                 ; }\n    .@{wi-css-prefix}-owm-day-522:before                        { content: @day-showers                 ; }\n    .@{wi-css-prefix}-owm-day-531:before                        { content: @day-storm-showers           ; }\n    .@{wi-css-prefix}-owm-day-600:before                        { content: @day-snow                    ; }\n    .@{wi-css-prefix}-owm-day-601:before                        { content: @day-sleet                   ; }\n    .@{wi-css-prefix}-owm-day-602:before                        { content: @day-snow                    ; }\n    .@{wi-css-prefix}-owm-day-611:before                        { content: @day-rain-mix                ; }\n    .@{wi-css-prefix}-owm-day-612:before                        { content: @day-rain-mix                ; }\n    .@{wi-css-prefix}-owm-day-615:before                        { content: @day-rain-mix                ; }\n    .@{wi-css-prefix}-owm-day-616:before                        { content: @day-rain-mix                ; }\n    .@{wi-css-prefix}-owm-day-620:before                        { content: @day-rain-mix                ; }\n    .@{wi-css-prefix}-owm-day-621:before                        { content: @day-snow                    ; }\n    .@{wi-css-prefix}-owm-day-622:before                        { content: @day-snow                    ; }\n    .@{wi-css-prefix}-owm-day-701:before                        { content: @day-showers                 ; }\n    .@{wi-css-prefix}-owm-day-711:before                        { content: @smoke                       ; }\n    .@{wi-css-prefix}-owm-day-721:before                        { content: @day-haze                    ; }\n    .@{wi-css-prefix}-owm-day-731:before                        { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-day-741:before                        { content: @day-fog                     ; }\n    .@{wi-css-prefix}-owm-day-761:before                        { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-day-762:before                        { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-day-781:before                        { content: @tornado                     ; }\n    .@{wi-css-prefix}-owm-day-800:before                        { content: @day-sunny                   ; }\n    .@{wi-css-prefix}-owm-day-801:before                        { content: @day-cloudy-gusts            ; }\n    .@{wi-css-prefix}-owm-day-802:before                        { content: @day-cloudy-gusts            ; }\n    .@{wi-css-prefix}-owm-day-803:before                        { content: @day-cloudy-gusts            ; }\n    .@{wi-css-prefix}-owm-day-804:before                        { content: @day-sunny-overcast          ; }\n    .@{wi-css-prefix}-owm-day-900:before                        { content: @tornado                     ; }\n    .@{wi-css-prefix}-owm-day-902:before                        { content: @hurricane                   ; }\n    .@{wi-css-prefix}-owm-day-903:before                        { content: @snowflake-cold              ; }\n    .@{wi-css-prefix}-owm-day-904:before                        { content: @hot                         ; }\n    .@{wi-css-prefix}-owm-day-906:before                        { content: @day-hail                    ; }\n    .@{wi-css-prefix}-owm-day-957:before                        { content: @strong-wind                 ; }\n    //Night\n    .@{wi-css-prefix}-owm-night-200:before                      { content: @night-alt-thunderstorm      ; }\n    .@{wi-css-prefix}-owm-night-201:before                      { content: @night-alt-thunderstorm      ; }\n    .@{wi-css-prefix}-owm-night-202:before                      { content: @night-alt-thunderstorm      ; }\n    .@{wi-css-prefix}-owm-night-210:before                      { content: @night-alt-lightning         ; }\n    .@{wi-css-prefix}-owm-night-211:before                      { content: @night-alt-lightning         ; }\n    .@{wi-css-prefix}-owm-night-212:before                      { content: @night-alt-lightning         ; }\n    .@{wi-css-prefix}-owm-night-221:before                      { content: @night-alt-lightning         ; }\n    .@{wi-css-prefix}-owm-night-230:before                      { content: @night-alt-thunderstorm      ; }\n    .@{wi-css-prefix}-owm-night-231:before                      { content: @night-alt-thunderstorm      ; }\n    .@{wi-css-prefix}-owm-night-232:before                      { content: @night-alt-thunderstorm      ; }\n    .@{wi-css-prefix}-owm-night-300:before                      { content: @night-alt-sprinkle          ; }\n    .@{wi-css-prefix}-owm-night-301:before                      { content: @night-alt-sprinkle          ; }\n    .@{wi-css-prefix}-owm-night-302:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-310:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-311:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-312:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-313:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-314:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-321:before                      { content: @night-alt-sprinkle          ; }\n    .@{wi-css-prefix}-owm-night-500:before                      { content: @night-alt-sprinkle          ; }\n    .@{wi-css-prefix}-owm-night-501:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-502:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-503:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-504:before                      { content: @night-alt-rain              ; }\n    .@{wi-css-prefix}-owm-night-511:before                      { content: @night-alt-rain-mix          ; }\n    .@{wi-css-prefix}-owm-night-520:before                      { content: @night-alt-showers           ; }\n    .@{wi-css-prefix}-owm-night-521:before                      { content: @night-alt-showers           ; }\n    .@{wi-css-prefix}-owm-night-522:before                      { content: @night-alt-showers           ; }\n    .@{wi-css-prefix}-owm-night-531:before                      { content: @night-alt-storm-showers     ; }\n    .@{wi-css-prefix}-owm-night-600:before                      { content: @night-alt-snow              ; }\n    .@{wi-css-prefix}-owm-night-601:before                      { content: @night-alt-sleet             ; }\n    .@{wi-css-prefix}-owm-night-602:before                      { content: @night-alt-snow              ; }\n    .@{wi-css-prefix}-owm-night-611:before                      { content: @night-alt-rain-mix          ; }\n    .@{wi-css-prefix}-owm-night-612:before                      { content: @night-alt-rain-mix          ; }\n    .@{wi-css-prefix}-owm-night-615:before                      { content: @night-alt-rain-mix          ; }\n    .@{wi-css-prefix}-owm-night-616:before                      { content: @night-alt-rain-mix          ; }\n    .@{wi-css-prefix}-owm-night-620:before                      { content: @night-alt-rain-mix          ; }\n    .@{wi-css-prefix}-owm-night-621:before                      { content: @night-alt-snow              ; }\n    .@{wi-css-prefix}-owm-night-622:before                      { content: @night-alt-snow              ; }\n    .@{wi-css-prefix}-owm-night-701:before                      { content: @night-alt-showers           ; }\n    .@{wi-css-prefix}-owm-night-711:before                      { content: @smoke                       ; }\n    .@{wi-css-prefix}-owm-night-721:before                      { content: @day-haze                    ; }\n    .@{wi-css-prefix}-owm-night-731:before                      { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-night-741:before                      { content: @night-fog                   ; }\n    .@{wi-css-prefix}-owm-night-761:before                      { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-night-762:before                      { content: @dust                        ; }\n    .@{wi-css-prefix}-owm-night-781:before                      { content: @tornado                     ; }\n    .@{wi-css-prefix}-owm-night-800:before                      { content: @night-clear                 ; }\n    .@{wi-css-prefix}-owm-night-801:before                      { content: @night-alt-cloudy-gusts      ; }\n    .@{wi-css-prefix}-owm-night-802:before                      { content: @night-alt-cloudy-gusts      ; }\n    .@{wi-css-prefix}-owm-night-803:before                      { content: @night-alt-cloudy-gusts      ; }\n    .@{wi-css-prefix}-owm-night-804:before                      { content: @night-alt-cloudy            ; }\n    .@{wi-css-prefix}-owm-night-900:before                      { content: @tornado                     ; }\n    .@{wi-css-prefix}-owm-night-902:before                      { content: @hurricane                   ; }\n    .@{wi-css-prefix}-owm-night-903:before                      { content: @snowflake-cold              ; }\n    .@{wi-css-prefix}-owm-night-904:before                      { content: @hot                         ; }\n    .@{wi-css-prefix}-owm-night-906:before                      { content: @night-alt-hail              ; }\n    .@{wi-css-prefix}-owm-night-957:before                      { content: @strong-wind                 ; }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/mappings/wi-wmo4680.less",
    "content": ".@{wi-css-prefix}-wmo4680-0:before,\n.@{wi-css-prefix}-wmo4680-00:before       { content: @thermometer           ; }\n.@{wi-css-prefix}-wmo4680-1:before,\n.@{wi-css-prefix}-wmo4680-01:before       { content: @cloudy                ; }\n.@{wi-css-prefix}-wmo4680-2:before,\n.@{wi-css-prefix}-wmo4680-02:before       { content: @thermometer           ; }\n.@{wi-css-prefix}-wmo4680-3:before,\n.@{wi-css-prefix}-wmo4680-03:before       { content: @cloudy                ; }\n.@{wi-css-prefix}-wmo4680-4:before,\n.@{wi-css-prefix}-wmo4680-04:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-5:before,\n.@{wi-css-prefix}-wmo4680-05:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-10:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-11:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-12:before       { content: @lightning             ; }\n.@{wi-css-prefix}-wmo4680-18:before       { content: @strong-wind           ; }\n.@{wi-css-prefix}-wmo4680-20:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-21:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-22:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-23:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-24:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-25:before       { content: @hail                  ; }\n.@{wi-css-prefix}-wmo4680-26:before       { content: @thunderstorm          ; }\n.@{wi-css-prefix}-wmo4680-27:before       { content: @dust                  ; }\n.@{wi-css-prefix}-wmo4680-28:before       { content: @dust                  ; }\n.@{wi-css-prefix}-wmo4680-29:before       { content: @dust                  ; }\n.@{wi-css-prefix}-wmo4680-30:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-31:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-32:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-33:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-34:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-35:before       { content: @fog                   ; }\n.@{wi-css-prefix}-wmo4680-40:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-41:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-42:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-43:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-44:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-45:before       { content: @hail                  ; }\n.@{wi-css-prefix}-wmo4680-46:before       { content: @hail                  ; }\n.@{wi-css-prefix}-wmo4680-47:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-48:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-50:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-51:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-52:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-53:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-54:before       { content: @snowflake-cold        ; }\n.@{wi-css-prefix}-wmo4680-55:before       { content: @snowflake-cold        ; }\n.@{wi-css-prefix}-wmo4680-56:before       { content: @snowflake-cold        ; }\n.@{wi-css-prefix}-wmo4680-57:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-58:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-60:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-61:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-62:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-63:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-64:before       { content: @hail                  ; }\n.@{wi-css-prefix}-wmo4680-65:before       { content: @hail                  ; }\n.@{wi-css-prefix}-wmo4680-66:before       { content: @hail                  ; }\n.@{wi-css-prefix}-wmo4680-67:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-68:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-70:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-71:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-72:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-73:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-74:before       { content: @snowflake-cold        ; }\n.@{wi-css-prefix}-wmo4680-75:before       { content: @snowflake-cold        ; }\n.@{wi-css-prefix}-wmo4680-76:before       { content: @snowflake-cold        ; }\n.@{wi-css-prefix}-wmo4680-77:before       { content: @snow                  ; }\n.@{wi-css-prefix}-wmo4680-78:before       { content: @snowflake-cold        ; }\n.@{wi-css-prefix}-wmo4680-80:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-81:before       { content: @sprinkle              ; }\n.@{wi-css-prefix}-wmo4680-82:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-83:before       { content: @rain                  ; }\n.@{wi-css-prefix}-wmo4680-84:before       { content: @storm-showers         ; }\n.@{wi-css-prefix}-wmo4680-85:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-86:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-87:before       { content: @rain-mix              ; }\n.@{wi-css-prefix}-wmo4680-89:before       { content: @hail                  ; }\n.@{wi-css-prefix}-wmo4680-90:before       { content: @lightning             ; }\n.@{wi-css-prefix}-wmo4680-91:before       { content: @storm-showers         ; }\n.@{wi-css-prefix}-wmo4680-92:before       { content: @thunderstorm          ; }\n.@{wi-css-prefix}-wmo4680-93:before       { content: @thunderstorm          ; }\n.@{wi-css-prefix}-wmo4680-94:before       { content: @lightning             ; }\n.@{wi-css-prefix}-wmo4680-95:before       { content: @thunderstorm          ; }\n.@{wi-css-prefix}-wmo4680-96:before       { content: @thunderstorm          ; }\n.@{wi-css-prefix}-wmo4680-99:before       { content: @tornado               ; }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/mappings/wi-yahoo.less",
    "content": ".@{wi-css-prefix}-yahoo-0:before { content: @tornado; };\n.@{wi-css-prefix}-yahoo-1:before { content: @day-storm-showers; };\n.@{wi-css-prefix}-yahoo-2:before { content: @hurricane; };\n.@{wi-css-prefix}-yahoo-3:before { content: @thunderstorm; };\n.@{wi-css-prefix}-yahoo-4:before { content: @thunderstorm; };\n.@{wi-css-prefix}-yahoo-5:before { content: @rain-mix; };\n.@{wi-css-prefix}-yahoo-6:before { content: @rain-mix; };\n.@{wi-css-prefix}-yahoo-7:before { content: @rain-mix; };\n.@{wi-css-prefix}-yahoo-8:before { content: @hail; };\n.@{wi-css-prefix}-yahoo-9:before { content: @showers; };\n.@{wi-css-prefix}-yahoo-10:before { content: @hail; };\n.@{wi-css-prefix}-yahoo-11:before { content: @showers; };\n.@{wi-css-prefix}-yahoo-12:before { content: @showers; };\n.@{wi-css-prefix}-yahoo-13:before { content: @snow; };\n.@{wi-css-prefix}-yahoo-14:before { content: @day-snow; };\n.@{wi-css-prefix}-yahoo-15:before { content: @snow-wind; };\n.@{wi-css-prefix}-yahoo-16:before { content: @snow; };\n.@{wi-css-prefix}-yahoo-17:before { content: @hail; };\n.@{wi-css-prefix}-yahoo-18:before { content: @rain-mix; };\n.@{wi-css-prefix}-yahoo-19:before { content: @dust; };\n.@{wi-css-prefix}-yahoo-20:before { content: @fog; };\n.@{wi-css-prefix}-yahoo-21:before { content: @windy; };\n.@{wi-css-prefix}-yahoo-22:before { content: @smoke; };\n.@{wi-css-prefix}-yahoo-23:before { content: @strong-wind; };\n.@{wi-css-prefix}-yahoo-24:before { content: @strong-wind; };\n.@{wi-css-prefix}-yahoo-25:before { content: @snowflake-cold; };\n.@{wi-css-prefix}-yahoo-26:before { content: @cloudy; };\n.@{wi-css-prefix}-yahoo-27:before { content: @night-cloudy; };\n.@{wi-css-prefix}-yahoo-28:before { content: @day-cloudy; };\n.@{wi-css-prefix}-yahoo-29:before { content: @night-cloudy; };\n.@{wi-css-prefix}-yahoo-30:before { content: @day-cloudy; };\n.@{wi-css-prefix}-yahoo-31:before { content: @night-clear; };\n.@{wi-css-prefix}-yahoo-32:before { content: @day-sunny; };\n.@{wi-css-prefix}-yahoo-33:before { content: @night-partly-cloudy; };\n.@{wi-css-prefix}-yahoo-34:before { content: @day-sunny-overcast; };\n.@{wi-css-prefix}-yahoo-35:before { content: @rain-mix; };\n.@{wi-css-prefix}-yahoo-36:before { content: @hot; };\n.@{wi-css-prefix}-yahoo-37:before { content: @day-storm-showers; };\n.@{wi-css-prefix}-yahoo-38:before { content: @day-storm-showers; };\n.@{wi-css-prefix}-yahoo-39:before { content: @day-storm-showers; };\n.@{wi-css-prefix}-yahoo-40:before { content: @showers; };\n.@{wi-css-prefix}-yahoo-41:before { content: @snow-wind; };\n.@{wi-css-prefix}-yahoo-42:before { content: @snow; };\n.@{wi-css-prefix}-yahoo-43:before { content: @snow-wind; };\n.@{wi-css-prefix}-yahoo-44:before { content: @day-sunny-overcast; };\n.@{wi-css-prefix}-yahoo-45:before { content: @day-storm-showers; };\n.@{wi-css-prefix}-yahoo-46:before { content: @snow; };\n.@{wi-css-prefix}-yahoo-47:before { content: @day-storm-showers; };\n.@{wi-css-prefix}-yahoo-3200:before { content: @stars; };"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/weather-icons-classes.less",
    "content": "@import \"icon-classes/classes-day.less\";\n@import \"icon-classes/classes-night.less\";\n@import \"icon-classes/classes-neutral.less\";\n@import \"icon-classes/classes-misc.less\";\n@import \"icon-classes/classes-moon.less\";\n@import \"icon-classes/classes-moon-aliases.less\";\n@import \"icon-classes/classes-time.less\";\n@import \"icon-classes/classes-direction.less\";\n@import \"icon-classes/classes-beaufort.less\";\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/weather-icons-core.less",
    "content": "// Base Variables\n@wi-path:                        \"../fonts\";\n@wi-version:                     \"2.0\";\n@wi-css-prefix:                  wi;\n@wi-font-family:                 weathericons;\n\n@font-face {\n    font-family: '@{wi-font-family}';\n    src: url('../less/icons/weather-icons/font/@{wi-font-family}-regular-webfont.eot');\n    src: url('../less/icons/weather-icons/font/@{wi-font-family}-regular-webfont.eot?#iefix') format('embedded-opentype'),\n         url('../less/icons/weather-icons/font/@{wi-font-family}-regular-webfont.woff2') format('woff2'),\n         url('../less/icons/weather-icons/font/@{wi-font-family}-regular-webfont.woff') format('woff'),\n         url('../less/icons/weather-icons/font/@{wi-font-family}-regular-webfont.ttf') format('truetype'),\n         url('../less/icons/weather-icons/font/@{wi-font-family}-regular-webfont.svg#weather_iconsregular') format('svg');\n    font-weight: normal;\n    font-style: normal;\n}\n\n.@{wi-css-prefix} {\n  display: inline-block;\n  font-family: '@{wi-font-family}';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.@{wi-css-prefix}-fw {\n  text-align: center;\n  width: 1.4em;\n}\n\n.wi-icon-rotate(@degrees, @rotation) {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n\n.wi-icon-flip(@horiz, @vert, @rotation) {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);\n  -webkit-transform: scale(@horiz, @vert);\n      -ms-transform: scale(@horiz, @vert);\n          transform: scale(@horiz, @vert);\n}\n\n.@{wi-css-prefix}-rotate-90  { .wi-icon-rotate(90deg, 1);  }\n.@{wi-css-prefix}-rotate-180 { .wi-icon-rotate(180deg, 2); }\n.@{wi-css-prefix}-rotate-270 { .wi-icon-rotate(270deg, 3); }\n\n.@{wi-css-prefix}-flip-horizontal { .wi-icon-flip(-1, 1, 0); }\n.@{wi-css-prefix}-flip-vertical   { .wi-icon-flip(1, -1, 2); }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/weather-icons-variables.less",
    "content": "@import \"icon-variables/variables-beaufort.less\";\n@import \"icon-variables/variables-time.less\";\n@import \"icon-variables/variables-moon.less\";\n@import \"icon-variables/variables-direction.less\";\n@import \"icon-variables/variables-day.less\";\n@import \"icon-variables/variables-night.less\";\n@import \"icon-variables/variables-neutral.less\";\n@import \"icon-variables/variables-misc.less\";\n\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/weather-icons-wind.less",
    "content": "@import \"weather-icons-core.less\";\n@import \"icon-variables/variables-wind-names.less\";\n@import \"icon-classes/classes-wind.less\";\n@import \"icon-classes/classes-wind-degrees.less\";\n@import \"icon-classes/classes-wind-aliases.less\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/weather-icons-wind.min.less",
    "content": "@import \"weather-icons-core.less\";\n@import \"icon-variables/variables-wind-names.less\";\n@import \"icon-classes/classes-wind.less\";\n@import \"icon-classes/classes-wind-degrees.less\";\n@import \"icon-classes/classes-wind-aliases.less\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/weather-icons.less",
    "content": "/*!\n *  Weather Icons 2.0\n *  Updated August 1, 2015\n *  Weather themed icons for Bootstrap\n *  Author - Erik Flowers - erik@helloerik.com\n *  Email: erik@helloerik.com\n *  Twitter: http://twitter.com/Erik_UX\n *  ------------------------------------------------------------------------------\n *  Maintained at http://erikflowers.github.io/weather-icons\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - Font licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - CSS, SCSS and LESS are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Inspired by and works great as a companion with Font Awesome\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n */\n\n@import \"weather-icons-core.less\";\n@import \"weather-icons-variables.less\";\n@import \"weather-icons-classes.less\";\n// Mappings to various APIs\n@import \"mappings/wi-yahoo.less\";\n@import \"mappings/wi-forecast-io.less\";\n@import \"mappings/wi-wmo4680.less\";\n@import \"mappings/wi-owm.less\";\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/less/weather-icons.min.less",
    "content": "/*!\n *  Weather Icons 2.0\n *  Updated August 1, 2015\n *  Weather themed icons for Bootstrap\n *  Author - Erik Flowers - erik@helloerik.com\n *  Email: erik@helloerik.com\n *  Twitter: http://twitter.com/Erik_UX\n *  ------------------------------------------------------------------------------\n *  Maintained at http://erikflowers.github.io/weather-icons\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - Font licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - CSS, SCSS and LESS are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Inspired by and works great as a companion with Font Awesome\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n */\n\n@import \"weather-icons-core.less\";\n@import \"weather-icons-variables.less\";\n@import \"weather-icons-classes.less\";\n// Mappings to various APIs\n@import \"mappings/wi-yahoo.less\";\n@import \"mappings/wi-forecast-io.less\";\n@import \"mappings/wi-wmo4680.less\";\n@import \"mappings/wi-owm.less\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-beaufort.scss",
    "content": ".wi-wind-beaufort-0:before {content: $wind-beaufort-0;}\n.wi-wind-beaufort-1:before {content: $wind-beaufort-1;}\n.wi-wind-beaufort-2:before {content: $wind-beaufort-2;}\n.wi-wind-beaufort-3:before {content: $wind-beaufort-3;}\n.wi-wind-beaufort-4:before {content: $wind-beaufort-4;}\n.wi-wind-beaufort-5:before {content: $wind-beaufort-5;}\n.wi-wind-beaufort-6:before {content: $wind-beaufort-6;}\n.wi-wind-beaufort-7:before {content: $wind-beaufort-7;}\n.wi-wind-beaufort-8:before {content: $wind-beaufort-8;}\n.wi-wind-beaufort-9:before {content: $wind-beaufort-9;}\n.wi-wind-beaufort-10:before {content: $wind-beaufort-10;}\n.wi-wind-beaufort-11:before {content: $wind-beaufort-11;}\n.wi-wind-beaufort-12:before {content: $wind-beaufort-12;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-day.scss",
    "content": ".wi-day-sunny:before {content: $day-sunny;}\n.wi-day-cloudy:before {content: $day-cloudy;}\n.wi-day-cloudy-gusts:before {content: $day-cloudy-gusts;}\n.wi-day-cloudy-windy:before {content: $day-cloudy-windy;}\n.wi-day-fog:before {content: $day-fog;}\n.wi-day-hail:before {content: $day-hail;}\n.wi-day-haze:before {content: $day-haze;}\n.wi-day-lightning:before {content: $day-lightning;}\n.wi-day-rain:before {content: $day-rain;}\n.wi-day-rain-mix:before {content: $day-rain-mix;}\n.wi-day-rain-wind:before {content: $day-rain-wind;}\n.wi-day-showers:before {content: $day-showers;}\n.wi-day-sleet:before {content: $day-sleet;}\n.wi-day-sleet-storm:before {content: $day-sleet-storm;}\n.wi-day-snow:before {content: $day-snow;}\n.wi-day-snow-thunderstorm:before {content: $day-snow-thunderstorm;}\n.wi-day-snow-wind:before {content: $day-snow-wind;}\n.wi-day-sprinkle:before {content: $day-sprinkle;}\n.wi-day-storm-showers:before {content: $day-storm-showers;}\n.wi-day-sunny-overcast:before {content: $day-sunny-overcast;}\n.wi-day-thunderstorm:before {content: $day-thunderstorm;}\n.wi-day-windy:before {content: $day-windy;}\n.wi-solar-eclipse:before {content: $solar-eclipse;}\n.wi-hot:before {content: $hot;}\n.wi-day-cloudy-high:before {content: $day-cloudy-high;}\n.wi-day-light-wind:before {content: $day-light-wind;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-direction.scss",
    "content": ".wi-direction-up:before {content: $direction-up;}\n.wi-direction-up-right:before {content: $direction-up-right;}\n.wi-direction-right:before {content: $direction-right;}\n.wi-direction-down-right:before {content: $direction-down-right;}\n.wi-direction-down:before {content: $direction-down;}\n.wi-direction-down-left:before {content: $direction-down-left;}\n.wi-direction-left:before {content: $direction-left;}\n.wi-direction-up-left:before {content: $direction-up-left;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-misc.scss",
    "content": ".wi-alien:before {content: $alien;}\n.wi-celsius:before {content: $celsius;}\n.wi-fahrenheit:before {content: $fahrenheit;}\n.wi-degrees:before {content: $degrees;}\n.wi-thermometer:before {content: $thermometer;}\n.wi-thermometer-exterior:before {content: $thermometer-exterior;}\n.wi-thermometer-internal:before {content: $thermometer-internal;}\n.wi-cloud-down:before {content: $cloud-down;}\n.wi-cloud-up:before {content: $cloud-up;}\n.wi-cloud-refresh:before {content: $cloud-refresh;}\n.wi-horizon:before {content: $horizon;}\n.wi-horizon-alt:before {content: $horizon-alt;}\n.wi-sunrise:before {content: $sunrise;}\n.wi-sunset:before {content: $sunset;}\n.wi-moonrise:before {content: $moonrise;}\n.wi-moonset:before {content: $moonset;}\n.wi-refresh:before {content: $refresh;}\n.wi-refresh-alt:before {content: $refresh-alt;}\n.wi-umbrella:before {content: $umbrella;}\n.wi-barometer:before {content: $barometer;}\n.wi-humidity:before {content: $humidity;}\n.wi-na:before {content: $na;}\n.wi-train:before {content: $train;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-moon-aliases.scss",
    "content": ".wi-moon-0:before {content: $moon-new;}\n.wi-moon-1:before {content: $moon-waxing-cresent-1;}\n.wi-moon-2:before {content: $moon-waxing-cresent-2;}\n.wi-moon-3:before {content: $moon-waxing-cresent-3;}\n.wi-moon-4:before {content: $moon-waxing-cresent-4;}\n.wi-moon-5:before {content: $moon-waxing-cresent-5;}\n.wi-moon-6:before {content: $moon-waxing-cresent-6;}\n.wi-moon-7:before {content: $moon-first-quarter;}\n.wi-moon-8:before {content: $moon-waxing-gibbous-1;}\n.wi-moon-9:before {content: $moon-waxing-gibbous-2;}\n.wi-moon-10:before {content: $moon-waxing-gibbous-3;}\n.wi-moon-11:before {content: $moon-waxing-gibbous-4;}\n.wi-moon-12:before {content: $moon-waxing-gibbous-5;}\n.wi-moon-13:before {content: $moon-waxing-gibbous-6;}\n.wi-moon-14:before {content: $moon-full;}\n.wi-moon-15:before {content: $moon-waning-gibbous-1;}\n.wi-moon-16:before {content: $moon-waning-gibbous-2;}\n.wi-moon-17:before {content: $moon-waning-gibbous-3;}\n.wi-moon-18:before {content: $moon-waning-gibbous-4;}\n.wi-moon-19:before {content: $moon-waning-gibbous-5;}\n.wi-moon-20:before {content: $moon-waning-gibbous-6;}\n.wi-moon-21:before {content: $moon-third-quarter;}\n.wi-moon-22:before {content: $moon-waning-crescent-1;}\n.wi-moon-23:before {content: $moon-waning-crescent-2;}\n.wi-moon-24:before {content: $moon-waning-crescent-3;}\n.wi-moon-25:before {content: $moon-waning-crescent-4;}\n.wi-moon-26:before {content: $moon-waning-crescent-5;}\n.wi-moon-27:before {content: $moon-waning-crescent-6;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-moon.scss",
    "content": ".wi-moon-new:before {content: $moon-new;}\n.wi-moon-waxing-cresent-1:before {content: $moon-waxing-cresent-1;}\n.wi-moon-waxing-cresent-2:before {content: $moon-waxing-cresent-2;}\n.wi-moon-waxing-cresent-3:before {content: $moon-waxing-cresent-3;}\n.wi-moon-waxing-cresent-4:before {content: $moon-waxing-cresent-4;}\n.wi-moon-waxing-cresent-5:before {content: $moon-waxing-cresent-5;}\n.wi-moon-waxing-cresent-6:before {content: $moon-waxing-cresent-6;}\n.wi-moon-first-quarter:before {content: $moon-first-quarter;}\n.wi-moon-waxing-gibbous-1:before {content: $moon-waxing-gibbous-1;}\n.wi-moon-waxing-gibbous-2:before {content: $moon-waxing-gibbous-2;}\n.wi-moon-waxing-gibbous-3:before {content: $moon-waxing-gibbous-3;}\n.wi-moon-waxing-gibbous-4:before {content: $moon-waxing-gibbous-4;}\n.wi-moon-waxing-gibbous-5:before {content: $moon-waxing-gibbous-5;}\n.wi-moon-waxing-gibbous-6:before {content: $moon-waxing-gibbous-6;}\n.wi-moon-full:before {content: $moon-full;}\n.wi-moon-waning-gibbous-1:before {content: $moon-waning-gibbous-1;}\n.wi-moon-waning-gibbous-2:before {content: $moon-waning-gibbous-2;}\n.wi-moon-waning-gibbous-3:before {content: $moon-waning-gibbous-3;}\n.wi-moon-waning-gibbous-4:before {content: $moon-waning-gibbous-4;}\n.wi-moon-waning-gibbous-5:before {content: $moon-waning-gibbous-5;}\n.wi-moon-waning-gibbous-6:before {content: $moon-waning-gibbous-6;}\n.wi-moon-third-quarter:before {content: $moon-third-quarter;}\n.wi-moon-waning-crescent-1:before {content: $moon-waning-crescent-1;}\n.wi-moon-waning-crescent-2:before {content: $moon-waning-crescent-2;}\n.wi-moon-waning-crescent-3:before {content: $moon-waning-crescent-3;}\n.wi-moon-waning-crescent-4:before {content: $moon-waning-crescent-4;}\n.wi-moon-waning-crescent-5:before {content: $moon-waning-crescent-5;}\n.wi-moon-waning-crescent-6:before {content: $moon-waning-crescent-6;}\n.wi-moon-alt-new:before {content: $moon-alt-new;}\n.wi-moon-alt-waxing-cresent-1:before {content: $moon-alt-waxing-cresent-1;}\n.wi-moon-alt-waxing-cresent-2:before {content: $moon-alt-waxing-cresent-2;}\n.wi-moon-alt-waxing-cresent-3:before {content: $moon-alt-waxing-cresent-3;}\n.wi-moon-alt-waxing-cresent-4:before {content: $moon-alt-waxing-cresent-4;}\n.wi-moon-alt-waxing-cresent-5:before {content: $moon-alt-waxing-cresent-5;}\n.wi-moon-alt-waxing-cresent-6:before {content: $moon-alt-waxing-cresent-6;}\n.wi-moon-alt-first-quarter:before {content: $moon-alt-first-quarter;}\n.wi-moon-alt-waxing-gibbous-1:before {content: $moon-alt-waxing-gibbous-1;}\n.wi-moon-alt-waxing-gibbous-2:before {content: $moon-alt-waxing-gibbous-2;}\n.wi-moon-alt-waxing-gibbous-3:before {content: $moon-alt-waxing-gibbous-3;}\n.wi-moon-alt-waxing-gibbous-4:before {content: $moon-alt-waxing-gibbous-4;}\n.wi-moon-alt-waxing-gibbous-5:before {content: $moon-alt-waxing-gibbous-5;}\n.wi-moon-alt-waxing-gibbous-6:before {content: $moon-alt-waxing-gibbous-6;}\n.wi-moon-alt-full:before {content: $moon-alt-full;}\n.wi-moon-alt-waning-gibbous-1:before {content: $moon-alt-waning-gibbous-1;}\n.wi-moon-alt-waning-gibbous-2:before {content: $moon-alt-waning-gibbous-2;}\n.wi-moon-alt-waning-gibbous-3:before {content: $moon-alt-waning-gibbous-3;}\n.wi-moon-alt-waning-gibbous-4:before {content: $moon-alt-waning-gibbous-4;}\n.wi-moon-alt-waning-gibbous-5:before {content: $moon-alt-waning-gibbous-5;}\n.wi-moon-alt-waning-gibbous-6:before {content: $moon-alt-waning-gibbous-6;}\n.wi-moon-alt-third-quarter:before {content: $moon-alt-third-quarter;}\n.wi-moon-alt-waning-crescent-1:before {content: $moon-alt-waning-crescent-1;}\n.wi-moon-alt-waning-crescent-2:before {content: $moon-alt-waning-crescent-2;}\n.wi-moon-alt-waning-crescent-3:before {content: $moon-alt-waning-crescent-3;}\n.wi-moon-alt-waning-crescent-4:before {content: $moon-alt-waning-crescent-4;}\n.wi-moon-alt-waning-crescent-5:before {content: $moon-alt-waning-crescent-5;}\n.wi-moon-alt-waning-crescent-6:before {content: $moon-alt-waning-crescent-6;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-neutral.scss",
    "content": ".wi-cloud:before {content: $cloud;}\n.wi-cloudy:before {content: $cloudy;}\n.wi-cloudy-gusts:before {content: $cloudy-gusts;}\n.wi-cloudy-windy:before {content: $cloudy-windy;}\n.wi-fog:before {content: $fog;}\n.wi-hail:before {content: $hail;}\n.wi-rain:before {content: $rain;}\n.wi-rain-mix:before {content: $rain-mix;}\n.wi-rain-wind:before {content: $rain-wind;}\n.wi-showers:before {content: $showers;}\n.wi-sleet:before {content: $sleet;}\n.wi-snow:before {content: $snow;}\n.wi-sprinkle:before {content: $sprinkle;}\n.wi-storm-showers:before {content: $storm-showers;}\n.wi-thunderstorm:before {content: $thunderstorm;}\n.wi-snow-wind:before {content: $snow-wind;}\n.wi-snow:before {content: $snow;}\n.wi-smog:before {content: $smog;}\n.wi-smoke:before {content: $smoke;}\n.wi-lightning:before {content: $lightning;}\n.wi-raindrops:before {content: $raindrops;}\n.wi-raindrop:before {content: $raindrop;}\n.wi-dust:before {content: $dust;}\n.wi-snowflake-cold:before {content: $snowflake-cold;}\n.wi-windy:before {content: $windy;}\n.wi-strong-wind:before {content: $strong-wind;}\n.wi-sandstorm:before {content: $sandstorm;}\n.wi-earthquake:before {content: $earthquake;}\n.wi-fire:before {content: $fire;}\n.wi-flood:before {content: $flood;}\n.wi-meteor:before {content: $meteor;}\n.wi-tsunami:before {content: $tsunami;}\n.wi-volcano:before {content: $volcano;}\n.wi-hurricane:before {content: $hurricane;}\n.wi-tornado:before {content: $tornado;}\n.wi-small-craft-advisory:before {content: $small-craft-advisory;}\n.wi-gale-warning:before {content: $gale-warning;}\n.wi-storm-warning:before {content: $storm-warning;}\n.wi-hurricane-warning:before {content: $hurricane-warning;}\n.wi-wind-direction:before {content: $wind-direction;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-night.scss",
    "content": ".wi-night-clear:before {content: $night-clear;}\n.wi-night-alt-cloudy:before {content: $night-alt-cloudy;}\n.wi-night-alt-cloudy-gusts:before {content: $night-alt-cloudy-gusts;}\n.wi-night-alt-cloudy-windy:before {content: $night-alt-cloudy-windy;}\n.wi-night-alt-hail:before {content: $night-alt-hail;}\n.wi-night-alt-lightning:before {content: $night-alt-lightning;}\n.wi-night-alt-rain:before {content: $night-alt-rain;}\n.wi-night-alt-rain-mix:before {content: $night-alt-rain-mix;}\n.wi-night-alt-rain-wind:before {content: $night-alt-rain-wind;}\n.wi-night-alt-showers:before {content: $night-alt-showers;}\n.wi-night-alt-sleet:before {content: $night-alt-sleet;}\n.wi-night-alt-sleet-storm:before {content: $night-alt-sleet-storm;}\n.wi-night-alt-snow:before {content: $night-alt-snow;}\n.wi-night-alt-snow-thunderstorm:before {content: $night-alt-snow-thunderstorm;}\n.wi-night-alt-snow-wind:before {content: $night-alt-snow-wind;}\n.wi-night-alt-sprinkle:before {content: $night-alt-sprinkle;}\n.wi-night-alt-storm-showers:before {content: $night-alt-storm-showers;}\n.wi-night-alt-thunderstorm:before {content: $night-alt-thunderstorm;}\n.wi-night-cloudy:before {content: $night-cloudy;}\n.wi-night-cloudy-gusts:before {content: $night-cloudy-gusts;}\n.wi-night-cloudy-windy:before {content: $night-cloudy-windy;}\n.wi-night-fog:before {content: $night-fog;}\n.wi-night-hail:before {content: $night-hail;}\n.wi-night-lightning:before {content: $night-lightning;}\n.wi-night-partly-cloudy:before {content: $night-partly-cloudy;}\n.wi-night-rain:before {content: $night-rain;}\n.wi-night-rain-mix:before {content: $night-rain-mix;}\n.wi-night-rain-wind:before {content: $night-rain-wind;}\n.wi-night-showers:before {content: $night-showers;}\n.wi-night-sleet:before {content: $night-sleet;}\n.wi-night-sleet-storm:before {content: $night-sleet-storm;}\n.wi-night-snow:before {content: $night-snow;}\n.wi-night-snow-thunderstorm:before {content: $night-snow-thunderstorm;}\n.wi-night-snow-wind:before {content: $night-snow-wind;}\n.wi-night-sprinkle:before {content: $night-sprinkle;}\n.wi-night-storm-showers:before {content: $night-storm-showers;}\n.wi-night-thunderstorm:before {content: $night-thunderstorm;}\n.wi-lunar-eclipse:before {content: $lunar-eclipse;}\n.wi-stars:before {content: $stars;}\n.wi-storm-showers:before {content: $storm-showers;}\n.wi-thunderstorm:before {content: $thunderstorm;}\n.wi-night-alt-cloudy-high:before {content: $night-alt-cloudy-high;}\n.wi-night-cloudy-high:before {content: $night-cloudy-high;}\n.wi-night-alt-partly-cloudy:before {content: $night-alt-partly-cloudy;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-time.scss",
    "content": ".wi-time-1:before {content: $time-1;}\n.wi-time-2:before {content: $time-2;}\n.wi-time-3:before {content: $time-3;}\n.wi-time-4:before {content: $time-4;}\n.wi-time-5:before {content: $time-5;}\n.wi-time-6:before {content: $time-6;}\n.wi-time-7:before {content: $time-7;}\n.wi-time-8:before {content: $time-8;}\n.wi-time-9:before {content: $time-9;}\n.wi-time-10:before {content: $time-10;}\n.wi-time-11:before {content: $time-11;}\n.wi-time-12:before {content: $time-12;}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-wind-aliases.scss",
    "content": "@mixin wind-rotate( $val: 0deg ) {\n  -webkit-transform: rotate($val);\n  -moz-transform: rotate($val);\n  -ms-transform: rotate($val);\n  -o-transform: rotate($val);\n  transform: rotate($val);\n}\n\n.wi-wind-towards-n    {\n  @include wind-rotate(0deg);\n}\n.wi-wind-towards-nne   {\n  @include wind-rotate(23deg);\n}\n.wi-wind-towards-ne    {\n  @include wind-rotate(45deg);\n}\n.wi-wind-towards-ene   {\n  @include wind-rotate(68deg);\n}\n.wi-wind-towards-e    {\n  @include wind-rotate(90deg);\n}\n.wi-wind-towards-ese   {\n  @include wind-rotate(113deg);\n}\n.wi-wind-towards-se    {\n  @include wind-rotate(135deg);\n}\n.wi-wind-towards-sse   {\n  @include wind-rotate(158deg);\n}\n.wi-wind-towards-s    {\n  @include wind-rotate(180deg);\n}\n.wi-wind-towards-ssw   {\n  @include wind-rotate(203deg);\n}\n.wi-wind-towards-sw    {\n  @include wind-rotate(225deg);\n}\n.wi-wind-towards-wsw   {\n  @include wind-rotate(248deg);\n}\n.wi-wind-towards-w    {\n  @include wind-rotate(270deg);\n}\n.wi-wind-towards-wnw   {\n  @include wind-rotate(293deg);\n}\n.wi-wind-towards-nw    {\n  @include wind-rotate(313deg);\n}\n.wi-wind-towards-nnw   {\n  @include wind-rotate(336deg);\n}\n.wi-wind-from-n    {\n  @include wind-rotate(0deg);\n}\n.wi-wind-from-nne   {\n  @include wind-rotate(23deg);\n}\n.wi-wind-from-ne    {\n  @include wind-rotate(45deg);\n}\n.wi-wind-from-ene   {\n  @include wind-rotate(68deg);\n}\n.wi-wind-from-e    {\n  @include wind-rotate(90deg);\n}\n.wi-wind-from-ese   {\n  @include wind-rotate(113deg);\n}\n.wi-wind-from-se    {\n  @include wind-rotate(135deg);\n}\n.wi-wind-from-sse   {\n  @include wind-rotate(158deg);\n}\n.wi-wind-from-s    {\n  @include wind-rotate(180deg);\n}\n.wi-wind-from-ssw   {\n  @include wind-rotate(203deg);\n}\n.wi-wind-from-sw    {\n  @include wind-rotate(225deg);\n}\n.wi-wind-from-wsw   {\n  @include wind-rotate(248deg);\n}\n.wi-wind-from-w    {\n  @include wind-rotate(270deg);\n}\n.wi-wind-from-wnw   {\n  @include wind-rotate(293deg);\n}\n.wi-wind-from-nw    {\n  @include wind-rotate(313deg);\n}\n.wi-wind-from-nnw   {\n  @include wind-rotate(336deg);\n}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-wind-degrees.scss",
    "content": ".#{$wi-css-prefix}-wind {\n  &.towards-0-deg {@include wind-rotate(0deg);}\n  &.towards-1-deg {@include wind-rotate(1deg);}\n  &.towards-2-deg {@include wind-rotate(2deg);}\n  &.towards-3-deg {@include wind-rotate(3deg);}\n  &.towards-4-deg {@include wind-rotate(4deg);}\n  &.towards-5-deg {@include wind-rotate(5deg);}\n  &.towards-6-deg {@include wind-rotate(6deg);}\n  &.towards-7-deg {@include wind-rotate(7deg);}\n  &.towards-8-deg {@include wind-rotate(8deg);}\n  &.towards-9-deg {@include wind-rotate(9deg);}\n  &.towards-10-deg {@include wind-rotate(10deg);}\n  &.towards-11-deg {@include wind-rotate(11deg);}\n  &.towards-12-deg {@include wind-rotate(12deg);}\n  &.towards-13-deg {@include wind-rotate(13deg);}\n  &.towards-14-deg {@include wind-rotate(14deg);}\n  &.towards-15-deg {@include wind-rotate(15deg);}\n  &.towards-16-deg {@include wind-rotate(16deg);}\n  &.towards-17-deg {@include wind-rotate(17deg);}\n  &.towards-18-deg {@include wind-rotate(18deg);}\n  &.towards-19-deg {@include wind-rotate(19deg);}\n  &.towards-20-deg {@include wind-rotate(20deg);}\n  &.towards-21-deg {@include wind-rotate(21deg);}\n  &.towards-22-deg {@include wind-rotate(22deg);}\n  &.towards-23-deg {@include wind-rotate(23deg);}\n  &.towards-24-deg {@include wind-rotate(24deg);}\n  &.towards-25-deg {@include wind-rotate(25deg);}\n  &.towards-26-deg {@include wind-rotate(26deg);}\n  &.towards-27-deg {@include wind-rotate(27deg);}\n  &.towards-28-deg {@include wind-rotate(28deg);}\n  &.towards-29-deg {@include wind-rotate(29deg);}\n  &.towards-30-deg {@include wind-rotate(30deg);}\n  &.towards-31-deg {@include wind-rotate(31deg);}\n  &.towards-32-deg {@include wind-rotate(32deg);}\n  &.towards-33-deg {@include wind-rotate(33deg);}\n  &.towards-34-deg {@include wind-rotate(34deg);}\n  &.towards-35-deg {@include wind-rotate(35deg);}\n  &.towards-36-deg {@include wind-rotate(36deg);}\n  &.towards-37-deg {@include wind-rotate(37deg);}\n  &.towards-38-deg {@include wind-rotate(38deg);}\n  &.towards-39-deg {@include wind-rotate(39deg);}\n  &.towards-40-deg {@include wind-rotate(40deg);}\n  &.towards-41-deg {@include wind-rotate(41deg);}\n  &.towards-42-deg {@include wind-rotate(42deg);}\n  &.towards-43-deg {@include wind-rotate(43deg);}\n  &.towards-44-deg {@include wind-rotate(44deg);}\n  &.towards-45-deg {@include wind-rotate(45deg);}\n  &.towards-46-deg {@include wind-rotate(46deg);}\n  &.towards-47-deg {@include wind-rotate(47deg);}\n  &.towards-48-deg {@include wind-rotate(48deg);}\n  &.towards-49-deg {@include wind-rotate(49deg);}\n  &.towards-50-deg {@include wind-rotate(50deg);}\n  &.towards-51-deg {@include wind-rotate(51deg);}\n  &.towards-52-deg {@include wind-rotate(52deg);}\n  &.towards-53-deg {@include wind-rotate(53deg);}\n  &.towards-54-deg {@include wind-rotate(54deg);}\n  &.towards-55-deg {@include wind-rotate(55deg);}\n  &.towards-56-deg {@include wind-rotate(56deg);}\n  &.towards-57-deg {@include wind-rotate(57deg);}\n  &.towards-58-deg {@include wind-rotate(58deg);}\n  &.towards-59-deg {@include wind-rotate(59deg);}\n  &.towards-60-deg {@include wind-rotate(60deg);}\n  &.towards-61-deg {@include wind-rotate(61deg);}\n  &.towards-62-deg {@include wind-rotate(62deg);}\n  &.towards-63-deg {@include wind-rotate(63deg);}\n  &.towards-64-deg {@include wind-rotate(64deg);}\n  &.towards-65-deg {@include wind-rotate(65deg);}\n  &.towards-66-deg {@include wind-rotate(66deg);}\n  &.towards-67-deg {@include wind-rotate(67deg);}\n  &.towards-68-deg {@include wind-rotate(68deg);}\n  &.towards-69-deg {@include wind-rotate(69deg);}\n  &.towards-70-deg {@include wind-rotate(70deg);}\n  &.towards-71-deg {@include wind-rotate(71deg);}\n  &.towards-72-deg {@include wind-rotate(72deg);}\n  &.towards-73-deg {@include wind-rotate(73deg);}\n  &.towards-74-deg {@include wind-rotate(74deg);}\n  &.towards-75-deg {@include wind-rotate(75deg);}\n  &.towards-76-deg {@include wind-rotate(76deg);}\n  &.towards-77-deg {@include wind-rotate(77deg);}\n  &.towards-78-deg {@include wind-rotate(78deg);}\n  &.towards-79-deg {@include wind-rotate(79deg);}\n  &.towards-80-deg {@include wind-rotate(80deg);}\n  &.towards-81-deg {@include wind-rotate(81deg);}\n  &.towards-82-deg {@include wind-rotate(82deg);}\n  &.towards-83-deg {@include wind-rotate(83deg);}\n  &.towards-84-deg {@include wind-rotate(84deg);}\n  &.towards-85-deg {@include wind-rotate(85deg);}\n  &.towards-86-deg {@include wind-rotate(86deg);}\n  &.towards-87-deg {@include wind-rotate(87deg);}\n  &.towards-88-deg {@include wind-rotate(88deg);}\n  &.towards-89-deg {@include wind-rotate(89deg);}\n  &.towards-90-deg {@include wind-rotate(90deg);}\n  &.towards-91-deg {@include wind-rotate(91deg);}\n  &.towards-92-deg {@include wind-rotate(92deg);}\n  &.towards-93-deg {@include wind-rotate(93deg);}\n  &.towards-94-deg {@include wind-rotate(94deg);}\n  &.towards-95-deg {@include wind-rotate(95deg);}\n  &.towards-96-deg {@include wind-rotate(96deg);}\n  &.towards-97-deg {@include wind-rotate(97deg);}\n  &.towards-98-deg {@include wind-rotate(98deg);}\n  &.towards-99-deg {@include wind-rotate(99deg);}\n  &.towards-100-deg {@include wind-rotate(100deg);}\n  &.towards-101-deg {@include wind-rotate(101deg);}\n  &.towards-102-deg {@include wind-rotate(102deg);}\n  &.towards-103-deg {@include wind-rotate(103deg);}\n  &.towards-104-deg {@include wind-rotate(104deg);}\n  &.towards-105-deg {@include wind-rotate(105deg);}\n  &.towards-106-deg {@include wind-rotate(106deg);}\n  &.towards-107-deg {@include wind-rotate(107deg);}\n  &.towards-108-deg {@include wind-rotate(108deg);}\n  &.towards-109-deg {@include wind-rotate(109deg);}\n  &.towards-110-deg {@include wind-rotate(110deg);}\n  &.towards-111-deg {@include wind-rotate(111deg);}\n  &.towards-112-deg {@include wind-rotate(112deg);}\n  &.towards-113-deg {@include wind-rotate(113deg);}\n  &.towards-114-deg {@include wind-rotate(114deg);}\n  &.towards-115-deg {@include wind-rotate(115deg);}\n  &.towards-116-deg {@include wind-rotate(116deg);}\n  &.towards-117-deg {@include wind-rotate(117deg);}\n  &.towards-118-deg {@include wind-rotate(118deg);}\n  &.towards-119-deg {@include wind-rotate(119deg);}\n  &.towards-120-deg {@include wind-rotate(120deg);}\n  &.towards-121-deg {@include wind-rotate(121deg);}\n  &.towards-122-deg {@include wind-rotate(122deg);}\n  &.towards-123-deg {@include wind-rotate(123deg);}\n  &.towards-124-deg {@include wind-rotate(124deg);}\n  &.towards-125-deg {@include wind-rotate(125deg);}\n  &.towards-126-deg {@include wind-rotate(126deg);}\n  &.towards-127-deg {@include wind-rotate(127deg);}\n  &.towards-128-deg {@include wind-rotate(128deg);}\n  &.towards-129-deg {@include wind-rotate(129deg);}\n  &.towards-130-deg {@include wind-rotate(130deg);}\n  &.towards-131-deg {@include wind-rotate(131deg);}\n  &.towards-132-deg {@include wind-rotate(132deg);}\n  &.towards-133-deg {@include wind-rotate(133deg);}\n  &.towards-134-deg {@include wind-rotate(134deg);}\n  &.towards-135-deg {@include wind-rotate(135deg);}\n  &.towards-136-deg {@include wind-rotate(136deg);}\n  &.towards-137-deg {@include wind-rotate(137deg);}\n  &.towards-138-deg {@include wind-rotate(138deg);}\n  &.towards-139-deg {@include wind-rotate(139deg);}\n  &.towards-140-deg {@include wind-rotate(140deg);}\n  &.towards-141-deg {@include wind-rotate(141deg);}\n  &.towards-142-deg {@include wind-rotate(142deg);}\n  &.towards-143-deg {@include wind-rotate(143deg);}\n  &.towards-144-deg {@include wind-rotate(144deg);}\n  &.towards-145-deg {@include wind-rotate(145deg);}\n  &.towards-146-deg {@include wind-rotate(146deg);}\n  &.towards-147-deg {@include wind-rotate(147deg);}\n  &.towards-148-deg {@include wind-rotate(148deg);}\n  &.towards-149-deg {@include wind-rotate(149deg);}\n  &.towards-150-deg {@include wind-rotate(150deg);}\n  &.towards-151-deg {@include wind-rotate(151deg);}\n  &.towards-152-deg {@include wind-rotate(152deg);}\n  &.towards-153-deg {@include wind-rotate(153deg);}\n  &.towards-154-deg {@include wind-rotate(154deg);}\n  &.towards-155-deg {@include wind-rotate(155deg);}\n  &.towards-156-deg {@include wind-rotate(156deg);}\n  &.towards-157-deg {@include wind-rotate(157deg);}\n  &.towards-158-deg {@include wind-rotate(158deg);}\n  &.towards-159-deg {@include wind-rotate(159deg);}\n  &.towards-160-deg {@include wind-rotate(160deg);}\n  &.towards-161-deg {@include wind-rotate(161deg);}\n  &.towards-162-deg {@include wind-rotate(162deg);}\n  &.towards-163-deg {@include wind-rotate(163deg);}\n  &.towards-164-deg {@include wind-rotate(164deg);}\n  &.towards-165-deg {@include wind-rotate(165deg);}\n  &.towards-166-deg {@include wind-rotate(166deg);}\n  &.towards-167-deg {@include wind-rotate(167deg);}\n  &.towards-168-deg {@include wind-rotate(168deg);}\n  &.towards-169-deg {@include wind-rotate(169deg);}\n  &.towards-170-deg {@include wind-rotate(170deg);}\n  &.towards-171-deg {@include wind-rotate(171deg);}\n  &.towards-172-deg {@include wind-rotate(172deg);}\n  &.towards-173-deg {@include wind-rotate(173deg);}\n  &.towards-174-deg {@include wind-rotate(174deg);}\n  &.towards-175-deg {@include wind-rotate(175deg);}\n  &.towards-176-deg {@include wind-rotate(176deg);}\n  &.towards-177-deg {@include wind-rotate(177deg);}\n  &.towards-178-deg {@include wind-rotate(178deg);}\n  &.towards-179-deg {@include wind-rotate(179deg);}\n  &.towards-180-deg {@include wind-rotate(180deg);}\n  &.towards-181-deg {@include wind-rotate(181deg);}\n  &.towards-182-deg {@include wind-rotate(182deg);}\n  &.towards-183-deg {@include wind-rotate(183deg);}\n  &.towards-184-deg {@include wind-rotate(184deg);}\n  &.towards-185-deg {@include wind-rotate(185deg);}\n  &.towards-186-deg {@include wind-rotate(186deg);}\n  &.towards-187-deg {@include wind-rotate(187deg);}\n  &.towards-188-deg {@include wind-rotate(188deg);}\n  &.towards-189-deg {@include wind-rotate(189deg);}\n  &.towards-190-deg {@include wind-rotate(190deg);}\n  &.towards-191-deg {@include wind-rotate(191deg);}\n  &.towards-192-deg {@include wind-rotate(192deg);}\n  &.towards-193-deg {@include wind-rotate(193deg);}\n  &.towards-194-deg {@include wind-rotate(194deg);}\n  &.towards-195-deg {@include wind-rotate(195deg);}\n  &.towards-196-deg {@include wind-rotate(196deg);}\n  &.towards-197-deg {@include wind-rotate(197deg);}\n  &.towards-198-deg {@include wind-rotate(198deg);}\n  &.towards-199-deg {@include wind-rotate(199deg);}\n  &.towards-200-deg {@include wind-rotate(200deg);}\n  &.towards-201-deg {@include wind-rotate(201deg);}\n  &.towards-202-deg {@include wind-rotate(202deg);}\n  &.towards-203-deg {@include wind-rotate(203deg);}\n  &.towards-204-deg {@include wind-rotate(204deg);}\n  &.towards-205-deg {@include wind-rotate(205deg);}\n  &.towards-206-deg {@include wind-rotate(206deg);}\n  &.towards-207-deg {@include wind-rotate(207deg);}\n  &.towards-208-deg {@include wind-rotate(208deg);}\n  &.towards-209-deg {@include wind-rotate(209deg);}\n  &.towards-210-deg {@include wind-rotate(210deg);}\n  &.towards-211-deg {@include wind-rotate(211deg);}\n  &.towards-212-deg {@include wind-rotate(212deg);}\n  &.towards-213-deg {@include wind-rotate(213deg);}\n  &.towards-214-deg {@include wind-rotate(214deg);}\n  &.towards-215-deg {@include wind-rotate(215deg);}\n  &.towards-216-deg {@include wind-rotate(216deg);}\n  &.towards-217-deg {@include wind-rotate(217deg);}\n  &.towards-218-deg {@include wind-rotate(218deg);}\n  &.towards-219-deg {@include wind-rotate(219deg);}\n  &.towards-220-deg {@include wind-rotate(220deg);}\n  &.towards-221-deg {@include wind-rotate(221deg);}\n  &.towards-222-deg {@include wind-rotate(222deg);}\n  &.towards-223-deg {@include wind-rotate(223deg);}\n  &.towards-224-deg {@include wind-rotate(224deg);}\n  &.towards-225-deg {@include wind-rotate(225deg);}\n  &.towards-226-deg {@include wind-rotate(226deg);}\n  &.towards-227-deg {@include wind-rotate(227deg);}\n  &.towards-228-deg {@include wind-rotate(228deg);}\n  &.towards-229-deg {@include wind-rotate(229deg);}\n  &.towards-230-deg {@include wind-rotate(230deg);}\n  &.towards-231-deg {@include wind-rotate(231deg);}\n  &.towards-232-deg {@include wind-rotate(232deg);}\n  &.towards-233-deg {@include wind-rotate(233deg);}\n  &.towards-234-deg {@include wind-rotate(234deg);}\n  &.towards-235-deg {@include wind-rotate(235deg);}\n  &.towards-236-deg {@include wind-rotate(236deg);}\n  &.towards-237-deg {@include wind-rotate(237deg);}\n  &.towards-238-deg {@include wind-rotate(238deg);}\n  &.towards-239-deg {@include wind-rotate(239deg);}\n  &.towards-240-deg {@include wind-rotate(240deg);}\n  &.towards-241-deg {@include wind-rotate(241deg);}\n  &.towards-242-deg {@include wind-rotate(242deg);}\n  &.towards-243-deg {@include wind-rotate(243deg);}\n  &.towards-244-deg {@include wind-rotate(244deg);}\n  &.towards-245-deg {@include wind-rotate(245deg);}\n  &.towards-246-deg {@include wind-rotate(246deg);}\n  &.towards-247-deg {@include wind-rotate(247deg);}\n  &.towards-248-deg {@include wind-rotate(248deg);}\n  &.towards-249-deg {@include wind-rotate(249deg);}\n  &.towards-250-deg {@include wind-rotate(250deg);}\n  &.towards-251-deg {@include wind-rotate(251deg);}\n  &.towards-252-deg {@include wind-rotate(252deg);}\n  &.towards-253-deg {@include wind-rotate(253deg);}\n  &.towards-254-deg {@include wind-rotate(254deg);}\n  &.towards-255-deg {@include wind-rotate(255deg);}\n  &.towards-256-deg {@include wind-rotate(256deg);}\n  &.towards-257-deg {@include wind-rotate(257deg);}\n  &.towards-258-deg {@include wind-rotate(258deg);}\n  &.towards-259-deg {@include wind-rotate(259deg);}\n  &.towards-260-deg {@include wind-rotate(260deg);}\n  &.towards-261-deg {@include wind-rotate(261deg);}\n  &.towards-262-deg {@include wind-rotate(262deg);}\n  &.towards-263-deg {@include wind-rotate(263deg);}\n  &.towards-264-deg {@include wind-rotate(264deg);}\n  &.towards-265-deg {@include wind-rotate(265deg);}\n  &.towards-266-deg {@include wind-rotate(266deg);}\n  &.towards-267-deg {@include wind-rotate(267deg);}\n  &.towards-268-deg {@include wind-rotate(268deg);}\n  &.towards-269-deg {@include wind-rotate(269deg);}\n  &.towards-270-deg {@include wind-rotate(270deg);}\n  &.towards-271-deg {@include wind-rotate(271deg);}\n  &.towards-272-deg {@include wind-rotate(272deg);}\n  &.towards-273-deg {@include wind-rotate(273deg);}\n  &.towards-274-deg {@include wind-rotate(274deg);}\n  &.towards-275-deg {@include wind-rotate(275deg);}\n  &.towards-276-deg {@include wind-rotate(276deg);}\n  &.towards-277-deg {@include wind-rotate(277deg);}\n  &.towards-278-deg {@include wind-rotate(278deg);}\n  &.towards-279-deg {@include wind-rotate(279deg);}\n  &.towards-280-deg {@include wind-rotate(280deg);}\n  &.towards-281-deg {@include wind-rotate(281deg);}\n  &.towards-282-deg {@include wind-rotate(282deg);}\n  &.towards-283-deg {@include wind-rotate(283deg);}\n  &.towards-284-deg {@include wind-rotate(284deg);}\n  &.towards-285-deg {@include wind-rotate(285deg);}\n  &.towards-286-deg {@include wind-rotate(286deg);}\n  &.towards-287-deg {@include wind-rotate(287deg);}\n  &.towards-288-deg {@include wind-rotate(288deg);}\n  &.towards-289-deg {@include wind-rotate(289deg);}\n  &.towards-290-deg {@include wind-rotate(290deg);}\n  &.towards-291-deg {@include wind-rotate(291deg);}\n  &.towards-292-deg {@include wind-rotate(292deg);}\n  &.towards-293-deg {@include wind-rotate(293deg);}\n  &.towards-294-deg {@include wind-rotate(294deg);}\n  &.towards-295-deg {@include wind-rotate(295deg);}\n  &.towards-296-deg {@include wind-rotate(296deg);}\n  &.towards-297-deg {@include wind-rotate(297deg);}\n  &.towards-298-deg {@include wind-rotate(298deg);}\n  &.towards-299-deg {@include wind-rotate(299deg);}\n  &.towards-300-deg {@include wind-rotate(300deg);}\n  &.towards-301-deg {@include wind-rotate(301deg);}\n  &.towards-302-deg {@include wind-rotate(302deg);}\n  &.towards-303-deg {@include wind-rotate(303deg);}\n  &.towards-304-deg {@include wind-rotate(304deg);}\n  &.towards-305-deg {@include wind-rotate(305deg);}\n  &.towards-306-deg {@include wind-rotate(306deg);}\n  &.towards-307-deg {@include wind-rotate(307deg);}\n  &.towards-308-deg {@include wind-rotate(308deg);}\n  &.towards-309-deg {@include wind-rotate(309deg);}\n  &.towards-310-deg {@include wind-rotate(310deg);}\n  &.towards-311-deg {@include wind-rotate(311deg);}\n  &.towards-312-deg {@include wind-rotate(312deg);}\n  &.towards-313-deg {@include wind-rotate(313deg);}\n  &.towards-314-deg {@include wind-rotate(314deg);}\n  &.towards-315-deg {@include wind-rotate(315deg);}\n  &.towards-316-deg {@include wind-rotate(316deg);}\n  &.towards-317-deg {@include wind-rotate(317deg);}\n  &.towards-318-deg {@include wind-rotate(318deg);}\n  &.towards-319-deg {@include wind-rotate(319deg);}\n  &.towards-320-deg {@include wind-rotate(320deg);}\n  &.towards-321-deg {@include wind-rotate(321deg);}\n  &.towards-322-deg {@include wind-rotate(322deg);}\n  &.towards-323-deg {@include wind-rotate(323deg);}\n  &.towards-324-deg {@include wind-rotate(324deg);}\n  &.towards-325-deg {@include wind-rotate(325deg);}\n  &.towards-326-deg {@include wind-rotate(326deg);}\n  &.towards-327-deg {@include wind-rotate(327deg);}\n  &.towards-328-deg {@include wind-rotate(328deg);}\n  &.towards-329-deg {@include wind-rotate(329deg);}\n  &.towards-330-deg {@include wind-rotate(330deg);}\n  &.towards-331-deg {@include wind-rotate(331deg);}\n  &.towards-332-deg {@include wind-rotate(332deg);}\n  &.towards-333-deg {@include wind-rotate(333deg);}\n  &.towards-334-deg {@include wind-rotate(334deg);}\n  &.towards-335-deg {@include wind-rotate(335deg);}\n  &.towards-336-deg {@include wind-rotate(336deg);}\n  &.towards-337-deg {@include wind-rotate(337deg);}\n  &.towards-338-deg {@include wind-rotate(338deg);}\n  &.towards-339-deg {@include wind-rotate(339deg);}\n  &.towards-340-deg {@include wind-rotate(340deg);}\n  &.towards-341-deg {@include wind-rotate(341deg);}\n  &.towards-342-deg {@include wind-rotate(342deg);}\n  &.towards-343-deg {@include wind-rotate(343deg);}\n  &.towards-344-deg {@include wind-rotate(344deg);}\n  &.towards-345-deg {@include wind-rotate(345deg);}\n  &.towards-346-deg {@include wind-rotate(346deg);}\n  &.towards-347-deg {@include wind-rotate(347deg);}\n  &.towards-348-deg {@include wind-rotate(348deg);}\n  &.towards-349-deg {@include wind-rotate(349deg);}\n  &.towards-350-deg {@include wind-rotate(350deg);}\n  &.towards-351-deg {@include wind-rotate(351deg);}\n  &.towards-352-deg {@include wind-rotate(352deg);}\n  &.towards-353-deg {@include wind-rotate(353deg);}\n  &.towards-354-deg {@include wind-rotate(354deg);}\n  &.towards-355-deg {@include wind-rotate(355deg);}\n  &.towards-356-deg {@include wind-rotate(356deg);}\n  &.towards-357-deg {@include wind-rotate(357deg);}\n  &.towards-358-deg {@include wind-rotate(358deg);}\n  &.towards-359-deg {@include wind-rotate(359deg);}\n  &.towards-360-deg {@include wind-rotate(0deg);}\n  &.from-0-deg {@include wind-rotate(180deg);}\n  &.from-1-deg {@include wind-rotate(181deg);}\n  &.from-2-deg {@include wind-rotate(182deg);}\n  &.from-3-deg {@include wind-rotate(183deg);}\n  &.from-4-deg {@include wind-rotate(184deg);}\n  &.from-5-deg {@include wind-rotate(185deg);}\n  &.from-6-deg {@include wind-rotate(186deg);}\n  &.from-7-deg {@include wind-rotate(187deg);}\n  &.from-8-deg {@include wind-rotate(188deg);}\n  &.from-9-deg {@include wind-rotate(189deg);}\n  &.from-10-deg {@include wind-rotate(190deg);}\n  &.from-11-deg {@include wind-rotate(191deg);}\n  &.from-12-deg {@include wind-rotate(192deg);}\n  &.from-13-deg {@include wind-rotate(193deg);}\n  &.from-14-deg {@include wind-rotate(194deg);}\n  &.from-15-deg {@include wind-rotate(195deg);}\n  &.from-16-deg {@include wind-rotate(196deg);}\n  &.from-17-deg {@include wind-rotate(197deg);}\n  &.from-18-deg {@include wind-rotate(198deg);}\n  &.from-19-deg {@include wind-rotate(199deg);}\n  &.from-20-deg {@include wind-rotate(200deg);}\n  &.from-21-deg {@include wind-rotate(201deg);}\n  &.from-22-deg {@include wind-rotate(202deg);}\n  &.from-23-deg {@include wind-rotate(203deg);}\n  &.from-24-deg {@include wind-rotate(204deg);}\n  &.from-25-deg {@include wind-rotate(205deg);}\n  &.from-26-deg {@include wind-rotate(206deg);}\n  &.from-27-deg {@include wind-rotate(207deg);}\n  &.from-28-deg {@include wind-rotate(208deg);}\n  &.from-29-deg {@include wind-rotate(209deg);}\n  &.from-30-deg {@include wind-rotate(210deg);}\n  &.from-31-deg {@include wind-rotate(211deg);}\n  &.from-32-deg {@include wind-rotate(212deg);}\n  &.from-33-deg {@include wind-rotate(213deg);}\n  &.from-34-deg {@include wind-rotate(214deg);}\n  &.from-35-deg {@include wind-rotate(215deg);}\n  &.from-36-deg {@include wind-rotate(216deg);}\n  &.from-37-deg {@include wind-rotate(217deg);}\n  &.from-38-deg {@include wind-rotate(218deg);}\n  &.from-39-deg {@include wind-rotate(219deg);}\n  &.from-40-deg {@include wind-rotate(220deg);}\n  &.from-41-deg {@include wind-rotate(221deg);}\n  &.from-42-deg {@include wind-rotate(222deg);}\n  &.from-43-deg {@include wind-rotate(223deg);}\n  &.from-44-deg {@include wind-rotate(224deg);}\n  &.from-45-deg {@include wind-rotate(225deg);}\n  &.from-46-deg {@include wind-rotate(226deg);}\n  &.from-47-deg {@include wind-rotate(227deg);}\n  &.from-48-deg {@include wind-rotate(228deg);}\n  &.from-49-deg {@include wind-rotate(229deg);}\n  &.from-50-deg {@include wind-rotate(230deg);}\n  &.from-51-deg {@include wind-rotate(231deg);}\n  &.from-52-deg {@include wind-rotate(232deg);}\n  &.from-53-deg {@include wind-rotate(233deg);}\n  &.from-54-deg {@include wind-rotate(234deg);}\n  &.from-55-deg {@include wind-rotate(235deg);}\n  &.from-56-deg {@include wind-rotate(236deg);}\n  &.from-57-deg {@include wind-rotate(237deg);}\n  &.from-58-deg {@include wind-rotate(238deg);}\n  &.from-59-deg {@include wind-rotate(239deg);}\n  &.from-60-deg {@include wind-rotate(240deg);}\n  &.from-61-deg {@include wind-rotate(241deg);}\n  &.from-62-deg {@include wind-rotate(242deg);}\n  &.from-63-deg {@include wind-rotate(243deg);}\n  &.from-64-deg {@include wind-rotate(244deg);}\n  &.from-65-deg {@include wind-rotate(245deg);}\n  &.from-66-deg {@include wind-rotate(246deg);}\n  &.from-67-deg {@include wind-rotate(247deg);}\n  &.from-68-deg {@include wind-rotate(248deg);}\n  &.from-69-deg {@include wind-rotate(249deg);}\n  &.from-70-deg {@include wind-rotate(250deg);}\n  &.from-71-deg {@include wind-rotate(251deg);}\n  &.from-72-deg {@include wind-rotate(252deg);}\n  &.from-73-deg {@include wind-rotate(253deg);}\n  &.from-74-deg {@include wind-rotate(254deg);}\n  &.from-75-deg {@include wind-rotate(255deg);}\n  &.from-76-deg {@include wind-rotate(256deg);}\n  &.from-77-deg {@include wind-rotate(257deg);}\n  &.from-78-deg {@include wind-rotate(258deg);}\n  &.from-79-deg {@include wind-rotate(259deg);}\n  &.from-80-deg {@include wind-rotate(260deg);}\n  &.from-81-deg {@include wind-rotate(261deg);}\n  &.from-82-deg {@include wind-rotate(262deg);}\n  &.from-83-deg {@include wind-rotate(263deg);}\n  &.from-84-deg {@include wind-rotate(264deg);}\n  &.from-85-deg {@include wind-rotate(265deg);}\n  &.from-86-deg {@include wind-rotate(266deg);}\n  &.from-87-deg {@include wind-rotate(267deg);}\n  &.from-88-deg {@include wind-rotate(268deg);}\n  &.from-89-deg {@include wind-rotate(269deg);}\n  &.from-90-deg {@include wind-rotate(270deg);}\n  &.from-91-deg {@include wind-rotate(271deg);}\n  &.from-92-deg {@include wind-rotate(272deg);}\n  &.from-93-deg {@include wind-rotate(273deg);}\n  &.from-94-deg {@include wind-rotate(274deg);}\n  &.from-95-deg {@include wind-rotate(275deg);}\n  &.from-96-deg {@include wind-rotate(276deg);}\n  &.from-97-deg {@include wind-rotate(277deg);}\n  &.from-98-deg {@include wind-rotate(278deg);}\n  &.from-99-deg {@include wind-rotate(279deg);}\n  &.from-100-deg {@include wind-rotate(280deg);}\n  &.from-101-deg {@include wind-rotate(281deg);}\n  &.from-102-deg {@include wind-rotate(282deg);}\n  &.from-103-deg {@include wind-rotate(283deg);}\n  &.from-104-deg {@include wind-rotate(284deg);}\n  &.from-105-deg {@include wind-rotate(285deg);}\n  &.from-106-deg {@include wind-rotate(286deg);}\n  &.from-107-deg {@include wind-rotate(287deg);}\n  &.from-108-deg {@include wind-rotate(288deg);}\n  &.from-109-deg {@include wind-rotate(289deg);}\n  &.from-110-deg {@include wind-rotate(290deg);}\n  &.from-111-deg {@include wind-rotate(291deg);}\n  &.from-112-deg {@include wind-rotate(292deg);}\n  &.from-113-deg {@include wind-rotate(293deg);}\n  &.from-114-deg {@include wind-rotate(294deg);}\n  &.from-115-deg {@include wind-rotate(295deg);}\n  &.from-116-deg {@include wind-rotate(296deg);}\n  &.from-117-deg {@include wind-rotate(297deg);}\n  &.from-118-deg {@include wind-rotate(298deg);}\n  &.from-119-deg {@include wind-rotate(299deg);}\n  &.from-120-deg {@include wind-rotate(300deg);}\n  &.from-121-deg {@include wind-rotate(301deg);}\n  &.from-122-deg {@include wind-rotate(302deg);}\n  &.from-123-deg {@include wind-rotate(303deg);}\n  &.from-124-deg {@include wind-rotate(304deg);}\n  &.from-125-deg {@include wind-rotate(305deg);}\n  &.from-126-deg {@include wind-rotate(306deg);}\n  &.from-127-deg {@include wind-rotate(307deg);}\n  &.from-128-deg {@include wind-rotate(308deg);}\n  &.from-129-deg {@include wind-rotate(309deg);}\n  &.from-130-deg {@include wind-rotate(310deg);}\n  &.from-131-deg {@include wind-rotate(311deg);}\n  &.from-132-deg {@include wind-rotate(312deg);}\n  &.from-133-deg {@include wind-rotate(313deg);}\n  &.from-134-deg {@include wind-rotate(314deg);}\n  &.from-135-deg {@include wind-rotate(315deg);}\n  &.from-136-deg {@include wind-rotate(316deg);}\n  &.from-137-deg {@include wind-rotate(317deg);}\n  &.from-138-deg {@include wind-rotate(318deg);}\n  &.from-139-deg {@include wind-rotate(319deg);}\n  &.from-140-deg {@include wind-rotate(320deg);}\n  &.from-141-deg {@include wind-rotate(321deg);}\n  &.from-142-deg {@include wind-rotate(322deg);}\n  &.from-143-deg {@include wind-rotate(323deg);}\n  &.from-144-deg {@include wind-rotate(324deg);}\n  &.from-145-deg {@include wind-rotate(325deg);}\n  &.from-146-deg {@include wind-rotate(326deg);}\n  &.from-147-deg {@include wind-rotate(327deg);}\n  &.from-148-deg {@include wind-rotate(328deg);}\n  &.from-149-deg {@include wind-rotate(329deg);}\n  &.from-150-deg {@include wind-rotate(330deg);}\n  &.from-151-deg {@include wind-rotate(331deg);}\n  &.from-152-deg {@include wind-rotate(332deg);}\n  &.from-153-deg {@include wind-rotate(333deg);}\n  &.from-154-deg {@include wind-rotate(334deg);}\n  &.from-155-deg {@include wind-rotate(335deg);}\n  &.from-156-deg {@include wind-rotate(336deg);}\n  &.from-157-deg {@include wind-rotate(337deg);}\n  &.from-158-deg {@include wind-rotate(338deg);}\n  &.from-159-deg {@include wind-rotate(339deg);}\n  &.from-160-deg {@include wind-rotate(340deg);}\n  &.from-161-deg {@include wind-rotate(341deg);}\n  &.from-162-deg {@include wind-rotate(342deg);}\n  &.from-163-deg {@include wind-rotate(343deg);}\n  &.from-164-deg {@include wind-rotate(344deg);}\n  &.from-165-deg {@include wind-rotate(345deg);}\n  &.from-166-deg {@include wind-rotate(346deg);}\n  &.from-167-deg {@include wind-rotate(347deg);}\n  &.from-168-deg {@include wind-rotate(348deg);}\n  &.from-169-deg {@include wind-rotate(349deg);}\n  &.from-170-deg {@include wind-rotate(350deg);}\n  &.from-171-deg {@include wind-rotate(351deg);}\n  &.from-172-deg {@include wind-rotate(352deg);}\n  &.from-173-deg {@include wind-rotate(353deg);}\n  &.from-174-deg {@include wind-rotate(354deg);}\n  &.from-175-deg {@include wind-rotate(355deg);}\n  &.from-176-deg {@include wind-rotate(356deg);}\n  &.from-177-deg {@include wind-rotate(357deg);}\n  &.from-178-deg {@include wind-rotate(358deg);}\n  &.from-179-deg {@include wind-rotate(359deg);}\n  &.from-180-deg {@include wind-rotate(0deg);}\n  &.from-181-deg {@include wind-rotate(1deg);}\n  &.from-182-deg {@include wind-rotate(2deg);}\n  &.from-183-deg {@include wind-rotate(3deg);}\n  &.from-184-deg {@include wind-rotate(4deg);}\n  &.from-185-deg {@include wind-rotate(5deg);}\n  &.from-186-deg {@include wind-rotate(6deg);}\n  &.from-187-deg {@include wind-rotate(7deg);}\n  &.from-188-deg {@include wind-rotate(8deg);}\n  &.from-189-deg {@include wind-rotate(9deg);}\n  &.from-190-deg {@include wind-rotate(10deg);}\n  &.from-191-deg {@include wind-rotate(11deg);}\n  &.from-192-deg {@include wind-rotate(12deg);}\n  &.from-193-deg {@include wind-rotate(13deg);}\n  &.from-194-deg {@include wind-rotate(14deg);}\n  &.from-195-deg {@include wind-rotate(15deg);}\n  &.from-196-deg {@include wind-rotate(16deg);}\n  &.from-197-deg {@include wind-rotate(17deg);}\n  &.from-198-deg {@include wind-rotate(18deg);}\n  &.from-199-deg {@include wind-rotate(19deg);}\n  &.from-200-deg {@include wind-rotate(20deg);}\n  &.from-201-deg {@include wind-rotate(21deg);}\n  &.from-202-deg {@include wind-rotate(22deg);}\n  &.from-203-deg {@include wind-rotate(23deg);}\n  &.from-204-deg {@include wind-rotate(24deg);}\n  &.from-205-deg {@include wind-rotate(25deg);}\n  &.from-206-deg {@include wind-rotate(26deg);}\n  &.from-207-deg {@include wind-rotate(27deg);}\n  &.from-208-deg {@include wind-rotate(28deg);}\n  &.from-209-deg {@include wind-rotate(29deg);}\n  &.from-210-deg {@include wind-rotate(30deg);}\n  &.from-211-deg {@include wind-rotate(31deg);}\n  &.from-212-deg {@include wind-rotate(32deg);}\n  &.from-213-deg {@include wind-rotate(33deg);}\n  &.from-214-deg {@include wind-rotate(34deg);}\n  &.from-215-deg {@include wind-rotate(35deg);}\n  &.from-216-deg {@include wind-rotate(36deg);}\n  &.from-217-deg {@include wind-rotate(37deg);}\n  &.from-218-deg {@include wind-rotate(38deg);}\n  &.from-219-deg {@include wind-rotate(39deg);}\n  &.from-220-deg {@include wind-rotate(40deg);}\n  &.from-221-deg {@include wind-rotate(41deg);}\n  &.from-222-deg {@include wind-rotate(42deg);}\n  &.from-223-deg {@include wind-rotate(43deg);}\n  &.from-224-deg {@include wind-rotate(44deg);}\n  &.from-225-deg {@include wind-rotate(45deg);}\n  &.from-226-deg {@include wind-rotate(46deg);}\n  &.from-227-deg {@include wind-rotate(47deg);}\n  &.from-228-deg {@include wind-rotate(48deg);}\n  &.from-229-deg {@include wind-rotate(49deg);}\n  &.from-230-deg {@include wind-rotate(50deg);}\n  &.from-231-deg {@include wind-rotate(51deg);}\n  &.from-232-deg {@include wind-rotate(52deg);}\n  &.from-233-deg {@include wind-rotate(53deg);}\n  &.from-234-deg {@include wind-rotate(54deg);}\n  &.from-235-deg {@include wind-rotate(55deg);}\n  &.from-236-deg {@include wind-rotate(56deg);}\n  &.from-237-deg {@include wind-rotate(57deg);}\n  &.from-238-deg {@include wind-rotate(58deg);}\n  &.from-239-deg {@include wind-rotate(59deg);}\n  &.from-240-deg {@include wind-rotate(60deg);}\n  &.from-241-deg {@include wind-rotate(61deg);}\n  &.from-242-deg {@include wind-rotate(62deg);}\n  &.from-243-deg {@include wind-rotate(63deg);}\n  &.from-244-deg {@include wind-rotate(64deg);}\n  &.from-245-deg {@include wind-rotate(65deg);}\n  &.from-246-deg {@include wind-rotate(66deg);}\n  &.from-247-deg {@include wind-rotate(67deg);}\n  &.from-248-deg {@include wind-rotate(68deg);}\n  &.from-249-deg {@include wind-rotate(69deg);}\n  &.from-250-deg {@include wind-rotate(70deg);}\n  &.from-251-deg {@include wind-rotate(71deg);}\n  &.from-252-deg {@include wind-rotate(72deg);}\n  &.from-253-deg {@include wind-rotate(73deg);}\n  &.from-254-deg {@include wind-rotate(74deg);}\n  &.from-255-deg {@include wind-rotate(75deg);}\n  &.from-256-deg {@include wind-rotate(76deg);}\n  &.from-257-deg {@include wind-rotate(77deg);}\n  &.from-258-deg {@include wind-rotate(78deg);}\n  &.from-259-deg {@include wind-rotate(79deg);}\n  &.from-260-deg {@include wind-rotate(80deg);}\n  &.from-261-deg {@include wind-rotate(81deg);}\n  &.from-262-deg {@include wind-rotate(82deg);}\n  &.from-263-deg {@include wind-rotate(83deg);}\n  &.from-264-deg {@include wind-rotate(84deg);}\n  &.from-265-deg {@include wind-rotate(85deg);}\n  &.from-266-deg {@include wind-rotate(86deg);}\n  &.from-267-deg {@include wind-rotate(87deg);}\n  &.from-268-deg {@include wind-rotate(88deg);}\n  &.from-269-deg {@include wind-rotate(89deg);}\n  &.from-270-deg {@include wind-rotate(90deg);}\n  &.from-271-deg {@include wind-rotate(91deg);}\n  &.from-272-deg {@include wind-rotate(92deg);}\n  &.from-273-deg {@include wind-rotate(93deg);}\n  &.from-274-deg {@include wind-rotate(94deg);}\n  &.from-275-deg {@include wind-rotate(95deg);}\n  &.from-276-deg {@include wind-rotate(96deg);}\n  &.from-277-deg {@include wind-rotate(97deg);}\n  &.from-278-deg {@include wind-rotate(98deg);}\n  &.from-279-deg {@include wind-rotate(99deg);}\n  &.from-280-deg {@include wind-rotate(100deg);}\n  &.from-281-deg {@include wind-rotate(101deg);}\n  &.from-282-deg {@include wind-rotate(102deg);}\n  &.from-283-deg {@include wind-rotate(103deg);}\n  &.from-284-deg {@include wind-rotate(104deg);}\n  &.from-285-deg {@include wind-rotate(105deg);}\n  &.from-286-deg {@include wind-rotate(106deg);}\n  &.from-287-deg {@include wind-rotate(107deg);}\n  &.from-288-deg {@include wind-rotate(108deg);}\n  &.from-289-deg {@include wind-rotate(109deg);}\n  &.from-290-deg {@include wind-rotate(110deg);}\n  &.from-291-deg {@include wind-rotate(111deg);}\n  &.from-292-deg {@include wind-rotate(112deg);}\n  &.from-293-deg {@include wind-rotate(113deg);}\n  &.from-294-deg {@include wind-rotate(114deg);}\n  &.from-295-deg {@include wind-rotate(115deg);}\n  &.from-296-deg {@include wind-rotate(116deg);}\n  &.from-297-deg {@include wind-rotate(117deg);}\n  &.from-298-deg {@include wind-rotate(118deg);}\n  &.from-299-deg {@include wind-rotate(119deg);}\n  &.from-300-deg {@include wind-rotate(120deg);}\n  &.from-301-deg {@include wind-rotate(121deg);}\n  &.from-302-deg {@include wind-rotate(122deg);}\n  &.from-303-deg {@include wind-rotate(123deg);}\n  &.from-304-deg {@include wind-rotate(124deg);}\n  &.from-305-deg {@include wind-rotate(125deg);}\n  &.from-306-deg {@include wind-rotate(126deg);}\n  &.from-307-deg {@include wind-rotate(127deg);}\n  &.from-308-deg {@include wind-rotate(128deg);}\n  &.from-309-deg {@include wind-rotate(129deg);}\n  &.from-310-deg {@include wind-rotate(130deg);}\n  &.from-311-deg {@include wind-rotate(131deg);}\n  &.from-312-deg {@include wind-rotate(132deg);}\n  &.from-313-deg {@include wind-rotate(133deg);}\n  &.from-314-deg {@include wind-rotate(134deg);}\n  &.from-315-deg {@include wind-rotate(135deg);}\n  &.from-316-deg {@include wind-rotate(136deg);}\n  &.from-317-deg {@include wind-rotate(137deg);}\n  &.from-318-deg {@include wind-rotate(138deg);}\n  &.from-319-deg {@include wind-rotate(139deg);}\n  &.from-320-deg {@include wind-rotate(140deg);}\n  &.from-321-deg {@include wind-rotate(141deg);}\n  &.from-322-deg {@include wind-rotate(142deg);}\n  &.from-323-deg {@include wind-rotate(143deg);}\n  &.from-324-deg {@include wind-rotate(144deg);}\n  &.from-325-deg {@include wind-rotate(145deg);}\n  &.from-326-deg {@include wind-rotate(146deg);}\n  &.from-327-deg {@include wind-rotate(147deg);}\n  &.from-328-deg {@include wind-rotate(148deg);}\n  &.from-329-deg {@include wind-rotate(149deg);}\n  &.from-330-deg {@include wind-rotate(150deg);}\n  &.from-331-deg {@include wind-rotate(151deg);}\n  &.from-332-deg {@include wind-rotate(152deg);}\n  &.from-333-deg {@include wind-rotate(153deg);}\n  &.from-334-deg {@include wind-rotate(154deg);}\n  &.from-335-deg {@include wind-rotate(155deg);}\n  &.from-336-deg {@include wind-rotate(156deg);}\n  &.from-337-deg {@include wind-rotate(157deg);}\n  &.from-338-deg {@include wind-rotate(158deg);}\n  &.from-339-deg {@include wind-rotate(159deg);}\n  &.from-340-deg {@include wind-rotate(160deg);}\n  &.from-341-deg {@include wind-rotate(161deg);}\n  &.from-342-deg {@include wind-rotate(162deg);}\n  &.from-343-deg {@include wind-rotate(163deg);}\n  &.from-344-deg {@include wind-rotate(164deg);}\n  &.from-345-deg {@include wind-rotate(165deg);}\n  &.from-346-deg {@include wind-rotate(166deg);}\n  &.from-347-deg {@include wind-rotate(167deg);}\n  &.from-348-deg {@include wind-rotate(168deg);}\n  &.from-349-deg {@include wind-rotate(169deg);}\n  &.from-350-deg {@include wind-rotate(170deg);}\n  &.from-351-deg {@include wind-rotate(171deg);}\n  &.from-352-deg {@include wind-rotate(172deg);}\n  &.from-353-deg {@include wind-rotate(173deg);}\n  &.from-354-deg {@include wind-rotate(174deg);}\n  &.from-355-deg {@include wind-rotate(175deg);}\n  &.from-356-deg {@include wind-rotate(176deg);}\n  &.from-357-deg {@include wind-rotate(177deg);}\n  &.from-358-deg {@include wind-rotate(178deg);}\n  &.from-359-deg {@include wind-rotate(179deg);}\n  &.from-360-deg {@include wind-rotate(180deg);}\n}\n\n.wi-wind-towards-n    {\n  @extend .wi-wind.towards-0-deg;\n}"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-classes/classes-wind.scss",
    "content": "// Wind Variables 2.0\n\n$wind: \"\\f0b1\";\n\n.#{$wi-css-prefix}-wind:before { content: $wind; }\n\n@mixin wind-rotate( $val: 0deg ) {\n  -webkit-transform: rotate($val);\n  -moz-transform: rotate($val);\n  -ms-transform: rotate($val);\n  -o-transform: rotate($val);\n  transform: rotate($val);\n}\n\n@import \"classes-wind-degrees.scss\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-beaufort.scss",
    "content": "$wind-beaufort-0: \"\\f0b7\";\n$wind-beaufort-1: \"\\f0b8\";\n$wind-beaufort-2: \"\\f0b9\";\n$wind-beaufort-3: \"\\f0ba\";\n$wind-beaufort-4: \"\\f0bb\";\n$wind-beaufort-5: \"\\f0bc\";\n$wind-beaufort-6: \"\\f0bd\";\n$wind-beaufort-7: \"\\f0be\";\n$wind-beaufort-8: \"\\f0bf\";\n$wind-beaufort-9: \"\\f0c0\";\n$wind-beaufort-10: \"\\f0c1\";\n$wind-beaufort-11: \"\\f0c2\";\n$wind-beaufort-12: \"\\f0c3\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-day.scss",
    "content": "$day-sunny: \"\\f00d\";\n$day-cloudy: \"\\f002\";\n$day-cloudy-gusts: \"\\f000\";\n$day-cloudy-windy: \"\\f001\";\n$day-fog: \"\\f003\";\n$day-hail: \"\\f004\";\n$day-haze: \"\\f0b6\";\n$day-lightning: \"\\f005\";\n$day-rain: \"\\f008\";\n$day-rain-mix: \"\\f006\";\n$day-rain-wind: \"\\f007\";\n$day-showers: \"\\f009\";\n$day-sleet: \"\\f0b2\";\n$day-sleet-storm: \"\\f068\";\n$day-snow: \"\\f00a\";\n$day-snow-thunderstorm: \"\\f06b\";\n$day-snow-wind: \"\\f065\";\n$day-sprinkle: \"\\f00b\";\n$day-storm-showers: \"\\f00e\";\n$day-sunny-overcast: \"\\f00c\";\n$day-thunderstorm: \"\\f010\";\n$day-windy: \"\\f085\";\n$solar-eclipse: \"\\f06e\";\n$hot: \"\\f072\";\n$day-cloudy-high: \"\\f07d\";\n$day-light-wind: \"\\f0c4\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-direction.scss",
    "content": "$direction-up: \"\\f058\";\n$direction-up-right: \"\\f057\";\n$direction-right: \"\\f04d\";\n$direction-down-right: \"\\f088\";\n$direction-down: \"\\f044\";\n$direction-down-left: \"\\f043\";\n$direction-left: \"\\f048\";\n$direction-up-left: \"\\f087\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-misc.scss",
    "content": "$alien: \"\\f075\";\n$celsius: \"\\f03c\";\n$fahrenheit: \"\\f045\";\n$degrees: \"\\f042\";\n$thermometer: \"\\f055\";\n$thermometer-exterior: \"\\f053\";\n$thermometer-internal: \"\\f054\";\n$cloud-down: \"\\f03d\";\n$cloud-up: \"\\f040\";\n$cloud-refresh: \"\\f03e\";\n$horizon: \"\\f047\";\n$horizon-alt: \"\\f046\";\n$sunrise: \"\\f051\";\n$sunset: \"\\f052\";\n$moonrise: \"\\f0c9\";\n$moonset: \"\\f0ca\";\n$refresh: \"\\f04c\";\n$refresh-alt: \"\\f04b\";\n$umbrella: \"\\f084\";\n$barometer: \"\\f079\";\n$humidity: \"\\f07a\";\n$na: \"\\f07b\";\n$train: \"\\f0cb\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-moon.scss",
    "content": "$moon-new: \"\\f095\";\n$moon-waxing-cresent-1: \"\\f096\";\n$moon-waxing-cresent-2: \"\\f097\";\n$moon-waxing-cresent-3: \"\\f098\";\n$moon-waxing-cresent-4: \"\\f099\";\n$moon-waxing-cresent-5: \"\\f09a\";\n$moon-waxing-cresent-6: \"\\f09b\";\n$moon-first-quarter: \"\\f09c\";\n$moon-waxing-gibbous-1: \"\\f09d\";\n$moon-waxing-gibbous-2: \"\\f09e\";\n$moon-waxing-gibbous-3: \"\\f09f\";\n$moon-waxing-gibbous-4: \"\\f0a0\";\n$moon-waxing-gibbous-5: \"\\f0a1\";\n$moon-waxing-gibbous-6: \"\\f0a2\";\n$moon-full: \"\\f0a3\";\n$moon-waning-gibbous-1: \"\\f0a4\";\n$moon-waning-gibbous-2: \"\\f0a5\";\n$moon-waning-gibbous-3: \"\\f0a6\";\n$moon-waning-gibbous-4: \"\\f0a7\";\n$moon-waning-gibbous-5: \"\\f0a8\";\n$moon-waning-gibbous-6: \"\\f0a9\";\n$moon-third-quarter: \"\\f0aa\";\n$moon-waning-crescent-1: \"\\f0ab\";\n$moon-waning-crescent-2: \"\\f0ac\";\n$moon-waning-crescent-3: \"\\f0ad\";\n$moon-waning-crescent-4: \"\\f0ae\";\n$moon-waning-crescent-5: \"\\f0af\";\n$moon-waning-crescent-6: \"\\f0b0\";\n$moon-alt-new: \"\\f0eb\";\n$moon-alt-waxing-cresent-1: \"\\f0d0\";\n$moon-alt-waxing-cresent-2: \"\\f0d1\";\n$moon-alt-waxing-cresent-3: \"\\f0d2\";\n$moon-alt-waxing-cresent-4: \"\\f0d3\";\n$moon-alt-waxing-cresent-5: \"\\f0d4\";\n$moon-alt-waxing-cresent-6: \"\\f0d5\";\n$moon-alt-first-quarter: \"\\f0d6\";\n$moon-alt-waxing-gibbous-1: \"\\f0d7\";\n$moon-alt-waxing-gibbous-2: \"\\f0d8\";\n$moon-alt-waxing-gibbous-3: \"\\f0d9\";\n$moon-alt-waxing-gibbous-4: \"\\f0da\";\n$moon-alt-waxing-gibbous-5: \"\\f0db\";\n$moon-alt-waxing-gibbous-6: \"\\f0dc\";\n$moon-alt-full: \"\\f0dd\";\n$moon-alt-waning-gibbous-1: \"\\f0de\";\n$moon-alt-waning-gibbous-2: \"\\f0df\";\n$moon-alt-waning-gibbous-3: \"\\f0e0\";\n$moon-alt-waning-gibbous-4: \"\\f0e1\";\n$moon-alt-waning-gibbous-5: \"\\f0e2\";\n$moon-alt-waning-gibbous-6: \"\\f0e3\";\n$moon-alt-third-quarter: \"\\f0e4\";\n$moon-alt-waning-crescent-1: \"\\f0e5\";\n$moon-alt-waning-crescent-2: \"\\f0e6\";\n$moon-alt-waning-crescent-3: \"\\f0e7\";\n$moon-alt-waning-crescent-4: \"\\f0e8\";\n$moon-alt-waning-crescent-5: \"\\f0e9\";\n$moon-alt-waning-crescent-6: \"\\f0ea\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-neutral.scss",
    "content": "$cloud: \"\\f041\";\n$cloudy: \"\\f013\";\n$cloudy-gusts: \"\\f011\";\n$cloudy-windy: \"\\f012\";\n$fog: \"\\f014\";\n$hail: \"\\f015\";\n$rain: \"\\f019\";\n$rain-mix: \"\\f017\";\n$rain-wind: \"\\f018\";\n$showers: \"\\f01a\";\n$sleet: \"\\f0b5\";\n$snow: \"\\f01b\";\n$sprinkle: \"\\f01c\";\n$storm-showers: \"\\f01d\";\n$thunderstorm: \"\\f01e\";\n$snow-wind: \"\\f064\";\n$snow: \"\\f01b\";\n$smog: \"\\f074\";\n$smoke: \"\\f062\";\n$lightning: \"\\f016\";\n$raindrops: \"\\f04e\";\n$raindrop: \"\\f078\";\n$dust: \"\\f063\";\n$snowflake-cold: \"\\f076\";\n$windy: \"\\f021\";\n$strong-wind: \"\\f050\";\n$sandstorm: \"\\f082\";\n$earthquake: \"\\f0c6\";\n$fire: \"\\f0c7\";\n$flood: \"\\f07c\";\n$meteor: \"\\f071\";\n$tsunami: \"\\f0c5\";\n$volcano: \"\\f0c8\";\n$hurricane: \"\\f073\";\n$tornado: \"\\f056\";\n$small-craft-advisory: \"\\f0cc\";\n$gale-warning: \"\\f0cd\";\n$storm-warning: \"\\f0ce\";\n$hurricane-warning: \"\\f0cf\";\n$wind-direction: \"\\f0b1\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-night.scss",
    "content": "$night-clear: \"\\f02e\";\n$night-alt-cloudy: \"\\f086\";\n$night-alt-cloudy-gusts: \"\\f022\";\n$night-alt-cloudy-windy: \"\\f023\";\n$night-alt-hail: \"\\f024\";\n$night-alt-lightning: \"\\f025\";\n$night-alt-rain: \"\\f028\";\n$night-alt-rain-mix: \"\\f026\";\n$night-alt-rain-wind: \"\\f027\";\n$night-alt-showers: \"\\f029\";\n$night-alt-sleet: \"\\f0b4\";\n$night-alt-sleet-storm: \"\\f06a\";\n$night-alt-snow: \"\\f02a\";\n$night-alt-snow-thunderstorm: \"\\f06d\";\n$night-alt-snow-wind: \"\\f067\";\n$night-alt-sprinkle: \"\\f02b\";\n$night-alt-storm-showers: \"\\f02c\";\n$night-alt-thunderstorm: \"\\f02d\";\n$night-cloudy: \"\\f031\";\n$night-cloudy-gusts: \"\\f02f\";\n$night-cloudy-windy: \"\\f030\";\n$night-fog: \"\\f04a\";\n$night-hail: \"\\f032\";\n$night-lightning: \"\\f033\";\n$night-partly-cloudy: \"\\f083\";\n$night-rain: \"\\f036\";\n$night-rain-mix: \"\\f034\";\n$night-rain-wind: \"\\f035\";\n$night-showers: \"\\f037\";\n$night-sleet: \"\\f0b3\";\n$night-sleet-storm: \"\\f069\";\n$night-snow: \"\\f038\";\n$night-snow-thunderstorm: \"\\f06c\";\n$night-snow-wind: \"\\f066\";\n$night-sprinkle: \"\\f039\";\n$night-storm-showers: \"\\f03a\";\n$night-thunderstorm: \"\\f03b\";\n$lunar-eclipse: \"\\f070\";\n$stars: \"\\f077\";\n$storm-showers: \"\\f01d\";\n$thunderstorm: \"\\f01e\";\n$night-alt-cloudy-high: \"\\f07e\";\n$night-cloudy-high: \"\\f080\";\n$night-alt-partly-cloudy: \"\\f081\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-time.scss",
    "content": "$time-1: \"\\f08a\";\n$time-2: \"\\f08b\";\n$time-3: \"\\f08c\";\n$time-4: \"\\f08d\";\n$time-5: \"\\f08e\";\n$time-6: \"\\f08f\";\n$time-7: \"\\f090\";\n$time-8: \"\\f091\";\n$time-9: \"\\f092\";\n$time-10: \"\\f093\";\n$time-11: \"\\f094\";\n$time-12: \"\\f089\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/icon-variables/variables-wind-names.scss",
    "content": "$n: \"\\f0b1\";\n$nne: \"\\f0b1\";\n$ne: \"\\f0b1\";\n$ene: \"\\f0b1\";\n$e: \"\\f0b1\";\n$ese: \"\\f0b1\";\n$se: \"\\f0b1\";\n$sse: \"\\f0b1\";\n$s: \"\\f0b1\";\n$ssw: \"\\f0b1\";\n$sw: \"\\f0b1\";\n$wsw: \"\\f0b1\";\n$w: \"\\f0b1\";\n$wnw: \"\\f0b1\";\n$nw: \"\\f0b1\";\n$nnw: \"\\f0b1\";\n$n: \"\\f0b1\";\n$nne: \"\\f0b1\";\n$ne: \"\\f0b1\";\n$ene: \"\\f0b1\";\n$e: \"\\f0b1\";\n$ese: \"\\f0b1\";\n$se: \"\\f0b1\";\n$sse: \"\\f0b1\";\n$s: \"\\f0b1\";\n$ssw: \"\\f0b1\";\n$sw: \"\\f0b1\";\n$wsw: \"\\f0b1\";\n$w: \"\\f0b1\";\n$wnw: \"\\f0b1\";\n$nw: \"\\f0b1\";\n$nnw: \"\\f0b1\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/mappings/wi-forecast-io.scss",
    "content": ".#{$wi-css-prefix}-forecast-io-clear-day:before            { content: $day-sunny     ; }\n.#{$wi-css-prefix}-forecast-io-clear-night:before          { content: $night-clear   ; }\n.#{$wi-css-prefix}-forecast-io-rain:before                 { content: $rain          ; }\n.#{$wi-css-prefix}-forecast-io-snow:before                 { content: $snow          ; }\n.#{$wi-css-prefix}-forecast-io-sleet:before                { content: $sleet         ; }\n.#{$wi-css-prefix}-forecast-io-wind:before                 { content: $strong-wind   ; }\n.#{$wi-css-prefix}-forecast-io-fog:before                  { content: $fog           ; }\n.#{$wi-css-prefix}-forecast-io-cloudy:before               { content: $cloudy        ; }\n.#{$wi-css-prefix}-forecast-io-partly-cloudy-day:before    { content: $day-cloudy    ; }\n.#{$wi-css-prefix}-forecast-io-partly-cloudy-night:before  { content: $night-cloudy  ; }\n.#{$wi-css-prefix}-forecast-io-hail:before                 { content: $hail          ; }\n.#{$wi-css-prefix}-forecast-io-thunderstorm:before         { content: $thunderstorm  ; }\n.#{$wi-css-prefix}-forecast-io-tornado:before              { content: $tornado       ; }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/mappings/wi-owm.scss",
    "content": "// Neutral\n    .#{$wi-css-prefix}-owm-200:before                            { content: $thunderstorm                ; }\n    .#{$wi-css-prefix}-owm-201:before                            { content: $thunderstorm                ; }\n    .#{$wi-css-prefix}-owm-202:before                            { content: $thunderstorm                ; }\n    .#{$wi-css-prefix}-owm-210:before                            { content: $lightning                   ; }\n    .#{$wi-css-prefix}-owm-211:before                            { content: $lightning                   ; }\n    .#{$wi-css-prefix}-owm-212:before                            { content: $lightning                   ; }\n    .#{$wi-css-prefix}-owm-221:before                            { content: $lightning                   ; }\n    .#{$wi-css-prefix}-owm-230:before                            { content: $thunderstorm                ; }\n    .#{$wi-css-prefix}-owm-231:before                            { content: $thunderstorm                ; }\n    .#{$wi-css-prefix}-owm-232:before                            { content: $thunderstorm                ; }\n    .#{$wi-css-prefix}-owm-300:before                            { content: $sprinkle                    ; }\n    .#{$wi-css-prefix}-owm-301:before                            { content: $sprinkle                    ; }\n    .#{$wi-css-prefix}-owm-302:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-310:before                            { content: $rain-mix                    ; }\n    .#{$wi-css-prefix}-owm-311:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-312:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-313:before                            { content: $showers                     ; }\n    .#{$wi-css-prefix}-owm-314:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-321:before                            { content: $sprinkle                    ; }\n    .#{$wi-css-prefix}-owm-500:before                            { content: $sprinkle                    ; }\n    .#{$wi-css-prefix}-owm-501:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-502:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-503:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-504:before                            { content: $rain                        ; }\n    .#{$wi-css-prefix}-owm-511:before                            { content: $rain-mix                    ; }\n    .#{$wi-css-prefix}-owm-520:before                            { content: $showers                     ; }\n    .#{$wi-css-prefix}-owm-521:before                            { content: $showers                     ; }\n    .#{$wi-css-prefix}-owm-522:before                            { content: $showers                     ; }\n    .#{$wi-css-prefix}-owm-531:before                            { content: $storm-showers               ; }\n    .#{$wi-css-prefix}-owm-600:before                            { content: $snow                        ; }\n    .#{$wi-css-prefix}-owm-601:before                            { content: $snow                        ; }\n    .#{$wi-css-prefix}-owm-602:before                            { content: $sleet                       ; }\n    .#{$wi-css-prefix}-owm-611:before                            { content: $rain-mix                    ; }\n    .#{$wi-css-prefix}-owm-612:before                            { content: $rain-mix                    ; }\n    .#{$wi-css-prefix}-owm-615:before                            { content: $rain-mix                    ; }\n    .#{$wi-css-prefix}-owm-616:before                            { content: $rain-mix                    ; }\n    .#{$wi-css-prefix}-owm-620:before                            { content: $rain-mix                    ; }\n    .#{$wi-css-prefix}-owm-621:before                            { content: $snow                        ; }\n    .#{$wi-css-prefix}-owm-622:before                            { content: $snow                        ; }\n    .#{$wi-css-prefix}-owm-701:before                            { content: $showers                     ; }\n    .#{$wi-css-prefix}-owm-711:before                            { content: $smoke                       ; }\n    .#{$wi-css-prefix}-owm-721:before                            { content: $day-haze                    ; }\n    .#{$wi-css-prefix}-owm-731:before                            { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-741:before                            { content: $fog                         ; }\n    .#{$wi-css-prefix}-owm-761:before                            { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-762:before                            { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-771:before                            { content: $cloudy-gusts                ; }\n    .#{$wi-css-prefix}-owm-781:before                            { content: $tornado                     ; }\n    .#{$wi-css-prefix}-owm-800:before                            { content: $day-sunny                   ; }\n    .#{$wi-css-prefix}-owm-801:before                            { content: $cloudy-gusts                ; }\n    .#{$wi-css-prefix}-owm-802:before                            { content: $cloudy-gusts                ; }\n    .#{$wi-css-prefix}-owm-803:before                            { content: $cloudy-gusts                ; }\n    .#{$wi-css-prefix}-owm-803:before                            { content: $cloudy-windy                ; }\n    .#{$wi-css-prefix}-owm-804:before                            { content: $cloudy                      ; }\n    .#{$wi-css-prefix}-owm-900:before                            { content: $tornado                     ; }\n    .#{$wi-css-prefix}-owm-901:before                            { content: $storm-showers               ; }\n    .#{$wi-css-prefix}-owm-902:before                            { content: $hurricane                   ; }\n    .#{$wi-css-prefix}-owm-903:before                            { content: $snowflake-cold              ; }\n    .#{$wi-css-prefix}-owm-904:before                            { content: $hot                         ; }\n    .#{$wi-css-prefix}-owm-905:before                            { content: $windy                       ; }\n    .#{$wi-css-prefix}-owm-906:before                            { content: $hail                        ; }\n    .#{$wi-css-prefix}-owm-957:before                            { content: $strong-wind                 ; }\n    //Day\n    .#{$wi-css-prefix}-owm-day-200:before                        { content: $day-thunderstorm            ; }\n    .#{$wi-css-prefix}-owm-day-201:before                        { content: $day-thunderstorm            ; }\n    .#{$wi-css-prefix}-owm-day-202:before                        { content: $day-thunderstorm            ; }\n    .#{$wi-css-prefix}-owm-day-210:before                        { content: $day-lightning               ; }\n    .#{$wi-css-prefix}-owm-day-211:before                        { content: $day-lightning               ; }\n    .#{$wi-css-prefix}-owm-day-212:before                        { content: $day-lightning               ; }\n    .#{$wi-css-prefix}-owm-day-221:before                        { content: $day-lightning               ; }\n    .#{$wi-css-prefix}-owm-day-230:before                        { content: $day-thunderstorm            ; }\n    .#{$wi-css-prefix}-owm-day-231:before                        { content: $day-thunderstorm            ; }\n    .#{$wi-css-prefix}-owm-day-232:before                        { content: $day-thunderstorm            ; }\n    .#{$wi-css-prefix}-owm-day-300:before                        { content: $day-sprinkle                ; }\n    .#{$wi-css-prefix}-owm-day-301:before                        { content: $day-sprinkle                ; }\n    .#{$wi-css-prefix}-owm-day-302:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-310:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-311:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-312:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-313:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-314:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-321:before                        { content: $day-sprinkle                ; }\n    .#{$wi-css-prefix}-owm-day-500:before                        { content: $day-sprinkle                ; }\n    .#{$wi-css-prefix}-owm-day-501:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-502:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-503:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-504:before                        { content: $day-rain                    ; }\n    .#{$wi-css-prefix}-owm-day-511:before                        { content: $day-rain-mix                ; }\n    .#{$wi-css-prefix}-owm-day-520:before                        { content: $day-showers                 ; }\n    .#{$wi-css-prefix}-owm-day-521:before                        { content: $day-showers                 ; }\n    .#{$wi-css-prefix}-owm-day-522:before                        { content: $day-showers                 ; }\n    .#{$wi-css-prefix}-owm-day-531:before                        { content: $day-storm-showers           ; }\n    .#{$wi-css-prefix}-owm-day-600:before                        { content: $day-snow                    ; }\n    .#{$wi-css-prefix}-owm-day-601:before                        { content: $day-sleet                   ; }\n    .#{$wi-css-prefix}-owm-day-602:before                        { content: $day-snow                    ; }\n    .#{$wi-css-prefix}-owm-day-611:before                        { content: $day-rain-mix                ; }\n    .#{$wi-css-prefix}-owm-day-612:before                        { content: $day-rain-mix                ; }\n    .#{$wi-css-prefix}-owm-day-615:before                        { content: $day-rain-mix                ; }\n    .#{$wi-css-prefix}-owm-day-616:before                        { content: $day-rain-mix                ; }\n    .#{$wi-css-prefix}-owm-day-620:before                        { content: $day-rain-mix                ; }\n    .#{$wi-css-prefix}-owm-day-621:before                        { content: $day-snow                    ; }\n    .#{$wi-css-prefix}-owm-day-622:before                        { content: $day-snow                    ; }\n    .#{$wi-css-prefix}-owm-day-701:before                        { content: $day-showers                 ; }\n    .#{$wi-css-prefix}-owm-day-711:before                        { content: $smoke                       ; }\n    .#{$wi-css-prefix}-owm-day-721:before                        { content: $day-haze                    ; }\n    .#{$wi-css-prefix}-owm-day-731:before                        { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-day-741:before                        { content: $day-fog                     ; }\n    .#{$wi-css-prefix}-owm-day-761:before                        { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-day-762:before                        { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-day-781:before                        { content: $tornado                     ; }\n    .#{$wi-css-prefix}-owm-day-800:before                        { content: $day-sunny                   ; }\n    .#{$wi-css-prefix}-owm-day-801:before                        { content: $day-cloudy-gusts            ; }\n    .#{$wi-css-prefix}-owm-day-802:before                        { content: $day-cloudy-gusts            ; }\n    .#{$wi-css-prefix}-owm-day-803:before                        { content: $day-cloudy-gusts            ; }\n    .#{$wi-css-prefix}-owm-day-804:before                        { content: $day-sunny-overcast          ; }\n    .#{$wi-css-prefix}-owm-day-900:before                        { content: $tornado                     ; }\n    .#{$wi-css-prefix}-owm-day-902:before                        { content: $hurricane                   ; }\n    .#{$wi-css-prefix}-owm-day-903:before                        { content: $snowflake-cold              ; }\n    .#{$wi-css-prefix}-owm-day-904:before                        { content: $hot                         ; }\n    .#{$wi-css-prefix}-owm-day-906:before                        { content: $day-hail                    ; }\n    .#{$wi-css-prefix}-owm-day-957:before                        { content: $strong-wind                 ; }\n    //Night\n    .#{$wi-css-prefix}-owm-night-200:before                      { content: $night-alt-thunderstorm      ; }\n    .#{$wi-css-prefix}-owm-night-201:before                      { content: $night-alt-thunderstorm      ; }\n    .#{$wi-css-prefix}-owm-night-202:before                      { content: $night-alt-thunderstorm      ; }\n    .#{$wi-css-prefix}-owm-night-210:before                      { content: $night-alt-lightning         ; }\n    .#{$wi-css-prefix}-owm-night-211:before                      { content: $night-alt-lightning         ; }\n    .#{$wi-css-prefix}-owm-night-212:before                      { content: $night-alt-lightning         ; }\n    .#{$wi-css-prefix}-owm-night-221:before                      { content: $night-alt-lightning         ; }\n    .#{$wi-css-prefix}-owm-night-230:before                      { content: $night-alt-thunderstorm      ; }\n    .#{$wi-css-prefix}-owm-night-231:before                      { content: $night-alt-thunderstorm      ; }\n    .#{$wi-css-prefix}-owm-night-232:before                      { content: $night-alt-thunderstorm      ; }\n    .#{$wi-css-prefix}-owm-night-300:before                      { content: $night-alt-sprinkle          ; }\n    .#{$wi-css-prefix}-owm-night-301:before                      { content: $night-alt-sprinkle          ; }\n    .#{$wi-css-prefix}-owm-night-302:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-310:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-311:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-312:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-313:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-314:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-321:before                      { content: $night-alt-sprinkle          ; }\n    .#{$wi-css-prefix}-owm-night-500:before                      { content: $night-alt-sprinkle          ; }\n    .#{$wi-css-prefix}-owm-night-501:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-502:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-503:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-504:before                      { content: $night-alt-rain              ; }\n    .#{$wi-css-prefix}-owm-night-511:before                      { content: $night-alt-rain-mix          ; }\n    .#{$wi-css-prefix}-owm-night-520:before                      { content: $night-alt-showers           ; }\n    .#{$wi-css-prefix}-owm-night-521:before                      { content: $night-alt-showers           ; }\n    .#{$wi-css-prefix}-owm-night-522:before                      { content: $night-alt-showers           ; }\n    .#{$wi-css-prefix}-owm-night-531:before                      { content: $night-alt-storm-showers     ; }\n    .#{$wi-css-prefix}-owm-night-600:before                      { content: $night-alt-snow              ; }\n    .#{$wi-css-prefix}-owm-night-601:before                      { content: $night-alt-sleet             ; }\n    .#{$wi-css-prefix}-owm-night-602:before                      { content: $night-alt-snow              ; }\n    .#{$wi-css-prefix}-owm-night-611:before                      { content: $night-alt-rain-mix          ; }\n    .#{$wi-css-prefix}-owm-night-612:before                      { content: $night-alt-rain-mix          ; }\n    .#{$wi-css-prefix}-owm-night-615:before                      { content: $night-alt-rain-mix          ; }\n    .#{$wi-css-prefix}-owm-night-616:before                      { content: $night-alt-rain-mix          ; }\n    .#{$wi-css-prefix}-owm-night-620:before                      { content: $night-alt-rain-mix          ; }\n    .#{$wi-css-prefix}-owm-night-621:before                      { content: $night-alt-snow              ; }\n    .#{$wi-css-prefix}-owm-night-622:before                      { content: $night-alt-snow              ; }\n    .#{$wi-css-prefix}-owm-night-701:before                      { content: $night-alt-showers           ; }\n    .#{$wi-css-prefix}-owm-night-711:before                      { content: $smoke                       ; }\n    .#{$wi-css-prefix}-owm-night-721:before                      { content: $day-haze                    ; }\n    .#{$wi-css-prefix}-owm-night-731:before                      { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-night-741:before                      { content: $night-fog                   ; }\n    .#{$wi-css-prefix}-owm-night-761:before                      { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-night-762:before                      { content: $dust                        ; }\n    .#{$wi-css-prefix}-owm-night-781:before                      { content: $tornado                     ; }\n    .#{$wi-css-prefix}-owm-night-800:before                      { content: $night-clear                 ; }\n    .#{$wi-css-prefix}-owm-night-801:before                      { content: $night-alt-cloudy-gusts      ; }\n    .#{$wi-css-prefix}-owm-night-802:before                      { content: $night-alt-cloudy-gusts      ; }\n    .#{$wi-css-prefix}-owm-night-803:before                      { content: $night-alt-cloudy-gusts      ; }\n    .#{$wi-css-prefix}-owm-night-804:before                      { content: $night-alt-cloudy            ; }\n    .#{$wi-css-prefix}-owm-night-900:before                      { content: $tornado                     ; }\n    .#{$wi-css-prefix}-owm-night-902:before                      { content: $hurricane                   ; }\n    .#{$wi-css-prefix}-owm-night-903:before                      { content: $snowflake-cold              ; }\n    .#{$wi-css-prefix}-owm-night-904:before                      { content: $hot                         ; }\n    .#{$wi-css-prefix}-owm-night-906:before                      { content: $night-alt-hail              ; }\n    .#{$wi-css-prefix}-owm-night-957:before                      { content: $strong-wind                 ; }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/mappings/wi-wmo4680.scss",
    "content": ".#{$wi-css-prefix}-wmo4680-0:before,\n.#{$wi-css-prefix}-wmo4680-00:before       { content: $thermometer           ; }\n.#{$wi-css-prefix}-wmo4680-1:before,\n.#{$wi-css-prefix}-wmo4680-01:before       { content: $cloudy                ; }\n.#{$wi-css-prefix}-wmo4680-2:before,\n.#{$wi-css-prefix}-wmo4680-02:before       { content: $thermometer           ; }\n.#{$wi-css-prefix}-wmo4680-3:before,\n.#{$wi-css-prefix}-wmo4680-03:before       { content: $cloudy                ; }\n.#{$wi-css-prefix}-wmo4680-4:before,\n.#{$wi-css-prefix}-wmo4680-04:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-5:before,\n.#{$wi-css-prefix}-wmo4680-05:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-10:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-11:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-12:before       { content: $lightning             ; }\n.#{$wi-css-prefix}-wmo4680-18:before       { content: $strong-wind           ; }\n.#{$wi-css-prefix}-wmo4680-20:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-21:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-22:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-23:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-24:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-25:before       { content: $hail                  ; }\n.#{$wi-css-prefix}-wmo4680-26:before       { content: $thunderstorm          ; }\n.#{$wi-css-prefix}-wmo4680-27:before       { content: $dust                  ; }\n.#{$wi-css-prefix}-wmo4680-28:before       { content: $dust                  ; }\n.#{$wi-css-prefix}-wmo4680-29:before       { content: $dust                  ; }\n.#{$wi-css-prefix}-wmo4680-30:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-31:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-32:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-33:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-34:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-35:before       { content: $fog                   ; }\n.#{$wi-css-prefix}-wmo4680-40:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-41:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-42:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-43:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-44:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-45:before       { content: $hail                  ; }\n.#{$wi-css-prefix}-wmo4680-46:before       { content: $hail                  ; }\n.#{$wi-css-prefix}-wmo4680-47:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-48:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-50:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-51:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-52:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-53:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-54:before       { content: $snowflake-cold        ; }\n.#{$wi-css-prefix}-wmo4680-55:before       { content: $snowflake-cold        ; }\n.#{$wi-css-prefix}-wmo4680-56:before       { content: $snowflake-cold        ; }\n.#{$wi-css-prefix}-wmo4680-57:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-58:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-60:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-61:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-62:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-63:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-64:before       { content: $hail                  ; }\n.#{$wi-css-prefix}-wmo4680-65:before       { content: $hail                  ; }\n.#{$wi-css-prefix}-wmo4680-66:before       { content: $hail                  ; }\n.#{$wi-css-prefix}-wmo4680-67:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-68:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-70:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-71:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-72:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-73:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-74:before       { content: $snowflake-cold        ; }\n.#{$wi-css-prefix}-wmo4680-75:before       { content: $snowflake-cold        ; }\n.#{$wi-css-prefix}-wmo4680-76:before       { content: $snowflake-cold        ; }\n.#{$wi-css-prefix}-wmo4680-77:before       { content: $snow                  ; }\n.#{$wi-css-prefix}-wmo4680-78:before       { content: $snowflake-cold        ; }\n.#{$wi-css-prefix}-wmo4680-80:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-81:before       { content: $sprinkle              ; }\n.#{$wi-css-prefix}-wmo4680-82:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-83:before       { content: $rain                  ; }\n.#{$wi-css-prefix}-wmo4680-84:before       { content: $storm-showers         ; }\n.#{$wi-css-prefix}-wmo4680-85:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-86:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-87:before       { content: $rain-mix              ; }\n.#{$wi-css-prefix}-wmo4680-89:before       { content: $hail                  ; }\n.#{$wi-css-prefix}-wmo4680-90:before       { content: $lightning             ; }\n.#{$wi-css-prefix}-wmo4680-91:before       { content: $storm-showers         ; }\n.#{$wi-css-prefix}-wmo4680-92:before       { content: $thunderstorm          ; }\n.#{$wi-css-prefix}-wmo4680-93:before       { content: $thunderstorm          ; }\n.#{$wi-css-prefix}-wmo4680-94:before       { content: $lightning             ; }\n.#{$wi-css-prefix}-wmo4680-95:before       { content: $thunderstorm          ; }\n.#{$wi-css-prefix}-wmo4680-96:before       { content: $thunderstorm          ; }\n.#{$wi-css-prefix}-wmo4680-99:before       { content: $tornado               ; }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/mappings/wi-yahoo.scss",
    "content": ".#{$wi-css-prefix}-yahoo-0:before { content: $tornado; }\n.#{$wi-css-prefix}-yahoo-1:before { content: $day-storm-showers; }\n.#{$wi-css-prefix}-yahoo-2:before { content: $hurricane; }\n.#{$wi-css-prefix}-yahoo-3:before { content: $thunderstorm; }\n.#{$wi-css-prefix}-yahoo-4:before { content: $thunderstorm; }\n.#{$wi-css-prefix}-yahoo-5:before { content: $rain-mix; }\n.#{$wi-css-prefix}-yahoo-6:before { content: $rain-mix; }\n.#{$wi-css-prefix}-yahoo-7:before { content: $rain-mix; }\n.#{$wi-css-prefix}-yahoo-8:before { content: $hail; }\n.#{$wi-css-prefix}-yahoo-9:before { content: $showers; }\n.#{$wi-css-prefix}-yahoo-10:before { content: $hail; }\n.#{$wi-css-prefix}-yahoo-11:before { content: $showers; }\n.#{$wi-css-prefix}-yahoo-12:before { content: $showers; }\n.#{$wi-css-prefix}-yahoo-13:before { content: $snow; }\n.#{$wi-css-prefix}-yahoo-14:before { content: $day-snow; }\n.#{$wi-css-prefix}-yahoo-15:before { content: $snow-wind; }\n.#{$wi-css-prefix}-yahoo-16:before { content: $snow; }\n.#{$wi-css-prefix}-yahoo-17:before { content: $hail; }\n.#{$wi-css-prefix}-yahoo-18:before { content: $rain-mix; }\n.#{$wi-css-prefix}-yahoo-19:before { content: $dust; }\n.#{$wi-css-prefix}-yahoo-20:before { content: $fog; }\n.#{$wi-css-prefix}-yahoo-21:before { content: $windy; }\n.#{$wi-css-prefix}-yahoo-22:before { content: $smoke; }\n.#{$wi-css-prefix}-yahoo-23:before { content: $strong-wind; }\n.#{$wi-css-prefix}-yahoo-24:before { content: $strong-wind; }\n.#{$wi-css-prefix}-yahoo-25:before { content: $snowflake-cold; }\n.#{$wi-css-prefix}-yahoo-26:before { content: $cloudy; }\n.#{$wi-css-prefix}-yahoo-27:before { content: $night-cloudy; }\n.#{$wi-css-prefix}-yahoo-28:before { content: $day-cloudy; }\n.#{$wi-css-prefix}-yahoo-29:before { content: $night-cloudy; }\n.#{$wi-css-prefix}-yahoo-30:before { content: $day-cloudy; }\n.#{$wi-css-prefix}-yahoo-31:before { content: $night-clear; }\n.#{$wi-css-prefix}-yahoo-32:before { content: $day-sunny; }\n.#{$wi-css-prefix}-yahoo-33:before { content: $night-partly-cloudy; }\n.#{$wi-css-prefix}-yahoo-34:before { content: $day-sunny-overcast; }\n.#{$wi-css-prefix}-yahoo-35:before { content: $rain-mix; }\n.#{$wi-css-prefix}-yahoo-36:before { content: $hot; }\n.#{$wi-css-prefix}-yahoo-37:before { content: $day-storm-showers; }\n.#{$wi-css-prefix}-yahoo-38:before { content: $day-storm-showers; }\n.#{$wi-css-prefix}-yahoo-39:before { content: $day-storm-showers; }\n.#{$wi-css-prefix}-yahoo-40:before { content: $showers; }\n.#{$wi-css-prefix}-yahoo-41:before { content: $snow-wind; }\n.#{$wi-css-prefix}-yahoo-42:before { content: $snow; }\n.#{$wi-css-prefix}-yahoo-43:before { content: $snow-wind; }\n.#{$wi-css-prefix}-yahoo-44:before { content: $day-sunny-overcast; }\n.#{$wi-css-prefix}-yahoo-45:before { content: $day-storm-showers; }\n.#{$wi-css-prefix}-yahoo-46:before { content: $snow; }\n.#{$wi-css-prefix}-yahoo-47:before { content: $day-storm-showers; }\n.#{$wi-css-prefix}-yahoo-3200:before { content: $stars; }"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/weather-icons-classes.scss",
    "content": "@import \"icon-classes/classes-day.scss\";\n@import \"icon-classes/classes-night.scss\";\n@import \"icon-classes/classes-neutral.scss\";\n@import \"icon-classes/classes-misc.scss\";\n@import \"icon-classes/classes-moon.scss\";\n@import \"icon-classes/classes-moon-aliases.scss\";\n@import \"icon-classes/classes-time.scss\";\n@import \"icon-classes/classes-direction.scss\";\n@import \"icon-classes/classes-beaufort.scss\";\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/weather-icons-core.scss",
    "content": "// Base Variables\n$wi-path:                        \"../font\" !default;\n$wi-version:                     \"2.0\" !default;\n$wi-css-prefix:                  wi !default;\n$wi-font-family:                 weathericons !default;\n\n@font-face {\n    font-family: '#{$wi-font-family}';\n    src: url('#{$wi-path}/#{$wi-font-family}-regular-webfont.eot');\n    src: url('#{$wi-path}/#{$wi-font-family}-regular-webfont.eot?#iefix') format('embedded-opentype'),\n         url('#{$wi-path}/#{$wi-font-family}-regular-webfont.woff2') format('woff2'),\n         url('#{$wi-path}/#{$wi-font-family}-regular-webfont.woff') format('woff'),\n         url('#{$wi-path}/#{$wi-font-family}-regular-webfont.ttf') format('truetype'),\n         url('#{$wi-path}/#{$wi-font-family}-regular-webfont.svg#weather_iconsregular') format('svg');\n    font-weight: normal;\n    font-style: normal;\n}\n\n.#{$wi-css-prefix} {\n  display: inline-block;\n  font-family: '#{$wi-font-family}';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.#{$wi-css-prefix}-fw {\n  width: 1.4em;\n  text-align: center;\n}\n\n@mixin wi-icon-rotate($degrees, $rotation) {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});\n  -webkit-transform: rotate($degrees);\n      -ms-transform: rotate($degrees);\n          transform: rotate($degrees);\n}\n\n@mixin wi-icon-flip($horiz, $vert, $rotation) {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});\n  -webkit-transform: scale($horiz, $vert);\n      -ms-transform: scale($horiz, $vert);\n          transform: scale($horiz, $vert);\n}\n\n.#{$wi-css-prefix}-rotate-90  { @include wi-icon-rotate(90deg, 1);  }\n.#{$wi-css-prefix}-rotate-180 { @include wi-icon-rotate(180deg, 2); }\n.#{$wi-css-prefix}-rotate-270 { @include wi-icon-rotate(270deg, 3); }\n\n.#{$wi-css-prefix}-flip-horizontal { @include wi-icon-flip(-1, 1, 0); }\n.#{$wi-css-prefix}-flip-vertical   { @include wi-icon-flip(1, -1, 2); }\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/weather-icons-variables.scss",
    "content": "@import 'icon-variables/variables-beaufort.scss';\n@import 'icon-variables/variables-time.scss';\n@import 'icon-variables/variables-moon.scss';\n@import 'icon-variables/variables-direction.scss';\n@import 'icon-variables/variables-day.scss';\n@import 'icon-variables/variables-night.scss';\n@import 'icon-variables/variables-neutral.scss';\n@import 'icon-variables/variables-misc.scss';\n\n"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/weather-icons-wind.min.scss",
    "content": "@import \"weather-icons-core.scss\";\n@import \"icon-variables/variables-wind-names.scss\";\n@import \"icon-classes/classes-wind.scss\";\n@import \"icon-classes/classes-wind-degrees.scss\";\n@import \"icon-classes/classes-wind-aliases.scss\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/weather-icons-wind.scss",
    "content": "@import \"weather-icons-core.scss\";\n@import \"icon-variables/variables-wind-names.scss\";\n@import \"icon-classes/classes-wind.scss\";\n@import \"icon-classes/classes-wind-degrees.scss\";\n@import \"icon-classes/classes-wind-aliases.scss\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/weather-icons.min.scss",
    "content": "/*!\n *  Weather Icons 2.0\n *  Updated August 1, 2015\n *  Weather themed icons for Bootstrap\n *  Author - Erik Flowers - erik@helloerik.com\n *  Email: erik@helloerik.com\n *  Twitter: http://twitter.com/Erik_UX\n *  ------------------------------------------------------------------------------\n *  Maintained at http://erikflowers.github.io/weather-icons\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - Font licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - CSS, SCSS and LESS are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Inspired by and works great as a companion with Font Awesome\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n */\n\n@import 'weather-icons-core.scss';\n@import 'weather-icons-variables.scss';\n@import 'weather-icons-classes.scss';\n// Mappings to various APIs\n@import \"mappings/wi-yahoo.scss\";\n@import \"mappings/wi-forecast-io.scss\";\n@import \"mappings/wi-wmo4680.scss\";\n@import \"mappings/wi-owm.scss\";"
  },
  {
    "path": "public/admin-panel/dist/css/icons/weather-icons/sass/weather-icons.scss",
    "content": "/*!\n *  Weather Icons 2.0\n *  Updated August 1, 2015\n *  Weather themed icons for Bootstrap\n *  Author - Erik Flowers - erik@helloerik.com\n *  Email: erik@helloerik.com\n *  Twitter: http://twitter.com/Erik_UX\n *  ------------------------------------------------------------------------------\n *  Maintained at http://erikflowers.github.io/weather-icons\n *\n *  License\n *  ------------------------------------------------------------------------------\n *  - Font licensed under SIL OFL 1.1 -\n *    http://scripts.sil.org/OFL\n *  - CSS, LESS and SCSS are licensed under MIT License -\n *    http://opensource.org/licenses/mit-license.html\n *  - Documentation licensed under CC BY 3.0 -\n *    http://creativecommons.org/licenses/by/3.0/\n *  - Inspired by and works great as a companion with Font Awesome\n *    \"Font Awesome by Dave Gandy - http://fontawesome.io\"\n */\n\n@import 'weather-icons-core.scss';\n@import 'weather-icons-variables.scss';\n@import 'weather-icons-classes.scss';\n// Mappings to various APIs\n@import \"mappings/wi-yahoo.scss\";\n@import \"mappings/wi-forecast-io.scss\";\n@import \"mappings/wi-wmo4680.scss\";\n@import \"mappings/wi-owm.scss\";"
  },
  {
    "path": "public/admin-panel/dist/css/style.css",
    "content": "/*\nTemplate Name: Admin Template\nAuthor: Niravjoshi / Wrappixel\nFile: scss\n*/\n/*******************************/\n/*******************************/\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(\"https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800\");\n@import url(icons/font-awesome/css/fontawesome-all.css);\n@import url(icons/simple-line-icons/css/simple-line-icons.css);\n@import url(icons/weather-icons/css/weather-icons.min.css);\n@import url(icons/themify-icons/themify-icons.css);\n@import url(icons/flag-icon-css/flag-icon.min.css);\n@import url(icons/material-design-iconic-font/css/materialdesignicons.min.css);\n@import url(icons/crypto-icons/cryptocoins.css);\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\nbody[data-theme=\"dark\"] {\n  /* Card Color */\n  /* Settings for the  element */\n  /* Body bg and color */\n  color: #b2b9bf;\n  background: #212529;\n  /* scafholdings scss override */\n  /* Background colors */\n  /* Background Alt colors */\n  /* Font colors */\n  /* Border Colors */ }\n  body[data-theme=\"dark\"] a.link {\n    color: #e9ecef; }\n    body[data-theme=\"dark\"] a.link:hover, body[data-theme=\"dark\"] a.link:focus {\n      color: #2962FF; }\n  body[data-theme=\"dark\"] .bg-white {\n    background-color: #000 !important; }\n  body[data-theme=\"dark\"] .bg-dark {\n    background-color: #6c757d !important; }\n  body[data-theme=\"dark\"] .text-dark {\n    color: #e9ecef !important; }\n  body[data-theme=\"dark\"] .badge-light {\n    background-color: #343a40;\n    color: #b2b9bf; }\n  body[data-theme=\"dark\"] .btn-light {\n    background-color: #343a40;\n    border-color: #343a40;\n    color: #b2b9bf; }\n  body[data-theme=\"dark\"] .custom-control-label::before {\n    background-color: #6c757d; }\n  body[data-theme=\"dark\"] .card,\n  body[data-theme=\"dark\"] .custom-select,\n  body[data-theme=\"dark\"] .form-control,\n  body[data-theme=\"dark\"] .nav-tabs .nav-link.active,\n  body[data-theme=\"dark\"] .nav-tabs .nav-item.show .nav-link,\n  body[data-theme=\"dark\"] .list-group-item,\n  body[data-theme=\"dark\"] .custom-file-label,\n  body[data-theme=\"dark\"] .modal-content,\n  body[data-theme=\"dark\"] .page-link,\n  body[data-theme=\"dark\"] .page-item.disabled .page-link,\n  body[data-theme=\"dark\"] .note-editor.note-frame .note-editing-area .note-editable,\n  body[data-theme=\"dark\"] .note-editor.note-frame .note-statusbar,\n  body[data-theme=\"dark\"] .lobilists .lobilist,\n  body[data-theme=\"dark\"] .jsgrid-header-row > .jsgrid-header-cell,\n  body[data-theme=\"dark\"] .jsgrid-row > .jsgrid-cell,\n  body[data-theme=\"dark\"] .css-bar:after,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--single,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--multiple,\n  body[data-theme=\"dark\"] .select2-container--classic .select2-selection--single,\n  body[data-theme=\"dark\"] .dtp > .dtp-content {\n    background-color: #272b34; }\n  body[data-theme=\"dark\"] .dropzone,\n  body[data-theme=\"dark\"] .mailbox .message-center .message-item:hover,\n  body[data-theme=\"dark\"] .dropdown-item:hover,\n  body[data-theme=\"dark\"] .dropdown-item:focus,\n  body[data-theme=\"dark\"] .picker__button--today,\n  body[data-theme=\"dark\"] .picker__button--clear,\n  body[data-theme=\"dark\"] .picker__button--close {\n    background: #272b34; }\n  body[data-theme=\"dark\"] .right-part.mail-list,\n  body[data-theme=\"dark\"] .right-part.mail-details,\n  body[data-theme=\"dark\"] .right-part.mail-compose,\n  body[data-theme=\"dark\"] .left-part,\n  body[data-theme=\"dark\"] .card-footer,\n  body[data-theme=\"dark\"] .typeahead.form-control,\n  body[data-theme=\"dark\"] .select2-dropdown {\n    background-color: #272b34 !important; }\n  body[data-theme=\"dark\"] .jumbotron,\n  body[data-theme=\"dark\"] .page-wrapper,\n  body[data-theme=\"dark\"] .progress,\n  body[data-theme=\"dark\"] .breadcrumb,\n  body[data-theme=\"dark\"] .dropdown-menu,\n  body[data-theme=\"dark\"] #main-wrapper,\n  body[data-theme=\"dark\"] .wizard:not(.wizard-circle) > .steps .disabled a,\n  body[data-theme=\"dark\"] .wizard:not(.wizard-circle) > .steps .disabled a:hover,\n  body[data-theme=\"dark\"] .wizard:not(.wizard-circle) > .steps .disabled a:active,\n  body[data-theme=\"dark\"] .wizard:not(.wizard-circle) > .content,\n  body[data-theme=\"dark\"] .wizard:not(.wizard-circle) > .actions .disabled a,\n  body[data-theme=\"dark\"] .wizard:not(.wizard-circle) > .actions .disabled a:hover,\n  body[data-theme=\"dark\"] .wizard:not(.wizard-circle) > .actions .disabled a:active,\n  body[data-theme=\"dark\"] .wizard-content .wizard > .steps .step,\n  body[data-theme=\"dark\"] .cke_toolbar_separator {\n    background-color: #323743; }\n  body[data-theme=\"dark\"] .fc-unthemed td.fc-today,\n  body[data-theme=\"dark\"] .fc-toolbar .fc-button.fc-state-active,\n  body[data-theme=\"dark\"] .picker__list-item,\n  body[data-theme=\"dark\"] .picker__box,\n  body[data-theme=\"dark\"] .picker--time .picker__box,\n  body[data-theme=\"dark\"] .daterangepicker,\n  body[data-theme=\"dark\"] .daterangepicker .calendar-table {\n    background: #343a40; }\n  body[data-theme=\"dark\"] .fc-unthemed .fc-divider,\n  body[data-theme=\"dark\"] .fc-unthemed .fc-list-heading td,\n  body[data-theme=\"dark\"] .fc-unthemed .fc-popover .fc-header {\n    background: #b2b9bf; }\n  body[data-theme=\"dark\"] .daterangepicker td.off,\n  body[data-theme=\"dark\"] .daterangepicker td.off.in-range,\n  body[data-theme=\"dark\"] .daterangepicker td.off.start-date,\n  body[data-theme=\"dark\"] .daterangepicker td.off.end-date {\n    background: #000; }\n  body[data-theme=\"dark\"] .timeline:before {\n    background-color: #343a40; }\n  body[data-theme=\"dark\"] .cd-horizontal-timeline .events {\n    background: #343a40; }\n  body[data-theme=\"dark\"] .noUi-target,\n  body[data-theme=\"dark\"] .noUi-tooltip,\n  body[data-theme=\"dark\"] .bootstrap-switch .bootstrap-switch-label,\n  body[data-theme=\"dark\"] .striped-rows .row:nth-child(odd),\n  body[data-theme=\"dark\"] .dp-off,\n  body[data-theme=\"dark\"] .footable-odd,\n  body[data-theme=\"dark\"] .jsgrid-alt-row > .jsgrid-cell,\n  body[data-theme=\"dark\"] .jsgrid-filter-row > .jsgrid-cell,\n  body[data-theme=\"dark\"] .cd-horizontal-timeline .events a::after,\n  body[data-theme=\"dark\"] .css-bar > i,\n  body[data-theme=\"dark\"] div.mce-edit-area,\n  body[data-theme=\"dark\"] .mce-menu-item.mce-disabled,\n  body[data-theme=\"dark\"] .mce-menu-item.mce-disabled:hover,\n  body[data-theme=\"dark\"] .cke_top {\n    background: #212529 !important; }\n  body[data-theme=\"dark\"] .customizer,\n  body[data-theme=\"dark\"] .chat-list .chat-item .chat-content .box.bg-light-info,\n  body[data-theme=\"dark\"] pre[class*=\"language-\"],\n  body[data-theme=\"dark\"] .bg-light,\n  body[data-theme=\"dark\"] .input-group-text,\n  body[data-theme=\"dark\"] .custom-file-label::after,\n  body[data-theme=\"dark\"] .table .thead-light th,\n  body[data-theme=\"dark\"] .table-hover tbody tr:hover,\n  body[data-theme=\"dark\"] .f-icon:hover,\n  body[data-theme=\"dark\"] .t-icon:hover,\n  body[data-theme=\"dark\"] .w-icon:hover,\n  body[data-theme=\"dark\"] .sl-icon:hover,\n  body[data-theme=\"dark\"] .if-icon:hover,\n  body[data-theme=\"dark\"] .m-icon:hover,\n  body[data-theme=\"dark\"] .myadmin-dd .dd-list .dd-item .dd-handle,\n  body[data-theme=\"dark\"] .myadmin-dd-empty .dd-list .dd3-content,\n  body[data-theme=\"dark\"] .myadmin-dd-empty .dd-list .dd3-handle,\n  body[data-theme=\"dark\"] .mce-panel {\n    background-color: #262d35 !important; }\n  body[data-theme=\"dark\"] .timeline > .timeline-item > .timeline-panel:after {\n    border-right: #4F5467;\n    border-left: #4F5467; }\n  body[data-theme=\"dark\"] .mce-menubar .mce-menubtn:hover,\n  body[data-theme=\"dark\"] .mce-menubar .mce-menubtn.mce-active,\n  body[data-theme=\"dark\"] .mce-menubar .mce-menubtn:focus {\n    background: #343a40;\n    border-color: #4F5467; }\n  body[data-theme=\"dark\"] .mce-btn {\n    background: #343a40;\n    text-shadow: none; }\n    body[data-theme=\"dark\"] .mce-btn button {\n      color: #b2b9bf; }\n  body[data-theme=\"dark\"] .page-wrapper,\n  body[data-theme=\"dark\"] .form-control,\n  body[data-theme=\"dark\"] .custom-select,\n  body[data-theme=\"dark\"] .chat-list .chat-item .chat-content .box.bg-light-info,\n  body[data-theme=\"dark\"] .nav-tabs .nav-link.active,\n  body[data-theme=\"dark\"] .nav-tabs .nav-item.show .nav-link,\n  body[data-theme=\"dark\"] .nav-tabs .nav-link:hover,\n  body[data-theme=\"dark\"] .nav-tabs .nav-link:focus,\n  body[data-theme=\"dark\"] .breadcrumb-item.active,\n  body[data-theme=\"dark\"] .input-group-text,\n  body[data-theme=\"dark\"] .custom-file-label::after,\n  body[data-theme=\"dark\"] .table .thead-light th,\n  body[data-theme=\"dark\"] .note-editor.note-frame .note-editing-area .note-editable,\n  body[data-theme=\"dark\"] .lobilists .btn-link,\n  body[data-theme=\"dark\"] .dropdown-menu,\n  body[data-theme=\"dark\"] ul.list-style-none li a,\n  body[data-theme=\"dark\"] .dropdown-item,\n  body[data-theme=\"dark\"] .mce-menubar .mce-menubtn button span,\n  body[data-theme=\"dark\"] .mce-ico,\n  body[data-theme=\"dark\"] .noUi-tooltip,\n  body[data-theme=\"dark\"] .picker,\n  body[data-theme=\"dark\"] .select2-container--classic .select2-selection--single,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--multiple,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--single,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--single .select2-selection__arrow,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--single .select2-selection__rendered,\n  body[data-theme=\"dark\"] .dtp table.dtp-picker-days tr > td > a,\n  body[data-theme=\"dark\"] .dtp .dtp-picker-time > a,\n  body[data-theme=\"dark\"] .cke_reset_all,\n  body[data-theme=\"dark\"] .cke_reset_all *,\n  body[data-theme=\"dark\"] .cke_reset_all a,\n  body[data-theme=\"dark\"] .cke_reset_all textarea {\n    color: #b2b9bf; }\n  body[data-theme=\"dark\"] .mailbox .message-center .message-item .message-title,\n  body[data-theme=\"dark\"] .lobilists .lobilist-item-title {\n    color: #fff; }\n  body[data-theme=\"dark\"] .border-bottom,\n  body[data-theme=\"dark\"] .border-top,\n  body[data-theme=\"dark\"] .border-left,\n  body[data-theme=\"dark\"] .border-right,\n  body[data-theme=\"dark\"] .border,\n  body[data-theme=\"dark\"] .dropdown-menu,\n  body[data-theme=\"dark\"] .form-control,\n  body[data-theme=\"dark\"] .custom-select,\n  body[data-theme=\"dark\"] .table th,\n  body[data-theme=\"dark\"] .table td,\n  body[data-theme=\"dark\"] .modal-header,\n  body[data-theme=\"dark\"] .modal-footer,\n  body[data-theme=\"dark\"] blockquote,\n  body[data-theme=\"dark\"] pre[class*=\"language-\"],\n  body[data-theme=\"dark\"] .card-group .card,\n  body[data-theme=\"dark\"] .nav-tabs .nav-link.active,\n  body[data-theme=\"dark\"] .nav-tabs .nav-item.show .nav-link,\n  body[data-theme=\"dark\"] .nav-tabs,\n  body[data-theme=\"dark\"] .nav-tabs .nav-link:hover,\n  body[data-theme=\"dark\"] .nav-tabs .nav-link:focus,\n  body[data-theme=\"dark\"] .list-group-item,\n  body[data-theme=\"dark\"] .custom-file-label,\n  body[data-theme=\"dark\"] .input-group-text,\n  body[data-theme=\"dark\"] .custom-file-label::after,\n  body[data-theme=\"dark\"] .left-part,\n  body[data-theme=\"dark\"] .page-link,\n  body[data-theme=\"dark\"] .profiletimeline,\n  body[data-theme=\"dark\"] .note-editor.note-frame,\n  body[data-theme=\"dark\"] .dropzone,\n  body[data-theme=\"dark\"] .note-editor.note-frame .note-statusbar,\n  body[data-theme=\"dark\"] .mailbox .message-center .message-item,\n  body[data-theme=\"dark\"] .lobilists .lobilist,\n  body[data-theme=\"dark\"] .lobilists .lobilist-item,\n  body[data-theme=\"dark\"] .lobilists .lobilist-item .drag-handler,\n  body[data-theme=\"dark\"] .lobilists .lobilist-footer,\n  body[data-theme=\"dark\"] .lobilists .lobilist-form-footer,\n  body[data-theme=\"dark\"] .bootstrap-switch,\n  body[data-theme=\"dark\"] .r-separator .form-group,\n  body[data-theme=\"dark\"] .b-form .row,\n  body[data-theme=\"dark\"] .datepaginator-sm .pagination li a,\n  body[data-theme=\"dark\"] .datepaginator-lg .pagination li a,\n  body[data-theme=\"dark\"] .datepaginator .pagination li a,\n  body[data-theme=\"dark\"] .ql-toolbar.ql-snow,\n  body[data-theme=\"dark\"] .ql-container.ql-snow,\n  body[data-theme=\"dark\"] .jsgrid-edit-row > .jsgrid-cell,\n  body[data-theme=\"dark\"] .jsgrid-filter-row > .jsgrid-cell,\n  body[data-theme=\"dark\"] .jsgrid-grid-body,\n  body[data-theme=\"dark\"] .jsgrid-grid-header,\n  body[data-theme=\"dark\"] .jsgrid-header-row > .jsgrid-header-cell,\n  body[data-theme=\"dark\"] .jsgrid-insert-row > .jsgrid-cell,\n  body[data-theme=\"dark\"] .jsgrid-pager-page a,\n  body[data-theme=\"dark\"] .jsgrid-pager-current-page,\n  body[data-theme=\"dark\"] .jsgrid-pager-nav-button a,\n  body[data-theme=\"dark\"] .timeline > .timeline-item > .timeline-panel,\n  body[data-theme=\"dark\"] .cd-horizontal-timeline .events a::after,\n  body[data-theme=\"dark\"] .cd-timeline-navigation a,\n  body[data-theme=\"dark\"] .mailbox .nav-link,\n  body[data-theme=\"dark\"] .dropdown-divider,\n  body[data-theme=\"dark\"] .e-campaign .c-cost,\n  body[data-theme=\"dark\"] .table-bordered,\n  body[data-theme=\"dark\"] .table-bordered td,\n  body[data-theme=\"dark\"] .table-bordered th,\n  body[data-theme=\"dark\"] .mce-panel,\n  body[data-theme=\"dark\"] .mce-menubar,\n  body[data-theme=\"dark\"] .mce-btn-group:not(:first-child),\n  body[data-theme=\"dark\"] .mce-btn:hover,\n  body[data-theme=\"dark\"] .mce-btn:active,\n  body[data-theme=\"dark\"] .mce-splitbtn:hover .mce-open,\n  body[data-theme=\"dark\"] .noUi-tooltip,\n  body[data-theme=\"dark\"] .picker__list-item,\n  body[data-theme=\"dark\"] .picker__button--today,\n  body[data-theme=\"dark\"] .picker__button--clear,\n  body[data-theme=\"dark\"] .picker__button--close,\n  body[data-theme=\"dark\"] .daterangepicker,\n  body[data-theme=\"dark\"] .daterangepicker .calendar-table,\n  body[data-theme=\"dark\"] .daterangepicker .drp-buttons,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--single,\n  body[data-theme=\"dark\"] .select2-container--default .select2-selection--multiple,\n  body[data-theme=\"dark\"] .select2-container--classic .select2-selection--single,\n  body[data-theme=\"dark\"] .select2-dropdown,\n  body[data-theme=\"dark\"] .cke_chrome,\n  body[data-theme=\"dark\"] .cke_toolgroup a.cke_button:last-child:after,\n  body[data-theme=\"dark\"] .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after,\n  body[data-theme=\"dark\"] .wizard-content .wizard.wizard-circle > .steps .step {\n    border-color: #4F5467 !important; }\n  body[data-theme=\"dark\"] .wizard-content .wizard > .steps > ul > li.current .step {\n    border-color: #2962FF !important;\n    background-color: #000; }\n  body[data-theme=\"dark\"] .wizard-content .wizard > .steps > ul > li.current > a {\n    color: #fff; }\n  body[data-theme=\"dark\"] .wizard-content .wizard.wizard-circle > .steps > ul > li.current:after,\n  body[data-theme=\"dark\"] .wizard-content .wizard.wizard-circle > .steps > ul > li.current ~ li:after,\n  body[data-theme=\"dark\"] .wizard-content .wizard.wizard-circle > .steps > ul > li.current ~ li:before {\n    background-color: #4F5467; }\n  body[data-theme=\"dark\"] .wizard-content .wizard.vertical > .steps > ul > li.current:after,\n  body[data-theme=\"dark\"] .wizard-content .wizard.vertical > .steps > ul > li.current:before,\n  body[data-theme=\"dark\"] .wizard-content .wizard.vertical > .steps > ul > li.current ~ li:after,\n  body[data-theme=\"dark\"] .wizard-content .wizard.vertical > .steps > ul > li.current ~ li:before,\n  body[data-theme=\"dark\"] .wizard-content .wizard.vertical > .steps > ul > li:after,\n  body[data-theme=\"dark\"] .wizard-content .wizard.vertical > .steps > ul > li:before {\n    background-color: transparent; }\n  body[data-theme=\"dark\"] .was-validated .form-control:valid,\n  body[data-theme=\"dark\"] .form-control.is-valid,\n  body[data-theme=\"dark\"] .was-validated .custom-select:valid,\n  body[data-theme=\"dark\"] .custom-select.is-valid {\n    border-color: #36bea6 !important; }\n  body[data-theme=\"dark\"] .was-validated .form-control:invalid,\n  body[data-theme=\"dark\"] .form-control.is-invalid,\n  body[data-theme=\"dark\"] .was-validated .custom-select:invalid,\n  body[data-theme=\"dark\"] .custom-select.is-invalid {\n    border-color: #f62d51 !important; }\n  body[data-theme=\"dark\"] .ct-label {\n    fill: #b2b9bf;\n    color: #b2b9bf; }\n  body[data-theme=\"dark\"] .ct-grid {\n    stroke: #262d35; }\n\n/*!\n * Bootstrap v4.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n  --blue: #2962FF;\n  --indigo: #6610f2;\n  --purple: #7460ee;\n  --pink: #e83e8c;\n  --red: #f62d51;\n  --orange: #fb8c00;\n  --yellow: #ffbc34;\n  --green: #36bea6;\n  --teal: #20c997;\n  --cyan: #4fc3f7;\n  --white: #fff;\n  --gray: #6c757d;\n  --gray-dark: #343a40;\n  --blue: #2962FF;\n  --indigo: #6610f2;\n  --purple: #7460ee;\n  --pink: #e83e8c;\n  --red: #f62d51;\n  --orange: #fb8c00;\n  --yellow: #ffbc34;\n  --green: #36bea6;\n  --teal: #20c997;\n  --cyan: #4fc3f7;\n  --white: #fff;\n  --gray: #6c757d;\n  --primary: #7460ee;\n  --secondary: #6c757d;\n  --success: #36bea6;\n  --info: #2962FF;\n  --warning: #ffbc34;\n  --danger: #f62d51;\n  --light: #f8f9fa;\n  --dark: #343a40;\n  --cyan: #4fc3f7;\n  --orange: #fb8c00;\n  --purple: #7460ee;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1600px;\n  --font-family-sans-serif: \"Nunito Sans\", sans-serif;\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; }\n\n*,\n*::before,\n*::after {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box; }\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: transparent; }\n\n@-ms-viewport {\n  width: device-width; }\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block; }\n\nbody {\n  margin: 0;\n  font-family: \"Nunito Sans\", sans-serif;\n  font-size: 0.875rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #3e5569;\n  text-align: left;\n  background-color: #eef5f9; }\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important; }\n\nhr {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible; }\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem; }\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0; }\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit; }\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem; }\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0; }\n\ndt {\n  font-weight: 800; }\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; }\n\nblockquote {\n  margin: 0 0 1rem; }\n\ndfn {\n  font-style: italic; }\n\nb,\nstrong {\n  font-weight: bolder; }\n\nsmall {\n  font-size: 80%; }\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline; }\n\nsub {\n  bottom: -.25em; }\n\nsup {\n  top: -.5em; }\n\na {\n  color: #7460ee;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects; }\n  a:hover {\n    color: #381be7;\n    text-decoration: underline; }\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none; }\n  a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n    color: inherit;\n    text-decoration: none; }\n  a:not([href]):not([tabindex]):focus {\n    outline: 0; }\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em; }\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar; }\n\nfigure {\n  margin: 0 0 1rem; }\n\nimg {\n  vertical-align: middle;\n  border-style: none; }\n\nsvg:not(:root) {\n  overflow: hidden; }\n\ntable {\n  border-collapse: collapse; }\n\ncaption {\n  padding-top: 1rem;\n  padding-bottom: 1rem;\n  color: #a1aab2;\n  text-align: left;\n  caption-side: bottom; }\n\nth {\n  text-align: inherit; }\n\nlabel {\n  display: inline-block;\n  margin-bottom: 0.5rem; }\n\nbutton {\n  border-radius: 0; }\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color; }\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit; }\n\nbutton,\ninput {\n  overflow: visible; }\n\nbutton,\nselect {\n  text-transform: none; }\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; }\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none; }\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0; }\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox; }\n\ntextarea {\n  overflow: auto;\n  resize: vertical; }\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0; }\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal; }\n\nprogress {\n  vertical-align: baseline; }\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto; }\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none; }\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none; }\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button; }\n\noutput {\n  display: inline-block; }\n\nsummary {\n  display: list-item;\n  cursor: pointer; }\n\ntemplate {\n  display: none; }\n\n[hidden] {\n  display: none !important; }\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 700;\n  line-height: 1.2;\n  color: inherit; }\n\nh1, .h1 {\n  font-size: 36px; }\n\nh2, .h2 {\n  font-size: 30px; }\n\nh3, .h3 {\n  font-size: 24px; }\n\nh4, .h4 {\n  font-size: 18px; }\n\nh5, .h5 {\n  font-size: 16px; }\n\nh6, .h6 {\n  font-size: 14px; }\n\n.lead {\n  font-size: 1.09375rem;\n  font-weight: 300; }\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2; }\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2; }\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2; }\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2; }\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1); }\n\nsmall,\n.small {\n  font-size: 80%;\n  font-weight: 400; }\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3; }\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none; }\n\n.list-inline {\n  padding-left: 0;\n  list-style: none; }\n\n.list-inline-item {\n  display: inline-block; }\n  .list-inline-item:not(:last-child) {\n    margin-right: 0.5rem; }\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase; }\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.09375rem; }\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #6c757d; }\n  .blockquote-footer::before {\n    content: \"\\2014 \\00A0\"; }\n\n.img-fluid {\n  max-width: 100%;\n  height: auto; }\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #eef5f9;\n  border: 1px solid #dee2e6;\n  border-radius: 2px;\n  max-width: 100%;\n  height: auto; }\n\n.figure {\n  display: inline-block; }\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1; }\n\n.figure-caption {\n  font-size: 90%;\n  color: #6c757d; }\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; }\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word; }\n  a > code {\n    color: inherit; }\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 1px; }\n  kbd kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: 800; }\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: #212529; }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal; }\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll; }\n\n.container {\n  width: 100%;\n  padding-right: 10px;\n  padding-left: 10px;\n  margin-right: auto;\n  margin-left: auto; }\n  @media (min-width: 576px) {\n    .container {\n      max-width: 540px; } }\n  @media (min-width: 768px) {\n    .container {\n      max-width: 720px; } }\n  @media (min-width: 992px) {\n    .container {\n      max-width: 960px; } }\n  @media (min-width: 1600px) {\n    .container {\n      max-width: 1140px; } }\n\n.container-fluid {\n  width: 100%;\n  padding-right: 10px;\n  padding-left: 10px;\n  margin-right: auto;\n  margin-left: auto; }\n\n.row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  margin-right: -10px;\n  margin-left: -10px; }\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0; }\n  .no-gutters > .col,\n  .no-gutters > [class*=\"col-\"] {\n    padding-right: 0;\n    padding-left: 0; }\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  min-height: 1px;\n  padding-right: 10px;\n  padding-left: 10px; }\n\n.col {\n  -ms-flex-preferred-size: 0;\n  flex-basis: 0;\n  -webkit-box-flex: 1;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  max-width: 100%; }\n\n.col-auto {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 auto;\n  flex: 0 0 auto;\n  width: auto;\n  max-width: none; }\n\n.col-1 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 8.33333%;\n  flex: 0 0 8.33333%;\n  max-width: 8.33333%; }\n\n.col-2 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 16.66667%;\n  flex: 0 0 16.66667%;\n  max-width: 16.66667%; }\n\n.col-3 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 25%;\n  flex: 0 0 25%;\n  max-width: 25%; }\n\n.col-4 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 33.33333%;\n  flex: 0 0 33.33333%;\n  max-width: 33.33333%; }\n\n.col-5 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 41.66667%;\n  flex: 0 0 41.66667%;\n  max-width: 41.66667%; }\n\n.col-6 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 50%;\n  flex: 0 0 50%;\n  max-width: 50%; }\n\n.col-7 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 58.33333%;\n  flex: 0 0 58.33333%;\n  max-width: 58.33333%; }\n\n.col-8 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 66.66667%;\n  flex: 0 0 66.66667%;\n  max-width: 66.66667%; }\n\n.col-9 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 75%;\n  flex: 0 0 75%;\n  max-width: 75%; }\n\n.col-10 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 83.33333%;\n  flex: 0 0 83.33333%;\n  max-width: 83.33333%; }\n\n.col-11 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 91.66667%;\n  flex: 0 0 91.66667%;\n  max-width: 91.66667%; }\n\n.col-12 {\n  -webkit-box-flex: 0;\n  -ms-flex: 0 0 100%;\n  flex: 0 0 100%;\n  max-width: 100%; }\n\n.order-first {\n  -webkit-box-ordinal-group: 0;\n  -ms-flex-order: -1;\n  order: -1; }\n\n.order-last {\n  -webkit-box-ordinal-group: 14;\n  -ms-flex-order: 13;\n  order: 13; }\n\n.order-0 {\n  -webkit-box-ordinal-group: 1;\n  -ms-flex-order: 0;\n  order: 0; }\n\n.order-1 {\n  -webkit-box-ordinal-group: 2;\n  -ms-flex-order: 1;\n  order: 1; }\n\n.order-2 {\n  -webkit-box-ordinal-group: 3;\n  -ms-flex-order: 2;\n  order: 2; }\n\n.order-3 {\n  -webkit-box-ordinal-group: 4;\n  -ms-flex-order: 3;\n  order: 3; }\n\n.order-4 {\n  -webkit-box-ordinal-group: 5;\n  -ms-flex-order: 4;\n  order: 4; }\n\n.order-5 {\n  -webkit-box-ordinal-group: 6;\n  -ms-flex-order: 5;\n  order: 5; }\n\n.order-6 {\n  -webkit-box-ordinal-group: 7;\n  -ms-flex-order: 6;\n  order: 6; }\n\n.order-7 {\n  -webkit-box-ordinal-group: 8;\n  -ms-flex-order: 7;\n  order: 7; }\n\n.order-8 {\n  -webkit-box-ordinal-group: 9;\n  -ms-flex-order: 8;\n  order: 8; }\n\n.order-9 {\n  -webkit-box-ordinal-group: 10;\n  -ms-flex-order: 9;\n  order: 9; }\n\n.order-10 {\n  -webkit-box-ordinal-group: 11;\n  -ms-flex-order: 10;\n  order: 10; }\n\n.order-11 {\n  -webkit-box-ordinal-group: 12;\n  -ms-flex-order: 11;\n  order: 11; }\n\n.order-12 {\n  -webkit-box-ordinal-group: 13;\n  -ms-flex-order: 12;\n  order: 12; }\n\n.offset-1 {\n  margin-left: 8.33333%; }\n\n.offset-2 {\n  margin-left: 16.66667%; }\n\n.offset-3 {\n  margin-left: 25%; }\n\n.offset-4 {\n  margin-left: 33.33333%; }\n\n.offset-5 {\n  margin-left: 41.66667%; }\n\n.offset-6 {\n  margin-left: 50%; }\n\n.offset-7 {\n  margin-left: 58.33333%; }\n\n.offset-8 {\n  margin-left: 66.66667%; }\n\n.offset-9 {\n  margin-left: 75%; }\n\n.offset-10 {\n  margin-left: 83.33333%; }\n\n.offset-11 {\n  margin-left: 91.66667%; }\n\n@media (min-width: 576px) {\n  .col-sm {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-sm-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-sm-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-sm-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-sm-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-sm-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-sm-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-sm-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-sm-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-sm-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-sm-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-sm-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-sm-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-sm-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-sm-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-sm-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-sm-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-sm-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-sm-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-sm-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-sm-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-sm-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-sm-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-sm-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-sm-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-sm-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-sm-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-sm-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-sm-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-sm-0 {\n    margin-left: 0; }\n  .offset-sm-1 {\n    margin-left: 8.33333%; }\n  .offset-sm-2 {\n    margin-left: 16.66667%; }\n  .offset-sm-3 {\n    margin-left: 25%; }\n  .offset-sm-4 {\n    margin-left: 33.33333%; }\n  .offset-sm-5 {\n    margin-left: 41.66667%; }\n  .offset-sm-6 {\n    margin-left: 50%; }\n  .offset-sm-7 {\n    margin-left: 58.33333%; }\n  .offset-sm-8 {\n    margin-left: 66.66667%; }\n  .offset-sm-9 {\n    margin-left: 75%; }\n  .offset-sm-10 {\n    margin-left: 83.33333%; }\n  .offset-sm-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 768px) {\n  .col-md {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-md-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-md-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-md-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-md-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-md-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-md-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-md-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-md-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-md-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-md-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-md-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-md-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-md-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-md-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-md-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-md-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-md-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-md-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-md-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-md-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-md-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-md-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-md-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-md-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-md-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-md-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-md-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-md-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-md-0 {\n    margin-left: 0; }\n  .offset-md-1 {\n    margin-left: 8.33333%; }\n  .offset-md-2 {\n    margin-left: 16.66667%; }\n  .offset-md-3 {\n    margin-left: 25%; }\n  .offset-md-4 {\n    margin-left: 33.33333%; }\n  .offset-md-5 {\n    margin-left: 41.66667%; }\n  .offset-md-6 {\n    margin-left: 50%; }\n  .offset-md-7 {\n    margin-left: 58.33333%; }\n  .offset-md-8 {\n    margin-left: 66.66667%; }\n  .offset-md-9 {\n    margin-left: 75%; }\n  .offset-md-10 {\n    margin-left: 83.33333%; }\n  .offset-md-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 992px) {\n  .col-lg {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-lg-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-lg-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-lg-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-lg-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-lg-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-lg-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-lg-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-lg-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-lg-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-lg-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-lg-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-lg-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-lg-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-lg-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-lg-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-lg-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-lg-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-lg-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-lg-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-lg-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-lg-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-lg-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-lg-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-lg-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-lg-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-lg-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-lg-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-lg-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-lg-0 {\n    margin-left: 0; }\n  .offset-lg-1 {\n    margin-left: 8.33333%; }\n  .offset-lg-2 {\n    margin-left: 16.66667%; }\n  .offset-lg-3 {\n    margin-left: 25%; }\n  .offset-lg-4 {\n    margin-left: 33.33333%; }\n  .offset-lg-5 {\n    margin-left: 41.66667%; }\n  .offset-lg-6 {\n    margin-left: 50%; }\n  .offset-lg-7 {\n    margin-left: 58.33333%; }\n  .offset-lg-8 {\n    margin-left: 66.66667%; }\n  .offset-lg-9 {\n    margin-left: 75%; }\n  .offset-lg-10 {\n    margin-left: 83.33333%; }\n  .offset-lg-11 {\n    margin-left: 91.66667%; } }\n\n@media (min-width: 1600px) {\n  .col-xl {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -webkit-box-flex: 1;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%; }\n  .col-xl-auto {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none; }\n  .col-xl-1 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 8.33333%;\n    flex: 0 0 8.33333%;\n    max-width: 8.33333%; }\n  .col-xl-2 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 16.66667%;\n    flex: 0 0 16.66667%;\n    max-width: 16.66667%; }\n  .col-xl-3 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%; }\n  .col-xl-4 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 33.33333%;\n    flex: 0 0 33.33333%;\n    max-width: 33.33333%; }\n  .col-xl-5 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 41.66667%;\n    flex: 0 0 41.66667%;\n    max-width: 41.66667%; }\n  .col-xl-6 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%; }\n  .col-xl-7 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 58.33333%;\n    flex: 0 0 58.33333%;\n    max-width: 58.33333%; }\n  .col-xl-8 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 66.66667%;\n    flex: 0 0 66.66667%;\n    max-width: 66.66667%; }\n  .col-xl-9 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%; }\n  .col-xl-10 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 83.33333%;\n    flex: 0 0 83.33333%;\n    max-width: 83.33333%; }\n  .col-xl-11 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 91.66667%;\n    flex: 0 0 91.66667%;\n    max-width: 91.66667%; }\n  .col-xl-12 {\n    -webkit-box-flex: 0;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%; }\n  .order-xl-first {\n    -webkit-box-ordinal-group: 0;\n    -ms-flex-order: -1;\n    order: -1; }\n  .order-xl-last {\n    -webkit-box-ordinal-group: 14;\n    -ms-flex-order: 13;\n    order: 13; }\n  .order-xl-0 {\n    -webkit-box-ordinal-group: 1;\n    -ms-flex-order: 0;\n    order: 0; }\n  .order-xl-1 {\n    -webkit-box-ordinal-group: 2;\n    -ms-flex-order: 1;\n    order: 1; }\n  .order-xl-2 {\n    -webkit-box-ordinal-group: 3;\n    -ms-flex-order: 2;\n    order: 2; }\n  .order-xl-3 {\n    -webkit-box-ordinal-group: 4;\n    -ms-flex-order: 3;\n    order: 3; }\n  .order-xl-4 {\n    -webkit-box-ordinal-group: 5;\n    -ms-flex-order: 4;\n    order: 4; }\n  .order-xl-5 {\n    -webkit-box-ordinal-group: 6;\n    -ms-flex-order: 5;\n    order: 5; }\n  .order-xl-6 {\n    -webkit-box-ordinal-group: 7;\n    -ms-flex-order: 6;\n    order: 6; }\n  .order-xl-7 {\n    -webkit-box-ordinal-group: 8;\n    -ms-flex-order: 7;\n    order: 7; }\n  .order-xl-8 {\n    -webkit-box-ordinal-group: 9;\n    -ms-flex-order: 8;\n    order: 8; }\n  .order-xl-9 {\n    -webkit-box-ordinal-group: 10;\n    -ms-flex-order: 9;\n    order: 9; }\n  .order-xl-10 {\n    -webkit-box-ordinal-group: 11;\n    -ms-flex-order: 10;\n    order: 10; }\n  .order-xl-11 {\n    -webkit-box-ordinal-group: 12;\n    -ms-flex-order: 11;\n    order: 11; }\n  .order-xl-12 {\n    -webkit-box-ordinal-group: 13;\n    -ms-flex-order: 12;\n    order: 12; }\n  .offset-xl-0 {\n    margin-left: 0; }\n  .offset-xl-1 {\n    margin-left: 8.33333%; }\n  .offset-xl-2 {\n    margin-left: 16.66667%; }\n  .offset-xl-3 {\n    margin-left: 25%; }\n  .offset-xl-4 {\n    margin-left: 33.33333%; }\n  .offset-xl-5 {\n    margin-left: 41.66667%; }\n  .offset-xl-6 {\n    margin-left: 50%; }\n  .offset-xl-7 {\n    margin-left: 58.33333%; }\n  .offset-xl-8 {\n    margin-left: 66.66667%; }\n  .offset-xl-9 {\n    margin-left: 75%; }\n  .offset-xl-10 {\n    margin-left: 83.33333%; }\n  .offset-xl-11 {\n    margin-left: 91.66667%; } }\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 1rem;\n  background-color: transparent; }\n  .table th,\n  .table td {\n    padding: 1rem;\n    vertical-align: top;\n    border-top: 1px solid #dee2e6; }\n  .table thead th {\n    vertical-align: bottom;\n    border-bottom: 2px solid #dee2e6; }\n  .table tbody + tbody {\n    border-top: 2px solid #dee2e6; }\n  .table .table {\n    background-color: #eef5f9; }\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem; }\n\n.table-bordered {\n  border: 1px solid #dee2e6; }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #dee2e6; }\n  .table-bordered thead th,\n  .table-bordered thead td {\n    border-bottom-width: 2px; }\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n  border: 0; }\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(0, 0, 0, 0.05); }\n\n.table-hover tbody tr:hover {\n  background-color: #f8f9fa; }\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #d8d2fa; }\n\n.table-hover .table-primary:hover {\n  background-color: #c4bbf7; }\n  .table-hover .table-primary:hover > td,\n  .table-hover .table-primary:hover > th {\n    background-color: #c4bbf7; }\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #d6d8db; }\n\n.table-hover .table-secondary:hover {\n  background-color: #c8cbcf; }\n  .table-hover .table-secondary:hover > td,\n  .table-hover .table-secondary:hover > th {\n    background-color: #c8cbcf; }\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #c7ede6; }\n\n.table-hover .table-success:hover {\n  background-color: #b4e7dd; }\n  .table-hover .table-success:hover > td,\n  .table-hover .table-success:hover > th {\n    background-color: #b4e7dd; }\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #c3d3ff; }\n\n.table-hover .table-info:hover {\n  background-color: #aac0ff; }\n  .table-hover .table-info:hover > td,\n  .table-hover .table-info:hover > th {\n    background-color: #aac0ff; }\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #ffecc6; }\n\n.table-hover .table-warning:hover {\n  background-color: #ffe4ad; }\n  .table-hover .table-warning:hover > td,\n  .table-hover .table-warning:hover > th {\n    background-color: #ffe4ad; }\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #fcc4ce; }\n\n.table-hover .table-danger:hover {\n  background-color: #fbacba; }\n  .table-hover .table-danger:hover > td,\n  .table-hover .table-danger:hover > th {\n    background-color: #fbacba; }\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #fdfdfe; }\n\n.table-hover .table-light:hover {\n  background-color: #ececf6; }\n  .table-hover .table-light:hover > td,\n  .table-hover .table-light:hover > th {\n    background-color: #ececf6; }\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #c6c8ca; }\n\n.table-hover .table-dark:hover {\n  background-color: #b9bbbe; }\n  .table-hover .table-dark:hover > td,\n  .table-hover .table-dark:hover > th {\n    background-color: #b9bbbe; }\n\n.table-cyan,\n.table-cyan > th,\n.table-cyan > td {\n  background-color: #ceeefd; }\n\n.table-hover .table-cyan:hover {\n  background-color: #b6e6fc; }\n  .table-hover .table-cyan:hover > td,\n  .table-hover .table-cyan:hover > th {\n    background-color: #b6e6fc; }\n\n.table-orange,\n.table-orange > th,\n.table-orange > td {\n  background-color: #fedfb8; }\n\n.table-hover .table-orange:hover {\n  background-color: #fed49f; }\n  .table-hover .table-orange:hover > td,\n  .table-hover .table-orange:hover > th {\n    background-color: #fed49f; }\n\n.table-purple,\n.table-purple > th,\n.table-purple > td {\n  background-color: #d8d2fa; }\n\n.table-hover .table-purple:hover {\n  background-color: #c4bbf7; }\n  .table-hover .table-purple:hover > td,\n  .table-hover .table-purple:hover > th {\n    background-color: #c4bbf7; }\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: #f8f9fa; }\n\n.table-hover .table-active:hover {\n  background-color: #e9ecef; }\n  .table-hover .table-active:hover > td,\n  .table-hover .table-active:hover > th {\n    background-color: #e9ecef; }\n\n.table .thead-dark th {\n  color: #eef5f9;\n  background-color: #212529;\n  border-color: #32383e; }\n\n.table .thead-light th {\n  color: #4F5467;\n  background-color: #e9ecef;\n  border-color: #dee2e6; }\n\n.table-dark {\n  color: #eef5f9;\n  background-color: #212529; }\n  .table-dark th,\n  .table-dark td,\n  .table-dark thead th {\n    border-color: #32383e; }\n  .table-dark.table-bordered {\n    border: 0; }\n  .table-dark.table-striped tbody tr:nth-of-type(odd) {\n    background-color: rgba(255, 255, 255, 0.05); }\n  .table-dark.table-hover tbody tr:hover {\n    background-color: rgba(255, 255, 255, 0.075); }\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar; }\n    .table-responsive-sm > .table-bordered {\n      border: 0; } }\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar; }\n    .table-responsive-md > .table-bordered {\n      border: 0; } }\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar; }\n    .table-responsive-lg > .table-bordered {\n      border: 0; } }\n\n@media (max-width: 1599.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar; }\n    .table-responsive-xl > .table-bordered {\n      border: 0; } }\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  -ms-overflow-style: -ms-autohiding-scrollbar; }\n  .table-responsive > .table-bordered {\n    border: 0; }\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  color: #4F5467;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #e9ecef;\n  border-radius: 2px;\n  -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  -o-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; }\n  @media screen and (prefers-reduced-motion: reduce) {\n    .form-control {\n      -webkit-transition: none;\n      -o-transition: none;\n      transition: none; } }\n  .form-control::-ms-expand {\n    background-color: transparent;\n    border: 0; }\n  .form-control:focus {\n    color: #4F5467;\n    background-color: #fff;\n    border-color: rgba(0, 0, 0, 0.25);\n    outline: 0;\n    -webkit-box-shadow: transparent;\n    box-shadow: transparent; }\n  .form-control::-webkit-input-placeholder {\n    color: #6c757d;\n    opacity: 1; }\n  .form-control:-ms-input-placeholder {\n    color: #6c757d;\n    opacity: 1; }\n  .form-control::-ms-input-placeholder {\n    color: #6c757d;\n    opacity: 1; }\n  .form-control::placeholder {\n    color: #6c757d;\n    opacity: 1; }\n  .form-control:disabled, .form-control[readonly] {\n    background-color: #e9ecef;\n    opacity: 1; }\n\nselect.form-control:not([size]):not([multiple]) {\n  height: calc(2.0625rem + 2px); }\n\nselect.form-control:focus::-ms-value {\n  color: #4F5467;\n  background-color: #fff; }\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%; }\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5; }\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.09375rem;\n  line-height: 1.5; }\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.76563rem;\n  line-height: 1.5; }\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #3e5569;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0; }\n  .form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n  .input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n  .input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n  .input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n  .input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n  .input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n  .input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n  .input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n  .input-group-lg > .input-group-append > .form-control-plaintext.btn {\n    padding-right: 0;\n    padding-left: 0; }\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.76563rem;\n  line-height: 1.5;\n  border-radius: 1px; }\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(1.64844rem + 2px); }\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.09375rem;\n  line-height: 1.5;\n  border-radius: 2px; }\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(2.64063rem + 2px); }\n\n.form-group {\n  margin-bottom: 1rem; }\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem; }\n\n.form-row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px; }\n  .form-row > .col,\n  .form-row > [class*=\"col-\"] {\n    padding-right: 5px;\n    padding-left: 5px; }\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem; }\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem; }\n  .form-check-input:disabled ~ .form-check-label {\n    color: #a1aab2; }\n\n.form-check-label {\n  margin-bottom: 0; }\n\n.form-check-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem; }\n  .form-check-inline .form-check-input {\n    position: static;\n    margin-top: 0;\n    margin-right: 0.3125rem;\n    margin-left: 0; }\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #36bea6; }\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(54, 190, 166, 0.8);\n  border-radius: .2rem; }\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n  border-color: #36bea6; }\n  .was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n  .custom-select:valid:focus,\n  .custom-select.is-valid:focus {\n    border-color: #36bea6;\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.25);\n    box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.25); }\n  .was-validated .form-control:valid ~ .valid-feedback,\n  .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n  .form-control.is-valid ~ .valid-tooltip, .was-validated\n  .custom-select:valid ~ .valid-feedback,\n  .was-validated\n  .custom-select:valid ~ .valid-tooltip,\n  .custom-select.is-valid ~ .valid-feedback,\n  .custom-select.is-valid ~ .valid-tooltip {\n    display: block; }\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #36bea6; }\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #36bea6; }\n  .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n    background-color: #93e0d3; }\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  background-color: #58cfba; }\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #eef5f9, 0 0 0 0.2rem rgba(54, 190, 166, 0.25);\n  box-shadow: 0 0 0 1px #eef5f9, 0 0 0 0.2rem rgba(54, 190, 166, 0.25); }\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #36bea6; }\n  .was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n    border-color: inherit; }\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block; }\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.25);\n  box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.25); }\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #f62d51; }\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(246, 45, 81, 0.8);\n  border-radius: .2rem; }\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n  border-color: #f62d51; }\n  .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n  .custom-select:invalid:focus,\n  .custom-select.is-invalid:focus {\n    border-color: #f62d51;\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.25);\n    box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.25); }\n  .was-validated .form-control:invalid ~ .invalid-feedback,\n  .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n  .form-control.is-invalid ~ .invalid-tooltip, .was-validated\n  .custom-select:invalid ~ .invalid-feedback,\n  .was-validated\n  .custom-select:invalid ~ .invalid-tooltip,\n  .custom-select.is-invalid ~ .invalid-feedback,\n  .custom-select.is-invalid ~ .invalid-tooltip {\n    display: block; }\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #f62d51; }\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #f62d51; }\n  .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n    background-color: #fba7b6; }\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block; }\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  background-color: #f85e7a; }\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #eef5f9, 0 0 0 0.2rem rgba(246, 45, 81, 0.25);\n  box-shadow: 0 0 0 1px #eef5f9, 0 0 0 0.2rem rgba(246, 45, 81, 0.25); }\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #f62d51; }\n  .was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n    border-color: inherit; }\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block; }\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.25);\n  box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.25); }\n\n.form-inline {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n  -ms-flex-flow: row wrap;\n  flex-flow: row wrap;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center; }\n  .form-inline .form-check {\n    width: 100%; }\n  @media (min-width: 576px) {\n    .form-inline label {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      -webkit-box-align: center;\n      -ms-flex-align: center;\n      align-items: center;\n      -webkit-box-pack: center;\n      -ms-flex-pack: center;\n      justify-content: center;\n      margin-bottom: 0; }\n    .form-inline .form-group {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      -webkit-box-flex: 0;\n      -ms-flex: 0 0 auto;\n      flex: 0 0 auto;\n      -webkit-box-orient: horizontal;\n      -webkit-box-direction: normal;\n      -ms-flex-flow: row wrap;\n      flex-flow: row wrap;\n      -webkit-box-align: center;\n      -ms-flex-align: center;\n      align-items: center;\n      margin-bottom: 0; }\n    .form-inline .form-control {\n      display: inline-block;\n      width: auto;\n      vertical-align: middle; }\n    .form-inline .form-control-plaintext {\n      display: inline-block; }\n    .form-inline .input-group,\n    .form-inline .custom-select {\n      width: auto; }\n    .form-inline .form-check {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      -webkit-box-align: center;\n      -ms-flex-align: center;\n      align-items: center;\n      -webkit-box-pack: center;\n      -ms-flex-pack: center;\n      justify-content: center;\n      width: auto;\n      padding-left: 0; }\n    .form-inline .form-check-input {\n      position: relative;\n      margin-top: 0;\n      margin-right: 0.25rem;\n      margin-left: 0; }\n    .form-inline .custom-control {\n      -webkit-box-align: center;\n      -ms-flex-align: center;\n      align-items: center;\n      -webkit-box-pack: center;\n      -ms-flex-pack: center;\n      justify-content: center; }\n    .form-inline .custom-control-label {\n      margin-bottom: 0; } }\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 2px;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  -o-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; }\n  @media screen and (prefers-reduced-motion: reduce) {\n    .btn {\n      -webkit-transition: none;\n      -o-transition: none;\n      transition: none; } }\n  .btn:hover, .btn:focus {\n    text-decoration: none; }\n  .btn:focus, .btn.focus {\n    outline: 0;\n    -webkit-box-shadow: transparent;\n    box-shadow: transparent; }\n  .btn.disabled, .btn:disabled {\n    opacity: 0.65; }\n  .btn:not(:disabled):not(.disabled) {\n    cursor: pointer; }\n  .btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n    background-image: none; }\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none; }\n\n.btn-primary {\n  color: #fff;\n  background-color: #7460ee;\n  border-color: #7460ee; }\n  .btn-primary:hover {\n    color: #fff;\n    background-color: #563dea;\n    border-color: #4c32e9; }\n  .btn-primary:focus, .btn-primary.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n  .btn-primary.disabled, .btn-primary:disabled {\n    color: #fff;\n    background-color: #7460ee;\n    border-color: #7460ee; }\n  .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n  .show > .btn-primary.dropdown-toggle {\n    color: #fff;\n    background-color: #4c32e9;\n    border-color: #4226e8; }\n    .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-primary.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d; }\n  .btn-secondary:hover {\n    color: #fff;\n    background-color: #5a6268;\n    border-color: #545b62; }\n  .btn-secondary:focus, .btn-secondary.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); }\n  .btn-secondary.disabled, .btn-secondary:disabled {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d; }\n  .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n  .show > .btn-secondary.dropdown-toggle {\n    color: #fff;\n    background-color: #545b62;\n    border-color: #4e555b; }\n    .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-secondary.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); }\n\n.btn-success {\n  color: #fff;\n  background-color: #36bea6;\n  border-color: #36bea6; }\n  .btn-success:hover {\n    color: #fff;\n    background-color: #2ea08c;\n    border-color: #2b9683; }\n  .btn-success:focus, .btn-success.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5); }\n  .btn-success.disabled, .btn-success:disabled {\n    color: #fff;\n    background-color: #36bea6;\n    border-color: #36bea6; }\n  .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n  .show > .btn-success.dropdown-toggle {\n    color: #fff;\n    background-color: #2b9683;\n    border-color: #288c7b; }\n    .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-success.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5); }\n\n.btn-info {\n  color: #fff;\n  background-color: #2962FF;\n  border-color: #2962FF; }\n  .btn-info:hover {\n    color: #fff;\n    background-color: #0346ff;\n    border-color: #0041f5; }\n  .btn-info:focus, .btn-info.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5); }\n  .btn-info.disabled, .btn-info:disabled {\n    color: #fff;\n    background-color: #2962FF;\n    border-color: #2962FF; }\n  .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n  .show > .btn-info.dropdown-toggle {\n    color: #fff;\n    background-color: #0041f5;\n    border-color: #003ee8; }\n    .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-info.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5); }\n\n.btn-warning {\n  color: #212529;\n  background-color: #ffbc34;\n  border-color: #ffbc34; }\n  .btn-warning:hover {\n    color: #212529;\n    background-color: #ffaf0e;\n    border-color: #ffab01; }\n  .btn-warning:focus, .btn-warning.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5); }\n  .btn-warning.disabled, .btn-warning:disabled {\n    color: #212529;\n    background-color: #ffbc34;\n    border-color: #ffbc34; }\n  .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n  .show > .btn-warning.dropdown-toggle {\n    color: #212529;\n    background-color: #ffab01;\n    border-color: #f3a300; }\n    .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-warning.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5); }\n\n.btn-danger {\n  color: #fff;\n  background-color: #f62d51;\n  border-color: #f62d51; }\n  .btn-danger:hover {\n    color: #fff;\n    background-color: #f20a34;\n    border-color: #e60a31; }\n  .btn-danger:focus, .btn-danger.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5); }\n  .btn-danger.disabled, .btn-danger:disabled {\n    color: #fff;\n    background-color: #f62d51;\n    border-color: #f62d51; }\n  .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n  .show > .btn-danger.dropdown-toggle {\n    color: #fff;\n    background-color: #e60a31;\n    border-color: #da092f; }\n    .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-danger.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5); }\n\n.btn-light {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa; }\n  .btn-light:hover {\n    color: #212529;\n    background-color: #e2e6ea;\n    border-color: #dae0e5; }\n  .btn-light:focus, .btn-light.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n  .btn-light.disabled, .btn-light:disabled {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa; }\n  .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n  .show > .btn-light.dropdown-toggle {\n    color: #212529;\n    background-color: #dae0e5;\n    border-color: #d3d9df; }\n    .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-light.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n\n.btn-dark {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40; }\n  .btn-dark:hover {\n    color: #fff;\n    background-color: #23272b;\n    border-color: #1d2124; }\n  .btn-dark:focus, .btn-dark.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n  .btn-dark.disabled, .btn-dark:disabled {\n    color: #fff;\n    background-color: #343a40;\n    border-color: #343a40; }\n  .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n  .show > .btn-dark.dropdown-toggle {\n    color: #fff;\n    background-color: #1d2124;\n    border-color: #171a1d; }\n    .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-dark.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n\n.btn-cyan {\n  color: #212529;\n  background-color: #4fc3f7;\n  border-color: #4fc3f7; }\n  .btn-cyan:hover {\n    color: #fff;\n    background-color: #2ab7f5;\n    border-color: #1eb2f5; }\n  .btn-cyan:focus, .btn-cyan.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5); }\n  .btn-cyan.disabled, .btn-cyan:disabled {\n    color: #212529;\n    background-color: #4fc3f7;\n    border-color: #4fc3f7; }\n  .btn-cyan:not(:disabled):not(.disabled):active, .btn-cyan:not(:disabled):not(.disabled).active,\n  .show > .btn-cyan.dropdown-toggle {\n    color: #fff;\n    background-color: #1eb2f5;\n    border-color: #12aef4; }\n    .btn-cyan:not(:disabled):not(.disabled):active:focus, .btn-cyan:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-cyan.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5); }\n\n.btn-orange {\n  color: #212529;\n  background-color: #fb8c00;\n  border-color: #fb8c00; }\n  .btn-orange:hover {\n    color: #fff;\n    background-color: #d57700;\n    border-color: #c87000; }\n  .btn-orange:focus, .btn-orange.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5); }\n  .btn-orange.disabled, .btn-orange:disabled {\n    color: #212529;\n    background-color: #fb8c00;\n    border-color: #fb8c00; }\n  .btn-orange:not(:disabled):not(.disabled):active, .btn-orange:not(:disabled):not(.disabled).active,\n  .show > .btn-orange.dropdown-toggle {\n    color: #fff;\n    background-color: #c87000;\n    border-color: #bb6800; }\n    .btn-orange:not(:disabled):not(.disabled):active:focus, .btn-orange:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-orange.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5); }\n\n.btn-purple {\n  color: #fff;\n  background-color: #7460ee;\n  border-color: #7460ee; }\n  .btn-purple:hover {\n    color: #fff;\n    background-color: #563dea;\n    border-color: #4c32e9; }\n  .btn-purple:focus, .btn-purple.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n  .btn-purple.disabled, .btn-purple:disabled {\n    color: #fff;\n    background-color: #7460ee;\n    border-color: #7460ee; }\n  .btn-purple:not(:disabled):not(.disabled):active, .btn-purple:not(:disabled):not(.disabled).active,\n  .show > .btn-purple.dropdown-toggle {\n    color: #fff;\n    background-color: #4c32e9;\n    border-color: #4226e8; }\n    .btn-purple:not(:disabled):not(.disabled):active:focus, .btn-purple:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-purple.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n\n.btn-outline-primary {\n  color: #7460ee;\n  background-color: transparent;\n  background-image: none;\n  border-color: #7460ee; }\n  .btn-outline-primary:hover {\n    color: #fff;\n    background-color: #7460ee;\n    border-color: #7460ee; }\n  .btn-outline-primary:focus, .btn-outline-primary.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n  .btn-outline-primary.disabled, .btn-outline-primary:disabled {\n    color: #7460ee;\n    background-color: transparent; }\n  .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-primary.dropdown-toggle {\n    color: #fff;\n    background-color: #7460ee;\n    border-color: #7460ee; }\n    .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-primary.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n\n.btn-outline-secondary {\n  color: #6c757d;\n  background-color: transparent;\n  background-image: none;\n  border-color: #6c757d; }\n  .btn-outline-secondary:hover {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d; }\n  .btn-outline-secondary:focus, .btn-outline-secondary.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); }\n  .btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n    color: #6c757d;\n    background-color: transparent; }\n  .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-secondary.dropdown-toggle {\n    color: #fff;\n    background-color: #6c757d;\n    border-color: #6c757d; }\n    .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-secondary.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); }\n\n.btn-outline-success {\n  color: #36bea6;\n  background-color: transparent;\n  background-image: none;\n  border-color: #36bea6; }\n  .btn-outline-success:hover {\n    color: #fff;\n    background-color: #36bea6;\n    border-color: #36bea6; }\n  .btn-outline-success:focus, .btn-outline-success.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5); }\n  .btn-outline-success.disabled, .btn-outline-success:disabled {\n    color: #36bea6;\n    background-color: transparent; }\n  .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-success.dropdown-toggle {\n    color: #fff;\n    background-color: #36bea6;\n    border-color: #36bea6; }\n    .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-success.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(54, 190, 166, 0.5); }\n\n.btn-outline-info {\n  color: #2962FF;\n  background-color: transparent;\n  background-image: none;\n  border-color: #2962FF; }\n  .btn-outline-info:hover {\n    color: #fff;\n    background-color: #2962FF;\n    border-color: #2962FF; }\n  .btn-outline-info:focus, .btn-outline-info.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5); }\n  .btn-outline-info.disabled, .btn-outline-info:disabled {\n    color: #2962FF;\n    background-color: transparent; }\n  .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-info.dropdown-toggle {\n    color: #fff;\n    background-color: #2962FF;\n    border-color: #2962FF; }\n    .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-info.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(41, 98, 255, 0.5); }\n\n.btn-outline-warning {\n  color: #ffbc34;\n  background-color: transparent;\n  background-image: none;\n  border-color: #ffbc34; }\n  .btn-outline-warning:hover {\n    color: #212529;\n    background-color: #ffbc34;\n    border-color: #ffbc34; }\n  .btn-outline-warning:focus, .btn-outline-warning.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5); }\n  .btn-outline-warning.disabled, .btn-outline-warning:disabled {\n    color: #ffbc34;\n    background-color: transparent; }\n  .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-warning.dropdown-toggle {\n    color: #212529;\n    background-color: #ffbc34;\n    border-color: #ffbc34; }\n    .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-warning.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(255, 188, 52, 0.5); }\n\n.btn-outline-danger {\n  color: #f62d51;\n  background-color: transparent;\n  background-image: none;\n  border-color: #f62d51; }\n  .btn-outline-danger:hover {\n    color: #fff;\n    background-color: #f62d51;\n    border-color: #f62d51; }\n  .btn-outline-danger:focus, .btn-outline-danger.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5); }\n  .btn-outline-danger.disabled, .btn-outline-danger:disabled {\n    color: #f62d51;\n    background-color: transparent; }\n  .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-danger.dropdown-toggle {\n    color: #fff;\n    background-color: #f62d51;\n    border-color: #f62d51; }\n    .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-danger.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(246, 45, 81, 0.5); }\n\n.btn-outline-light {\n  color: #f8f9fa;\n  background-color: transparent;\n  background-image: none;\n  border-color: #f8f9fa; }\n  .btn-outline-light:hover {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa; }\n  .btn-outline-light:focus, .btn-outline-light.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n  .btn-outline-light.disabled, .btn-outline-light:disabled {\n    color: #f8f9fa;\n    background-color: transparent; }\n  .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-light.dropdown-toggle {\n    color: #212529;\n    background-color: #f8f9fa;\n    border-color: #f8f9fa; }\n    .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-light.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); }\n\n.btn-outline-dark {\n  color: #343a40;\n  background-color: transparent;\n  background-image: none;\n  border-color: #343a40; }\n  .btn-outline-dark:hover {\n    color: #fff;\n    background-color: #343a40;\n    border-color: #343a40; }\n  .btn-outline-dark:focus, .btn-outline-dark.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n  .btn-outline-dark.disabled, .btn-outline-dark:disabled {\n    color: #343a40;\n    background-color: transparent; }\n  .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-dark.dropdown-toggle {\n    color: #fff;\n    background-color: #343a40;\n    border-color: #343a40; }\n    .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-dark.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); }\n\n.btn-outline-cyan {\n  color: #4fc3f7;\n  background-color: transparent;\n  background-image: none;\n  border-color: #4fc3f7; }\n  .btn-outline-cyan:hover {\n    color: #212529;\n    background-color: #4fc3f7;\n    border-color: #4fc3f7; }\n  .btn-outline-cyan:focus, .btn-outline-cyan.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5); }\n  .btn-outline-cyan.disabled, .btn-outline-cyan:disabled {\n    color: #4fc3f7;\n    background-color: transparent; }\n  .btn-outline-cyan:not(:disabled):not(.disabled):active, .btn-outline-cyan:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-cyan.dropdown-toggle {\n    color: #212529;\n    background-color: #4fc3f7;\n    border-color: #4fc3f7; }\n    .btn-outline-cyan:not(:disabled):not(.disabled):active:focus, .btn-outline-cyan:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-cyan.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(79, 195, 247, 0.5); }\n\n.btn-outline-orange {\n  color: #fb8c00;\n  background-color: transparent;\n  background-image: none;\n  border-color: #fb8c00; }\n  .btn-outline-orange:hover {\n    color: #212529;\n    background-color: #fb8c00;\n    border-color: #fb8c00; }\n  .btn-outline-orange:focus, .btn-outline-orange.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5); }\n  .btn-outline-orange.disabled, .btn-outline-orange:disabled {\n    color: #fb8c00;\n    background-color: transparent; }\n  .btn-outline-orange:not(:disabled):not(.disabled):active, .btn-outline-orange:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-orange.dropdown-toggle {\n    color: #212529;\n    background-color: #fb8c00;\n    border-color: #fb8c00; }\n    .btn-outline-orange:not(:disabled):not(.disabled):active:focus, .btn-outline-orange:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-orange.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(251, 140, 0, 0.5); }\n\n.btn-outline-purple {\n  color: #7460ee;\n  background-color: transparent;\n  background-image: none;\n  border-color: #7460ee; }\n  .btn-outline-purple:hover {\n    color: #fff;\n    background-color: #7460ee;\n    border-color: #7460ee; }\n  .btn-outline-purple:focus, .btn-outline-purple.focus {\n    -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n    box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n  .btn-outline-purple.disabled, .btn-outline-purple:disabled {\n    color: #7460ee;\n    background-color: transparent; }\n  .btn-outline-purple:not(:disabled):not(.disabled):active, .btn-outline-purple:not(:disabled):not(.disabled).active,\n  .show > .btn-outline-purple.dropdown-toggle {\n    color: #fff;\n    background-color: #7460ee;\n    border-color: #7460ee; }\n    .btn-outline-purple:not(:disabled):not(.disabled):active:focus, .btn-outline-purple:not(:disabled):not(.disabled).active:focus,\n    .show > .btn-outline-purple.dropdown-toggle:focus {\n      -webkit-box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5);\n      box-shadow: 0 0 0 0.2rem rgba(116, 96, 238, 0.5); }\n\n.btn-link {\n  font-weight: 400;\n  color: #7460ee;\n  background-color: transparent; }\n  .btn-link:hover {\n    color: #381be7;\n    text-decoration: underline;\n    background-color: transparent;\n    border-color: transparent; }\n  .btn-link:focus, .btn-link.focus {\n    text-decoration: underline;\n    border-color: transparent;\n    -webkit-box-shadow: none;\n    box-shadow: none; }\n  .btn-link:disabled, .btn-link.disabled {\n    color: #6c757d;\n    pointer-events: none; }\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.09375rem;\n  line-height: 1.5;\n  border-radius: 2px; }\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.76563rem;\n  line-height: 1.5;\n  border-radius: 1px; }\n\n.btn-block {\n  display: block;\n  width: 100%; }\n  .btn-block + .btn-block {\n    margin-top: 0.5rem; }\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%; }\n\n.fade {\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear; }\n  @media screen and (prefers-reduced-motion: reduce) {\n    .fade {\n      -webkit-transition: none;\n      -o-transition: none;\n      transition: none; } }\n  .fade:not(.show) {\n    opacity: 0; }\n\n.collapse:not(.show) {\n  display: none; }\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n  -o-transition: height 0.35s ease;\n  transition: height 0.35s ease; }\n  @media screen and (prefers-reduced-motion: reduce) {\n    .collapsing {\n      -webkit-transition: none;\n      -o-transition: none;\n      transition: none; } }\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n  position: relative; }\n\n.dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent; }\n\n.dropdown-toggle:empty::after {\n  margin-left: 0; }\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 0.875rem;\n  color: #3e5569;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #e9ecef;\n  border-radius: 2px; }\n\n.dropdown-menu-right {\n  right: 0;\n  left: auto; }\n\n.dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem; }\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent; }\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0; }\n\n.dropright .dropdown-menu {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem; }\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid; }\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0; }\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0; }\n\n.dropleft .dropdown-menu {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem; }\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\"; }\n\n.dropleft .dropdown-toggle::after {\n  display: none; }\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent; }\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0; }\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0; }\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n  right: auto;\n  bottom: auto; }\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #f8f9fa; }\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.65rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0; }\n  .dropdown-item:hover, .dropdown-item:focus {\n    color: #16181b;\n    text-decoration: none;\n    background-color: #f8f9fa; }\n  .dropdown-item.active, .dropdown-item:active {\n    color: #fff;\n    text-decoration: none;\n    background-color: #2962FF; }\n  .dropdown-item.disabled, .dropdown-item:disabled {\n    color: #6c757d;\n    background-color: transparent; }\n\n.dropdown-menu.show {\n  display: block; }\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.76563rem;\n  color: #6c757d;\n  white-space: nowrap; }\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.65rem 1rem;\n  color: #212529; }\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  vertical-align: middle; }\n  .btn-group > .btn,\n  .btn-group-vertical > .btn {\n    position: relative;\n    -webkit-box-flex: 0;\n    -ms-flex: 0 1 auto;\n    flex: 0 1 auto; }\n    .btn-group > .btn:hover,\n    .btn-group-vertical > .btn:hover {\n      z-index: 1; }\n    .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n    .btn-group-vertical > .btn:focus,\n    .btn-group-vertical > .btn:active,\n    .btn-group-vertical > .btn.active {\n      z-index: 1; }\n  .btn-group .btn + .btn,\n  .btn-group .btn + .btn-group,\n  .btn-group .btn-group + .btn,\n  .btn-group .btn-group + .btn-group,\n  .btn-group-vertical .btn + .btn,\n  .btn-group-vertical .btn + .btn-group,\n  .btn-group-vertical .btn-group + .btn,\n  .btn-group-vertical .btn-group + .btn-group {\n    margin-left: -1px; }\n\n.btn-toolbar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -webkit-box-pack: start;\n  -ms-flex-pack: start;\n  justify-content: flex-start; }\n  .btn-toolbar .input-group {\n    width: auto; }\n\n.btn-group > .btn:first-child {\n  margin-left: 0; }\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0; }\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem; }\n  .dropdown-toggle-split::after,\n  .dropup .dropdown-toggle-split::after,\n  .dropright .dropdown-toggle-split::after {\n    margin-left: 0; }\n  .dropleft .dropdown-toggle-split::before {\n    margin-right: 0; }\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem; }\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem; }\n\n.btn-group-vertical {\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -webkit-box-align: start;\n  -ms-flex-align: start;\n  align-items: flex-start;\n  -webkit-box-pack: center;\n  -ms-flex-pack: center;\n  justify-content: center; }\n  .btn-group-vertical .btn,\n  .btn-group-vertical .btn-group {\n    width: 100%; }\n  .btn-group-vertical > .btn + .btn,\n  .btn-group-vertical > .btn + .btn-group,\n  .btn-group-vertical > .btn-group + .btn,\n  .btn-group-vertical > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0; }\n  .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n  .btn-group-vertical > .btn-group:not(:last-child) > .btn {\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0; }\n  .btn-group-vertical > .btn:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > .btn {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0; }\n  .btn-group-toggle > .btn input[type=\"radio\"],\n  .btn-group-toggle > .btn input[type=\"checkbox\"],\n  .btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n  .btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none; }\n\n.input-group {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -webkit-box-align: stretch;\n  -ms-flex-align: stretch;\n  align-items: stretch;\n  width: 100%; }\n  .input-group > .form-control,\n  .input-group > .custom-select,\n  .input-group > .custom-file {\n    position: relative;\n    -webkit-box-flex: 1;\n    -ms-flex: 1 1 auto;\n    flex: 1 1 auto;\n    width: 1%;\n    margin-bottom: 0; }\n    .input-group > .form-control:focus,\n    .input-group > .custom-select:focus,\n    .input-group > .custom-file:focus {\n      z-index: 3; }\n    .input-group > .form-control + .form-control,\n    .input-group > .form-control + .custom-select,\n    .input-group > .form-control + .custom-file,\n    .input-group > .custom-select + .form-control,\n    .input-group > .custom-select + .custom-select,\n    .input-group > .custom-select + .custom-file,\n    .input-group > .custom-file + .form-control,\n    .input-group > .custom-file + .custom-select,\n    .input-group > .custom-file + .custom-file {\n      margin-left: -1px; }\n  .input-group > .form-control:not(:last-child),\n  .input-group > .custom-select:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0; }\n  .input-group > .form-control:not(:first-child),\n  .input-group > .custom-select:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0; }\n  .input-group > .custom-file {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n    -ms-flex-align: center;\n    align-items: center; }\n    .input-group > .custom-file:not(:last-child) .custom-file-label,\n    .input-group > .custom-file:not(:last-child) .custom-file-label::after {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0; }\n    .input-group > .custom-file:not(:first-child) .custom-file-label,\n    .input-group > .custom-file:not(:first-child) .custom-file-label::after {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0; }\n\n.input-group-prepend,\n.input-group-append {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex; }\n  .input-group-prepend .btn,\n  .input-group-append .btn {\n    position: relative;\n    z-index: 2; }\n  .input-group-prepend .btn + .btn,\n  .input-group-prepend .btn + .input-group-text,\n  .input-group-prepend .input-group-text + .input-group-text,\n  .input-group-prepend .input-group-text + .btn,\n  .input-group-append .btn + .btn,\n  .input-group-append .btn + .input-group-text,\n  .input-group-append .input-group-text + .input-group-text,\n  .input-group-append .input-group-text + .btn {\n    margin-left: -1px; }\n\n.input-group-prepend {\n  margin-right: -1px; }\n\n.input-group-append {\n  margin-left: -1px; }\n\n.input-group-text {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #4F5467;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #f8f9fa;\n  border: 1px solid #e9ecef;\n  border-radius: 2px; }\n  .input-group-text input[type=\"radio\"],\n  .input-group-text input[type=\"checkbox\"] {\n    margin-top: 0; }\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0; }\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5rem; }\n\n.custom-control-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  margin-right: 1rem; }\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0; }\n  .custom-control-input:checked ~ .custom-control-label::before {\n    color: #fff;\n    background-color: #2962FF; }\n  .custom-control-input:focus ~ .custom-control-label::before {\n    -webkit-box-shadow: 0 0 0 1px #eef5f9, transparent;\n    box-shadow: 0 0 0 1px #eef5f9, transparent; }\n  .custom-control-input:active ~ .custom-control-label::before {\n    color: #fff;\n    background-color: black; }\n  .custom-control-input:disabled ~ .custom-control-label {\n    color: #6c757d; }\n    .custom-control-input:disabled ~ .custom-control-label::before {\n      background-color: #e9ecef; }\n\n.custom-control-label {\n  margin-bottom: 0; }\n  .custom-control-label::before {\n    position: absolute;\n    top: 0.25rem;\n    left: 0;\n    display: block;\n    width: 1rem;\n    height: 1rem;\n    pointer-events: none;\n    content: \"\";\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    background-color: #dee2e6; }\n  .custom-control-label::after {\n    position: absolute;\n    top: 0.25rem;\n    left: 0;\n    display: block;\n    width: 1rem;\n    height: 1rem;\n    content: \"\";\n    background-repeat: no-repeat;\n    background-position: center center;\n    background-size: 50% 50%; }\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 2px; }\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #2962FF; }\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"); }\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  background-color: #2962FF; }\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\"); }\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(116, 96, 238, 0.5); }\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(116, 96, 238, 0.5); }\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%; }\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #2962FF; }\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\"); }\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(116, 96, 238, 0.5); }\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(2.0625rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #4F5467;\n  vertical-align: middle;\n  background: #fff url(../../assets/images/custom-select.png) no-repeat right 0.75rem center;\n  background-size: 8px 10px;\n  border: 1px solid #e9ecef;\n  border-radius: 2px;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none; }\n  .custom-select:focus {\n    border-color: rgba(0, 0, 0, 0.25);\n    outline: 0;\n    -webkit-box-shadow: transparent;\n    box-shadow: transparent; }\n    .custom-select:focus::-ms-value {\n      color: #4F5467;\n      background-color: #fff; }\n  .custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n    height: auto;\n    padding-right: 0.75rem;\n    background-image: none; }\n  .custom-select:disabled {\n    color: #6c757d;\n    background-color: #e9ecef; }\n  .custom-select::-ms-expand {\n    opacity: 0; }\n\n.custom-select-sm {\n  height: calc(1.64844rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 75%; }\n\n.custom-select-lg {\n  height: calc(2.64063rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 125%; }\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(2.0625rem + 2px);\n  margin-bottom: 0; }\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(2.0625rem + 2px);\n  margin: 0;\n  opacity: 0; }\n  .custom-file-input:focus ~ .custom-file-label {\n    border-color: rgba(0, 0, 0, 0.25);\n    -webkit-box-shadow: transparent;\n    box-shadow: transparent; }\n    .custom-file-input:focus ~ .custom-file-label::after {\n      border-color: rgba(0, 0, 0, 0.25); }\n  .custom-file-input:lang(en) ~ .custom-file-label::after {\n    content: \"Browse\"; }\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(2.0625rem + 2px);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #4F5467;\n  background-color: #fff;\n  border: 1px solid #e9ecef;\n  border-radius: 2px; }\n  .custom-file-label::after {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 3;\n    display: block;\n    height: calc(calc(2.0625rem + 2px) - 1px * 2);\n    padding: 0.375rem 0.75rem;\n    line-height: 1.5;\n    color: #4F5467;\n    content: \"Browse\";\n    background-color: #f8f9fa;\n    border-left: 1px solid #e9ecef;\n    border-radius: 0 2px 2px 0; }\n\n.custom-range {\n  width: 100%;\n  padding-left: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none; }\n  .custom-range:focus {\n    outline: none; }\n  .custom-range::-moz-focus-outer {\n    border: 0; }\n  .custom-range::-webkit-slider-thumb {\n    width: 1rem;\n    height: 1rem;\n    margin-top: -0.25rem;\n    background-color: #2962FF;\n    border: 0;\n    border-radius: 1rem;\n    -webkit-appearance: none;\n    appearance: none; }\n    .custom-range::-webkit-slider-thumb:focus {\n      outline: none;\n      -webkit-box-shadow: 0 0 0 1px #eef5f9, transparent;\n      box-shadow: 0 0 0 1px #eef5f9, transparent; }\n    .custom-range::-webkit-slider-thumb:active {\n      background-color: #dce5ff; }\n  .custom-range::-webkit-slider-runnable-track {\n    width: 100%;\n    height: 0.5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: #dee2e6;\n    border-color: transparent;\n    border-radius: 1rem; }\n  .custom-range::-moz-range-thumb {\n    width: 1rem;\n    height: 1rem;\n    background-color: #2962FF;\n    border: 0;\n    border-radius: 1rem;\n    -moz-appearance: none;\n    appearance: none; }\n    .custom-range::-moz-range-thumb:focus {\n      outline: none;\n      box-shadow: 0 0 0 1px #eef5f9, transparent; }\n    .custom-range::-moz-range-thumb:active {\n      background-color: #dce5ff; }\n  .custom-range::-moz-range-track {\n    width: 100%;\n    height: 0.5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: #dee2e6;\n    border-color: transparent;\n    border-radius: 1rem; }\n  .custom-range::-ms-thumb {\n    width: 1rem;\n    height: 1rem;\n    background-color: #2962FF;\n    border: 0;\n    border-radius: 1rem;\n    appearance: none; }\n    .custom-range::-ms-thumb:focus {\n      outline: none;\n      box-shadow: 0 0 0 1px #eef5f9, transparent; }\n    .custom-range::-ms-thumb:active {\n      background-color: #dce5ff; }\n  .custom-range::-ms-track {\n    width: 100%;\n    height: 0.5rem;\n    color: transparent;\n    cursor: pointer;\n    background-color: transparent;\n    border-color: transparent;\n    border-width: 0.5rem; }\n  .custom-range::-ms-fill-lower {\n    background-color: #dee2e6;\n    border-radius: 1rem; }\n  .custom-range::-ms-fill-upper {\n    margin-right: 15px;\n    background-color: #dee2e6;\n    border-radius: 1rem; }\n\n.nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none; }\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem; }\n  .nav-link:hover, .nav-link:focus {\n    text-decoration: none; }\n  .nav-link.disabled {\n    color: #6c757d; }\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6; }\n  .nav-tabs .nav-item {\n    margin-bottom: -1px; }\n  .nav-tabs .nav-link {\n    border: 1px solid transparent;\n    border-top-left-radius: 2px;\n    border-top-right-radius: 2px; }\n    .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n      border-color: #e9ecef #e9ecef #dee2e6; }\n    .nav-tabs .nav-link.disabled {\n      color: #6c757d;\n      background-color: transparent;\n      border-color: transparent; }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: #4F5467;\n    background-color: #fff;\n    border-color: #dee2e6 #dee2e6 #fff; }\n  .nav-tabs .dropdown-menu {\n    margin-top: -1px;\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n\n.nav-pills .nav-link {\n  border-radius: 2px; }\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #2962FF; }\n\n.nav-fill .nav-item {\n  -webkit-box-flex: 1;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  text-align: center; }\n\n.nav-justified .nav-item {\n  -ms-flex-preferred-size: 0;\n  flex-basis: 0;\n  -webkit-box-flex: 1;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  text-align: center; }\n\n.tab-content > .tab-pane {\n  display: none; }\n\n.tab-content > .active {\n  display: block; }\n\n.navbar {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  -webkit-box-pack: justify;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  padding: 0.5rem 1rem; }\n  .navbar > .container,\n  .navbar > .container-fluid {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-wrap: wrap;\n    flex-wrap: wrap;\n    -webkit-box-align: center;\n    -ms-flex-align: center;\n    align-items: center;\n    -webkit-box-pack: justify;\n    -ms-flex-pack: justify;\n    justify-content: space-between; }\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.33594rem;\n  padding-bottom: 0.33594rem;\n  margin-right: 1rem;\n  font-size: 1.09375rem;\n  line-height: inherit;\n  white-space: nowrap; }\n  .navbar-brand:hover, .navbar-brand:focus {\n    text-decoration: none; }\n\n.navbar-nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none; }\n  .navbar-nav .nav-link {\n    padding-right: 0;\n    padding-left: 0; }\n  .navbar-nav .dropdown-menu {\n    position: static;\n    float: none; }\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem; }\n\n.navbar-collapse {\n  -ms-flex-preferred-size: 100%;\n  flex-basis: 100%;\n  -webkit-box-flex: 1;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center; }\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.09375rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 2px; }\n  .navbar-toggler:hover, .navbar-toggler:focus {\n    text-decoration: none; }\n  .navbar-toggler:not(:disabled):not(.disabled) {\n    cursor: pointer; }\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%; }\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -webkit-box-pack: start;\n    -ms-flex-pack: start;\n    justify-content: flex-start; }\n    .navbar-expand-sm .navbar-nav {\n      -webkit-box-orient: horizontal;\n      -webkit-box-direction: normal;\n      -ms-flex-direction: row;\n      flex-direction: row; }\n      .navbar-expand-sm .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-sm .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-sm > .container,\n    .navbar-expand-sm > .container-fluid {\n      -ms-flex-wrap: nowrap;\n      flex-wrap: nowrap; }\n    .navbar-expand-sm .navbar-collapse {\n      display: -webkit-box !important;\n      display: -ms-flexbox !important;\n      display: flex !important;\n      -ms-flex-preferred-size: auto;\n      flex-basis: auto; }\n    .navbar-expand-sm .navbar-toggler {\n      display: none; } }\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -webkit-box-pack: start;\n    -ms-flex-pack: start;\n    justify-content: flex-start; }\n    .navbar-expand-md .navbar-nav {\n      -webkit-box-orient: horizontal;\n      -webkit-box-direction: normal;\n      -ms-flex-direction: row;\n      flex-direction: row; }\n      .navbar-expand-md .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-md .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-md > .container,\n    .navbar-expand-md > .container-fluid {\n      -ms-flex-wrap: nowrap;\n      flex-wrap: nowrap; }\n    .navbar-expand-md .navbar-collapse {\n      display: -webkit-box !important;\n      display: -ms-flexbox !important;\n      display: flex !important;\n      -ms-flex-preferred-size: auto;\n      flex-basis: auto; }\n    .navbar-expand-md .navbar-toggler {\n      display: none; } }\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -webkit-box-pack: start;\n    -ms-flex-pack: start;\n    justify-content: flex-start; }\n    .navbar-expand-lg .navbar-nav {\n      -webkit-box-orient: horizontal;\n      -webkit-box-direction: normal;\n      -ms-flex-direction: row;\n      flex-direction: row; }\n      .navbar-expand-lg .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-lg .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-lg > .container,\n    .navbar-expand-lg > .container-fluid {\n      -ms-flex-wrap: nowrap;\n      flex-wrap: nowrap; }\n    .navbar-expand-lg .navbar-collapse {\n      display: -webkit-box !important;\n      display: -ms-flexbox !important;\n      display: flex !important;\n      -ms-flex-preferred-size: auto;\n      flex-basis: auto; }\n    .navbar-expand-lg .navbar-toggler {\n      display: none; } }\n\n@media (max-width: 1599.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; } }\n\n@media (min-width: 1600px) {\n  .navbar-expand-xl {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -webkit-box-pack: start;\n    -ms-flex-pack: start;\n    justify-content: flex-start; }\n    .navbar-expand-xl .navbar-nav {\n      -webkit-box-orient: horizontal;\n      -webkit-box-direction: normal;\n      -ms-flex-direction: row;\n      flex-direction: row; }\n      .navbar-expand-xl .navbar-nav .dropdown-menu {\n        position: absolute; }\n      .navbar-expand-xl .navbar-nav .nav-link {\n        padding-right: 0.5rem;\n        padding-left: 0.5rem; }\n    .navbar-expand-xl > .container,\n    .navbar-expand-xl > .container-fluid {\n      -ms-flex-wrap: nowrap;\n      flex-wrap: nowrap; }\n    .navbar-expand-xl .navbar-collapse {\n      display: -webkit-box !important;\n      display: -ms-flexbox !important;\n      display: flex !important;\n      -ms-flex-preferred-size: auto;\n      flex-basis: auto; }\n    .navbar-expand-xl .navbar-toggler {\n      display: none; } }\n\n.navbar-expand {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n  -ms-flex-flow: row nowrap;\n  flex-flow: row nowrap;\n  -webkit-box-pack: start;\n  -ms-flex-pack: start;\n  justify-content: flex-start; }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    padding-right: 0;\n    padding-left: 0; }\n  .navbar-expand .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -ms-flex-direction: row;\n    flex-direction: row; }\n    .navbar-expand .navbar-nav .dropdown-menu {\n      position: absolute; }\n    .navbar-expand .navbar-nav .nav-link {\n      padding-right: 0.5rem;\n      padding-left: 0.5rem; }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap; }\n  .navbar-expand .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto; }\n  .navbar-expand .navbar-toggler {\n    display: none; }\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9); }\n  .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n    color: rgba(0, 0, 0, 0.9); }\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.5); }\n  .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n    color: rgba(0, 0, 0, 0.7); }\n  .navbar-light .navbar-nav .nav-link.disabled {\n    color: rgba(0, 0, 0, 0.3); }\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9); }\n\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.5);\n  border-color: rgba(0, 0, 0, 0.1); }\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"); }\n\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.5); }\n  .navbar-light .navbar-text a {\n    color: rgba(0, 0, 0, 0.9); }\n    .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n      color: rgba(0, 0, 0, 0.9); }\n\n.navbar-dark .navbar-brand {\n  color: #fff; }\n  .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n    color: #fff; }\n\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.8); }\n  .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n    color: white; }\n  .navbar-dark .navbar-nav .nav-link.disabled {\n    color: rgba(255, 255, 255, 0.25); }\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff; }\n\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.8);\n  border-color: rgba(255, 255, 255, 0.1); }\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.8)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"); }\n\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.8); }\n  .navbar-dark .navbar-text a {\n    color: #fff; }\n    .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n      color: #fff; }\n\n.card {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 0px solid transparent;\n  border-radius: 0px; }\n  .card > hr {\n    margin-right: 0;\n    margin-left: 0; }\n  .card > .list-group:first-child .list-group-item:first-child {\n    border-top-left-radius: 0px;\n    border-top-right-radius: 0px; }\n  .card > .list-group:last-child .list-group-item:last-child {\n    border-bottom-right-radius: 0px;\n    border-bottom-left-radius: 0px; }\n\n.card-body {\n  -webkit-box-flex: 1;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  padding: 1.25rem; }\n\n.card-title {\n  margin-bottom: 0.75rem; }\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0; }\n\n.card-text:last-child {\n  margin-bottom: 0; }\n\n.card-link:hover {\n  text-decoration: none; }\n\n.card-link + .card-link {\n  margin-left: 1.25rem; }\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 0px solid transparent; }\n  .card-header:first-child {\n    border-radius: calc(0px - 0px) calc(0px - 0px) 0 0; }\n  .card-header + .list-group .list-group-item:first-child {\n    border-top: 0; }\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 0px solid transparent; }\n  .card-footer:last-child {\n    border-radius: 0 0 calc(0px - 0px) calc(0px - 0px); }\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0; }\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem; }\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem; }\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0px - 0px); }\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0px - 0px);\n  border-top-right-radius: calc(0px - 0px); }\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0px - 0px);\n  border-bottom-left-radius: calc(0px - 0px); }\n\n.card-deck {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column; }\n  .card-deck .card {\n    margin-bottom: 10px; }\n  @media (min-width: 576px) {\n    .card-deck {\n      -webkit-box-orient: horizontal;\n      -webkit-box-direction: normal;\n      -ms-flex-flow: row wrap;\n      flex-flow: row wrap;\n      margin-right: -10px;\n      margin-left: -10px; }\n      .card-deck .card {\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex;\n        -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n        flex: 1 0 0%;\n        -webkit-box-orient: vertical;\n        -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n        flex-direction: column;\n        margin-right: 10px;\n        margin-bottom: 0;\n        margin-left: 10px; } }\n\n.card-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column; }\n  .card-group > .card {\n    margin-bottom: 10px; }\n  @media (min-width: 576px) {\n    .card-group {\n      -webkit-box-orient: horizontal;\n      -webkit-box-direction: normal;\n      -ms-flex-flow: row wrap;\n      flex-flow: row wrap; }\n      .card-group > .card {\n        -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n        flex: 1 0 0%;\n        margin-bottom: 0; }\n        .card-group > .card + .card {\n          margin-left: 0;\n          border-left: 0; }\n        .card-group > .card:first-child {\n          border-top-right-radius: 0;\n          border-bottom-right-radius: 0; }\n          .card-group > .card:first-child .card-img-top,\n          .card-group > .card:first-child .card-header {\n            border-top-right-radius: 0; }\n          .card-group > .card:first-child .card-img-bottom,\n          .card-group > .card:first-child .card-footer {\n            border-bottom-right-radius: 0; }\n        .card-group > .card:last-child {\n          border-top-left-radius: 0;\n          border-bottom-left-radius: 0; }\n          .card-group > .card:last-child .card-img-top,\n          .card-group > .card:last-child .card-header {\n            border-top-left-radius: 0; }\n          .card-group > .card:last-child .card-img-bottom,\n          .card-group > .card:last-child .card-footer {\n            border-bottom-left-radius: 0; }\n        .card-group > .card:only-child {\n          border-radius: 0px; }\n          .card-group > .card:only-child .card-img-top,\n          .card-group > .card:only-child .card-header {\n            border-top-left-radius: 0px;\n            border-top-right-radius: 0px; }\n          .card-group > .card:only-child .card-img-bottom,\n          .card-group > .card:only-child .card-footer {\n            border-bottom-right-radius: 0px;\n            border-bottom-left-radius: 0px; }\n        .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n          border-radius: 0; }\n          .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n          .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n          .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n          .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n            border-radius: 0; } }\n\n.card-columns .card {\n  margin-bottom: 0.75rem; }\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n    column-count: 3;\n    -webkit-column-gap: 1.25rem;\n    column-gap: 1.25rem;\n    orphans: 1;\n    widows: 1; }\n    .card-columns .card {\n      display: inline-block;\n      width: 100%; } }\n\n.accordion .card:not(:first-of-type):not(:last-of-type) {\n  border-bottom: 0;\n  border-radius: 0; }\n\n.accordion .card:not(:first-of-type) .card-header:first-child {\n  border-radius: 0; }\n\n.accordion .card:first-of-type {\n  border-bottom: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0; }\n\n.accordion .card:last-of-type {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.breadcrumb {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  padding: 0.75rem 1rem;\n  margin-bottom: 1.5rem;\n  list-style: none;\n  background-color: #eef5f9;\n  border-radius: 2px; }\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem; }\n  .breadcrumb-item + .breadcrumb-item::before {\n    display: inline-block;\n    padding-right: 0.5rem;\n    color: #6c757d;\n    content: \"/\"; }\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline; }\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none; }\n\n.breadcrumb-item.active {\n  color: #6c757d; }\n\n.pagination {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 2px; }\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #7460ee;\n  background-color: #fff;\n  border: 1px solid #dee2e6; }\n  .page-link:hover {\n    z-index: 2;\n    color: #381be7;\n    text-decoration: none;\n    background-color: #e9ecef;\n    border-color: #dee2e6; }\n  .page-link:focus {\n    z-index: 2;\n    outline: 0;\n    -webkit-box-shadow: transparent;\n    box-shadow: transparent; }\n  .page-link:not(:disabled):not(.disabled) {\n    cursor: pointer; }\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 2px;\n  border-bottom-left-radius: 2px; }\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px; }\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #fff;\n  background-color: #2962FF;\n  border-color: #2962FF; }\n\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #fff;\n  border-color: #dee2e6; }\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.09375rem;\n  line-height: 1.5; }\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 2px;\n  border-bottom-left-radius: 2px; }\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px; }\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.76563rem;\n  line-height: 1.5; }\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 1px;\n  border-bottom-left-radius: 1px; }\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 1px;\n  border-bottom-right-radius: 1px; }\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 800;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 2px; }\n  .badge:empty {\n    display: none; }\n\n.btn .badge {\n  position: relative;\n  top: -1px; }\n\n.badge-pill {\n  padding-right: 0.2em;\n  padding-left: 0.2em;\n  border-radius: 10rem; }\n\n.badge-primary {\n  color: #fff;\n  background-color: #7460ee; }\n  .badge-primary[href]:hover, .badge-primary[href]:focus {\n    color: #fff;\n    text-decoration: none;\n    background-color: #4c32e9; }\n\n.badge-secondary {\n  color: #fff;\n  background-color: #6c757d; }\n  .badge-secondary[href]:hover, .badge-secondary[href]:focus {\n    color: #fff;\n    text-decoration: none;\n    background-color: #545b62; }\n\n.badge-success {\n  color: #fff;\n  background-color: #36bea6; }\n  .badge-success[href]:hover, .badge-success[href]:focus {\n    color: #fff;\n    text-decoration: none;\n    background-color: #2b9683; }\n\n.badge-info {\n  color: #fff;\n  background-color: #2962FF; }\n  .badge-info[href]:hover, .badge-info[href]:focus {\n    color: #fff;\n    text-decoration: none;\n    background-color: #0041f5; }\n\n.badge-warning {\n  color: #212529;\n  background-color: #ffbc34; }\n  .badge-warning[href]:hover, .badge-warning[href]:focus {\n    color: #212529;\n    text-decoration: none;\n    background-color: #ffab01; }\n\n.badge-danger {\n  color: #fff;\n  background-color: #f62d51; }\n  .badge-danger[href]:hover, .badge-danger[href]:focus {\n    color: #fff;\n    text-decoration: none;\n    background-color: #e60a31; }\n\n.badge-light {\n  color: #212529;\n  background-color: #f8f9fa; }\n  .badge-light[href]:hover, .badge-light[href]:focus {\n    color: #212529;\n    text-decoration: none;\n    background-color: #dae0e5; }\n\n.badge-dark {\n  color: #fff;\n  background-color: #343a40; }\n  .badge-dark[href]:hover, .badge-dark[href]:focus {\n    color: #fff;\n    text-decoration: none;\n    background-color: #1d2124; }\n\n.badge-cyan {\n  color: #212529;\n  background-color: #4fc3f7; }\n  .badge-cyan[href]:hover, .badge-cyan[href]:focus {\n    color: #212529;\n    text-decoration: none;\n    background-color: #1eb2f5; }\n\n.badge-orange {\n  color: #212529;\n  background-color: #fb8c00; }\n  .badge-orange[href]:hover, .badge-orange[href]:focus {\n    color: #212529;\n    text-decoration: none;\n    background-color: #c87000; }\n\n.badge-purple {\n  color: #fff;\n  background-color: #7460ee; }\n  .badge-purple[href]:hover, .badge-purple[href]:focus {\n    color: #fff;\n    text-decoration: none;\n    background-color: #4c32e9; }\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #e9ecef;\n  border-radius: 2px; }\n  @media (min-width: 576px) {\n    .jumbotron {\n      padding: 4rem 2rem; } }\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0; }\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 2px; }\n\n.alert-heading {\n  color: inherit; }\n\n.alert-link {\n  font-weight: 800; }\n\n.alert-dismissible {\n  padding-right: 3.8125rem; }\n  .alert-dismissible .close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    padding: 0.75rem 1.25rem;\n    color: inherit; }\n\n.alert-primary {\n  color: #3c327c;\n  background-color: #e3dffc;\n  border-color: #d8d2fa; }\n  .alert-primary hr {\n    border-top-color: #c4bbf7; }\n  .alert-primary .alert-link {\n    color: #2a2358; }\n\n.alert-secondary {\n  color: #383d41;\n  background-color: #e2e3e5;\n  border-color: #d6d8db; }\n  .alert-secondary hr {\n    border-top-color: #c8cbcf; }\n  .alert-secondary .alert-link {\n    color: #202326; }\n\n.alert-success {\n  color: #1c6356;\n  background-color: #d7f2ed;\n  border-color: #c7ede6; }\n  .alert-success hr {\n    border-top-color: #b4e7dd; }\n  .alert-success .alert-link {\n    color: #113b33; }\n\n.alert-info {\n  color: #153385;\n  background-color: #d4e0ff;\n  border-color: #c3d3ff; }\n  .alert-info hr {\n    border-top-color: #aac0ff; }\n  .alert-info .alert-link {\n    color: #0e2259; }\n\n.alert-warning {\n  color: #85621b;\n  background-color: #fff2d6;\n  border-color: #ffecc6; }\n  .alert-warning hr {\n    border-top-color: #ffe4ad; }\n  .alert-warning .alert-link {\n    color: #5b4312; }\n\n.alert-danger {\n  color: #80172a;\n  background-color: #fdd5dc;\n  border-color: #fcc4ce; }\n  .alert-danger hr {\n    border-top-color: #fbacba; }\n  .alert-danger .alert-link {\n    color: #550f1c; }\n\n.alert-light {\n  color: #818182;\n  background-color: #fefefe;\n  border-color: #fdfdfe; }\n  .alert-light hr {\n    border-top-color: #ececf6; }\n  .alert-light .alert-link {\n    color: #686868; }\n\n.alert-dark {\n  color: #1b1e21;\n  background-color: #d6d8d9;\n  border-color: #c6c8ca; }\n  .alert-dark hr {\n    border-top-color: #b9bbbe; }\n  .alert-dark .alert-link {\n    color: #040505; }\n\n.alert-cyan {\n  color: #296580;\n  background-color: #dcf3fd;\n  border-color: #ceeefd; }\n  .alert-cyan hr {\n    border-top-color: #b6e6fc; }\n  .alert-cyan .alert-link {\n    color: #1d4759; }\n\n.alert-orange {\n  color: #834900;\n  background-color: #fee8cc;\n  border-color: #fedfb8; }\n  .alert-orange hr {\n    border-top-color: #fed49f; }\n  .alert-orange .alert-link {\n    color: #502d00; }\n\n.alert-purple {\n  color: #3c327c;\n  background-color: #e3dffc;\n  border-color: #d8d2fa; }\n  .alert-purple hr {\n    border-top-color: #c4bbf7; }\n  .alert-purple .alert-link {\n    color: #2a2358; }\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 5px 0; }\n  to {\n    background-position: 0 0; } }\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 5px 0; }\n  to {\n    background-position: 0 0; } }\n\n.progress {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  height: 5px;\n  overflow: hidden;\n  font-size: 0.65625rem;\n  background-color: #f8f9fa;\n  border-radius: 2px; }\n\n.progress-bar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -webkit-box-pack: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #7460ee;\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease; }\n  @media screen and (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      -webkit-transition: none;\n      -o-transition: none;\n      transition: none; } }\n\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 5px 5px; }\n\n.progress-bar-animated {\n  -webkit-animation: progress-bar-stripes 1s linear infinite;\n  animation: progress-bar-stripes 1s linear infinite; }\n\n.media {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n  -ms-flex-align: start;\n  align-items: flex-start; }\n\n.media-body {\n  -webkit-box-flex: 1;\n  -ms-flex: 1;\n  flex: 1; }\n\n.list-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0; }\n\n.list-group-item-action {\n  width: 100%;\n  color: #4F5467;\n  text-align: inherit; }\n  .list-group-item-action:hover, .list-group-item-action:focus {\n    color: #4F5467;\n    text-decoration: none;\n    background-color: #f8f9fa; }\n  .list-group-item-action:active {\n    color: #3e5569;\n    background-color: #e9ecef; }\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125); }\n  .list-group-item:first-child {\n    border-top-left-radius: 2px;\n    border-top-right-radius: 2px; }\n  .list-group-item:last-child {\n    margin-bottom: 0;\n    border-bottom-right-radius: 2px;\n    border-bottom-left-radius: 2px; }\n  .list-group-item:hover, .list-group-item:focus {\n    z-index: 1;\n    text-decoration: none; }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: #6c757d;\n    background-color: #fff; }\n  .list-group-item.active {\n    z-index: 2;\n    color: #fff;\n    background-color: #2962FF;\n    border-color: #2962FF; }\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0; }\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0; }\n\n.list-group-flush:last-child .list-group-item:last-child {\n  border-bottom: 0; }\n\n.list-group-item-primary {\n  color: #3c327c;\n  background-color: #d8d2fa; }\n  .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n    color: #3c327c;\n    background-color: #c4bbf7; }\n  .list-group-item-primary.list-group-item-action.active {\n    color: #fff;\n    background-color: #3c327c;\n    border-color: #3c327c; }\n\n.list-group-item-secondary {\n  color: #383d41;\n  background-color: #d6d8db; }\n  .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n    color: #383d41;\n    background-color: #c8cbcf; }\n  .list-group-item-secondary.list-group-item-action.active {\n    color: #fff;\n    background-color: #383d41;\n    border-color: #383d41; }\n\n.list-group-item-success {\n  color: #1c6356;\n  background-color: #c7ede6; }\n  .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n    color: #1c6356;\n    background-color: #b4e7dd; }\n  .list-group-item-success.list-group-item-action.active {\n    color: #fff;\n    background-color: #1c6356;\n    border-color: #1c6356; }\n\n.list-group-item-info {\n  color: #153385;\n  background-color: #c3d3ff; }\n  .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n    color: #153385;\n    background-color: #aac0ff; }\n  .list-group-item-info.list-group-item-action.active {\n    color: #fff;\n    background-color: #153385;\n    border-color: #153385; }\n\n.list-group-item-warning {\n  color: #85621b;\n  background-color: #ffecc6; }\n  .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n    color: #85621b;\n    background-color: #ffe4ad; }\n  .list-group-item-warning.list-group-item-action.active {\n    color: #fff;\n    background-color: #85621b;\n    border-color: #85621b; }\n\n.list-group-item-danger {\n  color: #80172a;\n  background-color: #fcc4ce; }\n  .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n    color: #80172a;\n    background-color: #fbacba; }\n  .list-group-item-danger.list-group-item-action.active {\n    color: #fff;\n    background-color: #80172a;\n    border-color: #80172a; }\n\n.list-group-item-light {\n  color: #818182;\n  background-color: #fdfdfe; }\n  .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n    color: #818182;\n    background-color: #ececf6; }\n  .list-group-item-light.list-group-item-action.active {\n    color: #fff;\n    background-color: #818182;\n    border-color: #818182; }\n\n.list-group-item-dark {\n  color: #1b1e21;\n  background-color: #c6c8ca; }\n  .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n    color: #1b1e21;\n    background-color: #b9bbbe; }\n  .list-group-item-dark.list-group-item-action.active {\n    color: #fff;\n    background-color: #1b1e21;\n    border-color: #1b1e21; }\n\n.list-group-item-cyan {\n  color: #296580;\n  background-color: #ceeefd; }\n  .list-group-item-cyan.list-group-item-action:hover, .list-group-item-cyan.list-group-item-action:focus {\n    color: #296580;\n    background-color: #b6e6fc; }\n  .list-group-item-cyan.list-group-item-action.active {\n    color: #fff;\n    background-color: #296580;\n    border-color: #296580; }\n\n.list-group-item-orange {\n  color: #834900;\n  background-color: #fedfb8; }\n  .list-group-item-orange.list-group-item-action:hover, .list-group-item-orange.list-group-item-action:focus {\n    color: #834900;\n    background-color: #fed49f; }\n  .list-group-item-orange.list-group-item-action.active {\n    color: #fff;\n    background-color: #834900;\n    border-color: #834900; }\n\n.list-group-item-purple {\n  color: #3c327c;\n  background-color: #d8d2fa; }\n  .list-group-item-purple.list-group-item-action:hover, .list-group-item-purple.list-group-item-action:focus {\n    color: #3c327c;\n    background-color: #c4bbf7; }\n  .list-group-item-purple.list-group-item-action.active {\n    color: #fff;\n    background-color: #3c327c;\n    border-color: #3c327c; }\n\n.close {\n  float: right;\n  font-size: 1.3125rem;\n  font-weight: 800;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: .5; }\n  .close:hover, .close:focus {\n    color: #000;\n    text-decoration: none;\n    opacity: .75; }\n  .close:not(:disabled):not(.disabled) {\n    cursor: pointer; }\n\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none; }\n\n.modal-open {\n  overflow: hidden; }\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  outline: 0; }\n  .modal-open .modal {\n    overflow-x: hidden;\n    overflow-y: auto; }\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none; }\n  .modal.fade .modal-dialog {\n    -webkit-transition: -webkit-transform 0.3s ease-out;\n    transition: -webkit-transform 0.3s ease-out;\n    -o-transition: transform 0.3s ease-out;\n    transition: transform 0.3s ease-out;\n    transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n    -webkit-transform: translate(0, -25%);\n    -ms-transform: translate(0, -25%);\n    transform: translate(0, -25%); }\n    @media screen and (prefers-reduced-motion: reduce) {\n      .modal.fade .modal-dialog {\n        -webkit-transition: none;\n        -o-transition: none;\n        transition: none; } }\n  .modal.show .modal-dialog {\n    -webkit-transform: translate(0, 0);\n    -ms-transform: translate(0, 0);\n    transform: translate(0, 0); }\n\n.modal-dialog-centered {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  min-height: calc(100% - (0.5rem * 2)); }\n\n.modal-content {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 2px;\n  outline: 0; }\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000; }\n  .modal-backdrop.fade {\n    opacity: 0; }\n  .modal-backdrop.show {\n    opacity: 0.5; }\n\n.modal-header {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n  -ms-flex-align: start;\n  align-items: flex-start;\n  -webkit-box-pack: justify;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  padding: 1rem;\n  border-bottom: 1px solid #e9ecef;\n  border-top-left-radius: 2px;\n  border-top-right-radius: 2px; }\n  .modal-header .close {\n    padding: 1rem;\n    margin: -1rem -1rem -1rem auto; }\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5; }\n\n.modal-body {\n  position: relative;\n  -webkit-box-flex: 1;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  padding: 1rem; }\n\n.modal-footer {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  -webkit-box-pack: end;\n  -ms-flex-pack: end;\n  justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #e9ecef; }\n  .modal-footer > :not(:first-child) {\n    margin-left: .25rem; }\n  .modal-footer > :not(:last-child) {\n    margin-right: .25rem; }\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll; }\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto; }\n  .modal-dialog-centered {\n    min-height: calc(100% - (1.75rem * 2)); }\n  .modal-sm {\n    max-width: 300px; } }\n\n@media (min-width: 992px) {\n  .modal-lg {\n    max-width: 800px; } }\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: \"Nunito Sans\", sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.76563rem;\n  word-wrap: break-word;\n  opacity: 0; }\n  .tooltip.show {\n    opacity: 0.9; }\n  .tooltip .arrow {\n    position: absolute;\n    display: block;\n    width: 0.8rem;\n    height: 0.4rem; }\n    .tooltip .arrow::before {\n      position: absolute;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid; }\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 0.4rem 0; }\n  .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n    bottom: 0; }\n    .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n      top: 0;\n      border-width: 0.4rem 0.4rem 0;\n      border-top-color: #000; }\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 0.4rem; }\n  .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n    left: 0;\n    width: 0.4rem;\n    height: 0.8rem; }\n    .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n      right: 0;\n      border-width: 0.4rem 0.4rem 0.4rem 0;\n      border-right-color: #000; }\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 0.4rem 0; }\n  .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n    top: 0; }\n    .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n      bottom: 0;\n      border-width: 0 0.4rem 0.4rem;\n      border-bottom-color: #000; }\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 0.4rem; }\n  .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n    right: 0;\n    width: 0.4rem;\n    height: 0.8rem; }\n    .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n      left: 0;\n      border-width: 0.4rem 0 0.4rem 0.4rem;\n      border-left-color: #000; }\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 2px; }\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: \"Nunito Sans\", sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.76563rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 2px; }\n  .popover .arrow {\n    position: absolute;\n    display: block;\n    width: 1rem;\n    height: 0.5rem;\n    margin: 0 2px; }\n    .popover .arrow::before, .popover .arrow::after {\n      position: absolute;\n      display: block;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid; }\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem; }\n  .bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n    bottom: calc((0.5rem + 1px) * -1); }\n  .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n  .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n    border-width: 0.5rem 0.5rem 0; }\n  .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n    bottom: 0;\n    border-top-color: rgba(0, 0, 0, 0.25); }\n  .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n    bottom: 1px;\n    border-top-color: #fff; }\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem; }\n  .bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n    left: calc((0.5rem + 1px) * -1);\n    width: 0.5rem;\n    height: 1rem;\n    margin: 2px 0; }\n  .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n  .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n    border-width: 0.5rem 0.5rem 0.5rem 0; }\n  .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n    left: 0;\n    border-right-color: rgba(0, 0, 0, 0.25); }\n  .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n    left: 1px;\n    border-right-color: #fff; }\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem; }\n  .bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n    top: calc((0.5rem + 1px) * -1); }\n  .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n  .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n    border-width: 0 0.5rem 0.5rem 0.5rem; }\n  .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n    top: 0;\n    border-bottom-color: rgba(0, 0, 0, 0.25); }\n  .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n    top: 1px;\n    border-bottom-color: #fff; }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: 1rem;\n    margin-left: -0.5rem;\n    content: \"\";\n    border-bottom: 1px solid #f7f7f7; }\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem; }\n  .bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n    right: calc((0.5rem + 1px) * -1);\n    width: 0.5rem;\n    height: 1rem;\n    margin: 2px 0; }\n  .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n  .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n    border-width: 0.5rem 0 0.5rem 0.5rem; }\n  .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n    right: 0;\n    border-left-color: rgba(0, 0, 0, 0.25); }\n  .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n    right: 1px;\n    border-left-color: #fff; }\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: inherit;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-top-left-radius: calc(2px - 1px);\n  border-top-right-radius: calc(2px - 1px); }\n  .popover-header:empty {\n    display: none; }\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #3e5569; }\n\n.carousel {\n  position: relative; }\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden; }\n\n.carousel-item {\n  position: relative;\n  display: none;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  width: 100%;\n  -webkit-transition: -webkit-transform 0.6s ease;\n  transition: -webkit-transform 0.6s ease;\n  -o-transition: transform 0.6s ease;\n  transition: transform 0.6s ease;\n  transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  -webkit-perspective: 1000px;\n  perspective: 1000px; }\n  @media screen and (prefers-reduced-motion: reduce) {\n    .carousel-item {\n      -webkit-transition: none;\n      -o-transition: none;\n      transition: none; } }\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block; }\n\n.carousel-item-next,\n.carousel-item-prev {\n  position: absolute;\n  top: 0; }\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n  -webkit-transform: translateX(0);\n  -ms-transform: translateX(0);\n  transform: translateX(0); }\n  @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n    .carousel-item-next.carousel-item-left,\n    .carousel-item-prev.carousel-item-right {\n      -webkit-transform: translate3d(0, 0, 0);\n      transform: translate3d(0, 0, 0); } }\n\n.carousel-item-next,\n.active.carousel-item-right {\n  -webkit-transform: translateX(100%);\n  -ms-transform: translateX(100%);\n  transform: translateX(100%); }\n  @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n    .carousel-item-next,\n    .active.carousel-item-right {\n      -webkit-transform: translate3d(100%, 0, 0);\n      transform: translate3d(100%, 0, 0); } }\n\n.carousel-item-prev,\n.active.carousel-item-left {\n  -webkit-transform: translateX(-100%);\n  -ms-transform: translateX(-100%);\n  transform: translateX(-100%); }\n  @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n    .carousel-item-prev,\n    .active.carousel-item-left {\n      -webkit-transform: translate3d(-100%, 0, 0);\n      transform: translate3d(-100%, 0, 0); } }\n\n.carousel-fade .carousel-item {\n  opacity: 0;\n  -webkit-transition-duration: .6s;\n  -o-transition-duration: .6s;\n  transition-duration: .6s;\n  -webkit-transition-property: opacity;\n  -o-transition-property: opacity;\n  transition-property: opacity; }\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n  opacity: 1; }\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n  opacity: 0; }\n\n.carousel-fade .carousel-item-next,\n.carousel-fade .carousel-item-prev,\n.carousel-fade .carousel-item.active,\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-prev {\n  -webkit-transform: translateX(0);\n  -ms-transform: translateX(0);\n  transform: translateX(0); }\n  @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n    .carousel-fade .carousel-item-next,\n    .carousel-fade .carousel-item-prev,\n    .carousel-fade .carousel-item.active,\n    .carousel-fade .active.carousel-item-left,\n    .carousel-fade .active.carousel-item-prev {\n      -webkit-transform: translate3d(0, 0, 0);\n      transform: translate3d(0, 0, 0); } }\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  -webkit-box-pack: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  width: 15%;\n  color: #fff;\n  text-align: center;\n  opacity: 0.5; }\n  .carousel-control-prev:hover, .carousel-control-prev:focus,\n  .carousel-control-next:hover,\n  .carousel-control-next:focus {\n    color: #fff;\n    text-decoration: none;\n    outline: 0;\n    opacity: .9; }\n\n.carousel-control-prev {\n  left: 0; }\n\n.carousel-control-next {\n  right: 0; }\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: transparent no-repeat center center;\n  background-size: 100% 100%; }\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"); }\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"); }\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 10px;\n  left: 0;\n  z-index: 15;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-pack: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none; }\n  .carousel-indicators li {\n    position: relative;\n    -webkit-box-flex: 0;\n    -ms-flex: 0 1 auto;\n    flex: 0 1 auto;\n    width: 30px;\n    height: 3px;\n    margin-right: 3px;\n    margin-left: 3px;\n    text-indent: -999px;\n    background-color: rgba(255, 255, 255, 0.5); }\n    .carousel-indicators li::before {\n      position: absolute;\n      top: -10px;\n      left: 0;\n      display: inline-block;\n      width: 100%;\n      height: 10px;\n      content: \"\"; }\n    .carousel-indicators li::after {\n      position: absolute;\n      bottom: -10px;\n      left: 0;\n      display: inline-block;\n      width: 100%;\n      height: 10px;\n      content: \"\"; }\n  .carousel-indicators .active {\n    background-color: #fff; }\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center; }\n\n.align-baseline {\n  vertical-align: baseline !important; }\n\n.align-top {\n  vertical-align: top !important; }\n\n.align-middle {\n  vertical-align: middle !important; }\n\n.align-bottom {\n  vertical-align: bottom !important; }\n\n.align-text-bottom {\n  vertical-align: text-bottom !important; }\n\n.align-text-top {\n  vertical-align: text-top !important; }\n\n.bg-primary {\n  background-color: #7460ee !important; }\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #4c32e9 !important; }\n\n.bg-secondary {\n  background-color: #6c757d !important; }\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #545b62 !important; }\n\n.bg-success {\n  background-color: #36bea6 !important; }\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #2b9683 !important; }\n\n.bg-info {\n  background-color: #2962FF !important; }\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #0041f5 !important; }\n\n.bg-warning {\n  background-color: #ffbc34 !important; }\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #ffab01 !important; }\n\n.bg-danger {\n  background-color: #f62d51 !important; }\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #e60a31 !important; }\n\n.bg-light {\n  background-color: #f8f9fa !important; }\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #dae0e5 !important; }\n\n.bg-dark {\n  background-color: #343a40 !important; }\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #1d2124 !important; }\n\n.bg-cyan {\n  background-color: #4fc3f7 !important; }\n\na.bg-cyan:hover, a.bg-cyan:focus,\nbutton.bg-cyan:hover,\nbutton.bg-cyan:focus {\n  background-color: #1eb2f5 !important; }\n\n.bg-orange {\n  background-color: #fb8c00 !important; }\n\na.bg-orange:hover, a.bg-orange:focus,\nbutton.bg-orange:hover,\nbutton.bg-orange:focus {\n  background-color: #c87000 !important; }\n\n.bg-purple {\n  background-color: #7460ee !important; }\n\na.bg-purple:hover, a.bg-purple:focus,\nbutton.bg-purple:hover,\nbutton.bg-purple:focus {\n  background-color: #4c32e9 !important; }\n\n.bg-white {\n  background-color: #fff !important; }\n\n.bg-transparent {\n  background-color: transparent !important; }\n\n.border {\n  border: 1px solid #e9ecef !important; }\n\n.border-top {\n  border-top: 1px solid #e9ecef !important; }\n\n.border-right {\n  border-right: 1px solid #e9ecef !important; }\n\n.border-bottom {\n  border-bottom: 1px solid #e9ecef !important; }\n\n.border-left {\n  border-left: 1px solid #e9ecef !important; }\n\n.border-0 {\n  border: 0 !important; }\n\n.border-top-0 {\n  border-top: 0 !important; }\n\n.border-right-0 {\n  border-right: 0 !important; }\n\n.border-bottom-0 {\n  border-bottom: 0 !important; }\n\n.border-left-0 {\n  border-left: 0 !important; }\n\n.border-primary {\n  border-color: #7460ee !important; }\n\n.border-secondary {\n  border-color: #6c757d !important; }\n\n.border-success {\n  border-color: #36bea6 !important; }\n\n.border-info {\n  border-color: #2962FF !important; }\n\n.border-warning {\n  border-color: #ffbc34 !important; }\n\n.border-danger {\n  border-color: #f62d51 !important; }\n\n.border-light {\n  border-color: #f8f9fa !important; }\n\n.border-dark {\n  border-color: #343a40 !important; }\n\n.border-cyan {\n  border-color: #4fc3f7 !important; }\n\n.border-orange {\n  border-color: #fb8c00 !important; }\n\n.border-purple {\n  border-color: #7460ee !important; }\n\n.border-white {\n  border-color: #fff !important; }\n\n.rounded {\n  border-radius: 2px !important; }\n\n.rounded-top {\n  border-top-left-radius: 2px !important;\n  border-top-right-radius: 2px !important; }\n\n.rounded-right {\n  border-top-right-radius: 2px !important;\n  border-bottom-right-radius: 2px !important; }\n\n.rounded-bottom {\n  border-bottom-right-radius: 2px !important;\n  border-bottom-left-radius: 2px !important; }\n\n.rounded-left {\n  border-top-left-radius: 2px !important;\n  border-bottom-left-radius: 2px !important; }\n\n.rounded-circle {\n  border-radius: 50% !important; }\n\n.rounded-0 {\n  border-radius: 0 !important; }\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\"; }\n\n.d-none {\n  display: none !important; }\n\n.d-inline {\n  display: inline !important; }\n\n.d-inline-block {\n  display: inline-block !important; }\n\n.d-block {\n  display: block !important; }\n\n.d-table {\n  display: table !important; }\n\n.d-table-row {\n  display: table-row !important; }\n\n.d-table-cell {\n  display: table-cell !important; }\n\n.d-flex {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important; }\n\n.d-inline-flex {\n  display: -webkit-inline-box !important;\n  display: -ms-inline-flexbox !important;\n  display: inline-flex !important; }\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important; }\n  .d-sm-inline {\n    display: inline !important; }\n  .d-sm-inline-block {\n    display: inline-block !important; }\n  .d-sm-block {\n    display: block !important; }\n  .d-sm-table {\n    display: table !important; }\n  .d-sm-table-row {\n    display: table-row !important; }\n  .d-sm-table-cell {\n    display: table-cell !important; }\n  .d-sm-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-sm-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important; }\n  .d-md-inline {\n    display: inline !important; }\n  .d-md-inline-block {\n    display: inline-block !important; }\n  .d-md-block {\n    display: block !important; }\n  .d-md-table {\n    display: table !important; }\n  .d-md-table-row {\n    display: table-row !important; }\n  .d-md-table-cell {\n    display: table-cell !important; }\n  .d-md-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-md-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important; }\n  .d-lg-inline {\n    display: inline !important; }\n  .d-lg-inline-block {\n    display: inline-block !important; }\n  .d-lg-block {\n    display: block !important; }\n  .d-lg-table {\n    display: table !important; }\n  .d-lg-table-row {\n    display: table-row !important; }\n  .d-lg-table-cell {\n    display: table-cell !important; }\n  .d-lg-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-lg-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media (min-width: 1600px) {\n  .d-xl-none {\n    display: none !important; }\n  .d-xl-inline {\n    display: inline !important; }\n  .d-xl-inline-block {\n    display: inline-block !important; }\n  .d-xl-block {\n    display: block !important; }\n  .d-xl-table {\n    display: table !important; }\n  .d-xl-table-row {\n    display: table-row !important; }\n  .d-xl-table-cell {\n    display: table-cell !important; }\n  .d-xl-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-xl-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n@media print {\n  .d-print-none {\n    display: none !important; }\n  .d-print-inline {\n    display: inline !important; }\n  .d-print-inline-block {\n    display: inline-block !important; }\n  .d-print-block {\n    display: block !important; }\n  .d-print-table {\n    display: table !important; }\n  .d-print-table-row {\n    display: table-row !important; }\n  .d-print-table-cell {\n    display: table-cell !important; }\n  .d-print-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important; }\n  .d-print-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important; } }\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden; }\n  .embed-responsive::before {\n    display: block;\n    content: \"\"; }\n  .embed-responsive .embed-responsive-item,\n  .embed-responsive iframe,\n  .embed-responsive embed,\n  .embed-responsive object,\n  .embed-responsive video {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border: 0; }\n\n.embed-responsive-21by9::before {\n  padding-top: 42.85714%; }\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%; }\n\n.embed-responsive-4by3::before {\n  padding-top: 75%; }\n\n.embed-responsive-1by1::before {\n  padding-top: 100%; }\n\n.flex-row {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: normal !important;\n  -ms-flex-direction: row !important;\n  flex-direction: row !important; }\n\n.flex-column {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: normal !important;\n  -ms-flex-direction: column !important;\n  flex-direction: column !important; }\n\n.flex-row-reverse {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: reverse !important;\n  -ms-flex-direction: row-reverse !important;\n  flex-direction: row-reverse !important; }\n\n.flex-column-reverse {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: reverse !important;\n  -ms-flex-direction: column-reverse !important;\n  flex-direction: column-reverse !important; }\n\n.flex-wrap {\n  -ms-flex-wrap: wrap !important;\n  flex-wrap: wrap !important; }\n\n.flex-nowrap {\n  -ms-flex-wrap: nowrap !important;\n  flex-wrap: nowrap !important; }\n\n.flex-wrap-reverse {\n  -ms-flex-wrap: wrap-reverse !important;\n  flex-wrap: wrap-reverse !important; }\n\n.flex-fill {\n  -webkit-box-flex: 1 !important;\n  -ms-flex: 1 1 auto !important;\n  flex: 1 1 auto !important; }\n\n.flex-grow-0 {\n  -webkit-box-flex: 0 !important;\n  -ms-flex-positive: 0 !important;\n  flex-grow: 0 !important; }\n\n.flex-grow-1 {\n  -webkit-box-flex: 1 !important;\n  -ms-flex-positive: 1 !important;\n  flex-grow: 1 !important; }\n\n.flex-shrink-0 {\n  -ms-flex-negative: 0 !important;\n  flex-shrink: 0 !important; }\n\n.flex-shrink-1 {\n  -ms-flex-negative: 1 !important;\n  flex-shrink: 1 !important; }\n\n.justify-content-start {\n  -webkit-box-pack: start !important;\n  -ms-flex-pack: start !important;\n  justify-content: flex-start !important; }\n\n.justify-content-end {\n  -webkit-box-pack: end !important;\n  -ms-flex-pack: end !important;\n  justify-content: flex-end !important; }\n\n.justify-content-center {\n  -webkit-box-pack: center !important;\n  -ms-flex-pack: center !important;\n  justify-content: center !important; }\n\n.justify-content-between {\n  -webkit-box-pack: justify !important;\n  -ms-flex-pack: justify !important;\n  justify-content: space-between !important; }\n\n.justify-content-around {\n  -ms-flex-pack: distribute !important;\n  justify-content: space-around !important; }\n\n.align-items-start {\n  -webkit-box-align: start !important;\n  -ms-flex-align: start !important;\n  align-items: flex-start !important; }\n\n.align-items-end {\n  -webkit-box-align: end !important;\n  -ms-flex-align: end !important;\n  align-items: flex-end !important; }\n\n.align-items-center {\n  -webkit-box-align: center !important;\n  -ms-flex-align: center !important;\n  align-items: center !important; }\n\n.align-items-baseline {\n  -webkit-box-align: baseline !important;\n  -ms-flex-align: baseline !important;\n  align-items: baseline !important; }\n\n.align-items-stretch {\n  -webkit-box-align: stretch !important;\n  -ms-flex-align: stretch !important;\n  align-items: stretch !important; }\n\n.align-content-start {\n  -ms-flex-line-pack: start !important;\n  align-content: flex-start !important; }\n\n.align-content-end {\n  -ms-flex-line-pack: end !important;\n  align-content: flex-end !important; }\n\n.align-content-center {\n  -ms-flex-line-pack: center !important;\n  align-content: center !important; }\n\n.align-content-between {\n  -ms-flex-line-pack: justify !important;\n  align-content: space-between !important; }\n\n.align-content-around {\n  -ms-flex-line-pack: distribute !important;\n  align-content: space-around !important; }\n\n.align-content-stretch {\n  -ms-flex-line-pack: stretch !important;\n  align-content: stretch !important; }\n\n.align-self-auto {\n  -ms-flex-item-align: auto !important;\n  align-self: auto !important; }\n\n.align-self-start {\n  -ms-flex-item-align: start !important;\n  align-self: flex-start !important; }\n\n.align-self-end {\n  -ms-flex-item-align: end !important;\n  align-self: flex-end !important; }\n\n.align-self-center {\n  -ms-flex-item-align: center !important;\n  align-self: center !important; }\n\n.align-self-baseline {\n  -ms-flex-item-align: baseline !important;\n  align-self: baseline !important; }\n\n.align-self-stretch {\n  -ms-flex-item-align: stretch !important;\n  align-self: stretch !important; }\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-sm-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-sm-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-sm-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-sm-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-sm-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-sm-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-sm-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-sm-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-sm-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-sm-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-sm-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-sm-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-sm-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-sm-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-sm-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-sm-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-sm-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-sm-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-sm-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-sm-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-sm-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-sm-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-sm-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-sm-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-sm-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-sm-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-sm-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-sm-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important; }\n  .align-self-sm-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-sm-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-sm-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important; }\n  .align-self-sm-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-sm-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important; } }\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-md-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-md-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-md-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-md-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-md-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-md-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-md-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-md-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-md-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-md-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-md-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-md-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-md-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-md-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-md-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-md-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-md-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-md-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-md-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-md-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-md-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-md-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-md-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-md-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-md-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-md-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-md-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-md-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important; }\n  .align-self-md-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-md-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-md-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important; }\n  .align-self-md-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-md-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important; } }\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-lg-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-lg-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-lg-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-lg-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-lg-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-lg-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-lg-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-lg-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-lg-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-lg-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-lg-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-lg-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-lg-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-lg-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-lg-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-lg-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-lg-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-lg-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-lg-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-lg-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-lg-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-lg-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-lg-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-lg-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-lg-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-lg-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-lg-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-lg-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important; }\n  .align-self-lg-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-lg-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-lg-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important; }\n  .align-self-lg-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-lg-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important; } }\n\n@media (min-width: 1600px) {\n  .flex-xl-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: row !important;\n    flex-direction: row !important; }\n  .flex-xl-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n    -ms-flex-direction: column !important;\n    flex-direction: column !important; }\n  .flex-xl-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important; }\n  .flex-xl-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important; }\n  .flex-xl-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important; }\n  .flex-xl-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important; }\n  .flex-xl-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important; }\n  .flex-xl-fill {\n    -webkit-box-flex: 1 !important;\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important; }\n  .flex-xl-grow-0 {\n    -webkit-box-flex: 0 !important;\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important; }\n  .flex-xl-grow-1 {\n    -webkit-box-flex: 1 !important;\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important; }\n  .flex-xl-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important; }\n  .flex-xl-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important; }\n  .justify-content-xl-start {\n    -webkit-box-pack: start !important;\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important; }\n  .justify-content-xl-end {\n    -webkit-box-pack: end !important;\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important; }\n  .justify-content-xl-center {\n    -webkit-box-pack: center !important;\n    -ms-flex-pack: center !important;\n    justify-content: center !important; }\n  .justify-content-xl-between {\n    -webkit-box-pack: justify !important;\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important; }\n  .justify-content-xl-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important; }\n  .align-items-xl-start {\n    -webkit-box-align: start !important;\n    -ms-flex-align: start !important;\n    align-items: flex-start !important; }\n  .align-items-xl-end {\n    -webkit-box-align: end !important;\n    -ms-flex-align: end !important;\n    align-items: flex-end !important; }\n  .align-items-xl-center {\n    -webkit-box-align: center !important;\n    -ms-flex-align: center !important;\n    align-items: center !important; }\n  .align-items-xl-baseline {\n    -webkit-box-align: baseline !important;\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important; }\n  .align-items-xl-stretch {\n    -webkit-box-align: stretch !important;\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important; }\n  .align-content-xl-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important; }\n  .align-content-xl-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important; }\n  .align-content-xl-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important; }\n  .align-content-xl-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important; }\n  .align-content-xl-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important; }\n  .align-content-xl-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important; }\n  .align-self-xl-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important; }\n  .align-self-xl-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important; }\n  .align-self-xl-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important; }\n  .align-self-xl-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important; }\n  .align-self-xl-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important; }\n  .align-self-xl-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important; } }\n\n.float-left {\n  float: left !important; }\n\n.float-right {\n  float: right !important; }\n\n.float-none {\n  float: none !important; }\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important; }\n  .float-sm-right {\n    float: right !important; }\n  .float-sm-none {\n    float: none !important; } }\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important; }\n  .float-md-right {\n    float: right !important; }\n  .float-md-none {\n    float: none !important; } }\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important; }\n  .float-lg-right {\n    float: right !important; }\n  .float-lg-none {\n    float: none !important; } }\n\n@media (min-width: 1600px) {\n  .float-xl-left {\n    float: left !important; }\n  .float-xl-right {\n    float: right !important; }\n  .float-xl-none {\n    float: none !important; } }\n\n.position-static {\n  position: static !important; }\n\n.position-relative {\n  position: relative !important; }\n\n.position-absolute {\n  position: absolute !important; }\n\n.position-fixed {\n  position: fixed !important; }\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important; }\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030; }\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030; }\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n  .sticky-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020; } }\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal; }\n\n.shadow-sm {\n  -webkit-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; }\n\n.shadow {\n  -webkit-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; }\n\n.shadow-lg {\n  -webkit-box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; }\n\n.shadow-none {\n  -webkit-box-shadow: none !important;\n  box-shadow: none !important; }\n\n.w-25 {\n  width: 25% !important; }\n\n.w-50 {\n  width: 50% !important; }\n\n.w-75 {\n  width: 75% !important; }\n\n.w-100 {\n  width: 100% !important; }\n\n.w-auto {\n  width: auto !important; }\n\n.h-25 {\n  height: 25% !important; }\n\n.h-50 {\n  height: 50% !important; }\n\n.h-75 {\n  height: 75% !important; }\n\n.h-100 {\n  height: 100% !important; }\n\n.h-auto {\n  height: auto !important; }\n\n.mw-100 {\n  max-width: 100% !important; }\n\n.mh-100 {\n  max-height: 100% !important; }\n\n.m-0 {\n  margin: 0 !important; }\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important; }\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important; }\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important; }\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important; }\n\n.m-1 {\n  margin: 0.25rem !important; }\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important; }\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important; }\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important; }\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important; }\n\n.m-2 {\n  margin: 0.5rem !important; }\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important; }\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important; }\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important; }\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important; }\n\n.m-3 {\n  margin: 1rem !important; }\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important; }\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important; }\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important; }\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important; }\n\n.m-4 {\n  margin: 1.5rem !important; }\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important; }\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important; }\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important; }\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important; }\n\n.m-5 {\n  margin: 3rem !important; }\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important; }\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important; }\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important; }\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important; }\n\n.p-0 {\n  padding: 0 !important; }\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important; }\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important; }\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important; }\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important; }\n\n.p-1 {\n  padding: 0.25rem !important; }\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important; }\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important; }\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important; }\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important; }\n\n.p-2 {\n  padding: 0.5rem !important; }\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important; }\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important; }\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important; }\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important; }\n\n.p-3 {\n  padding: 1rem !important; }\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important; }\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important; }\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important; }\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important; }\n\n.p-4 {\n  padding: 1.5rem !important; }\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important; }\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important; }\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important; }\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important; }\n\n.p-5 {\n  padding: 3rem !important; }\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important; }\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important; }\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important; }\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important; }\n\n.m-auto {\n  margin: auto !important; }\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important; }\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important; }\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important; }\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important; }\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important; }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important; }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important; }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important; }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important; }\n  .m-sm-1 {\n    margin: 0.25rem !important; }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important; }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important; }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important; }\n  .m-sm-2 {\n    margin: 0.5rem !important; }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important; }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important; }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important; }\n  .m-sm-3 {\n    margin: 1rem !important; }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important; }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important; }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important; }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important; }\n  .m-sm-4 {\n    margin: 1.5rem !important; }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important; }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important; }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important; }\n  .m-sm-5 {\n    margin: 3rem !important; }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important; }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important; }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important; }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important; }\n  .p-sm-0 {\n    padding: 0 !important; }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important; }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important; }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important; }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important; }\n  .p-sm-1 {\n    padding: 0.25rem !important; }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important; }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important; }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important; }\n  .p-sm-2 {\n    padding: 0.5rem !important; }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important; }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important; }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important; }\n  .p-sm-3 {\n    padding: 1rem !important; }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important; }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important; }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important; }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important; }\n  .p-sm-4 {\n    padding: 1.5rem !important; }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important; }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important; }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important; }\n  .p-sm-5 {\n    padding: 3rem !important; }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important; }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important; }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important; }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important; }\n  .m-sm-auto {\n    margin: auto !important; }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important; }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important; }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important; }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important; }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important; }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important; }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important; }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important; }\n  .m-md-1 {\n    margin: 0.25rem !important; }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important; }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important; }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important; }\n  .m-md-2 {\n    margin: 0.5rem !important; }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important; }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important; }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important; }\n  .m-md-3 {\n    margin: 1rem !important; }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important; }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important; }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important; }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important; }\n  .m-md-4 {\n    margin: 1.5rem !important; }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important; }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important; }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important; }\n  .m-md-5 {\n    margin: 3rem !important; }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important; }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important; }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important; }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important; }\n  .p-md-0 {\n    padding: 0 !important; }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important; }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important; }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important; }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important; }\n  .p-md-1 {\n    padding: 0.25rem !important; }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important; }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important; }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important; }\n  .p-md-2 {\n    padding: 0.5rem !important; }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important; }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important; }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important; }\n  .p-md-3 {\n    padding: 1rem !important; }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important; }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important; }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important; }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important; }\n  .p-md-4 {\n    padding: 1.5rem !important; }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important; }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important; }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important; }\n  .p-md-5 {\n    padding: 3rem !important; }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important; }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important; }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important; }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important; }\n  .m-md-auto {\n    margin: auto !important; }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important; }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important; }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important; }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important; }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important; }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important; }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important; }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important; }\n  .m-lg-1 {\n    margin: 0.25rem !important; }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important; }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important; }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important; }\n  .m-lg-2 {\n    margin: 0.5rem !important; }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important; }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important; }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important; }\n  .m-lg-3 {\n    margin: 1rem !important; }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important; }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important; }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important; }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important; }\n  .m-lg-4 {\n    margin: 1.5rem !important; }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important; }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important; }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important; }\n  .m-lg-5 {\n    margin: 3rem !important; }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important; }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important; }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important; }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important; }\n  .p-lg-0 {\n    padding: 0 !important; }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important; }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important; }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important; }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important; }\n  .p-lg-1 {\n    padding: 0.25rem !important; }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important; }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important; }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important; }\n  .p-lg-2 {\n    padding: 0.5rem !important; }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important; }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important; }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important; }\n  .p-lg-3 {\n    padding: 1rem !important; }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important; }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important; }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important; }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important; }\n  .p-lg-4 {\n    padding: 1.5rem !important; }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important; }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important; }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important; }\n  .p-lg-5 {\n    padding: 3rem !important; }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important; }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important; }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important; }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important; }\n  .m-lg-auto {\n    margin: auto !important; }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important; }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important; }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important; }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important; } }\n\n@media (min-width: 1600px) {\n  .m-xl-0 {\n    margin: 0 !important; }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important; }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important; }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important; }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important; }\n  .m-xl-1 {\n    margin: 0.25rem !important; }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important; }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important; }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important; }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important; }\n  .m-xl-2 {\n    margin: 0.5rem !important; }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important; }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important; }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important; }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important; }\n  .m-xl-3 {\n    margin: 1rem !important; }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important; }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important; }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important; }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important; }\n  .m-xl-4 {\n    margin: 1.5rem !important; }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important; }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important; }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important; }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important; }\n  .m-xl-5 {\n    margin: 3rem !important; }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important; }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important; }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important; }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important; }\n  .p-xl-0 {\n    padding: 0 !important; }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important; }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important; }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important; }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important; }\n  .p-xl-1 {\n    padding: 0.25rem !important; }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important; }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important; }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important; }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important; }\n  .p-xl-2 {\n    padding: 0.5rem !important; }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important; }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important; }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important; }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important; }\n  .p-xl-3 {\n    padding: 1rem !important; }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important; }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important; }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important; }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important; }\n  .p-xl-4 {\n    padding: 1.5rem !important; }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important; }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important; }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important; }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important; }\n  .p-xl-5 {\n    padding: 3rem !important; }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important; }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important; }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important; }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important; }\n  .m-xl-auto {\n    margin: auto !important; }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important; }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important; }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important; }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important; } }\n\n.text-monospace {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; }\n\n.text-justify {\n  text-align: justify !important; }\n\n.text-nowrap {\n  white-space: nowrap !important; }\n\n.text-truncate {\n  overflow: hidden;\n  -o-text-overflow: ellipsis;\n  text-overflow: ellipsis;\n  white-space: nowrap; }\n\n.text-left {\n  text-align: left !important; }\n\n.text-right {\n  text-align: right !important; }\n\n.text-center {\n  text-align: center !important; }\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important; }\n  .text-sm-right {\n    text-align: right !important; }\n  .text-sm-center {\n    text-align: center !important; } }\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important; }\n  .text-md-right {\n    text-align: right !important; }\n  .text-md-center {\n    text-align: center !important; } }\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important; }\n  .text-lg-right {\n    text-align: right !important; }\n  .text-lg-center {\n    text-align: center !important; } }\n\n@media (min-width: 1600px) {\n  .text-xl-left {\n    text-align: left !important; }\n  .text-xl-right {\n    text-align: right !important; }\n  .text-xl-center {\n    text-align: center !important; } }\n\n.text-lowercase {\n  text-transform: lowercase !important; }\n\n.text-uppercase {\n  text-transform: uppercase !important; }\n\n.text-capitalize {\n  text-transform: capitalize !important; }\n\n.font-weight-light {\n  font-weight: 300 !important; }\n\n.font-weight-normal {\n  font-weight: 400 !important; }\n\n.font-weight-bold {\n  font-weight: 800 !important; }\n\n.font-italic {\n  font-style: italic !important; }\n\n.text-white {\n  color: #fff !important; }\n\n.text-primary {\n  color: #7460ee !important; }\n\na.text-primary:hover, a.text-primary:focus {\n  color: #4c32e9 !important; }\n\n.text-secondary {\n  color: #6c757d !important; }\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #545b62 !important; }\n\n.text-success {\n  color: #36bea6 !important; }\n\na.text-success:hover, a.text-success:focus {\n  color: #2b9683 !important; }\n\n.text-info {\n  color: #2962FF !important; }\n\na.text-info:hover, a.text-info:focus {\n  color: #0041f5 !important; }\n\n.text-warning {\n  color: #ffbc34 !important; }\n\na.text-warning:hover, a.text-warning:focus {\n  color: #ffab01 !important; }\n\n.text-danger {\n  color: #f62d51 !important; }\n\na.text-danger:hover, a.text-danger:focus {\n  color: #e60a31 !important; }\n\n.text-light {\n  color: #f8f9fa !important; }\n\na.text-light:hover, a.text-light:focus {\n  color: #dae0e5 !important; }\n\n.text-dark {\n  color: #343a40 !important; }\n\na.text-dark:hover, a.text-dark:focus {\n  color: #1d2124 !important; }\n\n.text-cyan {\n  color: #4fc3f7 !important; }\n\na.text-cyan:hover, a.text-cyan:focus {\n  color: #1eb2f5 !important; }\n\n.text-orange {\n  color: #fb8c00 !important; }\n\na.text-orange:hover, a.text-orange:focus {\n  color: #c87000 !important; }\n\n.text-purple {\n  color: #7460ee !important; }\n\na.text-purple:hover, a.text-purple:focus {\n  color: #4c32e9 !important; }\n\n.text-body {\n  color: #3e5569 !important; }\n\n.text-muted {\n  color: #a1aab2 !important; }\n\n.text-black-50 {\n  color: rgba(0, 0, 0, 0.5) !important; }\n\n.text-white-50 {\n  color: rgba(255, 255, 255, 0.5) !important; }\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0; }\n\n.visible {\n  visibility: visible !important; }\n\n.invisible {\n  visibility: hidden !important; }\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    -webkit-box-shadow: none !important;\n    box-shadow: none !important; }\n  a:not(.btn) {\n    text-decoration: underline; }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\"; }\n  pre {\n    white-space: pre-wrap !important; }\n  pre,\n  blockquote {\n    border: 1px solid #a1aab2;\n    page-break-inside: avoid; }\n  thead {\n    display: table-header-group; }\n  tr,\n  img {\n    page-break-inside: avoid; }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3; }\n  h2,\n  h3 {\n    page-break-after: avoid; }\n  @page {\n    size: a3; }\n  body {\n    min-width: 992px !important; }\n  .container {\n    min-width: 992px !important; }\n  .navbar {\n    display: none; }\n  .badge {\n    border: 1px solid #000; }\n  .table {\n    border-collapse: collapse !important; }\n    .table td,\n    .table th {\n      background-color: #fff !important; }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #dee2e6 !important; } }\n\n/*******************\nPadding margin property \n*******************/\nhtml[dir=\"ltr\"] body .m-t-5 {\n  margin-top: 5px; }\n\nhtml[dir=\"ltr\"] body .m-b-5 {\n  margin-bottom: 5px; }\n\nhtml[dir=\"ltr\"] body .m-r-5 {\n  margin-right: 5px; }\n\nhtml[dir=\"ltr\"] body .m-l-5 {\n  margin-left: 5px; }\n\nhtml[dir=\"ltr\"] body .p-t-5 {\n  padding-top: 5px; }\n\nhtml[dir=\"ltr\"] body .p-b-5 {\n  padding-bottom: 5px; }\n\nhtml[dir=\"ltr\"] body .p-r-5 {\n  padding-right: 5px; }\n\nhtml[dir=\"ltr\"] body .p-l-5 {\n  padding-left: 5px; }\n\nhtml[dir=\"ltr\"] body .p-5 {\n  padding: 5px; }\n\nhtml[dir=\"ltr\"] body .m-5 {\n  margin: 5px; }\n\nhtml[dir=\"ltr\"] body .m-t-10 {\n  margin-top: 10px; }\n\nhtml[dir=\"ltr\"] body .m-b-10 {\n  margin-bottom: 10px; }\n\nhtml[dir=\"ltr\"] body .m-r-10 {\n  margin-right: 10px; }\n\nhtml[dir=\"ltr\"] body .m-l-10 {\n  margin-left: 10px; }\n\nhtml[dir=\"ltr\"] body .p-t-10 {\n  padding-top: 10px; }\n\nhtml[dir=\"ltr\"] body .p-b-10 {\n  padding-bottom: 10px; }\n\nhtml[dir=\"ltr\"] body .p-r-10 {\n  padding-right: 10px; }\n\nhtml[dir=\"ltr\"] body .p-l-10 {\n  padding-left: 10px; }\n\nhtml[dir=\"ltr\"] body .p-10 {\n  padding: 10px; }\n\nhtml[dir=\"ltr\"] body .m-10 {\n  margin: 10px; }\n\nhtml[dir=\"ltr\"] body .m-t-15 {\n  margin-top: 15px; }\n\nhtml[dir=\"ltr\"] body .m-b-15 {\n  margin-bottom: 15px; }\n\nhtml[dir=\"ltr\"] body .m-r-15 {\n  margin-right: 15px; }\n\nhtml[dir=\"ltr\"] body .m-l-15 {\n  margin-left: 15px; }\n\nhtml[dir=\"ltr\"] body .p-t-15 {\n  padding-top: 15px; }\n\nhtml[dir=\"ltr\"] body .p-b-15 {\n  padding-bottom: 15px; }\n\nhtml[dir=\"ltr\"] body .p-r-15 {\n  padding-right: 15px; }\n\nhtml[dir=\"ltr\"] body .p-l-15 {\n  padding-left: 15px; }\n\nhtml[dir=\"ltr\"] body .p-15 {\n  padding: 15px; }\n\nhtml[dir=\"ltr\"] body .m-15 {\n  margin: 15px; }\n\nhtml[dir=\"ltr\"] body .m-t-20 {\n  margin-top: 20px; }\n\nhtml[dir=\"ltr\"] body .m-b-20 {\n  margin-bottom: 20px; }\n\nhtml[dir=\"ltr\"] body .m-r-20 {\n  margin-right: 20px; }\n\nhtml[dir=\"ltr\"] body .m-l-20 {\n  margin-left: 20px; }\n\nhtml[dir=\"ltr\"] body .p-t-20 {\n  padding-top: 20px; }\n\nhtml[dir=\"ltr\"] body .p-b-20 {\n  padding-bottom: 20px; }\n\nhtml[dir=\"ltr\"] body .p-r-20 {\n  padding-right: 20px; }\n\nhtml[dir=\"ltr\"] body .p-l-20 {\n  padding-left: 20px; }\n\nhtml[dir=\"ltr\"] body .p-20 {\n  padding: 20px; }\n\nhtml[dir=\"ltr\"] body .m-20 {\n  margin: 20px; }\n\nhtml[dir=\"ltr\"] body .m-t-25 {\n  margin-top: 25px; }\n\nhtml[dir=\"ltr\"] body .m-b-25 {\n  margin-bottom: 25px; }\n\nhtml[dir=\"ltr\"] body .m-r-25 {\n  margin-right: 25px; }\n\nhtml[dir=\"ltr\"] body .m-l-25 {\n  margin-left: 25px; }\n\nhtml[dir=\"ltr\"] body .p-t-25 {\n  padding-top: 25px; }\n\nhtml[dir=\"ltr\"] body .p-b-25 {\n  padding-bottom: 25px; }\n\nhtml[dir=\"ltr\"] body .p-r-25 {\n  padding-right: 25px; }\n\nhtml[dir=\"ltr\"] body .p-l-25 {\n  padding-left: 25px; }\n\nhtml[dir=\"ltr\"] body .p-25 {\n  padding: 25px; }\n\nhtml[dir=\"ltr\"] body .m-25 {\n  margin: 25px; }\n\nhtml[dir=\"ltr\"] body .m-t-30 {\n  margin-top: 30px; }\n\nhtml[dir=\"ltr\"] body .m-b-30 {\n  margin-bottom: 30px; }\n\nhtml[dir=\"ltr\"] body .m-r-30 {\n  margin-right: 30px; }\n\nhtml[dir=\"ltr\"] body .m-l-30 {\n  margin-left: 30px; }\n\nhtml[dir=\"ltr\"] body .p-t-30 {\n  padding-top: 30px; }\n\nhtml[dir=\"ltr\"] body .p-b-30 {\n  padding-bottom: 30px; }\n\nhtml[dir=\"ltr\"] body .p-r-30 {\n  padding-right: 30px; }\n\nhtml[dir=\"ltr\"] body .p-l-30 {\n  padding-left: 30px; }\n\nhtml[dir=\"ltr\"] body .p-30 {\n  padding: 30px; }\n\nhtml[dir=\"ltr\"] body .m-30 {\n  margin: 30px; }\n\nhtml[dir=\"ltr\"] body .m-t-40 {\n  margin-top: 40px; }\n\nhtml[dir=\"ltr\"] body .m-b-40 {\n  margin-bottom: 40px; }\n\nhtml[dir=\"ltr\"] body .m-r-40 {\n  margin-right: 40px; }\n\nhtml[dir=\"ltr\"] body .m-l-40 {\n  margin-left: 40px; }\n\nhtml[dir=\"ltr\"] body .p-t-40 {\n  padding-top: 40px; }\n\nhtml[dir=\"ltr\"] body .p-b-40 {\n  padding-bottom: 40px; }\n\nhtml[dir=\"ltr\"] body .p-r-40 {\n  padding-right: 40px; }\n\nhtml[dir=\"ltr\"] body .p-l-40 {\n  padding-left: 40px; }\n\nhtml[dir=\"ltr\"] body .p-40 {\n  padding: 40px; }\n\nhtml[dir=\"ltr\"] body .m-40 {\n  margin: 40px; }\n\n/** * Zero */\nhtml[dir=\"ltr\"] body .m-0-0 {\n  margin: 0; }\n\nhtml[dir=\"ltr\"] body .m-t-0 {\n  margin-top: 0; }\n\nhtml[dir=\"ltr\"] body .m-r-0 {\n  margin-right: 0; }\n\nhtml[dir=\"ltr\"] body .m-b-0 {\n  margin-bottom: 0; }\n\nhtml[dir=\"ltr\"] body .m-l-0 {\n  margin-left: 0; }\n\nhtml[dir=\"ltr\"] body .p-0-0 {\n  padding: 0; }\n\nhtml[dir=\"ltr\"] body .p-t-0 {\n  padding-top: 0; }\n\nhtml[dir=\"ltr\"] body .p-r-0 {\n  padding-right: 0; }\n\nhtml[dir=\"ltr\"] body .p-b-0 {\n  padding-bottom: 0; }\n\nhtml[dir=\"ltr\"] body .p-l-0 {\n  padding-left: 0; }\n\n#main-wrapper[data-layout=\"vertical\"], #main-wrapper[data-layout=\"horizontal\"] {\n  /*This is for the logo bg*/\n  /*This is for the sidebar bg*/ }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin1\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin1\"] {\n    background: #2962FF; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin2\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin2\"] {\n    background: #fe5419; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin3\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin3\"] {\n    background: #00b0ff; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin4\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin4\"] {\n    background: #6659f7; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin5\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin5\"] {\n    background: #414755; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] {\n    background: #fff; }\n    #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .navbar-brand .dark-logo, #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .navbar-brand .dark-logo {\n      display: inline; }\n    #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .navbar-brand .light-logo, #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .navbar-brand .light-logo {\n      display: none; }\n    #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .nav-toggler, #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .topbartoggler, #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .nav-toggler, #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header[data-logobg=\"skin6\"] .topbartoggler {\n      color: #3e5569; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .navbar-collapse[data-navbarbg=\"skin1\"], #main-wrapper[data-layout=\"vertical\"] .topbar[data-navbarbg=\"skin1\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .navbar-collapse[data-navbarbg=\"skin1\"], #main-wrapper[data-layout=\"horizontal\"] .topbar[data-navbarbg=\"skin1\"] {\n    background: #2962FF; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .navbar-collapse[data-navbarbg=\"skin2\"], #main-wrapper[data-layout=\"vertical\"] .topbar[data-navbarbg=\"skin2\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .navbar-collapse[data-navbarbg=\"skin2\"], #main-wrapper[data-layout=\"horizontal\"] .topbar[data-navbarbg=\"skin2\"] {\n    background: #fe5419; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .navbar-collapse[data-navbarbg=\"skin3\"], #main-wrapper[data-layout=\"vertical\"] .topbar[data-navbarbg=\"skin3\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .navbar-collapse[data-navbarbg=\"skin3\"], #main-wrapper[data-layout=\"horizontal\"] .topbar[data-navbarbg=\"skin3\"] {\n    background: #00b0ff; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .navbar-collapse[data-navbarbg=\"skin4\"], #main-wrapper[data-layout=\"vertical\"] .topbar[data-navbarbg=\"skin4\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .navbar-collapse[data-navbarbg=\"skin4\"], #main-wrapper[data-layout=\"horizontal\"] .topbar[data-navbarbg=\"skin4\"] {\n    background: #6659f7; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .navbar-collapse[data-navbarbg=\"skin5\"], #main-wrapper[data-layout=\"vertical\"] .topbar[data-navbarbg=\"skin5\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .navbar-collapse[data-navbarbg=\"skin5\"], #main-wrapper[data-layout=\"horizontal\"] .topbar[data-navbarbg=\"skin5\"] {\n    background: #414755; }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .navbar-collapse[data-navbarbg=\"skin6\"], #main-wrapper[data-layout=\"vertical\"] .topbar[data-navbarbg=\"skin6\"], #main-wrapper[data-layout=\"horizontal\"] .topbar .navbar-collapse[data-navbarbg=\"skin6\"], #main-wrapper[data-layout=\"horizontal\"] .topbar[data-navbarbg=\"skin6\"] {\n    background: #fff; }\n  #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin1\"], #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin1\"] ul, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin1\"], #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin1\"] ul {\n    background: #2962FF; }\n    #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin1\"] .create-btn, #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin1\"] ul .create-btn, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin1\"] .create-btn, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin1\"] ul .create-btn {\n      background: #4fc3f7; }\n  #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin2\"], #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin2\"] ul, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin2\"], #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin2\"] ul {\n    background: #fe5419; }\n    #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin2\"]::after, #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin2\"] ul::after, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin2\"]::after, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin2\"] ul::after {\n      background: url(../../assets/images/background/sidebarbg.png) no-repeat;\n      position: absolute;\n      top: 0px;\n      content: \"\";\n      width: 100%;\n      height: 100%;\n      opacity: 0.1;\n      z-index: -1; }\n  #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin3\"], #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin3\"] ul, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin3\"], #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin3\"] ul {\n    background: #00b0ff; }\n  #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin4\"], #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin4\"] ul, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin4\"], #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin4\"] ul {\n    background: #6659f7; }\n  #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin5\"], #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin5\"] ul, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin5\"], #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin5\"] ul {\n    background: #414755; }\n    #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin5\"] .create-btn, #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin5\"] ul .create-btn, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin5\"] .create-btn, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin5\"] ul .create-btn {\n      background: #4fc3f7; }\n  #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"], #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] {\n    background: #fff; }\n    #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul {\n      background: #fff; }\n      #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul .sidebar-item .sidebar-link, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul .sidebar-item .sidebar-link {\n        color: #212529; }\n        #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul .sidebar-item .sidebar-link i, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul .sidebar-item .sidebar-link i {\n          color: #4F5467; }\n      #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul .nav-small-cap, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav ul .nav-small-cap {\n        color: #212529;\n        opacity: 0.7; }\n    #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .has-arrow::after, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .has-arrow::after {\n      border-color: #212529; }\n    #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .user-content, #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .user-name, #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .user-email, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .user-content, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .user-name, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .sidebar-nav .user-email {\n      color: #212529; }\n    #main-wrapper[data-layout=\"vertical\"] .left-sidebar[data-sidebarbg=\"skin6\"] .create-btn, #main-wrapper[data-layout=\"horizontal\"] .left-sidebar[data-sidebarbg=\"skin6\"] .create-btn {\n      background: #4fc3f7; }\n\n/*============================================================== \n For all pages \n ============================================================== */\n#main-wrapper {\n  width: 100%;\n  overflow: hidden; }\n\n.page-wrapper {\n  background: #eef5f9;\n  position: relative; }\n\n.page-wrapper > .container-fluid {\n  padding: 20px;\n  min-height: calc(100vh - 180px); }\n\n/*******************\n Footer\n*******************/\n.footer {\n  padding: 15px 20px; }\n\n/*******************\n Stickey inner-left-part\n*******************/\n.left-part {\n  height: 100%;\n  width: 260px;\n  position: absolute;\n  border-right: 1px solid #e9ecef; }\n  .left-part.fixed-left-part {\n    position: fixed;\n    top: 0px;\n    padding-top: 10px; }\n  .left-part .show-left-part {\n    position: absolute;\n    top: 45%;\n    right: -41px; }\n\n.right-part {\n  width: calc(100% - 260px);\n  min-height: calc(100vh - 64px);\n  overflow: auto;\n  margin-left: 260px; }\n\n.reverse-mode .left-part {\n  right: 0;\n  border-left: 1px solid #e9ecef; }\n\n.reverse-mode .show-left-part {\n  right: auto;\n  left: -41px; }\n\n.reverse-mode .right-part {\n  margin-left: 0px;\n  margin-right: 260px; }\n\n/*******************\n Vertical layout\n*******************/\n#main-wrapper[data-layout=\"vertical\"] {\n  /*Vertical*/\n  /*sidebar type*/\n  /*Sidebar position*/\n  /*Header position*/\n  /*Boxed Layout*/ }\n  #main-wrapper[data-layout=\"vertical\"] .topbar .top-navbar .navbar-header {\n    -webkit-transition: 0.2s ease-in;\n    -o-transition: 0.2s ease-in;\n    transition: 0.2s ease-in; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"full\"] .page-wrapper {\n    margin-left: 250px; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"iconbar\"] .page-wrapper {\n    margin-left: 180px; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"iconbar\"] .left-sidebar,\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"iconbar\"] .topbar .top-navbar .navbar-header,\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"iconbar\"] .sidebar-nav ul .sidebar-item {\n    width: 180px; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"iconbar\"] .sidebar-nav ul .sidebar-item .sidebar-link {\n    display: block;\n    text-align: center; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"iconbar\"] .sidebar-nav ul .sidebar-item .sidebar-link i {\n      display: block;\n      width: auto; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"overlay\"] .topbar .top-navbar .navbar-header {\n    width: 250px; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"overlay\"] .left-sidebar {\n    left: -250px; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"overlay\"].show-sidebar .left-sidebar {\n    left: 0; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"] .topbar .top-navbar .navbar-header {\n    position: fixed;\n    z-index: 10; }\n  #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"] .left-sidebar {\n    position: fixed; }\n  #main-wrapper[data-layout=\"vertical\"][data-header-position=\"fixed\"] .topbar {\n    position: fixed;\n    width: 100%; }\n  #main-wrapper[data-layout=\"vertical\"][data-header-position=\"fixed\"] .page-wrapper {\n    padding-top: 64px; }\n  #main-wrapper[data-layout=\"vertical\"][data-boxed-layout=\"boxed\"] {\n    max-width: 1200px;\n    margin: 0 auto;\n    position: relative;\n    -webkit-box-shadow: 1px 0 80px rgba(0, 0, 0, 0.2);\n    box-shadow: 1px 0 80px rgba(0, 0, 0, 0.2); }\n  #main-wrapper[data-layout=\"vertical\"][data-boxed-layout=\"boxed\"][data-header-position=\"fixed\"] .topbar {\n    max-width: 1200px; }\n\n/*******************\n Vertical responsive layout\n*******************/\n@media (min-width: 768px) {\n  #main-wrapper[data-layout=\"vertical\"] {\n    /*Vertical*/\n    /*Sidebar position*/\n    /*Vertical with mini-sidebar*/\n    /*Fixed sidebar with minisidebar*/ }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"full\"] .topbar .top-navbar .navbar-header {\n      width: 250px; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"][data-sidebartype=\"full\"] .topbar .top-navbar .navbar-collapse, #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"][data-sidebartype=\"overlay\"] .topbar .top-navbar .navbar-collapse {\n      margin-left: 250px; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-collapse {\n      margin-left: 65px; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"][data-sidebartype=\"iconbar\"] .topbar .top-navbar .navbar-collapse {\n      margin-left: 180px; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-header {\n      width: 65px; }\n      #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-header .logo-text {\n        display: none; }\n      #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-header.expand-logo {\n        width: 250px; }\n        #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-header.expand-logo .logo-text {\n          display: block; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-collapse {\n      margin-left: 65px; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .page-wrapper {\n      margin-left: 65px; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .sidebar-nav .hide-menu,\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .sidebar-nav .has-arrow:after {\n      display: none; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .sidebar-nav .nav-small-cap {\n      -webkit-box-pack: center;\n      -ms-flex-pack: center;\n      justify-content: center; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .left-sidebar {\n      width: 65px; }\n      #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .left-sidebar:hover {\n        width: 250px; }\n        #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .left-sidebar:hover .sidebar-nav .hide-menu,\n        #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .left-sidebar:hover .sidebar-nav .has-arrow:after {\n          display: block; }\n        #main-wrapper[data-layout=\"vertical\"][data-sidebartype=\"mini-sidebar\"] .left-sidebar:hover .sidebar-nav .nav-small-cap {\n          -webkit-box-pack: start;\n          -ms-flex-pack: start;\n          justify-content: flex-start; } }\n\n@media (max-width: 766px) {\n  #main-wrapper {\n    /*Header position*/ }\n    #main-wrapper[data-sidebartype=\"mini-sidebar\"] .left-sidebar {\n      left: -250px; }\n    #main-wrapper.show-sidebar .left-sidebar {\n      left: 0; }\n    #main-wrapper[data-layout=\"vertical\"][data-sidebar-position=\"fixed\"] .topbar .top-navbar .navbar-collapse {\n      position: relative;\n      top: 64px; }\n    #main-wrapper[data-layout=\"vertical\"][data-header-position=\"fixed\"][data-sidebar-position=\"fixed\"] .topbar .top-navbar .navbar-collapse {\n      position: relative;\n      top: 64px; }\n  .left-part {\n    left: -260px;\n    background: #eef5f9;\n    z-index: 1;\n    position: fixed;\n    -webkit-transition: 0.1s ease-in;\n    -o-transition: 0.1s ease-in;\n    transition: 0.1s ease-in; }\n    .left-part.show-panel {\n      left: 0px; }\n  .reverse-mode .left-part {\n    right: -260px;\n    left: auto; }\n    .reverse-mode .left-part.show-panel {\n      right: 0px; }\n  .right-part {\n    width: 100%;\n    margin-left: 0px; } }\n\n* {\n  outline: none; }\n\nbody {\n  margin: 0;\n  overflow-x: hidden;\n  color: #3e5569;\n  background: #fff; }\n\nhtml {\n  position: relative;\n  min-height: 100%; }\n\na {\n  color: #2962FF; }\n\na:hover,\na:focus {\n  text-decoration: none; }\n\na.link {\n  color: #3e5569; }\n  a.link:hover, a.link:focus {\n    color: #2962FF; }\n\n.box {\n  border-radius: 2px;\n  padding: 10px; }\n\n.no-wrap td,\n.no-wrap th {\n  white-space: nowrap; }\n\n/*******************\nBlockquote\n*******************/\nhtml body blockquote {\n  border-left: 5px solid #7460ee;\n  border: 1px solid #e9ecef;\n  padding: 15px; }\n\n.clear {\n  clear: both; }\n\nol li {\n  margin: 5px 0; }\n\n/*******************\nThumb size\n*******************/\n.thumb-sm {\n  height: 32px;\n  width: 32px; }\n\n.thumb-md {\n  height: 48px;\n  width: 48px; }\n\n.thumb-lg {\n  height: 88px;\n  width: 88px; }\n\n.hide {\n  display: none; }\n\n.radius {\n  border-radius: 2px; }\n\n/*******************\nOpacity\n*******************/\n.op-5 {\n  opacity: 0.5; }\n\n.op-3 {\n  opacity: 0.3; }\n\n/*******************\nfont weight\n*******************/\nhtml body .font-bold {\n  font-weight: 800; }\n\nhtml body .font-normal {\n  font-weight: 400; }\n\nhtml body .font-light {\n  font-weight: 300; }\n\nhtml body .font-medium {\n  font-weight: 600; }\n\nhtml body .font-16 {\n  font-size: 16px; }\n\nhtml body .font-12 {\n  font-size: 12px; }\n\nhtml body .font-14 {\n  font-size: 14px; }\n\nhtml body .font-10 {\n  font-size: 10px; }\n\nhtml body .font-18 {\n  font-size: 18px; }\n\nhtml body .font-20 {\n  font-size: 20px; }\n\nhtml body .font-22 {\n  font-size: 22px; }\n\nhtml body .font-24 {\n  font-size: 24px; }\n\nhtml body .display-5 {\n  font-size: 3rem; }\n\nhtml body .display-6 {\n  font-size: 2.5rem; }\n\nhtml body .display-7 {\n  font-size: 2rem; }\n\n/*******************\nBackground colors\n*******************/\nhtml body .bg-megna {\n  background-color: #4fc3f7; }\n\nhtml body .bg-theme {\n  background-color: #2962FF; }\n\nhtml body .bg-inverse {\n  background-color: #212529; }\n\nhtml body .bg-purple {\n  background-color: #7460ee; }\n\nhtml body .bg-light {\n  background-color: #e9ecef; }\n\nhtml body .bg-white {\n  background-color: #fff; }\n\n/*******************\nRounds\n*******************/\n.round {\n  line-height: 48px;\n  color: #fff;\n  width: 50px;\n  height: 50px;\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  border-radius: 100%;\n  background: #2962FF;\n  line-height: 52px; }\n  .round img {\n    border-radius: 100%; }\n  .round.round-info {\n    background: #2962FF; }\n  .round.round-warning {\n    background: #ffbc34; }\n  .round.round-danger {\n    background: #f62d51; }\n  .round.round-success {\n    background: #36bea6; }\n  .round.round-primary {\n    background: #7460ee; }\n\n.round-lg {\n  line-height: 65px;\n  width: 60px;\n  height: 60px;\n  font-size: 30px; }\n\n/*******************\nLabels\n*******************/\n.label-rounded {\n  border-radius: 60px; }\n\n/*******************\n Badge\n******************/\n.badge {\n  font-weight: 300;\n  line-height: normal; }\n  .badge.badge-pill {\n    padding: 0.20em 0.6em; }\n\n.badge-xs {\n  font-size: 9px; }\n\n.badge-xs,\n.badge-sm {\n  -webkit-transform: translate(0, -2px);\n  -ms-transform: translate(0, -2px);\n  -o-transform: translate(0, -2px);\n  transform: translate(0, -2px); }\n\n/*******************\nList-style-none\n******************/\nul.list-style-none {\n  margin: 0px;\n  padding: 0px; }\n  ul.list-style-none li {\n    list-style: none; }\n    ul.list-style-none li a {\n      color: #3e5569;\n      padding: 8px 0px;\n      display: block;\n      text-decoration: none; }\n      ul.list-style-none li a:hover {\n        color: #2962FF; }\n\n/*******************\nCard\n******************/\n.card {\n  margin-bottom: 20px; }\n  .card .card-subtitle {\n    font-weight: 300;\n    margin-bottom: 10px;\n    color: #a1aab2; }\n  .card .card-title {\n    position: relative;\n    font-weight: 600;\n    margin-bottom: 10px; }\n  .card .card-actions {\n    float: right; }\n    .card .card-actions a {\n      padding: 0 5px;\n      cursor: pointer; }\n  .card .card-header .card-title {\n    margin-bottom: 0px; }\n\n.card-alt {\n  margin: 0 -20px;\n  background: #e4e9ef; }\n\n.card-group {\n  margin-bottom: 20px; }\n  .card-group .card {\n    border-right: 1px solid #e9ecef; }\n\n.card-fullscreen {\n  position: fixed;\n  top: 0px;\n  left: 0px;\n  width: 100%;\n  height: 100%;\n  z-index: 9999;\n  overflow: auto; }\n\n.oh {\n  overflow: hidden; }\n\n.card-hover {\n  -webkit-transition: all .25s ease;\n  -o-transition: all .25s ease;\n  -moz-transition: all .25s ease;\n  transition: all .25s ease; }\n  .card-hover:hover {\n    webkit-transform: translateY(-4px) scale(1.01);\n    -moz-transform: translateY(-4px) scale(1.01);\n    -ms-transform: translateY(-4px) scale(1.01);\n    -o-transform: translateY(-4px) scale(1.01);\n    -webkit-transform: translateY(-4px) scale(1.01);\n    transform: translateY(-4px) scale(1.01);\n    -webkit-box-shadow: 0 14px 24px rgba(62, 57, 107, 0.1);\n    box-shadow: 0 14px 24px rgba(62, 57, 107, 0.1); }\n\n.draggable-cards .card-header {\n  cursor: move; }\n\n.card-moved .card {\n  background: #2962FF;\n  color: #fff; }\n\n/*******************\nLabels\n*******************/\n.label {\n  padding: 3px 10px;\n  line-height: 13px;\n  color: #fff;\n  font-weight: 400;\n  border-radius: 2px;\n  font-size: 75%; }\n\n.label-rounded {\n  border-radius: 60px; }\n\n.label-custom {\n  background-color: #4fc3f7; }\n\n.label-success {\n  background-color: #36bea6; }\n\n.label-info {\n  background-color: #2962FF; }\n\n.label-warning {\n  background-color: #ffbc34; }\n\n.label-danger {\n  background-color: #f62d51; }\n\n.label-megna {\n  background-color: #4fc3f7; }\n\n.label-primary {\n  background-color: #7460ee; }\n\n.label-purple {\n  background-color: #7460ee; }\n\n.label-red {\n  background-color: #f62d51; }\n\n.label-inverse {\n  background-color: #343a40; }\n\n.label-default {\n  background-color: #f8f9fa; }\n\n/*******************\nPreloader\n********************/\n.preloader {\n  width: 100%;\n  height: 100%;\n  top: 0px;\n  position: fixed;\n  z-index: 99999;\n  background: #fff; }\n\n.lds-ripple {\n  display: inline-block;\n  position: relative;\n  width: 64px;\n  height: 64px;\n  position: absolute;\n  top: calc(50% - 3.5px);\n  left: calc(50% - 3.5px); }\n  .lds-ripple .lds-pos {\n    position: absolute;\n    border: 2px solid #2962FF;\n    opacity: 1;\n    border-radius: 50%;\n    -webkit-animation: lds-ripple 1s cubic-bezier(0, 0.1, 0.5, 1) infinite;\n    animation: lds-ripple 1s cubic-bezier(0, 0.1, 0.5, 1) infinite; }\n  .lds-ripple .lds-pos:nth-child(2) {\n    -webkit-animation-delay: -0.5s;\n    animation-delay: -0.5s; }\n\n@-webkit-keyframes lds-ripple {\n  0% {\n    top: 28px;\n    left: 28px;\n    width: 0;\n    height: 0;\n    opacity: 0; }\n  5% {\n    top: 28px;\n    left: 28px;\n    width: 0;\n    height: 0;\n    opacity: 1; }\n  100% {\n    top: -1px;\n    left: -1px;\n    width: 58px;\n    height: 58px;\n    opacity: 0; } }\n\n@keyframes lds-ripple {\n  0% {\n    top: 28px;\n    left: 28px;\n    width: 0;\n    height: 0;\n    opacity: 0; }\n  5% {\n    top: 28px;\n    left: 28px;\n    width: 0;\n    height: 0;\n    opacity: 1; }\n  100% {\n    top: -1px;\n    left: -1px;\n    width: 58px;\n    height: 58px;\n    opacity: 0; } }\n\n/*******************\nNotify\n*******************/\n.notify {\n  position: relative;\n  top: -18px;\n  right: -11px; }\n  .notify .heartbit {\n    position: absolute;\n    top: -20px;\n    right: -4px;\n    height: 25px;\n    width: 25px;\n    z-index: 10;\n    border: 5px solid #f62d51;\n    border-radius: 70px;\n    -moz-animation: heartbit 1s ease-out;\n    -moz-animation-iteration-count: infinite;\n    -o-animation: heartbit 1s ease-out;\n    -o-animation-iteration-count: infinite;\n    -webkit-animation: heartbit 1s ease-out;\n    -webkit-animation-iteration-count: infinite;\n    animation-iteration-count: infinite; }\n  .notify .point {\n    width: 6px;\n    height: 6px;\n    -webkit-border-radius: 30px;\n    -moz-border-radius: 30px;\n    border-radius: 30px;\n    background-color: #f62d51;\n    position: absolute;\n    right: 6px;\n    top: -10px; }\n\n@-moz-keyframes heartbit {\n  0% {\n    -moz-transform: scale(0);\n    opacity: 0.0; }\n  25% {\n    -moz-transform: scale(0.1);\n    opacity: 0.1; }\n  50% {\n    -moz-transform: scale(0.5);\n    opacity: 0.3; }\n  75% {\n    -moz-transform: scale(0.8);\n    opacity: 0.5; }\n  100% {\n    -moz-transform: scale(1);\n    opacity: 0.0; } }\n\n@-webkit-keyframes heartbit {\n  0% {\n    -webkit-transform: scale(0);\n    opacity: 0.0; }\n  25% {\n    -webkit-transform: scale(0.1);\n    opacity: 0.1; }\n  50% {\n    -webkit-transform: scale(0.5);\n    opacity: 0.3; }\n  75% {\n    -webkit-transform: scale(0.8);\n    opacity: 0.5; }\n  100% {\n    -webkit-transform: scale(1);\n    opacity: 0.0; } }\n\n/*******************\n General Topbar\n*******************/\n.topbar {\n  position: relative;\n  z-index: 50;\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n  -webkit-box-shadow: 1px 0px 7px rgba(0, 0, 0, 0.05);\n  box-shadow: 1px 0px 7px rgba(0, 0, 0, 0.05);\n  background: #fff;\n  height: 64px; }\n  .topbar .navbar-collapse {\n    padding: 0px 10px 0 0; }\n  .topbar .top-navbar {\n    min-height: 64px;\n    padding: 0px; }\n    .topbar .top-navbar .dropdown-toggle::after {\n      display: none; }\n    .topbar .top-navbar .navbar-header {\n      line-height: 64px; }\n      .topbar .top-navbar .navbar-header .navbar-brand {\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex;\n        -webkit-box-align: center;\n        -ms-flex-align: center;\n        align-items: center;\n        margin: 0px;\n        padding: 0 10px 0 10px; }\n        .topbar .top-navbar .navbar-header .navbar-brand .dark-logo {\n          display: none; }\n        .topbar .top-navbar .navbar-header .navbar-brand .logo-icon {\n          margin-right: 5px; }\n    .topbar .top-navbar .navbar-nav > .nav-item > .nav-link {\n      padding: 0px 15px;\n      font-size: 0.875rem;\n      line-height: 64px;\n      height: 64px; }\n    .topbar .top-navbar .navbar-nav > .nav-item {\n      -webkit-transition: 0.2s ease-in;\n      -o-transition: 0.2s ease-in;\n      transition: 0.2s ease-in; }\n      .topbar .top-navbar .navbar-nav > .nav-item:hover {\n        background: rgba(0, 0, 0, 0.05); }\n  .topbar .user-dd, .topbar .mailbox {\n    min-width: 280px; }\n  .topbar .nav-toggler, .topbar .topbartoggler {\n    color: #fff;\n    padding: 0 15px; }\n\n.search-box .app-search {\n  z-index: 110;\n  width: 100%;\n  top: -1px;\n  -webkit-box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n  box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n  display: none;\n  left: 0px; }\n  .search-box .app-search .form-control {\n    padding: 23px 40px 20px 23px;\n    -webkit-transition: 0.2s ease-in;\n    -o-transition: 0.2s ease-in;\n    transition: 0.2s ease-in; }\n    .search-box .app-search .form-control:focus {\n      border-color: transparent; }\n  .search-box .app-search .srh-btn {\n    position: absolute;\n    top: 23px;\n    cursor: pointer;\n    right: 20px; }\n\n/*******************\nMegamenu\n******************/\n.topbar .mega-dropdown {\n  position: static; }\n  .topbar .mega-dropdown .dropdown-menu {\n    padding: 30px;\n    width: 100%;\n    max-height: 480px;\n    overflow: auto; }\n\n/*******************\nDesigned dropdown\n******************/\n.topbar .dropdown-menu {\n  padding-top: 0px;\n  border: 0px;\n  -webkit-box-shadow: 1px 1px 15px rgba(0, 0, 0, 0.1);\n  box-shadow: 1px 1px 15px rgba(0, 0, 0, 0.1); }\n  .topbar .dropdown-menu .with-arrow {\n    position: absolute;\n    height: 10px;\n    overflow: hidden;\n    width: 40px;\n    top: -10px; }\n    .topbar .dropdown-menu .with-arrow > span {\n      background-color: #fff;\n      width: 15px;\n      height: 15px;\n      top: 3px;\n      left: 15px;\n      position: absolute;\n      content: \"\";\n      -moz-border-radius: 6px 0 0 0;\n      border-radius: 6px 0 0 0;\n      /*box-shadow:-3px -3px 8px rgba(0, 0, 0, 0.1);    */ }\n  .topbar .dropdown-menu.dropdown-menu-right .with-arrow {\n    right: 0px; }\n    .topbar .dropdown-menu.dropdown-menu-right .with-arrow > span {\n      right: 20px;\n      left: auto; }\n\n/*******************\nTopbar Responsive\n******************/\n@media (max-width: 767px) {\n  .topbar .top-navbar .navbar-collapse.show, .topbar .top-navbar .navbar-collapse.collapsing {\n    display: block;\n    width: 100%;\n    border-top: 1px solid #e9ecef; }\n  .topbar .top-navbar .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -ms-flex-direction: row;\n    flex-direction: row; }\n    .topbar .top-navbar .navbar-nav .dropdown {\n      position: static; }\n  .topbar .top-navbar .navbar-nav > .nav-item > .nav-link {\n    padding: 0 10px; }\n  .topbar .top-navbar .navbar-header {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n    -ms-flex-align: center;\n    align-items: center;\n    width: 100%;\n    -webkit-box-pack: justify;\n    -ms-flex-pack: justify;\n    justify-content: space-between; }\n  .topbar .top-navbar .dropdown-menu {\n    position: absolute;\n    width: 100%; }\n    .topbar .top-navbar .dropdown-menu .with-arrow {\n      display: none; } }\n\n/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n/*******************\nTable Cell\n*******************/\n.table-box {\n  display: table;\n  width: 100%; }\n\n.cell {\n  display: table-cell;\n  vertical-align: middle; }\n\n.table thead th,\n.table th {\n  font-weight: 500; }\n\n.nowrap {\n  white-space: nowrap; }\n\n.lite-padding td {\n  padding: 5px; }\n\n.v-middle td,\n.v-middle th {\n  vertical-align: middle; }\n\n/*******************\nTable td vertical middle\n*******************/\n.vm.table td,\n.vm.table th {\n  vertical-align: middle; }\n\n.no-th-brd.table th {\n  border: 0px; }\n\n.table.no-border tbody td {\n  border: 0px; }\n\n/*******************\nTable-Jsgrid table\n******************/\n.jsgrid-pager-page a,\n.jsgrid-pager-current-page,\n.jsgrid-pager-nav-button a {\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  display: inline-block;\n  min-width: 1.5em;\n  padding: 0.5em 1em;\n  text-align: center;\n  text-decoration: none;\n  cursor: pointer;\n  color: #67757c;\n  border: 1px solid #ddd; }\n\n.jsgrid-pager-page a:hover,\n.jsgrid-pager-nav-button a:hover {\n  background-color: #2962FF;\n  color: #fff; }\n\n.jsgrid-pager-current-page {\n  background-color: #2962FF;\n  color: #fff; }\n\n.jsgrid-pager-page,\n.jsgrid-pager-nav-button {\n  padding: 0; }\n\n.jsgrid-pager-page.jsgrid-pager-current-page {\n  padding: 0.5em 1em !important; }\n\n/*******************\n Breadcrumb and page title\n*******************/\n.page-breadcrumb {\n  padding: 20px 20px 0 20px; }\n  .page-breadcrumb .page-title {\n    margin-bottom: 0px; }\n  .page-breadcrumb .breadcrumb {\n    padding: 0px;\n    margin: 0px;\n    background: transparent;\n    font-size: 12px; }\n    .page-breadcrumb .breadcrumb .breadcrumb-item + .breadcrumb-item::before {\n      content: \"\\e649\";\n      font-family: themify;\n      color: #ced4da;\n      font-size: 11px; }\n\n/*******************\nMain sidebar\n******************/\n.left-sidebar {\n  position: absolute;\n  width: 250px;\n  height: 100%;\n  top: 0px;\n  z-index: 10;\n  padding-top: 64px;\n  background: #fff;\n  -webkit-box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n  box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08); }\n\n/*******************\nsidebar navigation\n******************/\n.scroll-sidebar {\n  height: calc(100% - 20px);\n  position: relative; }\n\n.sidebar-nav ul {\n  /*******************\n         Small cap\n         ******************/ }\n  .sidebar-nav ul .sidebar-item {\n    width: 250px;\n    /*******************\n           First level\n           ******************/ }\n    .sidebar-nav ul .sidebar-item .sidebar-link {\n      color: #fff;\n      padding: 14px 15px;\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      white-space: nowrap;\n      -webkit-box-align: center;\n      -ms-flex-align: center;\n      align-items: center;\n      line-height: 25px;\n      opacity: 0.6; }\n      .sidebar-nav ul .sidebar-item .sidebar-link i {\n        font-style: normal;\n        width: 35px;\n        line-height: 25px;\n        font-size: 23px;\n        color: #fff;\n        display: inline-block;\n        text-align: center; }\n      .sidebar-nav ul .sidebar-item .sidebar-link.active, .sidebar-nav ul .sidebar-item .sidebar-link:hover {\n        opacity: 1; }\n    .sidebar-nav ul .sidebar-item.selected > .sidebar-link {\n      /*background: rgba(0, 0, 0, 0.04);*/\n      opacity: 1; }\n    .sidebar-nav ul .sidebar-item .first-level {\n      padding: 0 0 10px 0; }\n      .sidebar-nav ul .sidebar-item .first-level .sidebar-item.active .sidebar-link {\n        opacity: 1; }\n      .sidebar-nav ul .sidebar-item .first-level .sidebar-item .sidebar-link {\n        padding: 10px 15px; }\n        .sidebar-nav ul .sidebar-item .first-level .sidebar-item .sidebar-link i {\n          font-size: 14px; }\n  .sidebar-nav ul .nav-small-cap {\n    font-size: 12px;\n    padding: 14px 15px;\n    white-space: nowrap;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n    -ms-flex-align: center;\n    align-items: center;\n    line-height: 30px;\n    margin-top: 10px;\n    color: #fff;\n    opacity: 0.3;\n    text-transform: uppercase; }\n    .sidebar-nav ul .nav-small-cap i {\n      line-height: 30px;\n      margin: 0 5px; }\n\n.sidebar-nav > #sidebarnav > .sidebar-item > .sidebar-link:hover {\n  /*background: rgba(0, 0, 0, 0.04);*/ }\n\n/*******************\n common m-p removed\n******************/\n.sidebar-nav ul {\n  margin: 0px;\n  padding: 0px; }\n  .sidebar-nav ul li {\n    list-style: none; }\n\n.collapse.in {\n  display: block; }\n\n/*******************\nDown arrow\n******************/\n.sidebar-nav .has-arrow {\n  position: relative; }\n  .sidebar-nav .has-arrow::after {\n    position: absolute;\n    content: '';\n    width: 7px;\n    height: 7px;\n    border-width: 1px 0 0 1px;\n    border-style: solid;\n    border-color: #fff;\n    margin-left: 10px;\n    -webkit-transform: rotate(135deg) translate(0, -50%);\n    -ms-transform: rotate(135deg) translate(0, -50%);\n    -o-transform: rotate(135deg) translate(0, -50%);\n    transform: rotate(135deg) translate(0, -50%);\n    -webkit-transform-origin: top;\n    -ms-transform-origin: top;\n    -o-transform-origin: top;\n    transform-origin: top;\n    top: 26px;\n    right: 15px;\n    -webkit-transition: all .3s ease-out;\n    -o-transition: all .3s ease-out;\n    transition: all .3s ease-out; }\n\n/*.sidebar-nav .active > .has-arrow::after,*/\n/*.sidebar-nav li.selected > .has-arrow::after,*/\n.sidebar-nav li.active > .has-arrow::after,\n.sidebar-nav li > .has-arrow.active::after,\n.sidebar-nav .has-arrow[aria-expanded=\"true\"]::after {\n  -webkit-transform: rotate(-135deg) translate(0, -50%);\n  -ms-transform: rotate(-135deg) translate(0, -50%);\n  -o-transform: rotate(-135deg) translate(0, -50%);\n  transform: rotate(-135deg) translate(0, -50%); }\n\n/*******************\nUser Profile\n******************/\n.user-profile {\n  padding: 15px; }\n  .user-profile .user-content, .user-profile .user-name, .user-profile .user-email {\n    color: #fff;\n    overflow: hidden;\n    white-space: nowrap;\n    -o-text-overflow: ellipsis;\n    text-overflow: ellipsis; }\n\n.create-btn {\n  height: 40px;\n  background: #343a40; }\n\n/*******************\nWave Effects\n*******************/\n.waves-effect {\n  position: relative;\n  cursor: pointer;\n  display: inline-block;\n  overflow: hidden;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  -webkit-tap-highlight-color: transparent;\n  vertical-align: middle;\n  z-index: 1;\n  will-change: opacity, transform;\n  -webkit-transition: all 0.1s ease-out;\n  -moz-transition: all 0.1s ease-out;\n  -o-transition: all 0.1s ease-out;\n  -ms-transition: all 0.1s ease-out;\n  transition: all 0.1s ease-out; }\n  .waves-effect .waves-ripple {\n    position: absolute;\n    border-radius: 50%;\n    width: 20px;\n    height: 20px;\n    margin-top: -10px;\n    margin-left: -10px;\n    opacity: 0;\n    background: rgba(0, 0, 0, 0.2);\n    -webkit-transition: all 0.7s ease-out;\n    -moz-transition: all 0.7s ease-out;\n    -o-transition: all 0.7s ease-out;\n    -ms-transition: all 0.7s ease-out;\n    transition: all 0.7s ease-out;\n    -webkit-transition-property: -webkit-transform, opacity;\n    -moz-transition-property: -moz-transform, opacity;\n    -o-transition-property: -o-transform, opacity;\n    -webkit-transition-property: opacity, -webkit-transform;\n    transition-property: opacity, -webkit-transform;\n    -o-transition-property: transform, opacity;\n    transition-property: transform, opacity;\n    transition-property: transform, opacity, -webkit-transform;\n    -webkit-transform: scale(0);\n    -moz-transform: scale(0);\n    -ms-transform: scale(0);\n    -o-transform: scale(0);\n    transform: scale(0);\n    pointer-events: none; }\n\n.waves-effect.waves-light .waves-ripple {\n  background-color: rgba(255, 255, 255, 0.45); }\n\n.waves-effect.waves-red .waves-ripple {\n  background-color: rgba(244, 67, 54, 0.7); }\n\n.waves-effect.waves-yellow .waves-ripple {\n  background-color: rgba(255, 235, 59, 0.7); }\n\n.waves-effect.waves-orange .waves-ripple {\n  background-color: rgba(255, 152, 0, 0.7); }\n\n.waves-effect.waves-purple .waves-ripple {\n  background-color: rgba(156, 39, 176, 0.7); }\n\n.waves-effect.waves-green .waves-ripple {\n  background-color: rgba(76, 175, 80, 0.7); }\n\n.waves-effect.waves-teal .waves-ripple {\n  background-color: rgba(0, 150, 136, 0.7); }\n\nhtml body .waves-notransition {\n  -webkit-transition: none;\n  -moz-transition: none;\n  -o-transition: none;\n  -ms-transition: none;\n  transition: none; }\n\n.waves-circle {\n  -webkit-transform: translateZ(0);\n  -moz-transform: translateZ(0);\n  -ms-transform: translateZ(0);\n  -o-transform: translateZ(0);\n  transform: translateZ(0);\n  text-align: center;\n  width: 2.5em;\n  height: 2.5em;\n  line-height: 2.5em;\n  border-radius: 50%;\n  -webkit-mask-image: none; }\n\n.waves-input-wrapper {\n  border-radius: 0.2em;\n  vertical-align: bottom; }\n  .waves-input-wrapper .waves-button-input {\n    position: relative;\n    top: 0;\n    left: 0;\n    z-index: 1; }\n\n.waves-block {\n  display: block; }\n\n.btn-circle {\n  border-radius: 100%;\n  width: 40px;\n  height: 40px;\n  padding: 10px; }\n  .btn-circle.btn-sm, .btn-group-sm > .btn-circle.btn {\n    width: 35px;\n    height: 35px;\n    padding: 8px 10px;\n    font-size: 14px; }\n  .btn-circle.btn-lg, .btn-group-lg > .btn-circle.btn {\n    width: 50px;\n    height: 50px;\n    padding: 14px 15px;\n    font-size: 18px;\n    line-height: 23px; }\n  .btn-circle.btn-xl {\n    width: 70px;\n    height: 70px;\n    padding: 14px 15px;\n    font-size: 24px; }\n\n.btn-xs {\n  padding: .25rem .5rem;\n  font-size: 10px; }\n\n.btn-rounded {\n  border-radius: 60px;\n  padding: 7px 18px; }\n  .btn-rounded.btn-lg, .btn-group-lg > .btn-rounded.btn {\n    padding: .75rem 1.5rem; }\n  .btn-rounded.btn-sm, .btn-group-sm > .btn-rounded.btn {\n    padding: .25rem .5rem;\n    font-size: 12px; }\n  .btn-rounded.btn-xs {\n    padding: .25rem .5rem;\n    font-size: 10px; }\n  .btn-rounded.btn-md {\n    padding: 12px 35px;\n    font-size: 16px; }\n\n.btn-primary, .btn-default, .btn-warning, .btn-outline-primary:hover, .btn-outline-warning:hover {\n  color: #fff; }\n  .btn-primary:hover, .btn-default:hover, .btn-warning:hover, .btn-outline-primary:hover:hover, .btn-outline-warning:hover:hover {\n    color: #fff; }\n\n.btn-default {\n  background-color: #2962FF; }\n\n.btn-facebook {\n  color: #fff;\n  background-color: #3b5998; }\n  .btn-facebook:hover {\n    color: #fff; }\n\n.btn-twitter {\n  color: #fff;\n  background-color: #55acee; }\n  .btn-twitter:hover {\n    color: #fff; }\n\n.btn-linkedin {\n  color: #fff;\n  background-color: #007bb6; }\n  .btn-linkedin:hover {\n    color: #fff; }\n\n.btn-dribbble {\n  color: #fff;\n  background-color: #ea4c89; }\n  .btn-dribbble:hover {\n    color: #fff; }\n\n.btn-googleplus {\n  color: #fff;\n  background-color: #dd4b39; }\n  .btn-googleplus:hover {\n    color: #fff; }\n\n.btn-instagram {\n  color: #fff;\n  background-color: #3f729b; }\n\n.btn-pinterest {\n  color: #fff;\n  background-color: #cb2027; }\n\n.btn-dropbox {\n  color: #fff;\n  background-color: #007ee5; }\n\n.btn-flickr {\n  color: #fff;\n  background-color: #ff0084; }\n\n.btn-tumblr {\n  color: #fff;\n  background-color: #32506d; }\n\n.btn-skype {\n  color: #fff;\n  background-color: #00aff0; }\n\n.btn-youtube {\n  color: #fff;\n  background-color: #bb0000; }\n\n.btn-github {\n  color: #fff;\n  background-color: #171515; }\n\n.button-group .btn {\n  margin-bottom: 5px;\n  margin-right: 5px; }\n\n.no-button-group .btn {\n  margin-bottom: 5px;\n  margin-right: 0px; }\n\n.btn .text-active {\n  display: none; }\n\n.btn.active .text-active {\n  display: inline-block; }\n\n.btn.active .text {\n  display: none; }\n\n/*******************\ncustomizer\n*******************/\n.customizer {\n  background: #fff;\n  position: fixed;\n  height: 100%;\n  width: 280px;\n  top: 0px;\n  right: -280px;\n  z-index: 100;\n  -webkit-box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n  box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n  -webkit-transition: 0.3s ease-in;\n  -o-transition: 0.3s ease-in;\n  transition: 0.3s ease-in; }\n  .customizer .service-panel-toggle {\n    background: #f62d51;\n    padding: 12px 20px;\n    color: #fff;\n    position: absolute;\n    top: 30%;\n    left: -54px; }\n  .customizer.show-service-panel {\n    right: 0px; }\n  .customizer .customizer-body {\n    position: relative;\n    height: 100%; }\n  .customizer .customizer-tab {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex; }\n    .customizer .customizer-tab .nav-item {\n      width: 33.33%;\n      text-align: center; }\n      .customizer .customizer-tab .nav-item .nav-link {\n        padding: 15px 12px;\n        color: #3e5569;\n        border-bottom: 3px solid transparent; }\n        .customizer .customizer-tab .nav-item .nav-link:hover, .customizer .customizer-tab .nav-item .nav-link.active {\n          border-bottom: 3px solid #2962FF;\n          color: #2962FF; }\n\n.custom-control-label::after, .custom-control-label::before {\n  top: 0.15rem; }\n\n.theme-color {\n  padding: 0px;\n  margin: 0px;\n  list-style: none; }\n  .theme-color .theme-item {\n    list-style: none;\n    display: inline-block;\n    margin-right: 5px; }\n    .theme-color .theme-item .theme-link {\n      border-radius: 100%;\n      width: 20px;\n      height: 20px;\n      display: block; }\n      .theme-color .theme-item .theme-link[data-logobg=\"skin1\"], .theme-color .theme-item .theme-link[data-navbarbg=\"skin1\"], .theme-color .theme-item .theme-link[data-sidebarbg=\"skin1\"] {\n        background: #2962FF; }\n      .theme-color .theme-item .theme-link[data-logobg=\"skin2\"], .theme-color .theme-item .theme-link[data-navbarbg=\"skin2\"], .theme-color .theme-item .theme-link[data-sidebarbg=\"skin2\"] {\n        background: #fe5419; }\n      .theme-color .theme-item .theme-link[data-logobg=\"skin3\"], .theme-color .theme-item .theme-link[data-navbarbg=\"skin3\"], .theme-color .theme-item .theme-link[data-sidebarbg=\"skin3\"] {\n        background: #00b0ff; }\n      .theme-color .theme-item .theme-link[data-logobg=\"skin4\"], .theme-color .theme-item .theme-link[data-navbarbg=\"skin4\"], .theme-color .theme-item .theme-link[data-sidebarbg=\"skin4\"] {\n        background: #6659f7; }\n      .theme-color .theme-item .theme-link[data-logobg=\"skin5\"], .theme-color .theme-item .theme-link[data-navbarbg=\"skin5\"], .theme-color .theme-item .theme-link[data-sidebarbg=\"skin5\"] {\n        background: #414755; }\n      .theme-color .theme-item .theme-link[data-logobg=\"skin6\"], .theme-color .theme-item .theme-link[data-navbarbg=\"skin6\"], .theme-color .theme-item .theme-link[data-sidebarbg=\"skin6\"] {\n        background: #e9ecef; }\n\n/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.5.1\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2016 Daniel Eden\n */\n.animated {\n  -webkit-animation-duration: 1s;\n  animation-duration: 1s;\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both; }\n\n.animated.infinite {\n  -webkit-animation-iteration-count: infinite;\n  animation-iteration-count: infinite; }\n\n.animated.hinge {\n  -webkit-animation-duration: 2s;\n  animation-duration: 2s; }\n\n.animated.flipOutX, .animated.flipOutY, .animated.bounceIn, .animated.bounceOut {\n  -webkit-animation-duration: .75s;\n  animation-duration: .75s; }\n\n@-webkit-keyframes bounce {\n  from, 20%, 53%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  40%, 43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0); }\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0); }\n  90% {\n    -webkit-transform: translate3d(0, -4px, 0);\n    transform: translate3d(0, -4px, 0); } }\n\n@keyframes bounce {\n  from, 20%, 53%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  40%, 43% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -30px, 0);\n    transform: translate3d(0, -30px, 0); }\n  70% {\n    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    -webkit-transform: translate3d(0, -15px, 0);\n    transform: translate3d(0, -15px, 0); }\n  90% {\n    -webkit-transform: translate3d(0, -4px, 0);\n    transform: translate3d(0, -4px, 0); } }\n\n.bounce {\n  -webkit-animation-name: bounce;\n  animation-name: bounce;\n  -webkit-transform-origin: center bottom;\n  -ms-transform-origin: center bottom;\n  transform-origin: center bottom; }\n\n@-webkit-keyframes flash {\n  from, 50%, to {\n    opacity: 1; }\n  25%, 75% {\n    opacity: 0; } }\n\n@keyframes flash {\n  from, 50%, to {\n    opacity: 1; }\n  25%, 75% {\n    opacity: 0; } }\n\n.flash {\n  -webkit-animation-name: flash;\n  animation-name: flash; }\n\n@-webkit-keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); }\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05); }\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n@keyframes pulse {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); }\n  50% {\n    -webkit-transform: scale3d(1.05, 1.05, 1.05);\n    transform: scale3d(1.05, 1.05, 1.05); }\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n.pulse {\n  -webkit-animation-name: pulse;\n  animation-name: pulse; }\n\n@-webkit-keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); }\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1); }\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1); }\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1); }\n  65% {\n    -webkit-transform: scale3d(0.95, 1.05, 1);\n    transform: scale3d(0.95, 1.05, 1); }\n  75% {\n    -webkit-transform: scale3d(1.05, 0.95, 1);\n    transform: scale3d(1.05, 0.95, 1); }\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n@keyframes rubberBand {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); }\n  30% {\n    -webkit-transform: scale3d(1.25, 0.75, 1);\n    transform: scale3d(1.25, 0.75, 1); }\n  40% {\n    -webkit-transform: scale3d(0.75, 1.25, 1);\n    transform: scale3d(0.75, 1.25, 1); }\n  50% {\n    -webkit-transform: scale3d(1.15, 0.85, 1);\n    transform: scale3d(1.15, 0.85, 1); }\n  65% {\n    -webkit-transform: scale3d(0.95, 1.05, 1);\n    transform: scale3d(0.95, 1.05, 1); }\n  75% {\n    -webkit-transform: scale3d(1.05, 0.95, 1);\n    transform: scale3d(1.05, 0.95, 1); }\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n.rubberBand {\n  -webkit-animation-name: rubberBand;\n  animation-name: rubberBand; }\n\n@-webkit-keyframes shake {\n  from, to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  10%, 30%, 50%, 70%, 90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0); }\n  20%, 40%, 60%, 80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0); } }\n\n@keyframes shake {\n  from, to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  10%, 30%, 50%, 70%, 90% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0); }\n  20%, 40%, 60%, 80% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0); } }\n\n.shake {\n  -webkit-animation-name: shake;\n  animation-name: shake; }\n\n@-webkit-keyframes headShake {\n  0% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0); }\n  6.5% {\n    -webkit-transform: translateX(-6px) rotateY(-9deg);\n    transform: translateX(-6px) rotateY(-9deg); }\n  18.5% {\n    -webkit-transform: translateX(5px) rotateY(7deg);\n    transform: translateX(5px) rotateY(7deg); }\n  31.5% {\n    -webkit-transform: translateX(-3px) rotateY(-5deg);\n    transform: translateX(-3px) rotateY(-5deg); }\n  43.5% {\n    -webkit-transform: translateX(2px) rotateY(3deg);\n    transform: translateX(2px) rotateY(3deg); }\n  50% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0); } }\n\n@keyframes headShake {\n  0% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0); }\n  6.5% {\n    -webkit-transform: translateX(-6px) rotateY(-9deg);\n    transform: translateX(-6px) rotateY(-9deg); }\n  18.5% {\n    -webkit-transform: translateX(5px) rotateY(7deg);\n    transform: translateX(5px) rotateY(7deg); }\n  31.5% {\n    -webkit-transform: translateX(-3px) rotateY(-5deg);\n    transform: translateX(-3px) rotateY(-5deg); }\n  43.5% {\n    -webkit-transform: translateX(2px) rotateY(3deg);\n    transform: translateX(2px) rotateY(3deg); }\n  50% {\n    -webkit-transform: translateX(0);\n    transform: translateX(0); } }\n\n.headShake {\n  -webkit-animation-timing-function: ease-in-out;\n  animation-timing-function: ease-in-out;\n  -webkit-animation-name: headShake;\n  animation-name: headShake; }\n\n@-webkit-keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg); }\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg); }\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg); }\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg); }\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg); } }\n\n@keyframes swing {\n  20% {\n    -webkit-transform: rotate3d(0, 0, 1, 15deg);\n    transform: rotate3d(0, 0, 1, 15deg); }\n  40% {\n    -webkit-transform: rotate3d(0, 0, 1, -10deg);\n    transform: rotate3d(0, 0, 1, -10deg); }\n  60% {\n    -webkit-transform: rotate3d(0, 0, 1, 5deg);\n    transform: rotate3d(0, 0, 1, 5deg); }\n  80% {\n    -webkit-transform: rotate3d(0, 0, 1, -5deg);\n    transform: rotate3d(0, 0, 1, -5deg); }\n  to {\n    -webkit-transform: rotate3d(0, 0, 1, 0deg);\n    transform: rotate3d(0, 0, 1, 0deg); } }\n\n.swing {\n  -webkit-transform-origin: top center;\n  -ms-transform-origin: top center;\n  transform-origin: top center;\n  -webkit-animation-name: swing;\n  animation-name: swing; }\n\n@-webkit-keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); }\n  10%, 20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); }\n  30%, 50%, 70%, 90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); }\n  40%, 60%, 80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); }\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n@keyframes tada {\n  from {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); }\n  10%, 20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); }\n  30%, 50%, 70%, 90% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); }\n  40%, 60%, 80% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); }\n  to {\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n.tada {\n  -webkit-animation-name: tada;\n  animation-name: tada; }\n\n@-webkit-keyframes wobble {\n  from {\n    -webkit-transform: none;\n    transform: none; }\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); }\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); }\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); }\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); }\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes wobble {\n  from {\n    -webkit-transform: none;\n    transform: none; }\n  15% {\n    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); }\n  30% {\n    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); }\n  45% {\n    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); }\n  60% {\n    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); }\n  75% {\n    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n.wobble {\n  -webkit-animation-name: wobble;\n  animation-name: wobble; }\n\n@-webkit-keyframes jello {\n  from, 11.1%, to {\n    -webkit-transform: none;\n    transform: none; }\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg); }\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg); }\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg); }\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg); }\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg); }\n  77.7% {\n    -webkit-transform: skewX(0.39063deg) skewY(0.39063deg);\n    transform: skewX(0.39063deg) skewY(0.39063deg); }\n  88.8% {\n    -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg);\n    transform: skewX(-0.19531deg) skewY(-0.19531deg); } }\n\n@keyframes jello {\n  from, 11.1%, to {\n    -webkit-transform: none;\n    transform: none; }\n  22.2% {\n    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);\n    transform: skewX(-12.5deg) skewY(-12.5deg); }\n  33.3% {\n    -webkit-transform: skewX(6.25deg) skewY(6.25deg);\n    transform: skewX(6.25deg) skewY(6.25deg); }\n  44.4% {\n    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);\n    transform: skewX(-3.125deg) skewY(-3.125deg); }\n  55.5% {\n    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);\n    transform: skewX(1.5625deg) skewY(1.5625deg); }\n  66.6% {\n    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);\n    transform: skewX(-0.78125deg) skewY(-0.78125deg); }\n  77.7% {\n    -webkit-transform: skewX(0.39063deg) skewY(0.39063deg);\n    transform: skewX(0.39063deg) skewY(0.39063deg); }\n  88.8% {\n    -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg);\n    transform: skewX(-0.19531deg) skewY(-0.19531deg); } }\n\n.jello {\n  -webkit-animation-name: jello;\n  animation-name: jello;\n  -webkit-transform-origin: center;\n  -ms-transform-origin: center;\n  transform-origin: center; }\n\n@-webkit-keyframes bounceIn {\n  from, 20%, 40%, 60%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); }\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1); }\n  40% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03); }\n  80% {\n    -webkit-transform: scale3d(0.97, 0.97, 0.97);\n    transform: scale3d(0.97, 0.97, 0.97); }\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n@keyframes bounceIn {\n  from, 20%, 40%, 60%, 80%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  0% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); }\n  20% {\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1); }\n  40% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.03, 1.03, 1.03);\n    transform: scale3d(1.03, 1.03, 1.03); }\n  80% {\n    -webkit-transform: scale3d(0.97, 0.97, 0.97);\n    transform: scale3d(0.97, 0.97, 0.97); }\n  to {\n    opacity: 1;\n    -webkit-transform: scale3d(1, 1, 1);\n    transform: scale3d(1, 1, 1); } }\n\n.bounceIn {\n  -webkit-animation-name: bounceIn;\n  animation-name: bounceIn; }\n\n@-webkit-keyframes bounceInDown {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0); }\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0); }\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes bounceInDown {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -3000px, 0);\n    transform: translate3d(0, -3000px, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 25px, 0);\n    transform: translate3d(0, 25px, 0); }\n  75% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0); }\n  90% {\n    -webkit-transform: translate3d(0, 5px, 0);\n    transform: translate3d(0, 5px, 0); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n.bounceInDown {\n  -webkit-animation-name: bounceInDown;\n  animation-name: bounceInDown; }\n\n@-webkit-keyframes bounceInLeft {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0); }\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0); }\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes bounceInLeft {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  0% {\n    opacity: 0;\n    -webkit-transform: translate3d(-3000px, 0, 0);\n    transform: translate3d(-3000px, 0, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(25px, 0, 0);\n    transform: translate3d(25px, 0, 0); }\n  75% {\n    -webkit-transform: translate3d(-10px, 0, 0);\n    transform: translate3d(-10px, 0, 0); }\n  90% {\n    -webkit-transform: translate3d(5px, 0, 0);\n    transform: translate3d(5px, 0, 0); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n.bounceInLeft {\n  -webkit-animation-name: bounceInLeft;\n  animation-name: bounceInLeft; }\n\n@-webkit-keyframes bounceInRight {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0); }\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0); }\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes bounceInRight {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(3000px, 0, 0);\n    transform: translate3d(3000px, 0, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(-25px, 0, 0);\n    transform: translate3d(-25px, 0, 0); }\n  75% {\n    -webkit-transform: translate3d(10px, 0, 0);\n    transform: translate3d(10px, 0, 0); }\n  90% {\n    -webkit-transform: translate3d(-5px, 0, 0);\n    transform: translate3d(-5px, 0, 0); }\n  to {\n    -webkit-transform: none;\n    transform: none; } }\n\n.bounceInRight {\n  -webkit-animation-name: bounceInRight;\n  animation-name: bounceInRight; }\n\n@-webkit-keyframes bounceInUp {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0); }\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0); }\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0); }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n@keyframes bounceInUp {\n  from, 60%, 75%, 90%, to {\n    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 3000px, 0);\n    transform: translate3d(0, 3000px, 0); }\n  60% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0); }\n  75% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0); }\n  90% {\n    -webkit-transform: translate3d(0, -5px, 0);\n    transform: translate3d(0, -5px, 0); }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n.bounceInUp {\n  -webkit-animation-name: bounceInUp;\n  animation-name: bounceInUp; }\n\n@-webkit-keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9); }\n  50%, 55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); } }\n\n@keyframes bounceOut {\n  20% {\n    -webkit-transform: scale3d(0.9, 0.9, 0.9);\n    transform: scale3d(0.9, 0.9, 0.9); }\n  50%, 55% {\n    opacity: 1;\n    -webkit-transform: scale3d(1.1, 1.1, 1.1);\n    transform: scale3d(1.1, 1.1, 1.1); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); } }\n\n.bounceOut {\n  -webkit-animation-name: bounceOut;\n  animation-name: bounceOut; }\n\n@-webkit-keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0); }\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0); } }\n\n@keyframes bounceOutDown {\n  20% {\n    -webkit-transform: translate3d(0, 10px, 0);\n    transform: translate3d(0, 10px, 0); }\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, -20px, 0);\n    transform: translate3d(0, -20px, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0); } }\n\n.bounceOutDown {\n  -webkit-animation-name: bounceOutDown;\n  animation-name: bounceOutDown; }\n\n@-webkit-keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0); } }\n\n@keyframes bounceOutLeft {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(20px, 0, 0);\n    transform: translate3d(20px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0); } }\n\n.bounceOutLeft {\n  -webkit-animation-name: bounceOutLeft;\n  animation-name: bounceOutLeft; }\n\n@-webkit-keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0); } }\n\n@keyframes bounceOutRight {\n  20% {\n    opacity: 1;\n    -webkit-transform: translate3d(-20px, 0, 0);\n    transform: translate3d(-20px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0); } }\n\n.bounceOutRight {\n  -webkit-animation-name: bounceOutRight;\n  animation-name: bounceOutRight; }\n\n@-webkit-keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0); }\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0); } }\n\n@keyframes bounceOutUp {\n  20% {\n    -webkit-transform: translate3d(0, -10px, 0);\n    transform: translate3d(0, -10px, 0); }\n  40%, 45% {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 20px, 0);\n    transform: translate3d(0, 20px, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0); } }\n\n.bounceOutUp {\n  -webkit-animation-name: bounceOutUp;\n  animation-name: bounceOutUp; }\n\n@-webkit-keyframes fadeIn {\n  from {\n    opacity: 0; }\n  to {\n    opacity: 1; } }\n\n@keyframes fadeIn {\n  from {\n    opacity: 0; }\n  to {\n    opacity: 1; } }\n\n.fadeIn {\n  -webkit-animation-name: fadeIn;\n  animation-name: fadeIn; }\n\n@-webkit-keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInDown {\n  -webkit-animation-name: fadeInDown;\n  animation-name: fadeInDown; }\n\n@-webkit-keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInDownBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInDownBig {\n  -webkit-animation-name: fadeInDownBig;\n  animation-name: fadeInDownBig; }\n\n@-webkit-keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInLeft {\n  -webkit-animation-name: fadeInLeft;\n  animation-name: fadeInLeft; }\n\n@-webkit-keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInLeftBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInLeftBig {\n  -webkit-animation-name: fadeInLeftBig;\n  animation-name: fadeInLeftBig; }\n\n@-webkit-keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInRight {\n  -webkit-animation-name: fadeInRight;\n  animation-name: fadeInRight; }\n\n@-webkit-keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInRightBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInRightBig {\n  -webkit-animation-name: fadeInRightBig;\n  animation-name: fadeInRightBig; }\n\n@-webkit-keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInUp {\n  -webkit-animation-name: fadeInUp;\n  animation-name: fadeInUp; }\n\n@-webkit-keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes fadeInUpBig {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.fadeInUpBig {\n  -webkit-animation-name: fadeInUpBig;\n  animation-name: fadeInUpBig; }\n\n@-webkit-keyframes fadeOut {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0; } }\n\n@keyframes fadeOut {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0; } }\n\n.fadeOut {\n  -webkit-animation-name: fadeOut;\n  animation-name: fadeOut; }\n\n@-webkit-keyframes fadeOutDown {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0); } }\n\n@keyframes fadeOutDown {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0); } }\n\n.fadeOutDown {\n  -webkit-animation-name: fadeOutDown;\n  animation-name: fadeOutDown; }\n\n@-webkit-keyframes fadeOutDownBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0); } }\n\n@keyframes fadeOutDownBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, 2000px, 0);\n    transform: translate3d(0, 2000px, 0); } }\n\n.fadeOutDownBig {\n  -webkit-animation-name: fadeOutDownBig;\n  animation-name: fadeOutDownBig; }\n\n@-webkit-keyframes fadeOutLeft {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0); } }\n\n@keyframes fadeOutLeft {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0); } }\n\n.fadeOutLeft {\n  -webkit-animation-name: fadeOutLeft;\n  animation-name: fadeOutLeft; }\n\n@-webkit-keyframes fadeOutLeftBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0); } }\n\n@keyframes fadeOutLeftBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(-2000px, 0, 0);\n    transform: translate3d(-2000px, 0, 0); } }\n\n.fadeOutLeftBig {\n  -webkit-animation-name: fadeOutLeftBig;\n  animation-name: fadeOutLeftBig; }\n\n@-webkit-keyframes fadeOutRight {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0); } }\n\n@keyframes fadeOutRight {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0); } }\n\n.fadeOutRight {\n  -webkit-animation-name: fadeOutRight;\n  animation-name: fadeOutRight; }\n\n@-webkit-keyframes fadeOutRightBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0); } }\n\n@keyframes fadeOutRightBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(2000px, 0, 0);\n    transform: translate3d(2000px, 0, 0); } }\n\n.fadeOutRightBig {\n  -webkit-animation-name: fadeOutRightBig;\n  animation-name: fadeOutRightBig; }\n\n@-webkit-keyframes fadeOutUp {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0); } }\n\n@keyframes fadeOutUp {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0); } }\n\n.fadeOutUp {\n  -webkit-animation-name: fadeOutUp;\n  animation-name: fadeOutUp; }\n\n@-webkit-keyframes fadeOutUpBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0); } }\n\n@keyframes fadeOutUpBig {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -2000px, 0);\n    transform: translate3d(0, -2000px, 0); } }\n\n.fadeOutUpBig {\n  -webkit-animation-name: fadeOutUpBig;\n  animation-name: fadeOutUpBig; }\n\n@-webkit-keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out; }\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out; }\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  80% {\n    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; } }\n\n@keyframes flip {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out; }\n  40% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out; }\n  50% {\n    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  80% {\n    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    transform: perspective(400px) scale3d(0.95, 0.95, 0.95);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; } }\n\n.animated.flip {\n  -webkit-backface-visibility: visible;\n  backface-visibility: visible;\n  -webkit-animation-name: flip;\n  animation-name: flip; }\n\n@-webkit-keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0; }\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1; }\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg); }\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); } }\n\n@keyframes flipInX {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0; }\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n    opacity: 1; }\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -5deg); }\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); } }\n\n.flipInX {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInX;\n  animation-name: flipInX; }\n\n@-webkit-keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0; }\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1; }\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg); }\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); } }\n\n@keyframes flipInY {\n  from {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in;\n    opacity: 0; }\n  40% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n    -webkit-animation-timing-function: ease-in;\n    animation-timing-function: ease-in; }\n  60% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n    opacity: 1; }\n  80% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -5deg); }\n  to {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); } }\n\n.flipInY {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipInY;\n  animation-name: flipInY; }\n\n@-webkit-keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); }\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1; }\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0; } }\n\n@keyframes flipOutX {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); }\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n    opacity: 1; }\n  to {\n    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n    opacity: 0; } }\n\n.flipOutX {\n  -webkit-animation-name: flipOutX;\n  animation-name: flipOutX;\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important; }\n\n@-webkit-keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); }\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1; }\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0; } }\n\n@keyframes flipOutY {\n  from {\n    -webkit-transform: perspective(400px);\n    transform: perspective(400px); }\n  30% {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n    opacity: 1; }\n  to {\n    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n    opacity: 0; } }\n\n.flipOutY {\n  -webkit-backface-visibility: visible !important;\n  backface-visibility: visible !important;\n  -webkit-animation-name: flipOutY;\n  animation-name: flipOutY; }\n\n@-webkit-keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0; }\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1; }\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1; }\n  to {\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n@keyframes lightSpeedIn {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);\n    transform: translate3d(100%, 0, 0) skewX(-30deg);\n    opacity: 0; }\n  60% {\n    -webkit-transform: skewX(20deg);\n    transform: skewX(20deg);\n    opacity: 1; }\n  80% {\n    -webkit-transform: skewX(-5deg);\n    transform: skewX(-5deg);\n    opacity: 1; }\n  to {\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n.lightSpeedIn {\n  -webkit-animation-name: lightSpeedIn;\n  animation-name: lightSpeedIn;\n  -webkit-animation-timing-function: ease-out;\n  animation-timing-function: ease-out; }\n\n@-webkit-keyframes lightSpeedOut {\n  from {\n    opacity: 1; }\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0; } }\n\n@keyframes lightSpeedOut {\n  from {\n    opacity: 1; }\n  to {\n    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);\n    transform: translate3d(100%, 0, 0) skewX(30deg);\n    opacity: 0; } }\n\n.lightSpeedOut {\n  -webkit-animation-name: lightSpeedOut;\n  animation-name: lightSpeedOut;\n  -webkit-animation-timing-function: ease-in;\n  animation-timing-function: ease-in; }\n\n@-webkit-keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n@keyframes rotateIn {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, -200deg);\n    transform: rotate3d(0, 0, 1, -200deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n.rotateIn {\n  -webkit-animation-name: rotateIn;\n  animation-name: rotateIn; }\n\n@-webkit-keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n@keyframes rotateInDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n.rotateInDownLeft {\n  -webkit-animation-name: rotateInDownLeft;\n  animation-name: rotateInDownLeft; }\n\n@-webkit-keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n@keyframes rotateInDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n.rotateInDownRight {\n  -webkit-animation-name: rotateInDownRight;\n  animation-name: rotateInDownRight; }\n\n@-webkit-keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n@keyframes rotateInUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n.rotateInUpLeft {\n  -webkit-animation-name: rotateInUpLeft;\n  animation-name: rotateInUpLeft; }\n\n@-webkit-keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n@keyframes rotateInUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -90deg);\n    transform: rotate3d(0, 0, 1, -90deg);\n    opacity: 0; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: none;\n    transform: none;\n    opacity: 1; } }\n\n.rotateInUpRight {\n  -webkit-animation-name: rotateInUpRight;\n  animation-name: rotateInUpRight; }\n\n@-webkit-keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0; } }\n\n@keyframes rotateOut {\n  from {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: center;\n    transform-origin: center;\n    -webkit-transform: rotate3d(0, 0, 1, 200deg);\n    transform: rotate3d(0, 0, 1, 200deg);\n    opacity: 0; } }\n\n.rotateOut {\n  -webkit-animation-name: rotateOut;\n  animation-name: rotateOut; }\n\n@-webkit-keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0; } }\n\n@keyframes rotateOutDownLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 45deg);\n    transform: rotate3d(0, 0, 1, 45deg);\n    opacity: 0; } }\n\n.rotateOutDownLeft {\n  -webkit-animation-name: rotateOutDownLeft;\n  animation-name: rotateOutDownLeft; }\n\n@-webkit-keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0; } }\n\n@keyframes rotateOutDownRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0; } }\n\n.rotateOutDownRight {\n  -webkit-animation-name: rotateOutDownRight;\n  animation-name: rotateOutDownRight; }\n\n@-webkit-keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0; } }\n\n@keyframes rotateOutUpLeft {\n  from {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: left bottom;\n    transform-origin: left bottom;\n    -webkit-transform: rotate3d(0, 0, 1, -45deg);\n    transform: rotate3d(0, 0, 1, -45deg);\n    opacity: 0; } }\n\n.rotateOutUpLeft {\n  -webkit-animation-name: rotateOutUpLeft;\n  animation-name: rotateOutUpLeft; }\n\n@-webkit-keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0; } }\n\n@keyframes rotateOutUpRight {\n  from {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    opacity: 1; }\n  to {\n    -webkit-transform-origin: right bottom;\n    transform-origin: right bottom;\n    -webkit-transform: rotate3d(0, 0, 1, 90deg);\n    transform: rotate3d(0, 0, 1, 90deg);\n    opacity: 0; } }\n\n.rotateOutUpRight {\n  -webkit-animation-name: rotateOutUpRight;\n  animation-name: rotateOutUpRight; }\n\n@-webkit-keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out; }\n  20%, 60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out; }\n  40%, 80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1; }\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0; } }\n\n@keyframes hinge {\n  0% {\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out; }\n  20%, 60% {\n    -webkit-transform: rotate3d(0, 0, 1, 80deg);\n    transform: rotate3d(0, 0, 1, 80deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out; }\n  40%, 80% {\n    -webkit-transform: rotate3d(0, 0, 1, 60deg);\n    transform: rotate3d(0, 0, 1, 60deg);\n    -webkit-transform-origin: top left;\n    transform-origin: top left;\n    -webkit-animation-timing-function: ease-in-out;\n    animation-timing-function: ease-in-out;\n    opacity: 1; }\n  to {\n    -webkit-transform: translate3d(0, 700px, 0);\n    transform: translate3d(0, 700px, 0);\n    opacity: 0; } }\n\n.hinge {\n  -webkit-animation-name: hinge;\n  animation-name: hinge; }\n\n@-webkit-keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n@keyframes rollIn {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); }\n  to {\n    opacity: 1;\n    -webkit-transform: none;\n    transform: none; } }\n\n.rollIn {\n  -webkit-animation-name: rollIn;\n  animation-name: rollIn; }\n\n@-webkit-keyframes rollOut {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } }\n\n@keyframes rollOut {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0;\n    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } }\n\n.rollOut {\n  -webkit-animation-name: rollOut;\n  animation-name: rollOut; }\n\n@-webkit-keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); }\n  50% {\n    opacity: 1; } }\n\n@keyframes zoomIn {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); }\n  50% {\n    opacity: 1; } }\n\n.zoomIn {\n  -webkit-animation-name: zoomIn;\n  animation-name: zoomIn; }\n\n@-webkit-keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n@keyframes zoomInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n.zoomInDown {\n  -webkit-animation-name: zoomInDown;\n  animation-name: zoomInDown; }\n\n@-webkit-keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n@keyframes zoomInLeft {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n.zoomInLeft {\n  -webkit-animation-name: zoomInLeft;\n  animation-name: zoomInLeft; }\n\n@-webkit-keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n@keyframes zoomInRight {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n.zoomInRight {\n  -webkit-animation-name: zoomInRight;\n  animation-name: zoomInRight; }\n\n@-webkit-keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n@keyframes zoomInUp {\n  from {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  60% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n.zoomInUp {\n  -webkit-animation-name: zoomInUp;\n  animation-name: zoomInUp; }\n\n@-webkit-keyframes zoomOut {\n  from {\n    opacity: 1; }\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); }\n  to {\n    opacity: 0; } }\n\n@keyframes zoomOut {\n  from {\n    opacity: 1; }\n  50% {\n    opacity: 0;\n    -webkit-transform: scale3d(0.3, 0.3, 0.3);\n    transform: scale3d(0.3, 0.3, 0.3); }\n  to {\n    opacity: 0; } }\n\n.zoomOut {\n  -webkit-animation-name: zoomOut;\n  animation-name: zoomOut; }\n\n@-webkit-keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n@keyframes zoomOutDown {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n.zoomOutDown {\n  -webkit-animation-name: zoomOutDown;\n  animation-name: zoomOutDown; }\n\n@-webkit-keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n    transform: scale(0.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center; } }\n\n@keyframes zoomOutLeft {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);\n    transform: scale(0.1) translate3d(-2000px, 0, 0);\n    -webkit-transform-origin: left center;\n    transform-origin: left center; } }\n\n.zoomOutLeft {\n  -webkit-animation-name: zoomOutLeft;\n  animation-name: zoomOutLeft; }\n\n@-webkit-keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n    transform: scale(0.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center; } }\n\n@keyframes zoomOutRight {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);\n    transform: scale(0.1) translate3d(2000px, 0, 0);\n    -webkit-transform-origin: right center;\n    transform-origin: right center; } }\n\n.zoomOutRight {\n  -webkit-animation-name: zoomOutRight;\n  animation-name: zoomOutRight; }\n\n@-webkit-keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n@keyframes zoomOutUp {\n  40% {\n    opacity: 1;\n    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }\n  to {\n    opacity: 0;\n    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n    -webkit-transform-origin: center bottom;\n    transform-origin: center bottom;\n    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } }\n\n.zoomOutUp {\n  -webkit-animation-name: zoomOutUp;\n  animation-name: zoomOutUp; }\n\n@-webkit-keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n@keyframes slideInDown {\n  from {\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n.slideInDown {\n  -webkit-animation-name: slideInDown;\n  animation-name: slideInDown; }\n\n@-webkit-keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n@keyframes slideInLeft {\n  from {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n.slideInLeft {\n  -webkit-animation-name: slideInLeft;\n  animation-name: slideInLeft; }\n\n@-webkit-keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n@keyframes slideInRight {\n  from {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n.slideInRight {\n  -webkit-animation-name: slideInRight;\n  animation-name: slideInRight; }\n\n@-webkit-keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n@keyframes slideInUp {\n  from {\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0);\n    visibility: visible; }\n  to {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); } }\n\n.slideInUp {\n  -webkit-animation-name: slideInUp;\n  animation-name: slideInUp; }\n\n@-webkit-keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0); } }\n\n@keyframes slideOutDown {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, 100%, 0);\n    transform: translate3d(0, 100%, 0); } }\n\n.slideOutDown {\n  -webkit-animation-name: slideOutDown;\n  animation-name: slideOutDown; }\n\n@-webkit-keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0); } }\n\n@keyframes slideOutLeft {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0); } }\n\n.slideOutLeft {\n  -webkit-animation-name: slideOutLeft;\n  animation-name: slideOutLeft; }\n\n@-webkit-keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0); } }\n\n@keyframes slideOutRight {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0); } }\n\n.slideOutRight {\n  -webkit-animation-name: slideOutRight;\n  animation-name: slideOutRight; }\n\n@-webkit-keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0); } }\n\n@keyframes slideOutUp {\n  from {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0); }\n  to {\n    visibility: hidden;\n    -webkit-transform: translate3d(0, -100%, 0);\n    transform: translate3d(0, -100%, 0); } }\n\n.slideOutUp {\n  -webkit-animation-name: slideOutUp;\n  animation-name: slideOutUp; }\n\n.ps-container {\n  -ms-touch-action: auto;\n  touch-action: auto;\n  overflow: hidden !important;\n  -ms-overflow-style: none; }\n\n@supports (-ms-overflow-style: none) {\n  .ps-container {\n    overflow: auto !important; } }\n\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n  .ps-container {\n    overflow: auto !important; } }\n\n.ps-container.ps-active-x > .ps-scrollbar-x-rail, .ps-container.ps-active-y > .ps-scrollbar-y-rail {\n  display: block;\n  background-color: transparent; }\n\n.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {\n  background-color: transparent;\n  opacity: .9; }\n\n.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {\n  background-color: rgba(0, 0, 0, 0.2);\n  height: 11px; }\n\n.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {\n  background-color: transparent;\n  opacity: .9; }\n\n.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {\n  background-color: rgba(0, 0, 0, 0.2);\n  width: 11px; }\n\n.ps-container > .ps-scrollbar-x-rail {\n  display: none;\n  position: absolute;\n  opacity: 0;\n  -webkit-transition: background-color .2s linear,opacity .2s linear;\n  -o-transition: background-color .2s linear,opacity .2s linear;\n  -moz-transition: background-color .2s linear,opacity .2s linear;\n  transition: background-color .2s linear,opacity .2s linear;\n  bottom: 0;\n  height: 15px; }\n\n.ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x {\n  position: absolute;\n  background-color: rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px;\n  -webkit-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;\n  transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;\n  -o-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;\n  -moz-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;\n  -webkit-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;\n  transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;\n  transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-webkit-border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;\n  bottom: 2px;\n  height: 6px; }\n\n.ps-container > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x, .ps-container > .ps-scrollbar-x-rail:active > .ps-scrollbar-x {\n  height: 6px; }\n\n.ps-container > .ps-scrollbar-y-rail {\n  display: none;\n  position: absolute;\n  opacity: 0;\n  -webkit-transition: background-color .2s linear,opacity .2s linear;\n  -o-transition: background-color .2s linear,opacity .2s linear;\n  -moz-transition: background-color .2s linear,opacity .2s linear;\n  transition: background-color .2s linear,opacity .2s linear;\n  right: 0;\n  width: 15px; }\n\n.ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y {\n  position: absolute;\n  background-color: rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  border-radius: 6px;\n  -webkit-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;\n  transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;\n  -o-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;\n  -moz-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;\n  -webkit-transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;\n  transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;\n  transition: background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-webkit-border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;\n  right: 2px;\n  width: 6px; }\n\n.ps-container > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y, .ps-container > .ps-scrollbar-y-rail:active > .ps-scrollbar-y {\n  width: 6px; }\n\n.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {\n  background-color: transparent;\n  opacity: .9; }\n\n.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {\n  background-color: rgba(0, 0, 0, 0.2);\n  height: 6px; }\n\n.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {\n  background-color: transparent;\n  opacity: .9; }\n\n.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {\n  background-color: rgba(0, 0, 0, 0.2);\n  width: 6px; }\n\n.ps-container:hover > .ps-scrollbar-x-rail, .ps-container:hover > .ps-scrollbar-y-rail {\n  opacity: .6; }\n\n.ps-container:hover > .ps-scrollbar-x-rail:hover {\n  background-color: transparent;\n  opacity: .9; }\n\n.ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x {\n  background-color: rgba(0, 0, 0, 0.2); }\n\n.ps-container:hover > .ps-scrollbar-y-rail:hover {\n  background-color: transparent;\n  opacity: .9; }\n\n.ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y {\n  background-color: rgba(0, 0, 0, 0.2); }\n\n.ps-container .ps-scrollbar-y-rail {\n  position: absolute;\n  /* please don't change 'position' */\n  right: 3px;\n  /* there must be 'right' for ps-scrollbar-y-rail */\n  width: 8px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  opacity: 0;\n  filter: alpha(opacity=0);\n  -o-transition: background-color .2s linear, opacity .2s linear;\n  -webkit-transition: background-color .2s linear, opacity .2s linear;\n  -moz-transition: background-color .2s linear, opacity .2s linear;\n  transition: background-color .2s linear, opacity .2s linear; }\n\n/*\nTemplate Name: Admin Template\nAuthor: Niravjoshi / Wrappixel\nFile: scss\n*/\nhtml body .jqstooltip,\nhtml body .flotTip {\n  width: auto !important;\n  height: auto !important;\n  background: #212529;\n  color: #fff;\n  padding: 5px 10px; }\n\nbody .jqstooltip {\n  border-color: transparent;\n  border-radius: 60px; }\n\n.chartist-tooltip {\n  position: absolute;\n  display: inline-block;\n  opacity: 0;\n  border-radius: 2px;\n  padding: 10px 20px;\n  background: #2962FF;\n  color: #fff;\n  ext-align: center;\n  pointer-events: none;\n  z-index: 1;\n  -webkit-transition: opacity .2s linear;\n  -moz-transition: opacity .2s linear;\n  -o-transition: opacity .2s linear;\n  transition: opacity .2s linear; }\n\n.chartist-tooltip:before {\n  content: \"\";\n  position: absolute;\n  top: 100%;\n  left: 50%;\n  width: 0;\n  height: 0;\n  margin-left: -5px;\n  border: 5px solid transparent;\n  border-top-color: #2962FF; }\n\n.chartist-tooltip.tooltip-show {\n  opacity: 1; }\n\n.ct-area,\n.ct-line {\n  pointer-events: none; }\n\n.c3-chart-arcs-title {\n  fill: #a1aab2; }\n\n.c3 line,\n.c3 path {\n  stroke: #e9ecef; }\n\n.c3-chart-arc path {\n  stroke: transparent; }\n\n.popover-item {\n  margin-left: -15px; }\n  .popover-item:hover {\n    z-index: 10;\n    position: relative; }\n\n.custom-select {\n  -moz-appearance: none;\n  -webkit-appearance: none;\n  -o-appearance: none;\n  background-size: auto; }\n\n.select2-container--classic .select2-selection--single,\n.select2-container--default .select2-selection--single,\n.select2-container--default .select2-selection--single .select2-selection__rendered,\n.select2-container--default .select2-selection--single .select2-selection__arrow,\n.select2-container--default .select2-selection--multiple {\n  border-color: #e9ecef;\n  height: 40px;\n  color: #3e5569;\n  line-height: 40px; }\n\n.select2-container--default .select2-selection--multiple {\n  line-height: 27px; }\n\n.select2-container--classic .select2-selection--multiple .select2-selection__choice,\n.select2-container--default .select2-selection--multiple .select2-selection__choice,\n.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n  background-color: #2962FF;\n  border-color: #2962FF;\n  color: #fff; }\n\n.m-icon {\n  width: 33%;\n  display: inline-block; }\n\n@media (max-width: 767.98px) {\n  .m-icon {\n    width: 100%; } }\n\n.f-icon,\n.t-icon,\n.w-icon,\n.sl-icon,\n.if-icon,\n.m-icon {\n  cursor: pointer;\n  padding: 13px 15px;\n  white-space: nowrap;\n  overflow: hidden;\n  -o-text-overflow: ellipsis;\n  text-overflow: ellipsis; }\n  .f-icon:hover,\n  .t-icon:hover,\n  .w-icon:hover,\n  .sl-icon:hover,\n  .if-icon:hover,\n  .m-icon:hover {\n    background-color: #f8f9fa; }\n\n.table.dataTable {\n  border-collapse: collapse !important; }\n\n.dataTables_wrapper {\n  padding: 0px; }\n\n.note-editor.note-frame,\n.dropzone {\n  border-color: #e9ecef; }\n\n.dropzone {\n  border-style: dotted; }\n\n.note-toolbar {\n  z-index: 1; }\n\n.nav-pills.custom-pills .nav-link {\n  border-radius: 0;\n  opacity: 0.7; }\n  .nav-pills.custom-pills .nav-link.active {\n    color: #2962FF;\n    opacity: 1;\n    background-color: transparent;\n    border-bottom: 2px solid #2962FF; }\n\nlabel {\n  font-weight: 600; }\n\n.r-separator .form-group {\n  border-bottom: 1px solid #e9ecef; }\n  .r-separator .form-group:last-child {\n    border-bottom: none; }\n\n.striped-rows .row:nth-child(odd) {\n  background-color: #f8f9fa; }\n\n.b-form .row {\n  border-bottom: 1px solid #e9ecef;\n  margin-bottom: 0;\n  padding: 15px 0; }\n  .b-form .row:last-child {\n    border-bottom: none; }\n\n.b-label {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center;\n  -webkit-box-pack: end;\n  -ms-flex-pack: end;\n  justify-content: flex-end; }\n\n.error .form-control {\n  border-color: #f62d51; }\n\n.error .help-block {\n  color: #f62d51; }\n\n.validate .form-control {\n  border-color: #36bea6; }\n\n.validate .help-block {\n  color: #36bea6; }\n\n@media (min-height: 33.875em) {\n  .picker--opened .picker__frame {\n    top: 30%;\n    bottom: auto; } }\n\n.dtp > .dtp-content > .dtp-date-view > header.dtp-header {\n  background: #1d50de; }\n\n.dtp div.dtp-date,\n.dtp div.dtp-time,\n.dtp table.dtp-picker-days tr > td > a.selected {\n  background: #2962FF; }\n\n.dtp .p10 > a {\n  color: #fff; }\n\n.datepicker .day,\n.datepicker .dow {\n  padding: 5px 10px; }\n\n.docs-buttons .btn,\n.docs-data .input-group {\n  margin-bottom: 5px; }\n\n.scrollable {\n  position: relative; }\n\n.error-box {\n  height: 100%;\n  position: fixed;\n  background: url(../../../../assets/images/background/error-bg.jpg) no-repeat center center #fff;\n  width: 100%; }\n  .error-box .error-body {\n    padding-top: 5%; }\n  .error-box .error-title {\n    font-size: 210px;\n    font-weight: 900;\n    text-shadow: 4px 4px 0 #fff, 6px 6px 0 #343a40;\n    line-height: 210px; }\n\n.price-label {\n  position: absolute;\n  top: -10px;\n  margin: 0 auto;\n  left: 0;\n  right: 0;\n  width: 100px;\n  padding: 5px 10px; }\n\n.price-sign {\n  position: absolute;\n  font-size: 15px;\n  top: 5px;\n  margin-left: -10px; }\n\n/*******************/\n/*Guage chart*/\n/*******************/\n.gaugejs-box {\n  position: relative;\n  margin: 0 auto; }\n\n.gaugejs-box canvas.gaugejs {\n  width: 100% !important;\n  height: auto !important; }\n\nhtml[dir=\"rtl\"] {\n  /*******************\nPadding margin property \n*******************/\n  /** * Zero */\n  /* Stickey inner-left-part */\n  /* plugins */\n  /*.sl-icon i,\n    [class*=\" ti-\"],\n    [class^=ti-] {\n        float: right;\n        margin-left: 10px;\n        line-height: 20px;\n    }*/\n  /* Vertical responsive layout */ }\n  html[dir=\"rtl\"] body .m-t-5 {\n    margin-top: 5px; }\n  html[dir=\"rtl\"] body .m-b-5 {\n    margin-bottom: 5px; }\n  html[dir=\"rtl\"] body .m-r-5 {\n    margin-left: 5px; }\n  html[dir=\"rtl\"] body .m-l-5 {\n    margin-right: 5px; }\n  html[dir=\"rtl\"] body .p-t-5 {\n    padding-top: 5px; }\n  html[dir=\"rtl\"] body .p-b-5 {\n    padding-bottom: 5px; }\n  html[dir=\"rtl\"] body .p-r-5 {\n    padding-left: 5px; }\n  html[dir=\"rtl\"] body .p-l-5 {\n    padding-right: 5px; }\n  html[dir=\"rtl\"] body .p-5 {\n    padding: 5px; }\n  html[dir=\"rtl\"] body .m-5 {\n    margin: 5px; }\n  html[dir=\"rtl\"] body .m-t-10 {\n    margin-top: 10px; }\n  html[dir=\"rtl\"] body .m-b-10 {\n    margin-bottom: 10px; }\n  html[dir=\"rtl\"] body .m-r-10 {\n    margin-left: 10px; }\n  html[dir=\"rtl\"] body .m-l-10 {\n    margin-right: 10px; }\n  html[dir=\"rtl\"] body .p-t-10 {\n    padding-top: 10px; }\n  html[dir=\"rtl\"] body .p-b-10 {\n    padding-bottom: 10px; }\n  html[dir=\"rtl\"] body .p-r-10 {\n    padding-left: 10px; }\n  html[dir=\"rtl\"] body .p-l-10 {\n    padding-right: 10px; }\n  html[dir=\"rtl\"] body .p-10 {\n    padding: 10px; }\n  html[dir=\"rtl\"] body .m-10 {\n    margin: 10px; }\n  html[dir=\"rtl\"] body .m-t-15 {\n    margin-top: 15px; }\n  html[dir=\"rtl\"] body .m-b-15 {\n    margin-bottom: 15px; }\n  html[dir=\"rtl\"] body .m-r-15 {\n    margin-left: 15px; }\n  html[dir=\"rtl\"] body .m-l-15 {\n    margin-right: 15px; }\n  html[dir=\"rtl\"] body .p-t-15 {\n    padding-top: 15px; }\n  html[dir=\"rtl\"] body .p-b-15 {\n    padding-bottom: 15px; }\n  html[dir=\"rtl\"] body .p-r-15 {\n    padding-left: 15px; }\n  html[dir=\"rtl\"] body .p-l-15 {\n    padding-right: 15px; }\n  html[dir=\"rtl\"] body .p-15 {\n    padding: 15px; }\n  html[dir=\"rtl\"] body .m-15 {\n    margin: 15px; }\n  html[dir=\"rtl\"] body .m-t-20 {\n    margin-top: 20px; }\n  html[dir=\"rtl\"] body .m-b-20 {\n    margin-bottom: 20px; }\n  html[dir=\"rtl\"] body .m-r-20 {\n    margin-left: 20px; }\n  html[dir=\"rtl\"] body .m-l-20 {\n    margin-right: 20px; }\n  html[dir=\"rtl\"] body .p-t-20 {\n    padding-top: 20px; }\n  html[dir=\"rtl\"] body .p-b-20 {\n    padding-bottom: 20px; }\n  html[dir=\"rtl\"] body .p-r-20 {\n    padding-left: 20px; }\n  html[dir=\"rtl\"] body .p-l-20 {\n    padding-right: 20px; }\n  html[dir=\"rtl\"] body .p-20 {\n    padding: 20px; }\n  html[dir=\"rtl\"] body .m-20 {\n    margin: 20px; }\n  html[dir=\"rtl\"] body .m-t-25 {\n    margin-top: 25px; }\n  html[dir=\"rtl\"] body .m-b-25 {\n    margin-bottom: 25px; }\n  html[dir=\"rtl\"] body .m-r-25 {\n    margin-left: 25px; }\n  html[dir=\"rtl\"] body .m-l-25 {\n    margin-right: 25px; }\n  html[dir=\"rtl\"] body .p-t-25 {\n    padding-top: 25px; }\n  html[dir=\"rtl\"] body .p-b-25 {\n    padding-bottom: 25px; }\n  html[dir=\"rtl\"] body .p-r-25 {\n    padding-left: 25px; }\n  html[dir=\"rtl\"] body .p-l-25 {\n    padding-right: 25px; }\n  html[dir=\"rtl\"] body .p-25 {\n    padding: 25px; }\n  html[dir=\"rtl\"] body .m-25 {\n    margin: 25px; }\n  html[dir=\"rtl\"] body .m-t-30 {\n    margin-top: 30px; }\n  html[dir=\"rtl\"] body .m-b-30 {\n    margin-bottom: 30px; }\n  html[dir=\"rtl\"] body .m-r-30 {\n    margin-left: 30px; }\n  html[dir=\"rtl\"] body .m-l-30 {\n    margin-right: 30px; }\n  html[dir=\"rtl\"] body .p-t-30 {\n    padding-top: 30px; }\n  html[dir=\"rtl\"] body .p-b-30 {\n    padding-bottom: 30px; }\n  html[dir=\"rtl\"] body .p-r-30 {\n    padding-left: 30px; }\n  html[dir=\"rtl\"] body .p-l-30 {\n    padding-right: 30px; }\n  html[dir=\"rtl\"] body .p-30 {\n    padding: 30px; }\n  html[dir=\"rtl\"] body .m-30 {\n    margin: 30px; }\n  html[dir=\"rtl\"] body .m-t-40 {\n    margin-top: 40px; }\n  html[dir=\"rtl\"] body .m-b-40 {\n    margin-bottom: 40px; }\n  html[dir=\"rtl\"] body .m-r-40 {\n    margin-left: 40px; }\n  html[dir=\"rtl\"] body .m-l-40 {\n    margin-right: 40px; }\n  html[dir=\"rtl\"] body .p-t-40 {\n    padding-top: 40px; }\n  html[dir=\"rtl\"] body .p-b-40 {\n    padding-bottom: 40px; }\n  html[dir=\"rtl\"] body .p-r-40 {\n    padding-left: 40px; }\n  html[dir=\"rtl\"] body .p-l-40 {\n    padding-right: 40px; }\n  html[dir=\"rtl\"] body .p-40 {\n    padding: 40px; }\n  html[dir=\"rtl\"] body .m-40 {\n    margin: 40px; }\n  html[dir=\"rtl\"] body .m-0-0 {\n    margin: 0; }\n  html[dir=\"rtl\"] body .m-t-0 {\n    margin-top: 0; }\n  html[dir=\"rtl\"] body .m-r-0 {\n    margin-left: 0; }\n  html[dir=\"rtl\"] body .m-b-0 {\n    margin-bottom: 0; }\n  html[dir=\"rtl\"] body .m-l-0 {\n    margin-right: 0; }\n  html[dir=\"rtl\"] body .p-0-0 {\n    padding: 0; }\n  html[dir=\"rtl\"] body .p-t-0 {\n    padding-top: 0; }\n  html[dir=\"rtl\"] body .p-r-0 {\n    padding-left: 0; }\n  html[dir=\"rtl\"] body .p-b-0 {\n    padding-bottom: 0; }\n  html[dir=\"rtl\"] body .p-l-0 {\n    padding-right: 0; }\n  html[dir=\"rtl\"] body {\n    text-align: right;\n    direction: rtl; }\n  html[dir=\"rtl\"] .page-breadcrumb .breadcrumb .breadcrumb-item + .breadcrumb-item {\n    padding-right: 0.5rem;\n    padding-left: 0; }\n    html[dir=\"rtl\"] .page-breadcrumb .breadcrumb .breadcrumb-item + .breadcrumb-item::before {\n      content: \"\\e64a\";\n      padding-right: 0;\n      padding-left: 0.5rem; }\n  html[dir=\"rtl\"] .custom-select {\n    padding: .375rem .75rem .375rem 1.75rem;\n    background: url(../../assets/images/custom-select.png) left 0.35rem center no-repeat #fff; }\n  html[dir=\"rtl\"] .custom-control {\n    padding-left: 0;\n    padding-right: 1.5rem; }\n  html[dir=\"rtl\"] .custom-control-label::after,\n  html[dir=\"rtl\"] .custom-control-label::before {\n    left: auto;\n    right: 0px; }\n  html[dir=\"rtl\"] .list-group {\n    padding: 0px; }\n  html[dir=\"rtl\"] .float-left {\n    float: right !important; }\n  html[dir=\"rtl\"] .float-right {\n    float: left !important; }\n  html[dir=\"rtl\"] .text-left {\n    text-align: right !important; }\n  html[dir=\"rtl\"] .text-right {\n    text-align: left !important; }\n  html[dir=\"rtl\"] .close {\n    float: left; }\n  html[dir=\"rtl\"] .modal-header .close {\n    float: left;\n    margin: -1rem auto -1rem -1rem; }\n  html[dir=\"rtl\"] .modal-footer > :not(:last-child) {\n    margin-left: 0.25rem;\n    margin-right: 0; }\n  html[dir=\"rtl\"] .ml-auto {\n    margin-right: auto !important;\n    margin-left: 0px !important; }\n  html[dir=\"rtl\"] .mr-auto {\n    margin-left: auto !important;\n    margin-right: 0px !important; }\n  html[dir=\"rtl\"] .border-right {\n    border-right: none !important;\n    border-left: 1px solid #e9ecef !important; }\n  html[dir=\"rtl\"] .border-left {\n    border-left: none !important;\n    border-right: 1px solid #e9ecef !important; }\n  html[dir=\"rtl\"] .alert-dismissible {\n    padding-left: 3.8125rem;\n    padding-right: 1.25rem; }\n    html[dir=\"rtl\"] .alert-dismissible .close {\n      left: 0;\n      right: auto; }\n  html[dir=\"rtl\"] .custom-file-label {\n    left: auto;\n    right: 0;\n    width: 100%; }\n    html[dir=\"rtl\"] .custom-file-label::after {\n      right: auto;\n      left: 0; }\n  html[dir=\"rtl\"] .dropdown-menu-right {\n    right: auto;\n    left: 0; }\n  html[dir=\"rtl\"] .dropdown-menu {\n    text-align: right; }\n  html[dir=\"rtl\"] .topbar .navbar-collapse {\n    padding: 0 0 0 10px; }\n  html[dir=\"rtl\"] .navbar-nav,\n  html[dir=\"rtl\"] .nav,\n  html[dir=\"rtl\"] .list-unstyled,\n  html[dir=\"rtl\"] .pagination {\n    padding-right: 0; }\n  html[dir=\"rtl\"] .topbar .top-navbar .navbar-header .navbar-brand .logo-icon {\n    margin-right: 0; }\n  html[dir=\"rtl\"] .topbar .dropdown-menu.dropdown-menu-right .with-arrow {\n    left: 0;\n    right: auto; }\n  html[dir=\"rtl\"] .topbar .dropdown-menu.dropdown-menu-right .with-arrow > span {\n    left: 20px;\n    right: auto; }\n  html[dir=\"rtl\"] .search-box .app-search .srh-btn {\n    right: auto;\n    left: 20px; }\n  html[dir=\"rtl\"] .mailbox .message-center .message-item .mail-contnet {\n    padding-right: 10px;\n    padding-left: 0; }\n  html[dir=\"rtl\"] .customizer {\n    left: -280px;\n    right: auto; }\n    html[dir=\"rtl\"] .customizer.show-service-panel {\n      left: 0;\n      right: auto; }\n    html[dir=\"rtl\"] .customizer .service-panel-toggle {\n      right: -54px;\n      left: auto; }\n  html[dir=\"rtl\"] .sidebar-nav .has-arrow::after {\n    margin-left: 0;\n    margin-right: 10px;\n    right: auto;\n    left: 15px; }\n  html[dir=\"rtl\"] .left-part {\n    border-left: 1px solid #e9ecef;\n    border-right: none; }\n    html[dir=\"rtl\"] .left-part .show-left-part {\n      left: -41px;\n      right: auto; }\n  html[dir=\"rtl\"] .right-part {\n    margin-right: 260px;\n    margin-left: 0; }\n  html[dir=\"rtl\"] .reverse-mode .left-part {\n    right: auto;\n    left: 0; }\n  html[dir=\"rtl\"] .reverse-mode .show-left-part {\n    left: auto;\n    right: -41px; }\n  html[dir=\"rtl\"] .reverse-mode .right-part {\n    margin-right: 0px;\n    margin-left: 260px; }\n  html[dir=\"rtl\"] .profiletimeline {\n    padding-right: 40px;\n    padding-left: 0;\n    margin: 40px 30px 0 10px;\n    border-right: 1px solid #e9ecef;\n    border-left: none; }\n    html[dir=\"rtl\"] .profiletimeline .sl-left {\n      float: right;\n      margin-right: -60px;\n      margin-left: 15px; }\n  html[dir=\"rtl\"] .feed-widget .feed-body .feed-item > .feed-icon {\n    margin-right: 0;\n    margin-left: 10px; }\n  html[dir=\"rtl\"] div.dataTables_wrapper div.dataTables_filter {\n    text-align: left; }\n  html[dir=\"rtl\"] table.table-bordered.dataTable th,\n  html[dir=\"rtl\"] table.table-bordered.dataTable td {\n    border-left-width: 1px; }\n  html[dir=\"rtl\"] div.dataTables_wrapper div.dataTables_filter input {\n    margin-right: 0.5rem;\n    margin-left: 0; }\n  html[dir=\"rtl\"] div.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:last-child {\n    padding-left: 1px; }\n  html[dir=\"rtl\"] .lobilists .lobilist-actions {\n    right: auto;\n    left: 8px; }\n  html[dir=\"rtl\"] .lobilists .lobilist-item .todo-actions {\n    right: auto;\n    left: 4px; }\n  html[dir=\"rtl\"] .lobilists .lobilist-check {\n    left: auto;\n    right: 12px; }\n  html[dir=\"rtl\"] .lobilists .lobilist-item,\n  html[dir=\"rtl\"] .lobilists .lobilist-item-placeholder {\n    padding-left: 0;\n    padding-right: 35px; }\n  html[dir=\"rtl\"] .lobilists .lobilist-item .drag-handler {\n    left: auto;\n    right: 0; }\n  html[dir=\"rtl\"] .lobilists .lobilist-wrapper,\n  html[dir=\"rtl\"] .lobilists .lobilist-placeholder {\n    margin-left: 16px;\n    margin-right: 0; }\n  html[dir=\"rtl\"] .datepicker {\n    direction: rtl; }\n  html[dir=\"rtl\"] .minicolors .minicolors-grid {\n    right: 22px;\n    left: auto; }\n  html[dir=\"rtl\"] .wizard > .steps > ul > li,\n  html[dir=\"rtl\"] .wizard > .actions > ul > li {\n    float: right; }\n  html[dir=\"rtl\"] .wizard-content .wizard > .steps > ul > li:after {\n    right: auto;\n    left: 0; }\n  html[dir=\"rtl\"] .wizard-content .wizard > .steps > ul > li:before {\n    left: auto;\n    right: 0; }\n  html[dir=\"rtl\"] .wizard-content .wizard.vertical > .steps {\n    float: right; }\n  html[dir=\"rtl\"] .css-bar > i {\n    margin-left: 0;\n    margin-right: 5px; }\n  html[dir=\"rtl\"] .treeview span.icon {\n    margin-right: 0;\n    margin-left: 5px; }\n  html[dir=\"rtl\"] #main-wrapper {\n    /*sidebar type*/ }\n    html[dir=\"rtl\"] #main-wrapper[data-sidebartype=\"full\"] .page-wrapper {\n      margin-right: 250px;\n      margin-left: 0; }\n    html[dir=\"rtl\"] #main-wrapper[data-sidebartype=\"iconbar\"] .page-wrapper {\n      margin-right: 180px;\n      margin-left: 0; }\n    html[dir=\"rtl\"] #main-wrapper[data-sidebartype=\"overlay\"] .left-sidebar {\n      right: -250px;\n      left: auto; }\n    html[dir=\"rtl\"] #main-wrapper[data-sidebartype=\"overlay\"].show-sidebar .left-sidebar {\n      right: 0;\n      left: auto; }\n  html[dir=\"rtl\"] .dz-hidden-input {\n    display: none; }\n  @media (min-width: 768px) {\n    html[dir=\"rtl\"] #main-wrapper {\n      /*Sidebar position*/\n      /*Fixed sidebar with minisidebar*/ }\n      html[dir=\"rtl\"] #main-wrapper[data-sidebar-position=\"fixed\"][data-sidebartype=\"full\"] .topbar .top-navbar .navbar-collapse, html[dir=\"rtl\"] #main-wrapper[data-sidebar-position=\"fixed\"][data-sidebartype=\"overlay\"] .topbar .top-navbar .navbar-collapse {\n        margin-right: 250px;\n        margin-left: 0; }\n      html[dir=\"rtl\"] #main-wrapper[data-sidebar-position=\"fixed\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-collapse {\n        margin-right: 65px;\n        margin-left: 0; }\n      html[dir=\"rtl\"] #main-wrapper[data-sidebar-position=\"fixed\"][data-sidebartype=\"iconbar\"] .topbar .top-navbar .navbar-collapse {\n        margin-right: 180px;\n        margin-left: 0; }\n      html[dir=\"rtl\"] #main-wrapper[data-sidebar-position=\"fixed\"][data-sidebartype=\"mini-sidebar\"] .topbar .top-navbar .navbar-collapse {\n        margin-right: 65px;\n        margin-left: 0; }\n      html[dir=\"rtl\"] #main-wrapper[data-sidebartype=\"mini-sidebar\"] .page-wrapper {\n        margin-right: 65px;\n        margin-left: 0; } }\n  @media (max-width: 766px) {\n    html[dir=\"rtl\"] #main-wrapper[data-sidebartype=\"mini-sidebar\"] .left-sidebar {\n      right: -250px;\n      left: auto; }\n    html[dir=\"rtl\"] #main-wrapper.show-sidebar .left-sidebar {\n      right: 0;\n      left: auto; }\n    html[dir=\"rtl\"] .left-part {\n      right: -260px;\n      left: auto; }\n      html[dir=\"rtl\"] .left-part.show-panel {\n        right: 0px;\n        left: auto; }\n    html[dir=\"rtl\"] .right-part {\n      margin-right: 0px; } }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n/*******************\n Campaign\n*******************/\n.campaign {\n  position: relative;\n  height: 250px; }\n  .campaign .ct-series-a .ct-area {\n    fill-opacity: 0.2;\n    fill: url(#gradient); }\n  .campaign .ct-series-a .ct-line, .campaign .ct-series-a .ct-point {\n    stroke: #4fc3f7;\n    stroke-width: 2px; }\n  .campaign .ct-series-b .ct-area {\n    fill: #7460ee;\n    fill-opacity: 0.1; }\n  .campaign .ct-series-b .ct-line, .campaign .ct-series-b .ct-point {\n    stroke: #7460ee;\n    stroke-width: 2px; }\n  .campaign .ct-series-a .ct-point, .campaign .ct-series-b .ct-point {\n    stroke-width: 6px; }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n/*******************\n Campaign\n*******************/\n.earningsbox .c3-line {\n  stroke-width: 2px; }\n\n.product-sales.c3 line, .product-sales.c3 path {\n  stroke: #e9ecef; }\n\n.product-sales .c3-shape {\n  stroke: #fff !important;\n  stroke-width: 3px; }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n/*******************\n Campaign\n*******************/\n.e-campaign .css-bar .data-text {\n  margin: 0 auto;\n  position: absolute;\n  left: 0;\n  z-index: 200;\n  right: 0;\n  top: 70px;\n  text-align: center; }\n  .e-campaign .css-bar .data-text .success-rate {\n    font-size: 60px; }\n  .e-campaign .css-bar .data-text .rate-label {\n    margin-top: -20px; }\n\n.e-campaign .c-cost {\n  padding: 10px 20px;\n  border: 1px solid #e9ecef;\n  border-radius: 5px; }\n  .e-campaign .c-cost i {\n    font-size: 48px; }\n\n.poll-widget .collapsible {\n  border: none;\n  -webkit-box-shadow: none;\n  box-shadow: none; }\n  .poll-widget .collapsible .collapsible-header,\n  .poll-widget .collapsible .collapsible-body {\n    border-bottom: none;\n    padding: 1rem 0; }\n\n#calendar .fc-toolbar {\n  padding: 0px 15px 24px; }\n\n.jvectormap-zoomout,\n.jvectormap-zoomin {\n  display: none; }\n\n@media (max-width: 767px) {\n  .e-campaign .c-cost {\n    margin: 0 auto;\n    width: 100%; }\n  .e-campaign .stats {\n    text-align: center; } }\n\n.css-bar-xlg {\n  width: 223px;\n  height: 223px;\n  font-size: 20px; }\n\n.css-bar-xlg:after,\n.css-bar-xlg > img {\n  width: 213px;\n  height: 213px;\n  margin-left: 5px;\n  margin-top: 5px;\n  line-height: 30px; }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n.gredient-info-bg {\n  background: -webkit-gradient(linear, left top, right top, from(#41a6f6), to(#425be0));\n  background: -webkit-linear-gradient(left, #41a6f6 0%, #425be0 100%);\n  background: -o-linear-gradient(left, #41a6f6 0%, #425be0 100%);\n  background: linear-gradient(to right, #41a6f6 0%, #425be0 100%); }\n\n.product-sales .c3-shape {\n  stroke: transparent !important;\n  stroke-width: 3px; }\n\n/*******************\nEarnings\n*******************/\n.earnings {\n  position: relative;\n  height: 250px; }\n  .earnings .ct-series-a .ct-area {\n    fill-opacity: 0.2;\n    fill: url(#gradient); }\n  .earnings .ct-series-a .ct-line,\n  .earnings .ct-series-a .ct-point {\n    stroke: #2962FF;\n    stroke-width: 2px; }\n  .earnings .ct-series-b .ct-area {\n    fill: #4fc3f7;\n    fill-opacity: 0.1; }\n  .earnings .ct-series-b .ct-line,\n  .earnings .ct-series-b .ct-point {\n    stroke: #4fc3f7;\n    stroke-width: 2px; }\n  .earnings .ct-series-a .ct-point,\n  .earnings .ct-series-b .ct-point {\n    stroke-width: 6px; }\n\n.ct-grid {\n  stroke-width: 0.3px;\n  stroke-dasharray: 0px; }\n\n.ct-series-a .ct-bar {\n  stroke: #2962FF; }\n\n@media (max-width: 1023px) {\n  .gredient-info-bg .info {\n    margin-top: 15px; } }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n.ct-series-a .ct-bar {\n  stroke: #2962FF; }\n\n.ct-series-b .ct-bar {\n  stroke: #4fc3f7; }\n\n@media (max-width: 767px) {\n  .ct-bar {\n    stroke-width: 10px !important; } }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n.auth-wrapper {\n  min-height: 100vh;\n  position: relative; }\n  .auth-wrapper .auth-box {\n    background: #fff;\n    padding: 20px;\n    -webkit-box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n    box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n    max-width: 400px;\n    width: 90%;\n    margin: 10% 0; }\n    .auth-wrapper .auth-box .logo {\n      text-align: center; }\n    .auth-wrapper .auth-box.on-sidebar {\n      top: 0px;\n      right: 0px;\n      height: 100%;\n      margin: 0px;\n      position: absolute; }\n  .auth-wrapper #recoverform {\n    display: none; }\n  .auth-wrapper .auth-sidebar {\n    position: fixed;\n    height: 100%;\n    right: 0px;\n    overflow: auto;\n    margin: 0px;\n    top: 0px; }\n\n@media (max-width: 767px) {\n  .auth-wrapper .auth-sidebar {\n    position: relative;\n    max-width: 100%;\n    width: 100%;\n    margin: 40px 0 60px; }\n  .auth-wrapper .demo-text {\n    margin-top: 30px; } }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n.email-app {\n  position: relative; }\n  .email-app .list-group .list-group-item {\n    padding: 0px;\n    background: transparent;\n    border: none; }\n    .email-app .list-group .list-group-item .list-group-item-action {\n      padding: 12px 15px;\n      display: block;\n      color: #3e5569; }\n      .email-app .list-group .list-group-item .list-group-item-action .mdi {\n        font-size: 18px;\n        vertical-align: middle;\n        margin-right: 5px; }\n      .email-app .list-group .list-group-item .list-group-item-action:hover, .email-app .list-group .list-group-item .list-group-item-action.active {\n        background: rgba(0, 0, 0, 0.03); }\n  .email-app .email-table {\n    table-layout: fixed; }\n    .email-app .email-table .selected {\n      background: #fff8e1; }\n    .email-app .email-table .max-texts,\n    .email-app .email-table .user-name h6 {\n      white-space: nowrap;\n      overflow: hidden;\n      -o-text-overflow: ellipsis;\n      text-overflow: ellipsis; }\n    .email-app .email-table .max-texts {\n      padding: 1rem 5px; }\n    .email-app .email-table .chb {\n      width: 50px; }\n    .email-app .email-table .time {\n      width: 100px;\n      text-align: right; }\n    .email-app .email-table .starred,\n    .email-app .email-table .clip {\n      width: 25px;\n      padding: 1rem 5px; }\n    .email-app .email-table .user-image {\n      width: 45px;\n      padding: 1rem 5px; }\n    .email-app .email-table .user-name {\n      width: 130px;\n      padding: 1rem 5px; }\n      .email-app .email-table .user-name .m-b-0 {\n        font-weight: 300; }\n    .email-app .email-table .unread .m-b-0,\n    .email-app .email-table .unread .max-texts {\n      font-weight: 600; }\n\n@media (max-width: 767px) {\n  .email-table {\n    min-width: 500px; } }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n.lobilists .lobilist {\n  -webkit-box-shadow: none;\n  box-shadow: none; }\n\n.lobilists .lobilist.lobilist-primary {\n  border-color: #e9ecef; }\n  .lobilists .lobilist.lobilist-primary .lobilist-header,\n  .lobilists .lobilist.lobilist-primary .lobilist-footer,\n  .lobilists .lobilist.lobilist-primary .lobilist-form-footer {\n    border-color: #7460ee;\n    background-color: #7460ee; }\n\n.lobilists .lobilist.lobilist-danger {\n  border-color: #e9ecef; }\n  .lobilists .lobilist.lobilist-danger .lobilist-header,\n  .lobilists .lobilist.lobilist-danger .lobilist-footer,\n  .lobilists .lobilist.lobilist-danger .lobilist-form-footer {\n    border-color: #f62d51;\n    background-color: #f62d51; }\n\n.lobilists .lobilist.lobilist-info {\n  border-color: #e9ecef; }\n  .lobilists .lobilist.lobilist-info .lobilist-header,\n  .lobilists .lobilist.lobilist-info .lobilist-footer,\n  .lobilists .lobilist.lobilist-info .lobilist-form-footer {\n    border-color: #2962FF;\n    background-color: #2962FF; }\n\n.lobilists .lobilist.lobilist-success {\n  border-color: #e9ecef; }\n  .lobilists .lobilist.lobilist-success .lobilist-header,\n  .lobilists .lobilist.lobilist-success .lobilist-footer {\n    border-color: #36bea6;\n    background-color: #36bea6; }\n\n.lobilists .lobilist-footer,\n.lobilists .lobilist-form-footer {\n  border-color: #e9ecef !important;\n  background: rgba(0, 0, 0, 0.02) !important; }\n\n.lobilists .btn-link {\n  background: transparent;\n  border: 0;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n  color: #343a40 !important; }\n\n.lobilists.single-line {\n  height: 500px; }\n\n.lobilist,\n.lobilists {\n  position: relative; }\n\n.lobilists [type=\"checkbox\"]:not(:checked),\n.lobilists [type=\"checkbox\"]:checked {\n  opacity: 1;\n  position: relative; }\n\n.lobilists .lobilist-item {\n  margin-bottom: 16px;\n  padding-top: 5px; }\n\n.lobilists .lobilist-item-title {\n  color: #343a40; }\n\n.lobilists .lobilist-item-description {\n  font-style: normal;\n  font-size: 13px; }\n\n.lobilists .lobilist-check {\n  top: 10px; }\n\n.lobilists .lobilist-item-duedate {\n  position: relative;\n  font-size: 12px;\n  left: 0px; }\n\n.lobilists .lobilist-actions {\n  top: 0px; }\n\n.lobilist-actions .btn i {\n  font-size: 15px;\n  vertical-align: middle; }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n.twitter-typeahead {\n  width: 100%; }\n\n.twitter-typeahead .tt-menu {\n  width: 100%;\n  background: #fff;\n  border: 1px solid #f8f9fa;\n  border-radius: 5px;\n  padding: .75rem 0; }\n\n.twitter-typeahead .tt-menu .tt-suggestion {\n  padding: .25rem .75rem;\n  cursor: pointer; }\n\n.twitter-typeahead .tt-menu .tt-suggestion:hover {\n  background-color: #7460ee;\n  color: #fff; }\n\n.twitter-typeahead .empty-message {\n  padding: 5px 10px;\n  text-align: center; }\n\n.twitter-typeahead .rtl-typeahead .tt-menu {\n  text-align: right; }\n\n.twitter-typeahead .league-name {\n  margin: 0 10px 5px;\n  padding: 7px 5px 10px;\n  border-bottom: 1px solid #e9ecef; }\n\n.scrollable-dropdown .twitter-typeahead .tt-menu {\n  max-height: 80px;\n  overflow-y: auto; }\n\n.bootstrap-maxlength {\n  margin-top: .5rem; }\n\n/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n/*******************\nUser card page\n******************/\n.el-element-overlay .white-box {\n  padding: 0px; }\n\n.el-element-overlay .el-card-item {\n  position: relative;\n  padding-bottom: 20px; }\n  .el-element-overlay .el-card-item .el-card-avatar {\n    margin-bottom: 20px; }\n  .el-element-overlay .el-card-item .el-card-content {\n    text-align: center; }\n  .el-element-overlay .el-card-item .el-overlay-1 {\n    width: 100%;\n    overflow: hidden;\n    position: relative;\n    text-align: center;\n    cursor: default; }\n    .el-element-overlay .el-card-item .el-overlay-1 img {\n      display: block;\n      position: relative;\n      -webkit-transition: all .4s linear;\n      -o-transition: all .4s linear;\n      transition: all .4s linear;\n      width: 100%;\n      height: auto; }\n    .el-element-overlay .el-card-item .el-overlay-1:hover img {\n      -ms-transform: scale(1.2) translateZ(0);\n      -webkit-transform: scale(1.2) translateZ(0);\n      /* transform: scale(1.2) translateZ(0); */ }\n    .el-element-overlay .el-card-item .el-overlay-1 .el-info {\n      text-decoration: none;\n      display: inline-block;\n      text-transform: uppercase;\n      color: #fff;\n      background-color: transparent;\n      filter: alpha(opacity=0);\n      -webkit-transition: all .2s ease-in-out;\n      -o-transition: all .2s ease-in-out;\n      transition: all .2s ease-in-out;\n      padding: 0;\n      margin: auto;\n      position: absolute;\n      top: 50%;\n      left: 0;\n      right: 0;\n      transform: translateY(-50%) translateZ(0);\n      -webkit-transform: translateY(-50%) translateZ(0);\n      -ms-transform: translateY(-50%) translateZ(0); }\n      .el-element-overlay .el-card-item .el-overlay-1 .el-info .el-item {\n        list-style: none;\n        display: inline-block;\n        margin: 0 3px; }\n        .el-element-overlay .el-card-item .el-overlay-1 .el-info .el-item .el-link {\n          border-color: #fff;\n          color: #fff;\n          padding: 12px 15px 10px; }\n          .el-element-overlay .el-card-item .el-overlay-1 .el-info .el-item .el-link:hover {\n            background: #2962FF;\n            border-color: #2962FF; }\n  .el-element-overlay .el-card-item .el-overlay {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    overflow: hidden;\n    top: 0;\n    left: 0;\n    opacity: 0;\n    background-color: rgba(0, 0, 0, 0.7);\n    -webkit-transition: all .4s ease-in-out;\n    -o-transition: all .4s ease-in-out;\n    transition: all .4s ease-in-out; }\n  .el-element-overlay .el-card-item .el-overlay-1:hover .el-overlay {\n    opacity: 1;\n    filter: alpha(opacity=100);\n    -webkit-transform: translateZ(0);\n    -ms-transform: translateZ(0);\n    transform: translateZ(0); }\n  .el-element-overlay .el-card-item .el-overlay-1 .scrl-dwn {\n    top: -100%; }\n  .el-element-overlay .el-card-item .el-overlay-1 .scrl-up {\n    top: 100%;\n    height: 0px; }\n  .el-element-overlay .el-card-item .el-overlay-1:hover .scrl-dwn {\n    top: 0px; }\n  .el-element-overlay .el-card-item .el-overlay-1:hover .scrl-up {\n    top: 0px;\n    height: 100%; }\n\n/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n/*******************\ngoogle map Page\n******************/\n.gmaps, .gmaps-panaroma {\n  height: 300px; }\n\n.gmaps, .gmaps-panaroma {\n  height: 300px;\n  background: #e9ecef;\n  border-radius: 2px; }\n\n.gmaps-overlay {\n  display: block;\n  text-align: center;\n  color: #fff;\n  font-size: 16px;\n  line-height: 40px;\n  background: #2962FF;\n  border-radius: 4px;\n  padding: 10px 20px; }\n\n.gmaps-overlay_arrow {\n  left: 50%;\n  margin-left: -16px;\n  width: 0;\n  height: 0;\n  position: absolute; }\n\n.gmaps-overlay_arrow.above {\n  bottom: -15px;\n  border-left: 16px solid transparent;\n  border-right: 16px solid transparent;\n  border-top: 16px solid #2962FF; }\n\n.gmaps-overlay_arrow.below {\n  top: -15px;\n  border-left: 16px solid transparent;\n  border-right: 16px solid transparent;\n  border-bottom: 16px solid #2962FF; }\n\n/*******************\nvector map Page\n******************/\n.jvectormap-zoomin, .jvectormap-zoomout {\n  width: 10px;\n  height: 10px;\n  line-height: 10px; }\n\n.jvectormap-zoomout {\n  top: 40px; }\n\n/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n/*******************\nTimeline page\n******************/\n.timeline {\n  position: relative;\n  padding: 20px 0 20px;\n  list-style: none;\n  max-width: 1200px;\n  margin: 0 auto; }\n\n.timeline:before {\n  content: \" \";\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 50%;\n  width: 3px;\n  margin-left: -1.5px;\n  background-color: #e9ecef; }\n\n.timeline > .timeline-item {\n  position: relative;\n  margin-bottom: 20px; }\n\n.timeline > .timeline-item:before,\n.timeline > .timeline-item:after {\n  content: \" \";\n  display: table; }\n\n.timeline > .timeline-item:after {\n  clear: both; }\n\n.timeline > .timeline-item > .timeline-panel {\n  float: left;\n  position: relative;\n  width: 46%;\n  padding: 20px;\n  border: 1px solid #e9ecef;\n  border-radius: 2px;\n  -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.05); }\n\n.timeline > .timeline-item > .timeline-panel:before {\n  content: \" \";\n  display: inline-block;\n  position: absolute;\n  top: 26px;\n  right: -8px;\n  border-top: 8px solid transparent;\n  border-right: 0 solid #e9ecef;\n  border-bottom: 8px solid transparent;\n  border-left: 8px solid #e9ecef; }\n\n.timeline > .timeline-item > .timeline-panel:after {\n  content: \" \";\n  display: inline-block;\n  position: absolute;\n  top: 27px;\n  right: -7px;\n  border-top: 7px solid transparent;\n  border-right: 0 solid #fff;\n  border-bottom: 7px solid transparent;\n  border-left: 7px solid #fff; }\n\n.timeline > .timeline-item > .timeline-badge {\n  z-index: 10;\n  position: absolute;\n  top: 16px;\n  left: 50%;\n  width: 50px;\n  height: 50px;\n  margin-left: -25px;\n  border-radius: 50% 50% 50% 50%;\n  text-align: center;\n  font-size: 1.4em;\n  line-height: 50px;\n  color: #fff;\n  overflow: hidden; }\n\n.timeline > .timeline-item.timeline-inverted > .timeline-panel {\n  float: right; }\n\n.timeline > .timeline-item.timeline-inverted > .timeline-panel:before {\n  right: auto;\n  left: -8px;\n  border-right-width: 8px;\n  border-left-width: 0; }\n\n.timeline > .timeline-item.timeline-inverted > .timeline-panel:after {\n  right: auto;\n  left: -7px;\n  border-right-width: 7px;\n  border-left-width: 0; }\n\n.timeline-badge.primary {\n  background-color: #7460ee; }\n\n.timeline-badge.success {\n  background-color: #36bea6; }\n\n.timeline-badge.warning {\n  background-color: #ffbc34; }\n\n.timeline-badge.danger {\n  background-color: #f62d51; }\n\n.timeline-badge.info {\n  background-color: #2962FF; }\n\n.timeline-title {\n  margin-top: 0;\n  color: inherit;\n  font-weight: 400; }\n\n.timeline-body > p,\n.timeline-body > ul {\n  margin-bottom: 0; }\n\n.timeline-left:before {\n  left: 30px; }\n\n.timeline-left > .timeline-item > .timeline-badge {\n  left: 30px;\n  top: 9px; }\n\n.timeline-left > .timeline-item > .timeline-panel {\n  width: calc(100% - 80px); }\n\n.timeline-right:before {\n  right: 30px;\n  left: auto; }\n\n.timeline-right > .timeline-item > .timeline-badge {\n  right: 5px;\n  top: 9px;\n  left: auto; }\n\n.timeline-right > .timeline-item > .timeline-panel {\n  width: calc(100% - 80px); }\n\n/*******************\nHorizontal Timeline page\n******************/\n.cd-horizontal-timeline .events a {\n  padding-bottom: 6px;\n  color: #2962FF; }\n\n.cd-horizontal-timeline .filling-line,\n.cd-horizontal-timeline .events a.selected::after {\n  background: #2962FF; }\n\n.cd-horizontal-timeline .events a.selected::after {\n  border-color: #2962FF; }\n\n.cd-horizontal-timeline .m-t-40 {\n  margin-top: 40px !important; }\n\n/*******************************/\n/*******************************/\n/*Theme Colors*/\n/*Topbar Colors*/\n/*Sidebar Colors*/\n/*Boxed layout width*/\n/*Shadow*/\n/*transitions*/\n/*Dark transparent bg*/\n.search-box .app-search .form-control, .topbar .mega-dropdown .dropdown-menu {\n  border-radius: 0px; }\n\n.topbar .dropdown-menu .with-arrow > span {\n  transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -moz-transform: rotate(45deg); }\n\n/*******************************/\n/*******************************/\n/**\n * Table Of Content\n *\n *  1. Color system\n *  2. Options\n *  3. Body\n *  4. Typography\n *  5. Breadcrumbs\n *  6. Cards\n *  7. Dropdowns\n *  8. Buttons\n *  9. Typography\n *  10. Progress bars\n *  11. Tables\n *  12. Forms\n *  14. Component\n */\n.dd {\n  position: relative;\n  display: block;\n  margin: 0;\n  padding: 0;\n  max-width: 600px;\n  list-style: none;\n  font-size: 13px;\n  line-height: 20px; }\n\n.dd-list {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: 0;\n  list-style: none; }\n\n.dd-list .dd-list {\n  padding-left: 30px; }\n\n.dd-collapsed .dd-list {\n  display: none; }\n\n.dd-item,\n.dd-empty,\n.dd-placeholder {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: 0;\n  min-height: 20px;\n  font-size: 13px;\n  line-height: 20px; }\n\n.dd-handle {\n  display: block;\n  height: 30px;\n  margin: 5px 0;\n  padding: 5px 10px;\n  cursor: move;\n  color: #979898;\n  text-decoration: none;\n  font-weight: bold;\n  border: 1px solid #e5e5e5;\n  background: #fafafa;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box; }\n\n.dd-handle:hover {\n  color: #317eeb;\n  background: #fff; }\n\n.dd-item > button {\n  display: block;\n  position: relative;\n  cursor: pointer;\n  float: left;\n  width: 25px;\n  height: 20px;\n  margin: 5px 0;\n  padding: 0;\n  text-indent: 100%;\n  white-space: nowrap;\n  overflow: hidden;\n  border: 0;\n  background: transparent;\n  font-size: 12px;\n  line-height: 1;\n  text-align: center;\n  font-weight: bold; }\n\n.dd-item > button:before {\n  content: '+';\n  display: block;\n  position: absolute;\n  width: 100%;\n  text-align: center;\n  text-indent: 0; }\n\n.dd-item > button[data-action=\"collapse\"]:before {\n  content: '-'; }\n\n.dd-placeholder,\n.dd-empty {\n  margin: 5px 0;\n  padding: 0;\n  min-height: 30px;\n  background: #f5f5f5;\n  border: 1px dashed #b6bcbf;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box; }\n\n.dd-empty {\n  border: 1px dashed #bbb;\n  min-height: 100px;\n  background-color: #e5e5e5;\n  background-size: 60px 60px;\n  background-position: 0 0, 30px 30px; }\n\n.dd-dragel {\n  position: absolute;\n  pointer-events: none;\n  z-index: 9999; }\n\n.dd-dragel > .dd-item .dd-handle {\n  margin-top: 0; }\n\n.dd-dragel .dd-handle {\n  -webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1);\n  box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); }\n\n.dd3-content {\n  display: block;\n  height: 30px;\n  margin: 5px 0;\n  padding: 5px 10px 5px 40px;\n  color: #979898;\n  text-decoration: none;\n  font-weight: bold;\n  border: 1px solid #e5e5e5;\n  background: #fafafa;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  -moz-box-sizing: border-box; }\n\n.dd3-content:hover {\n  color: #317eeb;\n  background: #fff; }\n\n.dd-dragel > .dd3-item > .dd3-content {\n  margin: 0; }\n\n.dd3-item > button {\n  margin-left: 30px; }\n\n.dd3-handle {\n  position: absolute;\n  margin: 0;\n  left: 0;\n  top: 0;\n  cursor: pointer;\n  width: 30px;\n  text-indent: 100%;\n  white-space: nowrap;\n  overflow: hidden;\n  border: 1px solid #ccc;\n  background: #d5d5d5;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.dd3-handle:before {\n  content: \"\\f0c9\";\n  font-family: FontAwesome;\n  display: block;\n  position: absolute;\n  left: 0;\n  top: 3px;\n  width: 100%;\n  text-align: center;\n  text-indent: 0;\n  color: #fff;\n  font-size: 14px;\n  font-weight: normal; }\n\n.dd3-handle:hover {\n  background: #404040;\n  border: 1px solid #404040; }\n\n.myadmin-dd .dd-list .dd-item .dd-handle {\n  background: #ffffff;\n  border: 1px solid rgba(120, 130, 140, 0.13);\n  padding: 8px 16px;\n  height: auto;\n  font-family: \"Montserrat\", sans-serif;\n  font-weight: 400;\n  border-radius: 0; }\n\n.myadmin-dd-empty .dd-list .dd3-content {\n  height: auto;\n  border: 1px solid rgba(120, 130, 140, 0.13);\n  padding: 8px 16px 8px 46px;\n  background: #ffffff;\n  font-weight: 400; }\n\n.myadmin-dd-empty .dd-list .dd3-handle {\n  border: 1px solid rgba(120, 130, 140, 0.13);\n  border-bottom: 0;\n  background: #ffffff;\n  height: 36px;\n  width: 36px; }\n\n.dd3-handle:before {\n  color: #67757c;\n  top: 7px; }\n\n/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n/*******************\n/*User mail widgets*/\n/*******************/\n.mailbox .drop-title {\n  font-weight: 600;\n  padding: 11px 20px 15px;\n  border-radius: 2px 2px 0 0;\n  position: relative; }\n  .mailbox .drop-title:after {\n    content: \"\";\n    position: absolute;\n    background: url(../../assets/images/background/img5.png) no-repeat;\n    opacity: 0.2;\n    top: 0px;\n    left: 0px;\n    height: 100%;\n    width: 100%;\n    background-size: cover; }\n\n.mailbox .nav-link {\n  border-top: 1px solid #e9ecef;\n  padding-top: 15px;\n  color: #3e5569; }\n\n.mailbox .message-center {\n  height: 317px;\n  overflow: auto;\n  position: relative; }\n  .mailbox .message-center .message-item {\n    border-bottom: 1px solid #e9ecef;\n    display: block;\n    text-decoration: none;\n    padding: 9px 15px; }\n    .mailbox .message-center .message-item:hover {\n      background: #f8f9fa; }\n    .mailbox .message-center .message-item .message-title {\n      color: #212529; }\n    .mailbox .message-center .message-item .user-img {\n      width: 40px;\n      position: relative;\n      display: inline-block;\n      margin: 0 0px 15px 0; }\n      .mailbox .message-center .message-item .user-img img {\n        width: 100%; }\n      .mailbox .message-center .message-item .user-img .profile-status {\n        border: 2px solid #fff;\n        border-radius: 50%;\n        display: inline-block;\n        height: 10px;\n        left: 30px;\n        position: absolute;\n        top: 1px;\n        width: 10px; }\n      .mailbox .message-center .message-item .user-img .online {\n        background: #36bea6; }\n      .mailbox .message-center .message-item .user-img .busy {\n        background: #f62d51; }\n      .mailbox .message-center .message-item .user-img .away {\n        background: #ffbc34; }\n      .mailbox .message-center .message-item .user-img .offline {\n        background: #ffbc34; }\n    .mailbox .message-center .message-item .mail-contnet {\n      display: inline-block;\n      width: 75%;\n      padding-left: 10px;\n      vertical-align: middle; }\n      .mailbox .message-center .message-item .mail-contnet .message-title {\n        margin: 5px 0px 0; }\n      .mailbox .message-center .message-item .mail-contnet .mail-desc,\n      .mailbox .message-center .message-item .mail-contnet .time {\n        font-size: 12px;\n        display: block;\n        margin: 1px 0;\n        -o-text-overflow: ellipsis;\n        text-overflow: ellipsis;\n        overflow: hidden;\n        color: #a1aab2;\n        white-space: nowrap; }\n\n/*******************/\n/*Comment widgets*/\n/*******************/\n.comment-widgets {\n  position: relative;\n  margin-bottom: 10px; }\n  .comment-widgets .comment-row {\n    border-bottom: 1px solid transparent;\n    padding: 14px;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    margin: 10px 0; }\n    .comment-widgets .comment-row:last-child {\n      border-bottom: 0px; }\n    .comment-widgets .comment-row:hover, .comment-widgets .comment-row.active {\n      background: rgba(0, 0, 0, 0.05); }\n\n.comment-text {\n  padding-left: 15px;\n  width: 100%; }\n  .comment-text:hover .comment-footer .action-icons,\n  .comment-text.active .comment-footer .action-icons {\n    visibility: visible; }\n  .comment-text p {\n    max-height: 65px;\n    width: 100%;\n    overflow: hidden; }\n\n.comment-footer .action-icons {\n  visibility: hidden; }\n  .comment-footer .action-icons a {\n    padding-left: 7px;\n    vertical-align: middle;\n    color: #a1aab2; }\n    .comment-footer .action-icons a:hover, .comment-footer .action-icons a.active {\n      color: #2962FF; }\n\n/*******************/\n/*Chat widget*/\n/*******************/\n.chat-box {\n  overflow: auto; }\n\n.chat-list {\n  margin: 0px;\n  padding: 0px; }\n  .chat-list .chat-item {\n    list-style: none;\n    margin-top: 30px; }\n    .chat-list .chat-item .chat-img {\n      display: inline-block;\n      width: 45px;\n      vertical-align: top; }\n      .chat-list .chat-item .chat-img img {\n        width: 45px;\n        border-radius: 100%; }\n    .chat-list .chat-item .chat-content {\n      width: calc(100% - 50px);\n      display: inline-block;\n      padding-left: 15px; }\n      .chat-list .chat-item .chat-content .box {\n        display: inline-block;\n        padding: 10px;\n        margin-bottom: 3px;\n        color: #343a40;\n        background: #f8f9fa; }\n    .chat-list .chat-item .chat-time {\n      display: block;\n      font-size: 10px;\n      color: #4F5467;\n      margin: 5px 0 15px 65px; }\n    .chat-list .chat-item.odd .chat-content {\n      text-align: right;\n      width: calc(100% - 0px); }\n    .chat-list .chat-item.odd .chat-time {\n      text-align: right; }\n    .chat-list .chat-item.odd .box {\n      clear: both;\n      color: #fff;\n      background: #2962FF; }\n    .chat-list .chat-item.odd + .odd {\n      margin-top: 0px; }\n    .chat-list .chat-item.reverse {\n      text-align: right; }\n      .chat-list .chat-item.reverse .chat-time {\n        text-align: left; }\n      .chat-list .chat-item.reverse .chat-content {\n        padding-left: 0px;\n        padding-right: 15px; }\n\n/*******************/\n/*Chat widget*/\n/*******************/\n.chat-windows {\n  position: fixed;\n  bottom: 0px;\n  right: 300px;\n  height: 350px;\n  max-height: 350px;\n  z-index: 9999;\n  -webkit-transition: 600ms;\n  -o-transition: 600ms;\n  transition: 600ms; }\n  .chat-windows.show-chat {\n    bottom: 0px; }\n  .chat-windows.hide-chat {\n    bottom: -350px; }\n  .chat-windows .user-chat {\n    min-width: 300px;\n    min-height: 350px;\n    background-color: #fff;\n    -webkit-box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n    box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);\n    float: right;\n    margin: 0 2px 0 0; }\n    .chat-windows .user-chat.mini-chat {\n      min-width: 40px;\n      min-height: 40px;\n      bottom: 0px;\n      top: 310px;\n      position: relative; }\n      .chat-windows .user-chat.mini-chat .chat-head .name,\n      .chat-windows .user-chat.mini-chat .chat-head i,\n      .chat-windows .user-chat.mini-chat .chat-footer,\n      .chat-windows .user-chat.mini-chat .chat-body {\n        display: none; }\n      .chat-windows .user-chat.mini-chat .chat-head img {\n        margin: 0; }\n      .chat-windows .user-chat.mini-chat .chat-head .status {\n        left: 28px;\n        top: 10px; }\n    .chat-windows .user-chat .chat-head {\n      height: 40px;\n      padding: 10px;\n      background-color: #2962FF;\n      color: #fff;\n      position: relative; }\n      .chat-windows .user-chat .chat-head img {\n        border-radius: 50%;\n        height: 25px;\n        width: 25px;\n        vertical-align: middle;\n        margin: -4px 8px 0 0;\n        display: inline-block;\n        cursor: pointer; }\n      .chat-windows .user-chat .chat-head .status {\n        border: 1px solid #fff;\n        border-radius: 50%;\n        position: absolute;\n        height: 8px;\n        width: 8px;\n        left: 28px;\n        top: 7px; }\n      .chat-windows .user-chat .chat-head .online {\n        background-color: #36bea6; }\n      .chat-windows .user-chat .chat-head .busy {\n        background-color: #f62d51; }\n      .chat-windows .user-chat .chat-head .away {\n        background-color: #fb8c00; }\n      .chat-windows .user-chat .chat-head .offline {\n        background-color: #ffbc34; }\n      .chat-windows .user-chat .chat-head i {\n        font-size: 14px;\n        float: right;\n        color: #fff;\n        margin: 3px 0 0 5px;\n        cursor: pointer; }\n    .chat-windows .user-chat .chat-footer {\n      padding: 0px;\n      border-top: 1px solid #e9ecef; }\n      .chat-windows .user-chat .chat-footer .form-control {\n        background-color: transparent;\n        color: #3e5569;\n        font-size: 14px;\n        border: 0px;\n        width: 100%;\n        height: 40px; }\n        .chat-windows .user-chat .chat-footer .form-control:focus, .chat-windows .user-chat .chat-footer .form-control:hover {\n          border: 0px; }\n    .chat-windows .user-chat .chat-body {\n      height: 270px;\n      padding: 15px 15px 0;\n      background-color: #eef5f9;\n      overflow: hidden;\n      max-width: 300px;\n      position: relative; }\n\n.chat-list {\n  margin: 0px;\n  padding: 0px; }\n  .chat-list .msg_receive, .chat-list .msg_sent {\n    list-style: none;\n    margin-top: 30px; }\n    .chat-list .msg_receive .chat-img, .chat-list .msg_sent .chat-img {\n      display: inline-block;\n      width: 45px;\n      vertical-align: top; }\n      .chat-list .msg_receive .chat-img img, .chat-list .msg_sent .chat-img img {\n        width: 100%;\n        border-radius: 100%; }\n    .chat-list .msg_receive .chat-content, .chat-list .msg_sent .chat-content {\n      width: calc(100% - 50px);\n      display: inline-block;\n      padding-left: 15px; }\n      .chat-list .msg_receive .chat-content .box, .chat-list .msg_sent .chat-content .box {\n        display: inline-block;\n        padding: 10px;\n        margin-bottom: 3px;\n        background: #fff; }\n    .chat-list .msg_receive .chat-time, .chat-list .msg_sent .chat-time {\n      display: block;\n      font-size: 10px;\n      color: #a1aab2;\n      margin: 5px 0 15px 15px; }\n    .chat-list .msg_receive.odd .chat-content, .chat-list .msg_sent.odd .chat-content {\n      text-align: right;\n      width: calc(100% - 0px); }\n      .chat-list .msg_receive.odd .chat-content .box, .chat-list .msg_sent.odd .chat-content .box {\n        clear: both;\n        color: #fff;\n        background: #2962FF; }\n    .chat-list .msg_receive.odd .chat-time, .chat-list .msg_receive .reverse, .chat-list .msg_sent.odd .chat-time, .chat-list .msg_sent .reverse {\n      text-align: right; }\n    .chat-list .msg_receive.odd + .odd, .chat-list .msg_sent.odd + .odd {\n      margin-top: 0px; }\n    .chat-list .msg_receive.reverse .chat-content, .chat-list .msg_sent.reverse .chat-content {\n      padding-left: 0px;\n      padding-right: 15px; }\n    .chat-list .msg_receive.reverse .chat-time, .chat-list .msg_sent.reverse .chat-time {\n      text-align: left; }\n\n.mailbox .chat-scroll {\n  height: calc(100vh - 100px); }\n\n/*******************/\n/*Steam line widget*/\n/*******************/\n.steamline {\n  position: relative;\n  border-left: 1px solid #e9ecef;\n  margin-left: 20px; }\n  .steamline .sl-left {\n    float: left;\n    margin-left: -20px;\n    z-index: 1;\n    width: 40px;\n    line-height: 40px;\n    text-align: center;\n    height: 40px;\n    border-radius: 100%;\n    color: #fff;\n    margin-right: 15px; }\n    .steamline .sl-left img {\n      max-width: 40px; }\n\n.steamline .sl-right {\n  padding-left: 30px; }\n  .steamline .sl-right .desc,\n  .steamline .sl-right .inline-photos {\n    margin-bottom: 21px; }\n\n.steamline .sl-item {\n  border-bottom: 1px solid #e9ecef;\n  margin: 20px 0; }\n  .steamline .sl-item:last-child {\n    border-bottom: none; }\n\n.sl-date {\n  font-size: 10px;\n  color: #a1aab2; }\n\n.time-item {\n  border-color: #e9ecef;\n  padding-bottom: 1px;\n  position: relative; }\n  .time-item:before {\n    content: \" \";\n    display: table; }\n  .time-item:after {\n    background-color: #fff;\n    border-color: #e9ecef;\n    border-radius: 10px;\n    border-style: solid;\n    border-width: 2px;\n    bottom: 0;\n    content: '';\n    height: 14px;\n    left: 0;\n    margin-left: -8px;\n    position: absolute;\n    top: 5px;\n    width: 14px; }\n\n.time-item-item:after {\n  content: \" \";\n  display: table; }\n\n.item-info {\n  margin-bottom: 15px;\n  margin-left: 15px; }\n  .item-info p {\n    margin-bottom: 10px !important; }\n\n.feed-widget .feed-body .feed-item {\n  padding: 12px 0;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -ms-flex-align: center;\n  align-items: center; }\n  .feed-widget .feed-body .feed-item:hover {\n    background: #f8f9fa; }\n  .feed-widget .feed-body .feed-item > .feed-icon {\n    width: 40px;\n    height: 40px;\n    margin-right: 10px;\n    display: inline-block;\n    text-align: center;\n    vertical-align: middle;\n    border-radius: 100%;\n    color: #fff; }\n    .feed-widget .feed-body .feed-item > .feed-icon i {\n      line-height: 40px; }\n\n.todo-widget .todo-list .todo-item {\n  border: 0px;\n  margin-bottom: 0px;\n  padding: 20px 15px 15px 0px; }\n  .todo-widget .todo-list .todo-item .custom-checkbox {\n    width: 100%; }\n    .todo-widget .todo-list .todo-item .custom-checkbox .todo-label {\n      font-weight: 400;\n      width: 100%; }\n  .todo-widget .todo-list .todo-item .assignedto {\n    padding: 0 0 0 25px;\n    margin: 0px; }\n    .todo-widget .todo-list .todo-item .assignedto .assignee {\n      padding: 0px;\n      display: inline-block;\n      border: 0px;\n      margin-right: 2px; }\n      .todo-widget .todo-list .todo-item .assignedto .assignee .assignee-img {\n        width: 30px;\n        border-radius: 100%; }\n  .todo-widget .todo-list .todo-item .item-date {\n    padding-left: 25px;\n    font-size: 12px;\n    margin-top: 5px;\n    display: inline-block;\n    color: #a1aab2; }\n\n.list-task .task-done .todo-desc,\n.list-task .task-done .badge {\n  text-decoration: line-through; }\n\n.profiletimeline {\n  position: relative;\n  padding-left: 40px;\n  margin: 40px 10px 0 30px;\n  border-left: 1px solid #e9ecef; }\n  .profiletimeline .sl-left {\n    float: left;\n    margin-left: -60px;\n    z-index: 1;\n    margin-right: 15px; }\n    .profiletimeline .sl-left img {\n      max-width: 40px; }\n\n.profiletimeline .sl-item {\n  margin-top: 8px;\n  margin-bottom: 30px; }\n\n.profiletimeline .sl-date {\n  font-size: 12px;\n  color: #a1aab2; }\n\n/*\nTemplate Name: Admin Template\nAuthor: Niravjoshi / Wrappixel\nFile: scss\n*/\n#main-wrapper[data-layout=\"horizontal\"] {\n  /****************************\n    This is for the fixed header layout\n    ***************************/\n  /****************************\n    This is for the fixed sidebar layout\n    ***************************/ }\n  #main-wrapper[data-layout=\"horizontal\"][data-header-position=\"fixed\"] .topbar {\n    position: fixed;\n    width: 100%; }\n  #main-wrapper[data-layout=\"horizontal\"][data-header-position=\"fixed\"] .left-sidebar {\n    padding-top: 64px; }\n  #main-wrapper[data-layout=\"horizontal\"][data-sidebar-position=\"fixed\"] .topbar {\n    position: fixed;\n    width: 100%; }\n  #main-wrapper[data-layout=\"horizontal\"][data-sidebar-position=\"fixed\"] .left-sidebar {\n    padding-top: 64px;\n    position: fixed; }\n  #main-wrapper[data-layout=\"horizontal\"][data-sidebar-position=\"fixed\"] .page-wrapper {\n    padding-top: 78px; }\n\n/****************************\nThis is for the horizontal layout\n***************************/\n@media (min-width: 768px) {\n  #main-wrapper[data-layout=\"horizontal\"] {\n    background: #eef5f9;\n    /****************************\n        This is for the Boxed horizontal layout\n        ***************************/\n    /****************************\n        This is for the horizontal layout\n        ***************************/ }\n    #main-wrapper[data-layout=\"horizontal\"] .topbar {\n      -webkit-transition: 0s;\n      -o-transition: 0s;\n      transition: 0s; }\n    #main-wrapper[data-layout=\"horizontal\"][data-boxed-layout=\"boxed\"] .top-navbar, #main-wrapper[data-layout=\"horizontal\"][data-boxed-layout=\"boxed\"] .scroll-sidebar, #main-wrapper[data-layout=\"horizontal\"][data-boxed-layout=\"boxed\"] .page-wrapper {\n      max-width: 1200px;\n      margin: 0 auto;\n      position: relative; }\n    #main-wrapper[data-layout=\"horizontal\"][data-boxed-layout=\"boxed\"] .sidebar-nav #sidebarnav {\n      -ms-flex-wrap: wrap;\n      flex-wrap: wrap; }\n      #main-wrapper[data-layout=\"horizontal\"][data-boxed-layout=\"boxed\"] .sidebar-nav #sidebarnav > .sidebar-item > .has-arrow:after {\n        display: block; }\n    #main-wrapper[data-layout=\"horizontal\"][data-boxed-layout=\"boxed\"] .sidebar-nav .sidebar-item {\n      -webkit-box-flex: 1;\n      -ms-flex: 1 1 0px;\n      flex: 1 1 0; }\n    #main-wrapper[data-layout=\"horizontal\"][data-sidebar-position=\"fixed\"] .page-wrapper {\n      padding-top: 128px; }\n    #main-wrapper[data-layout=\"horizontal\"] .topbar .top-navbar .navbar-header {\n      width: 200px;\n      border-right: 1px solid rgba(0, 0, 0, 0.1); }\n    #main-wrapper[data-layout=\"horizontal\"] .topbar .sidebartoggler {\n      display: none; }\n    #main-wrapper[data-layout=\"horizontal\"] .left-sidebar {\n      width: 100%;\n      height: auto;\n      position: relative;\n      padding-top: 0px;\n      z-index: 45;\n      -webkit-transition: 0s;\n      -o-transition: 0s;\n      transition: 0s; }\n      #main-wrapper[data-layout=\"horizontal\"] .left-sidebar .scroll-sidebar {\n        height: 54px; }\n    #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav ul {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex; }\n    #main-wrapper[data-layout=\"horizontal\"] .scroll-sidebar {\n      height: auto; }\n    #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      width: 100%; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav .sidebar-item {\n        position: relative;\n        width: auto; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item {\n        border-right: 1px solid rgba(0, 0, 0, 0.1); }\n        #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item > .has-arrow:after {\n          -webkit-transform: rotate(-135deg) translate(0, -50%);\n          -ms-transform: rotate(-135deg) translate(0, -50%);\n          transform: rotate(-135deg) translate(0, -50%); }\n        #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item:last-child > .first-level {\n          right: 0px;\n          left: auto; }\n        #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item > .two-column + .first-level {\n          width: 400px; }\n          #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item > .two-column + .first-level > .sidebar-item {\n            float: left;\n            width: 50%;\n            vertical-align: top; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item ul {\n        position: absolute;\n        left: 0px;\n        top: auto;\n        width: 220px;\n        padding-bottom: 0px;\n        z-index: 100;\n        display: none;\n        -webkit-box-shadow: 5px 10px 20px rgba(0, 0, 0, 0.1);\n        box-shadow: 5px 10px 20px rgba(0, 0, 0, 0.1); }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .mega-dropdown {\n        position: static; }\n        #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .mega-dropdown .first-level {\n          width: 100%; }\n          #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .mega-dropdown .first-level > li {\n            width: 25%;\n            float: left; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item:hover {\n        background: rgba(0, 0, 0, 0.025); }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item:hover ul.first-level,\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item:hover ul.first-level.collapse {\n        display: block; }\n        #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item:hover ul.first-level:after,\n        #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item:hover ul.first-level.collapse:after {\n          position: absolute;\n          content: \"\";\n          background: rgba(0, 0, 0, 0.025);\n          top: 0;\n          height: 100%;\n          width: 100%;\n          left: 0;\n          z-index: -1; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item ul.second-level {\n        left: 220px;\n        top: 0px; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item:last-child > .first-level ul.second-level,\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item .first-level .right-side-dd ul.second-level {\n        right: 220px;\n        top: 0px;\n        left: auto; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav ul.first-level > .sidebar-item:hover ul.second-level {\n        display: block; }\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item > .has-arrow:after,\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav .nav-small-cap,\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav .sidebar-footer,\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav .user-pro,\n      #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav .badge {\n        display: none; } }\n\n@media (min-width: 768px) and (max-width: 1023px) {\n  #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav > ul > .sidebar-item > .sidebar-link i {\n    display: none; }\n  #main-wrapper[data-layout=\"horizontal\"] .sidebar-nav #sidebarnav > .sidebar-item {\n    -webkit-box-flex: 1;\n    -ms-flex: auto;\n    flex: auto; }\n  /****************************\n    This is for the fixed sidebar layout\n    ***************************/\n  [data-sidebar-position=\"fixed\"] .left-sidebar {\n    overflow: auto; } }\n\n/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: scss\n*/\n/*============================================================== \n For Desktop & above all (1650px) \n ============================================================== */\n/*============================================================== \n For Laptop & above all (1370px) \n ============================================================== */\n/*-- ============================================================== \n Small Desktop & above all (1024px) \n ============================================================== */\n/*-- ============================================================== \n Ipad & above all(768px) \n ============================================================== */\n@media (min-width: 768px) {\n  .bc-content {\n    -webkit-box-pack: end;\n    -ms-flex-pack: end;\n    justify-content: flex-end; } }\n\n/*-- ============================================================== \n Phone and below ipad(767px) \n ============================================================== */\n@media (max-width: 991.98px) {\n  .do-block {\n    display: block !important; } }\n"
  },
  {
    "path": "public/admin-panel/dist/js/app-style-switcher.js",
    "content": "$(function() {\n    \"use strict\";\n    //****************************\n    /* Left header Theme Change function Start */\n    //****************************\n    function handlelogobg() {\n        $('.theme-color .theme-item .theme-link').on(\"click\", function() {\n            var logobgskin = $(this).attr(\"data-logobg\");\n            $('.topbar .top-navbar .navbar-header').attr(\"data-logobg\", logobgskin);\n        });\n    };\n    handlelogobg();\n    //****************************\n    /* Top navbar Theme Change function Start */\n    //****************************\n    function handlenavbarbg() {\n        if ( $('#main-wrapper').attr('data-navbarbg') == 'skin5' ) {\n                    // do this\n                    $(\".topbar .navbar\").addClass('navbar-light');\n                    $(\".topbar .navbar\").removeClass('navbar-dark');\n                } else {\n                    // do that\n                    \n                }\n        $('.theme-color .theme-item .theme-link').on(\"click\", function() {\n            var navbarbgskin = $(this).attr(\"data-navbarbg\");\n            $('#main-wrapper').attr(\"data-navbarbg\", navbarbgskin);\n            $('.topbar .navbar-collapse').attr(\"data-navbarbg\", navbarbgskin);\n            if ( $('#main-wrapper').attr('data-navbarbg') == 'skin5' ) {\n                    // do this\n                    $(\".topbar .navbar\").addClass('navbar-light');\n                    $(\".topbar .navbar\").removeClass('navbar-dark');\n                } else {\n                    // do that\n                    $(\".topbar .navbar\").removeClass('navbar-light');\n                    $(\".topbar .navbar\").addClass('navbar-dark');\n                }\n        });\n        \n    };\n\n    handlenavbarbg();\n    \n    //****************************\n    // ManageSidebar Type\n    //****************************\n    function handlesidebartype() {\n        \n    };\n    handlesidebartype();\n     \n    \n    //****************************\n    /* Manage sidebar bg color */\n    //****************************\n    function handlesidebarbg() {\n        $('.theme-color .theme-item .theme-link').on(\"click\", function() {\n            var sidebarbgskin = $(this).attr(\"data-sidebarbg\");\n            $('.left-sidebar').attr(\"data-sidebarbg\", sidebarbgskin);\n        });\n    };\n    handlesidebarbg();\n    //****************************\n    /* sidebar position */\n    //****************************\n    function handlesidebarposition() {\n\t\t$('#sidebar-position').change(function() {\n            if( $(this).is(\":checked\")) {\n                $('#main-wrapper').attr(\"data-sidebar-position\", 'fixed' );\n                $('.topbar .top-navbar .navbar-header').attr(\"data-navheader\", 'fixed' );\n            }else {\n                $('#main-wrapper').attr(\"data-sidebar-position\", 'absolute' ); \n                $('.topbar .top-navbar .navbar-header').attr(\"data-navheader\", 'relative' );\n            }\n        });\n        \n\t};\n    handlesidebarposition ();\n    //****************************\n    /* Header position */\n    //****************************\n    function handleheaderposition() {\n\t\t$('#header-position').change(function() {\n            if( $(this).is(\":checked\")) {\n                $('#main-wrapper').attr(\"data-header-position\", 'fixed' );\n            }else {\n                $('#main-wrapper').attr(\"data-header-position\", 'relative' ); \n            }      \n        });\n\t};\n    handleheaderposition ();\n    //****************************\n    /* sidebar position */\n    //****************************\n    function handleboxedlayout() {\n\t\t$('#boxed-layout').change(function() {\n            if( $(this).is(\":checked\")) {\n                $('#main-wrapper').attr(\"data-boxed-layout\", 'boxed' );\n            }else {\n                $('#main-wrapper').attr(\"data-boxed-layout\", 'full' ); \n            }\n        });\n        \n\t};\n    handleboxedlayout ();\n    //****************************\n    /* Header position */\n    //****************************\n    function handlethemeview() {\n\t\t$('#theme-view').change(function() {\n            if( $(this).is(\":checked\")) {\n                $('body').attr(\"data-theme\", 'dark' );\n            }else {\n                $('body').attr(\"data-theme\", 'light' ); \n            }      \n        });\n\t};\n    handlethemeview ();\n});"
  },
  {
    "path": "public/admin-panel/dist/js/custom.js",
    "content": "$(function() {\n    \"use strict\";\n\n    $(\".preloader\").fadeOut();\n    // ============================================================== \n    // Theme options\n    // ==============================================================     \n    // ============================================================== \n    // sidebar-hover\n    // ==============================================================\n\n    $(\".left-sidebar\").hover(\n        function() {\n            $(\".navbar-header\").addClass(\"expand-logo\");\n        },\n        function() {\n            $(\".navbar-header\").removeClass(\"expand-logo\");\n        }\n    );\n    // this is for close icon when navigation open in mobile view\n    $(\".nav-toggler\").on('click', function() {\n        $(\"#main-wrapper\").toggleClass(\"show-sidebar\");\n        $(\".nav-toggler i\").toggleClass(\"ti-menu\");\n    });\n    $(\".nav-lock\").on('click', function() {\n        $(\"body\").toggleClass(\"lock-nav\");\n        $(\".nav-lock i\").toggleClass(\"mdi-toggle-switch-off\");\n        $(\"body, .page-wrapper\").trigger(\"resize\");\n    });\n    $(\".search-box a, .search-box .app-search .srh-btn\").on('click', function() {\n        $(\".app-search\").toggle(200);\n        $(\".app-search input\").focus();\n    });\n\n    // ============================================================== \n    // Right sidebar options\n    // ==============================================================\n    $(function() {\n        $(\".service-panel-toggle\").on('click', function() {\n            $(\".customizer\").toggleClass('show-service-panel');\n\n        });\n        $('.page-wrapper').on('click', function() {\n            $(\".customizer\").removeClass('show-service-panel');\n        });\n    });\n    // ============================================================== \n    // This is for the floating labels\n    // ============================================================== \n    $('.floating-labels .form-control').on('focus blur', function(e) {\n        $(this).parents('.form-group').toggleClass('focused', (e.type === 'focus' || this.value.length > 0));\n    }).trigger('blur');\n\n    // ============================================================== \n    //tooltip\n    // ============================================================== \n    $(function() {\n        $('[data-toggle=\"tooltip\"]').tooltip()\n    })\n    // ============================================================== \n    //Popover\n    // ============================================================== \n    $(function() {\n        $('[data-toggle=\"popover\"]').popover()\n    })\n\n    // ============================================================== \n    // Perfact scrollbar\n    // ============================================================== \n    $('.message-center, .customizer-body, .scrollable').perfectScrollbar({\n        wheelPropagation: !0\n    });\n\n    /*var ps = new PerfectScrollbar('.message-body');\n    var ps = new PerfectScrollbar('.notifications');\n    var ps = new PerfectScrollbar('.scroll-sidebar');\n    var ps = new PerfectScrollbar('.customizer-body');*/\n\n    // ============================================================== \n    // Resize all elements\n    // ============================================================== \n    $(\"body, .page-wrapper\").trigger(\"resize\");\n    $(\".page-wrapper\").delay(20).show();\n    // ============================================================== \n    // To do list\n    // ============================================================== \n    $(\".list-task li label\").click(function() {\n        $(this).toggleClass(\"task-done\");\n    });\n\n    //****************************\n    /* This is for the mini-sidebar if width is less then 1170*/\n    //**************************** \n    var setsidebartype = function() {\n        var width = (window.innerWidth > 0) ? window.innerWidth : this.screen.width;\n        if (width < 1170) {\n            $(\"#main-wrapper\").attr(\"data-sidebartype\", \"mini-sidebar\");\n        } else {\n            $(\"#main-wrapper\").attr(\"data-sidebartype\", \"full\");\n        }\n    };\n    $(window).ready(setsidebartype);\n    $(window).on(\"resize\", setsidebartype);\n    //****************************\n    /* This is for sidebartoggler*/\n    //****************************\n    $('.sidebartoggler').on(\"click\", function() {\n        $(\"#main-wrapper\").toggleClass(\"mini-sidebar\");\n        if ($(\"#main-wrapper\").hasClass(\"mini-sidebar\")) {\n            $(\".sidebartoggler\").prop(\"checked\", !0);\n            $(\"#main-wrapper\").attr(\"data-sidebartype\", \"mini-sidebar\");\n        } else {\n            $(\".sidebartoggler\").prop(\"checked\", !1);\n            $(\"#main-wrapper\").attr(\"data-sidebartype\", \"full\");\n        }\n    });\n});"
  },
  {
    "path": "public/admin-panel/dist/js/jquery.ui.touch-punch-improved.js",
    "content": "/*!\n * jQuery UI Touch Punch Improved 0.3.1\n *\n *\n * Copyright 2013, Chris Hutchinson <chris@brushd.com>\n * Original jquery-ui-touch-punch Copyright 2011, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n * jquery.ui.widget.js\n * jquery.ui.mouse.js\n */\n(function ($) {\n\tvar pointerEnabled = window.navigator.pointerEnabled\n\t\t|| window.navigator.msPointerEnabled;\n\n\t// Detect touch support\n\t$.support.touch = 'ontouchend' in document || pointerEnabled;\n\n\t// Ignore browsers without touch support or mouse support\n\tif (!$.support.touch || !$.ui.mouse) {\n\t\treturn;\n\t}\n\n\tvar mouseProto = $.ui.mouse.prototype,\n\t\t_mouseInit = mouseProto._mouseInit,\n\t\ttouchHandled;\n\n\t// see http://stackoverflow.com/a/12714084/220825\n\tfunction fixTouch(touch) {\n\t\tvar winPageX = window.pageXOffset,\n\t\t\twinPageY = window.pageYOffset,\n\t\t\tx = touch.clientX,\n\t\t\ty = touch.clientY;\n\n\t\tif (touch.pageY === 0 && Math.floor(y) > Math.floor(touch.pageY) || touch.pageX === 0 && Math.floor(x) > Math.floor(touch.pageX)) {\n\t\t\t// iOS4 clientX/clientY have the value that should have been\n\t\t\t// in pageX/pageY. While pageX/page/ have the value 0\n\t\t\tx = x - winPageX;\n\t\t\ty = y - winPageY;\n\t\t} else if (y < (touch.pageY - winPageY) || x < (touch.pageX - winPageX)) {\n\t\t\t// Some Android browsers have totally bogus values for clientX/Y\n\t\t\t// when scrolling/zooming a page. Detectable since clientX/clientY\n\t\t\t// should never be smaller than pageX/pageY minus page scroll\n\t\t\tx = touch.pageX - winPageX;\n\t\t\ty = touch.pageY - winPageY;\n\t\t}\n\n\t\treturn {\n\t\t\tclientX: x,\n\t\t\tclientY: y\n\t\t};\n\t}\n\n\t/**\n\t * Simulate a mouse event based on a corresponding touch event\n\t * @param {Object} event A touch event\n\t * @param {String} simulatedType The corresponding mouse event\n\t */\n\tfunction simulateMouseEvent (event, simulatedType) {\n\t\t// Ignore multi-touch events\n\t\tif ((!pointerEnabled && event.originalEvent.touches.length > 1) || (pointerEnabled && !event.isPrimary)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar touch = pointerEnabled ? event.originalEvent : event.originalEvent.changedTouches[0],\n\t\t\t\tsimulatedEvent = document.createEvent('MouseEvents'),\n\t\t\t\tcoord = fixTouch(touch);\n\n\t\t// Check if element is an input or a textarea\n\t\tif ($(touch.target).is(\"input\") || $(touch.target).is(\"textarea\")) {\n\t\t\tevent.stopPropagation();\n\t\t} else {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\t// Initialize the simulated mouse event using the touch event's coordinates\n\t\tsimulatedEvent.initMouseEvent(\n\t\t\tsimulatedType,\t\t\t\t\t\t// type\n\t\t\ttrue,\t\t\t\t\t\t\t\t// bubbles\n\t\t\ttrue,\t\t\t\t\t\t\t\t// cancelable\n\t\t\twindow,\t\t\t  \t\t\t\t\t// view\n\t\t\t1,\t\t\t\t   \t\t\t\t\t// detail\n\t\t\tevent.screenX || touch.screenX,\t\t// screenX\n\t\t\tevent.screenY || touch.screenY,\t\t// screenY\n\t\t\tevent.clientX || coord.clientX,\t\t// clientX\n\t\t\tevent.clientY || coord.clientY,\t\t// clientY\n\t\t\tfalse,\t\t\t   \t\t\t\t\t// ctrlKey\n\t\t\tfalse,\t\t\t  \t\t\t\t \t// altKey\n\t\t\tfalse,\t\t\t  \t\t\t\t \t// shiftKey\n\t\t\tfalse,\t\t\t   \t\t\t\t\t// metaKey\n\t\t\t0,\t\t\t\t   \t\t\t\t\t// button\n\t\t\tnull\t\t\t\t\t\t\t\t// relatedTarget\n\t\t);\n\n\t\t// Dispatch the simulated event to the target element\n\t\tevent.target.dispatchEvent(simulatedEvent);\n\t}\n\n\t/**\n\t * Handle the jQuery UI widget's touchstart events\n\t * @param {Object} event The widget element's touchstart event\n\t */\n\tmouseProto._touchStart = function (event) {\n\t\tvar self = this;\n\n\t\t// Ignore the event if another widget is already being handled\n\t\tif (touchHandled || (!pointerEnabled && !self._mouseCapture(event.originalEvent.changedTouches[0]))) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Set the flag to prevent other widgets from inheriting the touch event\n\t\ttouchHandled = true;\n\n\t\t// Track movement to determine if interaction was a click\n\t\tself._touchMoved = false;\n\n\t\t// Simulate the mouseover event\n\t\tsimulateMouseEvent(event, 'mouseover');\n\n\t\t// Simulate the mousemove event\n\t\tsimulateMouseEvent(event, 'mousemove');\n\n\t\t// Simulate the mousedown event\n\t\tsimulateMouseEvent(event, 'mousedown');\n\t};\n\n\t/**\n\t * Handle the jQuery UI widget's touchmove events\n\t * @param {Object} event The document's touchmove event\n\t */\n\tmouseProto._touchMove = function (event) {\n\t\t// Ignore event if not handled\n\t\tif (!touchHandled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Interaction was not a click\n\t\tthis._touchMoved = true;\n\n\t\t// Simulate the mousemove event\n\t\tsimulateMouseEvent(event, 'mousemove');\n\t};\n\n\t/**\n\t * Handle the jQuery UI widget's touchend events\n\t * @param {Object} event The document's touchend event\n\t */\n\tmouseProto._touchEnd = function (event) {\n\t\t// Ignore event if not handled\n\t\tif (!touchHandled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Simulate the mouseup event\n\t\tsimulateMouseEvent(event, 'mouseup');\n\n\t\t// Simulate the mouseout event\n\t\tsimulateMouseEvent(event, 'mouseout');\n\n\t\t// If the touch interaction did not move, it should trigger a click\n\t\tif (!this._touchMoved) {\n\t\t\t// Simulate the click event\n\t\t\tsimulateMouseEvent(event, 'click');\n\t\t}\n\n\t\t// Unset the flag to allow other widgets to inherit the touch event\n\t\ttouchHandled = false;\n\t};\n\n\t/**\n\t * A duck punch of the $.ui.mouse _mouseInit method to support touch events.\n\t * This method extends the widget with bound touch event handlers that\n\t * translate touch events to mouse events and pass them to the widget's\n\t * original mouse event handling methods.\n\t */\n\tmouseProto._mouseInit = function () {\n\t\tvar self = this;\n\n\t\tself.element.on({\n\t\t\t'touchstart': $.proxy(self, '_touchStart'),\n\t\t\t'touchmove': $.proxy(self, '_touchMove'),\n\t\t\t'touchend': $.proxy(self, '_touchEnd'),\n\t\t\t'pointerDown': $.proxy(self, '_touchStart'),\n\t\t\t'pointerMove': $.proxy(self, '_touchMove'),\n\t\t\t'pointerUp': $.proxy(self, '_touchEnd'),\n\t\t\t'MSPointerDown': $.proxy(self, '_touchStart'),\n\t\t\t'MSPointerMove': $.proxy(self, '_touchMove'),\n\t\t\t'MSPointerUp': $.proxy(self, '_touchEnd')\n\t\t});\n\n\t\t// Call the original $.ui.mouse init method\n\t\t_mouseInit.call(self);\n\t};\n\n})(jQuery);"
  },
  {
    "path": "public/admin-panel/dist/js/pages/calendar/cal-init.js",
    "content": "! function($) {\n    \"use strict\";\n\n    var CalendarApp = function() {\n        this.$body = $(\"body\")\n        this.$calendar = $('#event'),\n            this.$event = ('#event-events div.event-events'),\n            this.$categoryForm = $('#add-new-event form'),\n            this.$extEvents = $('#event-events'),\n            this.$modal = $('#my-event'),\n            this.$saveCategoryBtn = $('.save-category'),\n            this.$calendarObj = null\n    };\n\n\n    /* on drop */\n    CalendarApp.prototype.onDrop = function(eventObj, date) {\n            var $this = this;\n            // retrieve the dropped element's stored Event Object\n            var originalEventObject = eventObj.data('eventObject');\n            var $categoryClass = eventObj.attr('data-class');\n            // we need to copy it, so that multiple events don't have a reference to the same object\n            var copiedEventObject = $.extend({}, originalEventObject);\n            // assign it the date that was reported\n            copiedEventObject.start = date;\n            if ($categoryClass)\n                copiedEventObject['className'] = [$categoryClass];\n            // render the event on the event\n            $this.$calendar.fullCalendar('renderEvent', copiedEventObject, true);\n            // is the \"remove after drop\" checkbox checked?\n            if ($('#drop-remove').is(':checked')) {\n                // if so, remove the element from the \"Draggable Events\" list\n                eventObj.remove();\n            }\n        },\n        /* on click on event */\n        CalendarApp.prototype.onEventClick = function(calEvent, jsEvent, view) {\n            var $this = this;\n            var form = $(\"<form></form>\");\n            form.append(\"<label>Change event name</label>\");\n            form.append(\"<div class='input-group'><input class='form-control' type=text value='\" + calEvent.title + \"' /><span class='input-group-btn'><button type='submit' class='btn btn-success waves-effect waves-light'><i class='fa fa-check'></i> Save</button></span></div>\");\n            $this.$modal.modal({\n                backdrop: 'static'\n            });\n            $this.$modal.find('.delete-event').show().end().find('.save-event').hide().end().find('.modal-body').empty().prepend(form).end().find('.delete-event').unbind('click').click(function() {\n                $this.$calendarObj.fullCalendar('removeEvents', function(ev) {\n                    return (ev._id == calEvent._id);\n                });\n                $this.$modal.modal('hide');\n            });\n            $this.$modal.find('form').on('submit', function() {\n                calEvent.title = form.find(\"input[type=text]\").val();\n                $this.$calendarObj.fullCalendar('updateEvent', calEvent);\n                $this.$modal.modal('hide');\n                return false;\n            });\n        },\n        CalendarApp.prototype.enableDrag = function() {\n            //init events\n            $(this.$event).each(function() {\n                // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)\n                // it doesn't need to have a start or end\n                var eventObject = {\n                    title: $.trim($(this).text()) // use the element's text as the event title\n                };\n                // store the Event Object in the DOM element so we can get to it later\n                $(this).data('eventObject', eventObject);\n                // make the event draggable using jQuery UI\n                $(this).draggable({\n                    zIndex: 999,\n                    revert: true, // will cause the event to go back to its\n                    revertDuration: 0 //  original position after the drag\n                });\n            });\n        }\n    /* Initializing */\n    CalendarApp.prototype.init = function() {\n            this.enableDrag();\n            /*  Initialize the event  */\n            var date = new Date();\n            var d = date.getDate();\n            var m = date.getMonth();\n            var y = date.getFullYear();\n            var form = '';\n            var today = new Date($.now());\n\n            var defaultEvents = [\n              \n            ];\n\n            var $this = this;\n            $this.$calendarObj = $this.$calendar.fullCalendar({\n                slotDuration: '00:15:00',\n                /* If we want to split day time each 15minutes */\n                minTime: '08:00:00',\n                maxTime: '19:00:00',\n                defaultView: 'month',\n                handleWindowResize: true,\n\n                header: {\n                    left: 'prev,next today',\n                    center: 'title',\n                    right: 'month,agendaWeek,agendaDay'\n                },\n                events: defaultEvents,\n                editable: true,\n                droppable: true, // this allows things to be dropped onto the event !!!\n                eventLimit: true, // allow \"more\" link when too many events\n                selectable: true,\n                drop: function(date) { $this.onDrop($(this), date); },\n                select: function(start, end, allDay) { $this.onSelect(start, end, allDay); },\n                eventClick: function(calEvent, jsEvent, view) { $this.onEventClick(calEvent, jsEvent, view); }\n\n            });\n\n           \n        },\n\n        //init CalendarApp\n        $.CalendarApp = new CalendarApp, $.CalendarApp.Constructor = CalendarApp\n\n}(window.jQuery),\n\n//initializing CalendarApp\n$(window).on('load', function() {\n\n    $.CalendarApp.init()\n});"
  },
  {
    "path": "public/admin-panel/dist/js/pages/chart/chart-init.js",
    "content": " $(function(){\n            var data = [5, 10, 15, 20, 15, 30, 40],\n        totalPoints = 100;\n            function getRandomData() {\n        if (data.length > 0) data = data.slice(1);\n        // Do a random walk\n        while (data.length < totalPoints) {\n            var prev = data.length > 0 ? data[data.length - 1] : 10,\n                y = prev + Math.random() * 10 - 5;\n            if (y < 0) {\n                y = 0;\n            } else if (y > 100) {\n                y = 100;\n            }\n            data.push(y);\n        }\n        // Zip the generated y values with the x values\n        var res = [];\n        for (var i = 0; i < data.length; ++i) {\n            res.push([i, data[i]])\n        }\n        return res;\n    }\n     // Set up the control widget\n    var updateInterval = 1000;\n    $(\"#updateInterval\").val(updateInterval).change(function() {\n        var v = $(this).val();\n        if (v && !isNaN(+v)) {\n            updateInterval = +v;\n            if (updateInterval < 1) {\n                updateInterval = 1;\n            } else if (updateInterval > 1000) {\n                updateInterval = 1000;\n            }\n            $(this).val(\"\" + updateInterval);\n        }\n    });\n        var plot = $.plot(\"#placeholder1\", [getRandomData()], {\n        series: {\n            shadowSize: 1, // Drawing is faster without shadows\n            lines: { fill: true, fillColor: 'transparent' },\n        },\n        yaxis: {\n            min: 0,\n            max: 100,\n            show: true\n        },\n        xaxis: {\n            show: false\n        },\n        colors: [\"#fe5419\"],\n        grid: {\n            color: \"#AFAFAF\",\n            hoverable: true,\n            borderWidth: 0,\n            backgroundColor: 'transparent'\n        },\n        tooltip: true,\n        tooltipOpts: {\n            content: \"Visits: %x\",\n            defaultTheme: false\n        }\n    });\n         window.onresize = function(event) {\n        $.plot($(\"#placeholder1\"), [getRandomData()]);\n    }\n        function update() {\n        plot.setData([getRandomData()]);\n        // Since the axes don't change, we don't need to call plot.setupGrid()\n        plot.draw();\n        setTimeout(update, updateInterval);\n    }\n    update();\n        });"
  },
  {
    "path": "public/admin-panel/dist/js/pages/chart/chart-page-init.js",
    "content": "  $(function() {\n    // we use an inline data source in the example, usually data would\n    // be fetched from a server\n   // ==============================================================\n    // Real Time Visits\n    // ==============================================================\n    var data = [5, 10, 15, 20, 15, 30, 40],\n        totalPoints = 100;\n\n    function getRandomData() {\n        if (data.length > 0) data = data.slice(1);\n        // Do a random walk\n        while (data.length < totalPoints) {\n            var prev = data.length > 0 ? data[data.length - 1] : 10,\n                y = prev + Math.random() * 10 - 5;\n            if (y < 0) {\n                y = 0;\n            } else if (y > 100) {\n                y = 100;\n            }\n            data.push(y);\n        }\n        // Zip the generated y values with the x values\n        var res = [];\n        for (var i = 0; i < data.length; ++i) {\n            res.push([i, data[i]])\n        }\n        return res;\n    }\n    // Set up the control widget\n    var updateInterval = 1000;\n    $(\"#updateInterval\").val(updateInterval).change(function() {\n        var v = $(this).val();\n        if (v && !isNaN(+v)) {\n            updateInterval = +v;\n            if (updateInterval < 1) {\n                updateInterval = 1;\n            } else if (updateInterval > 1000) {\n                updateInterval = 1000;\n            }\n            $(this).val(\"\" + updateInterval);\n        }\n    });\n    var plot = $.plot(\"#real-time\", [getRandomData()], {\n        series: {\n            shadowSize: 1, // Drawing is faster without shadows\n            lines: { fill: true, fillColor: 'transparent' },\n        },\n        yaxis: {\n            min: 0,\n            max: 100,\n            show: true\n        },\n        xaxis: {\n            show: false\n        },\n        colors: [\"#488c13\"],\n        grid: {\n            color: \"#AFAFAF\",\n            hoverable: true,\n            borderWidth: 0,\n            backgroundColor: 'transparent'\n        },\n        tooltip: true,\n        tooltipOpts: {\n            content: \"Visits: %x\",\n            defaultTheme: false\n        }\n    });\n    window.onresize = function(event) {\n        $.plot($(\"#real-time\"), [getRandomData()]);\n    }\n\n    function update() {\n        plot.setData([getRandomData()]);\n        // Since the axes don't change, we don't need to call plot.setupGrid()\n        plot.draw();\n        setTimeout(update, updateInterval);\n    }\n    update();\n\n        console.log(\"document ready\");\n        var offset = 0;\n        plot1();\n\n        function plot1() {\n            var sin = []\n                , cos = [];\n            for (var i = 0; i < 12; i += 0.2) {\n                sin.push([i, Math.sin(i + offset)]);\n                cos.push([i, Math.cos(i + offset)]);\n            }\n            var options = {\n                series: {\n                    lines: {\n                        show: true\n                    }\n                    , points: {\n                        show: true\n                    }\n                }\n                , grid: {\n                    hoverable: true //IMPORTANT! this is needed for tooltip to work\n                }\n                , yaxis: {\n                    min: -1.2\n                    , max: 1.2\n                }\n                , colors: [\"#ee7951\", \"#4fb9f0\"]\n                , grid: {\n                    color: \"#AFAFAF\"\n                    , hoverable: true\n                    , borderWidth: 0\n                    , backgroundColor: '#FFF'\n                }\n                , tooltip: true\n                , tooltipOpts: {\n                    content: \"'%s' of %x.1 is %y.4\"\n                    , shifts: {\n                        x: -60\n                        , y: 25\n                    }\n                }\n            };\n            var plotObj = $.plot($(\"#flot-line-chart\"), [{\n                data: sin\n                , label: \"sin(x)\"\n            , }, {\n                data: cos\n                , label: \"cos(x)\"\n                }], options);\n        }\n\n});"
  },
  {
    "path": "public/admin-panel/dist/js/pages/dashboards/dashboard1.js",
    "content": "/*\nTemplate Name: Admin Pro Admin\nAuthor: Wrappixel\nEmail: niravjoshi87@gmail.com\nFile: js\n*/\n$(function() {\n    \"use strict\";\n    // ============================================================== \n    // Newsletter\n    // ============================================================== \n\n    /*var chart = new Chartist.Line('.campaign', {\n        labels: [1, 2, 3, 4, 5, 6, 7, 8],\n        series: [\n            [0, 5, 6, 8, 25, 9, 8, 24],\n            [0, 3, 1, 2, 8, 1, 5, 1]\n        ]\n    }, {\n        low: 0,\n        high: 28,\n\n        showArea: true,\n        fullWidth: true,\n        plugins: [\n            Chartist.plugins.tooltip()\n        ],\n        axisY: {\n            onlyInteger: true,\n            scaleMinSpace: 40,\n            offset: 20,\n            labelInterpolationFnc: function(value) {\n                return (value / 1) + 'k';\n            }\n        },\n\n    });\n*/\n    // Offset x1 a tiny amount so that the straight stroke gets a bounding box\n    // Straight lines don't get a bounding box \n    // Last remark on -> http://www.w3.org/TR/SVG11/coords.html#ObjectBoundingBox\n    chart.on('draw', function(ctx) {\n        if (ctx.type === 'area') {\n            ctx.element.attr({\n                x1: ctx.x1 + 0.001\n            });\n        }\n    });\n\n    // Create the gradient definition on created event (always after chart re-render)\n    chart.on('created', function(ctx) {\n        var defs = ctx.svg.elem('defs');\n        defs.elem('linearGradient', {\n            id: 'gradient',\n            x1: 0,\n            y1: 1,\n            x2: 0,\n            y2: 0\n        }).elem('stop', {\n            offset: 0,\n            'stop-color': 'rgba(255, 255, 255, 1)'\n        }).parent().elem('stop', {\n            offset: 1,\n            'stop-color': 'rgba(64, 196, 255, 1)'\n        });\n    });\n\n\n    var chart = [chart];\n\n\n    // ============================================================== \n    // Our Visitor\n    // ============================================================== \n    var sparklineLogin = function() {\n        $('#ravenue').sparkline([6, 10, 9, 11, 9, 10, 12], {\n            type: 'bar',\n            height: '100',\n            barWidth: '4',\n            width: '100%',\n            resize: true,\n            barSpacing: '11',\n            barColor: '#fff'\n        });\n        $('#views').sparkline([6, 10, 9, 11, 9, 10, 12], {\n            type: 'line',\n            height: '72',\n            lineColor: 'transparent',\n            fillColor: 'rgba(255, 255, 255, 0.3)',\n            width: '100%',\n\n            resize: true,\n\n        });\n    };\n    var sparkResize;\n\n    $(window).resize(function(e) {\n        clearTimeout(sparkResize);\n        sparkResize = setTimeout(sparklineLogin, 500);\n    });\n    sparklineLogin();\n\n\n\n    // This is for the chat messege on enter\n    $(function() {\n        $(document).on('keypress', \"#textarea1\", function(e) {\n            if (e.keyCode == 13) {\n                var id = $(this).attr(\"data-user-id\");\n                var msg = $(this).val();\n                msg = msg_sent(msg);\n                $(\"#someDiv\").append(msg);\n                $(this).val(\"\");\n                $(this).focus();\n            }\n        });\n\n    });\n});"
  },
  {
    "path": "public/admin-panel/dist/js/pages/maps/map-google.init.js",
    "content": "/*************************************************************************************/\n// -->Template Name: Bootstrap Press Admin\n// -->Author: Themedesigner\n// -->Email: niravjoshi87@gmail.com\n// -->File: google_map_init\n/*************************************************************************************/\n\n$(function() {\n    //******************************************//\n    // Basic Map\n    //******************************************//\n    var map;\n    map = new GMaps({\n        div: '#map',\n        lat: -12.043333,\n        lng: -77.028333\n    });\n\n    //******************************************//\n    // Map Events\n    //******************************************//\n    var map_1;\n    map_1 = new GMaps({\n        div: '#map_1',\n        zoom: 16,\n        lat: -12.043333,\n        lng: -77.028333,\n        click: function(e) {\n            alert('click');\n        },\n        dragend: function(e) {\n            alert('dragend');\n        }\n    });\n\n    //******************************************//\n    // Markers\n    //******************************************//\n    var map_2;\n    map_2 = new GMaps({\n        div: '#map_2',\n        lat: -12.043333,\n        lng: -77.028333\n    });\n    map_2.addMarker({\n        lat: -12.043333,\n        lng: -77.03,\n        title: 'Lima',\n        details: {\n            database_id: 42,\n            author: 'HPNeo'\n        },\n        click: function(e) {\n            if (console.log)\n                console.log(e);\n            alert('You clicked in this marker');\n        }\n    });\n    map_2.addMarker({\n        lat: -12.042,\n        lng: -77.028333,\n        title: 'Marker with InfoWindow',\n        infoWindow: {\n            content: '<p>HTML Content</p>'\n        }\n    });\n\n    //******************************************//\n    // Polylines\n    //******************************************//\n    var map_3;\n    map_3 = new GMaps({\n        div: '#map_3',\n        lat: -12.043333,\n        lng: -77.028333,\n        click: function(e) {\n            console.log(e);\n        }\n    });\n\n    path1 = [\n        [-12.044012922866312, -77.02470665341184],\n        [-12.05449279282314, -77.03024273281858],\n        [-12.055122327623378, -77.03039293652341],\n        [-12.075917129727586, -77.02764635449216],\n        [-12.07635776902266, -77.02792530422971],\n        [-12.076819390363665, -77.02893381481931],\n        [-12.088527520066453, -77.0241058385925],\n        [-12.090814532191756, -77.02271108990476]\n    ];\n\n    map_3.drawPolyline({\n        path: path1,\n        strokeColor: '#131540',\n        strokeOpacity: 0.6,\n        strokeWeight: 6\n    });\n\n    //******************************************//\n    // Polygons\n    //******************************************//\n    var map_4;\n    map_4 = new GMaps({\n        div: '#map_4',\n        lat: -12.043333,\n        lng: -77.028333\n    });\n\n    var path2 = [\n        [-12.040397656836609, -77.03373871559225],\n        [-12.040248585302038, -77.03993927003302],\n        [-12.050047116528843, -77.02448169303511],\n        [-12.044804866577001, -77.02154422636042]\n    ];\n\n    polygon = map_4.drawPolygon({\n        paths: path2,\n        strokeColor: '#BBD8E9',\n        strokeOpacity: 1,\n        strokeWeight: 3,\n        fillColor: '#BBD8E9',\n        fillOpacity: 0.6\n    });\n\n    //******************************************//\n    // Routes\n    //******************************************//\n    var map_5;\n    map_5 = new GMaps({\n        div: '#map_5',\n        lat: -12.043333,\n        lng: -77.028333\n    });\n    map_5.drawRoute({\n        origin: [-12.044012922866312, -77.02470665341184],\n        destination: [-12.090814532191756, -77.02271108990476],\n        travelMode: 'driving',\n        strokeColor: '#131540',\n        strokeOpacity: 0.6,\n        strokeWeight: 6\n    });\n\n    //******************************************//\n    // Routes Advance\n    //******************************************//\n    var map_6;\n    map_6 = new GMaps({\n        div: '#map_6',\n        lat: -12.043333,\n        lng: -77.028333\n    });\n    $('#start_travel').click(function(e) {\n        e.preventDefault();\n        map_6.travelRoute({\n            origin: [-12.044012922866312, -77.02470665341184],\n            destination: [-12.090814532191756, -77.02271108990476],\n            travelMode: 'driving',\n            step: function(e) {\n                $('#instructions').append('<li>' + e.instructions + '</li>');\n                $('#instructions li:eq(' + e.step_number + ')').delay(450 * e.step_number).fadeIn(200, function() {\n                    map_6.setCenter(e.end_location.lat(), e.end_location.lng());\n                    map_6.drawPolyline({\n                        path: e.path,\n                        strokeColor: '#131540',\n                        strokeOpacity: 0.6,\n                        strokeWeight: 6\n                    });\n                });\n            }\n        });\n    });\n\n    //******************************************//\n    // Street View Panoramas\n    //******************************************//\n    panorama = GMaps.createPanorama({\n        el: '#panorama',\n        lat: 42.3455,\n        lng: -71.0983\n    });\n\n    //******************************************//\n    // Map Types\n    //******************************************//\n    var map_7;\n    map_7 = new GMaps({\n        div: '#map_7',\n        lat: -12.043333,\n        lng: -77.028333,\n        mapTypeControlOptions: {\n            mapTypeIds: [\"hybrid\", \"roadmap\", \"satellite\", \"terrain\", \"osm\"]\n        }\n    });\n    map_7.addMapType(\"osm\", {\n        getTileUrl: function(coord, zoom) {\n            return \"https://a.tile.openstreetmap.org/\" + zoom + \"/\" + coord.x + \"/\" + coord.y + \".png\";\n        },\n        tileSize: new google.maps.Size(256, 256),\n        name: \"OpenStreetMap\",\n        maxZoom: 18\n    });\n    map_7.setMapTypeId(\"osm\");\n\n    //******************************************//\n    // Fusion Tables layers\n    //******************************************//\n    var map_8, infoWindow1;\n    infoWindow = new google.maps.InfoWindow({});\n    map_8 = new GMaps({\n        div: '#map_8',\n        zoom: 11,\n        lat: 41.850033,\n        lng: -87.6500523\n    });\n    map_8.loadFromFusionTables({\n        query: {\n            select: '\\'Geocodable address\\'',\n            from: '1mZ53Z70NsChnBMm-qEYmSDOvLXgrreLTkQUvvg'\n        },\n        suppressInfoWindows: true,\n        events: {\n            click: function(point) {\n                infoWindow.setContent('You clicked here!');\n                infoWindow.setPosition(point.latLng);\n                infoWindow.open(map_8.map_8);\n            }\n        }\n    });\n\n    //******************************************//\n    // KML layers\n    //******************************************//\n    var map_9, infoWindow2;\n    infoWindow2 = new google.maps.InfoWindow({});\n    map_9 = new GMaps({\n        div: '#map_9',\n        zoom: 12,\n        lat: 40.65,\n        lng: -73.95\n    });\n    map_9.loadFromKML({\n        url: 'http://api.flickr.com/services/feeds/geo/?g=322338@N20&lang=en-us&format=feed-georss',\n        suppressInfoWindows: true,\n        events: {\n            click: function(point) {\n                infoWindow2.setContent(point.featureData.infoWindowHtml);\n                infoWindow2.setPosition(point.latLng);\n                infoWindow2.open(map_9.map_9);\n            }\n        }\n    });\n\n    //******************************************//\n    // Geofences\n    //******************************************//\n    var map_10;\n    map_10 = new GMaps({\n        div: '#map_10',\n        lat: -12.043333,\n        lng: -77.028333\n    });\n    var path3 = [];\n    var p = [\n        [-12.040397656836609, -77.03373871559225],\n        [-12.040248585302038, -77.03993927003302],\n        [-12.050047116528843, -77.02448169303511],\n        [-12.044804866577001, -77.02154422636042]\n    ];\n    for (var i in p) {\n        latlng = new google.maps.LatLng(p[i][0], p[i][1]);\n        path3.push(latlng);\n    }\n    polygon = map_10.drawPolygon({\n        paths: path3,\n        strokeColor: '#BBD8E9',\n        strokeOpacity: 1,\n        strokeWeight: 3,\n        fillColor: '#BBD8E9',\n        fillOpacity: 0.6\n    });\n    map_10.addMarker({\n        lat: -12.043333,\n        lng: -77.028333,\n        draggable: true,\n        fences: [polygon],\n        outside: function(m, f) {\n            alert('This marker has been moved outside of its fence');\n        }\n    });\n});"
  },
  {
    "path": "public/admin-panel/dist/js/pages/mask/mask.init.js",
    "content": "$(function(e) {\n    \"use strict\";\n    $(\".date-inputmask\").inputmask(\"dd/mm/yyyy\"), \n    $(\".phone-inputmask\").inputmask(\"(999) 999-9999\"), \n    $(\".international-inputmask\").inputmask(\"+9(999)999-9999\"), \n    $(\".xphone-inputmask\").inputmask(\"(999) 999-9999 / x999999\"), \n    $(\".purchase-inputmask\").inputmask(\"aaaa 9999-****\"), \n    $(\".cc-inputmask\").inputmask(\"9999 9999 9999 9999\"), \n    $(\".ssn-inputmask\").inputmask(\"999-99-9999\"), \n    $(\".isbn-inputmask\").inputmask(\"999-99-999-9999-9\"), \n    $(\".currency-inputmask\").inputmask(\"$9999\"), \n    $(\".percentage-inputmask\").inputmask(\"99%\"), \n    $(\".decimal-inputmask\").inputmask({\n        alias: \"decimal\"\n        , radixPoint: \".\"\n    }), \n    \n    $(\".email-inputmask\").inputmask({\n    mask: \"*{1,20}[.*{1,20}][.*{1,20}][.*{1,20}]@*{1,20}[*{2,6}][*{1,2}].*{1,}[.*{2,6}][.*{1,2}]\"\n    , greedy: !1\n    , onBeforePaste: function (n, a) {\n        return (e = e.toLowerCase()).replace(\"mailto:\", \"\")\n    }\n    , definitions: {\n        \"*\": {\n            validator: \"[0-9A-Za-z!#$%&'*+/=?^_`{|}~/-]\"\n            , cardinality: 1\n            , casing: \"lower\"\n        }\n    }\n    })\n});"
  },
  {
    "path": "public/admin-panel/dist/js/pages/sparkline/jquery.charts-sparkline.js",
    "content": "  \n$(document).ready(function() {\n   var sparklineLogin = function() { \n        $(\"#sparkline1\").sparkline([5,6,2,8,9,4,7,10,11,12,10], {\n        type: 'bar',\n        height: '45',\n        barWidth: 7,\n        barSpacing: 4,\n        barColor: '#99d683'\n        \n    });\n\n        $('#sparkline2').sparkline([20, 40, 30], {\n            type: 'pie',\n            width: '50',\n            height: '45',\n            resize: true,\n            sliceColors: ['#13dafe', '#6164c1', '#f1f2f7']\n        });\n\n    \n        $('#sparkline3').sparkline([5, 6, 2, 9, 4, 7, 10, 12], {\n            type: 'bar',\n            height: '164',\n            barWidth: '7',\n            resize: true,\n            barSpacing: '5',\n            barColor: '#f96262'\n        });\n\n\t\t\n        $(\"#sparkline4\").sparkline([0, 23, 43, 35, 44, 45, 56, 37, 40, 45, 56, 7, 10], {\n            type: 'line',\n            width: '120',\n            height: '45',\n            lineColor: '#fb6d9d',\n            fillColor: 'transparent',\n            spotColor: '#fb6d9d',\n            minSpotColor: undefined,\n            maxSpotColor: undefined,\n            highlightSpotColor: undefined,\n            highlightLineColor: undefined\n        });  \n\t\t\n        $('#sparkline5').sparkline([15, 23, 55, 35, 54, 45, 66, 47, 30], {\n            type: 'line',\n            width: '100%',\n            height: '160',\n            chartRangeMax: 50,\n            resize: true,\n            lineColor: '#13dafe',\n            fillColor: 'rgba(19, 218, 254, 0.3)',\n            highlightLineColor: 'rgba(0,0,0,.1)',\n            highlightSpotColor: 'rgba(0,0,0,.2)',\n        });\n    \n        $('#sparkline5').sparkline([0, 13, 10, 14, 15, 10, 18, 20, 0], {\n            type: 'line',\n            width: '100%',\n            height: '160',\n            chartRangeMax: 40,\n            lineColor: '#6164c1',\n            fillColor: 'rgba(97, 100, 193, 0.3)',\n            composite: true,\n            resize: true,\n            highlightLineColor: 'rgba(0,0,0,.1)',\n            highlightSpotColor: 'rgba(0,0,0,.2)',\n        });\n\t\t$('#sparkline6').sparkline([5, 6, 2, 8, 9, 4, 7, 10, 11, 12, 10], {\n            type: 'bar',\n            height: '45',\n            barWidth: '7',\n            barSpacing: '4',\n            barColor: '#13dafe'\n        });\n        $(\"#sparkline7\").sparkline([0,2,8,6,8,5,6,4,8,6,4,2 ], {\n            type: 'line',\n            width: '100%',\n            height: '50',\n            lineColor: '#ffca4a',\n            fillColor: '#ffca4a',\n            highlightLineColor: 'rgba(0, 0, 0, 0.2)',\n            highlightSpotColor: '#4f4f4f'\n        });\n        $(\"#sparkline8\").sparkline([2,4,4,6,8,5,6,4,8,6,6,2 ], {\n            type: 'line',\n            width: '100%',\n            height: '50',\n            lineColor: '#99d683',\n            fillColor: '#99d683',\n            maxSpotColor: '#99d683',\n            highlightLineColor: 'rgba(0, 0, 0, 0.2)',\n            highlightSpotColor: '#99d683'\n        });\n        $(\"#sparkline9\").sparkline([0,2,8,6,8,5,6,4,8,6,6,2 ], {\n            type: 'line',\n            width: '100%',\n            height: '50',\n            lineColor: '#13dafe',\n            fillColor: '#13dafe',\n            minSpotColor:'#13dafe',\n            maxSpotColor: '#13dafe',\n            highlightLineColor: 'rgba(0, 0, 0, 0.2)',\n            highlightSpotColor: '#13dafe'\n        });\n        $(\"#sparkline10\").sparkline([2,4,4,6,8,5,6,4,8,6,6,2], {\n            type: 'line',\n            width: '100%',\n            height: '50',\n            lineColor: '#6164c1',\n            fillColor: '#6164c1',\n            maxSpotColor: '#6164c1',\n            highlightLineColor: 'rgba(0, 0, 0, 0.2)',\n            highlightSpotColor: '#6164c1'\n        });\n        $('#sparkline11').sparkline([20, 40, 30], {\n            type: 'pie',\n            height: '200',\n            resize: true,\n            sliceColors: ['#13dafe', '#6164c1', '#f1f2f7']\n        });\n        \n        $(\"#sparkline12\").sparkline([5,6,2,8,9,4,7,10,11,12,10,4,7,10], {\n        type: 'bar',\n        height: '200',\n        barWidth: 10,\n        barSpacing: 7,\n        barColor: '#99d683'\n        });\n\n         $('#sparkline13').sparkline([5, 6, 2, 9, 4, 7, 10, 12,4,7,10], {\n            type: 'bar',\n            height: '200',\n            barWidth: '10',\n            resize: true,\n            barSpacing: '7',\n            barColor: '#f96262'\n        });\n         $('#sparkline13').sparkline([5, 6, 2, 9, 4, 7, 10, 12,4,7,10], {\n            type: 'line',\n            height: '200',\n            lineColor: '#f96262',\n            fillColor: 'transparent',\n            composite: true,\n            highlightLineColor: 'rgba(0,0,0,.1)',\n            highlightSpotColor: 'rgba(0,0,0,.2)'\n        });\n         $(\"#sparkline14\").sparkline([0, 23, 43, 35, 44, 45, 56, 37, 40, 45, 56, 7, 10], {\n            type: 'line',\n            width: '100%',\n            height: '200',\n            lineColor: '#fff',\n            fillColor: 'transparent',\n            spotColor: '#fff',\n            minSpotColor: undefined,\n            maxSpotColor: undefined,\n            highlightSpotColor: undefined,\n            highlightLineColor: undefined\n        }); \n         $('#sparkline15').sparkline([5, 6, 2, 8, 9, 4, 7, 10, 11, 12, 10, 9, 4, 7], {\n            type: 'bar',\n            height: '200',\n            barWidth: '10',\n            barSpacing: '10',\n            barColor: '#13dafe'\n        });\n\t\t$('#sparkline16').sparkline([15, 23, 55, 35, 54, 45, 66, 47, 30], {\n            type: 'line',\n            width: '100%',\n            height: '200',\n            chartRangeMax: 50,\n            resize: true,\n            lineColor: '#13dafe',\n            fillColor: 'rgba(19, 218, 254, 0.3)',\n            highlightLineColor: 'rgba(0,0,0,.1)',\n            highlightSpotColor: 'rgba(0,0,0,.2)',\n        });\n    \n        $('#sparkline16').sparkline([0, 13, 10, 14, 15, 10, 18, 20, 0], {\n            type: 'line',\n            width: '100%',\n            height: '200',\n            chartRangeMax: 40,\n            lineColor: '#6164c1',\n            fillColor: 'rgba(97, 100, 193, 0.3)',\n            composite: true,\n            resize: true,\n            highlightLineColor: 'rgba(0,0,0,.1)',\n            highlightSpotColor: 'rgba(0,0,0,.2)',\n        });\n       \n        $('#sparklinedash').sparkline([ 0, 5, 6, 10, 9, 12, 4, 9], {\n            type: 'bar',\n            height: '30',\n            barWidth: '4',\n            resize: true,\n            barSpacing: '5',\n            barColor: '#00c292'\n        });\n         $('#sparklinedash2').sparkline([ 0, 5, 6, 10, 9, 12, 4, 9], {\n            type: 'bar',\n            height: '30',\n            barWidth: '4',\n            resize: true,\n            barSpacing: '5',\n            barColor: '#ab8ce4'\n        });\n          $('#sparklinedash3').sparkline([ 0, 5, 6, 10, 9, 12, 4, 9], {\n            type: 'bar',\n            height: '30',\n            barWidth: '4',\n            resize: true,\n            barSpacing: '5',\n            barColor: '#03a9f3'\n        });\n           $('#sparklinedash4').sparkline([ 0, 5, 6, 10, 9, 12, 4, 9], {\n            type: 'bar',\n            height: '30',\n            barWidth: '4',\n            resize: true,\n            barSpacing: '5',\n            barColor: '#fb9678'\n        });\n        \n   \n   }\n    var sparkResize;\n \n        $(window).resize(function(e) {\n            clearTimeout(sparkResize);\n            sparkResize = setTimeout(sparklineLogin, 500);\n        });\n        sparklineLogin();\n\n});"
  },
  {
    "path": "public/admin-panel/dist/js/sidebarmenu.js",
    "content": "/*\nTemplate Name: Admin Template\nAuthor: Wrappixel\n\nFile: js\n*/\n// ============================================================== \n// Auto select left navbar\n// ============================================================== \n$(function() {\n    \"use strict\";\n     var url = window.location + \"\";\n        var path = url.replace(window.location.protocol + \"//\" + window.location.host + \"/\", \"\");\n        var element = $('ul#sidebarnav a').filter(function() {\n            return this.href === url || this.href === path;// || url.href.indexOf(this.href) === 0;\n        });\n        element.parentsUntil(\".sidebar-nav\").each(function (index)\n        {\n            if($(this).is(\"li\") && $(this).children(\"a\").length !== 0)\n            {\n                $(this).children(\"a\").addClass(\"active\");\n                $(this).parent(\"ul#sidebarnav\").length === 0\n                    ? $(this).addClass(\"active\")\n                    : $(this).addClass(\"selected\");\n            }\n            else if(!$(this).is(\"ul\") && $(this).children(\"a\").length === 0)\n            {\n                $(this).addClass(\"selected\");\n                \n            }\n            else if($(this).is(\"ul\")){\n                $(this).addClass('in');\n            }\n            \n        });\n\n    element.addClass(\"active\"); \n    $('#sidebarnav a').on('click', function (e) {\n        \n            if (!$(this).hasClass(\"active\")) {\n                // hide any open menus and remove all other classes\n                $(\"ul\", $(this).parents(\"ul:first\")).removeClass(\"in\");\n                $(\"a\", $(this).parents(\"ul:first\")).removeClass(\"active\");\n                \n                // open our new menu and add the open class\n                $(this).next(\"ul\").addClass(\"in\");\n                $(this).addClass(\"active\");\n                \n            }\n            else if ($(this).hasClass(\"active\")) {\n                $(this).removeClass(\"active\");\n                $(this).parents(\"ul:first\").removeClass(\"active\");\n                $(this).next(\"ul\").removeClass(\"in\");\n            }\n    })\n    $('#sidebarnav >li >a.has-arrow').on('click', function (e) {\n        e.preventDefault();\n    });\n    \n});"
  },
  {
    "path": "public/admin-panel/dist/js/waves.js",
    "content": "!function(t){\"use strict\";function e(t){return null!==t&&t===t.window}function n(t){return e(t)?t:9===t.nodeType&&t.defaultView}function a(t){var e,a,i={top:0,left:0},o=t&&t.ownerDocument;return e=o.documentElement,\"undefined\"!=typeof t.getBoundingClientRect&&(i=t.getBoundingClientRect()),a=n(o),{top:i.top+a.pageYOffset-e.clientTop,left:i.left+a.pageXOffset-e.clientLeft}}function i(t){var e=\"\";for(var n in t)t.hasOwnProperty(n)&&(e+=n+\":\"+t[n]+\";\");return e}function o(t){if(d.allowEvent(t)===!1)return null;for(var e=null,n=t.target||t.srcElement;null!==n.parentElement;){if(!(n instanceof SVGElement||-1===n.className.indexOf(\"waves-effect\"))){e=n;break}if(n.classList.contains(\"waves-effect\")){e=n;break}n=n.parentElement}return e}function r(e){var n=o(e);null!==n&&(c.show(e,n),\"ontouchstart\"in t&&(n.addEventListener(\"touchend\",c.hide,!1),n.addEventListener(\"touchcancel\",c.hide,!1)),n.addEventListener(\"mouseup\",c.hide,!1),n.addEventListener(\"mouseleave\",c.hide,!1))}var s=s||{},u=document.querySelectorAll.bind(document),c={duration:750,show:function(t,e){if(2===t.button)return!1;var n=e||this,o=document.createElement(\"div\");o.className=\"waves-ripple\",n.appendChild(o);var r=a(n),s=t.pageY-r.top,u=t.pageX-r.left,d=\"scale(\"+n.clientWidth/100*10+\")\";\"touches\"in t&&(s=t.touches[0].pageY-r.top,u=t.touches[0].pageX-r.left),o.setAttribute(\"data-hold\",Date.now()),o.setAttribute(\"data-scale\",d),o.setAttribute(\"data-x\",u),o.setAttribute(\"data-y\",s);var l={top:s+\"px\",left:u+\"px\"};o.className=o.className+\" waves-notransition\",o.setAttribute(\"style\",i(l)),o.className=o.className.replace(\"waves-notransition\",\"\"),l[\"-webkit-transform\"]=d,l[\"-moz-transform\"]=d,l[\"-ms-transform\"]=d,l[\"-o-transform\"]=d,l.transform=d,l.opacity=\"1\",l[\"-webkit-transition-duration\"]=c.duration+\"ms\",l[\"-moz-transition-duration\"]=c.duration+\"ms\",l[\"-o-transition-duration\"]=c.duration+\"ms\",l[\"transition-duration\"]=c.duration+\"ms\",l[\"-webkit-transition-timing-function\"]=\"cubic-bezier(0.250, 0.460, 0.450, 0.940)\",l[\"-moz-transition-timing-function\"]=\"cubic-bezier(0.250, 0.460, 0.450, 0.940)\",l[\"-o-transition-timing-function\"]=\"cubic-bezier(0.250, 0.460, 0.450, 0.940)\",l[\"transition-timing-function\"]=\"cubic-bezier(0.250, 0.460, 0.450, 0.940)\",o.setAttribute(\"style\",i(l))},hide:function(t){d.touchup(t);var e=this,n=(1.4*e.clientWidth,null),a=e.getElementsByClassName(\"waves-ripple\");if(!(a.length>0))return!1;n=a[a.length-1];var o=n.getAttribute(\"data-x\"),r=n.getAttribute(\"data-y\"),s=n.getAttribute(\"data-scale\"),u=Date.now()-Number(n.getAttribute(\"data-hold\")),l=350-u;0>l&&(l=0),setTimeout(function(){var t={top:r+\"px\",left:o+\"px\",opacity:\"0\",\"-webkit-transition-duration\":c.duration+\"ms\",\"-moz-transition-duration\":c.duration+\"ms\",\"-o-transition-duration\":c.duration+\"ms\",\"transition-duration\":c.duration+\"ms\",\"-webkit-transform\":s,\"-moz-transform\":s,\"-ms-transform\":s,\"-o-transform\":s,transform:s};n.setAttribute(\"style\",i(t)),setTimeout(function(){try{e.removeChild(n)}catch(t){return!1}},c.duration)},l)},wrapInput:function(t){for(var e=0;e<t.length;e++){var n=t[e];if(\"input\"===n.tagName.toLowerCase()){var a=n.parentNode;if(\"i\"===a.tagName.toLowerCase()&&-1!==a.className.indexOf(\"waves-effect\"))continue;var i=document.createElement(\"i\");i.className=n.className+\" waves-input-wrapper\";var o=n.getAttribute(\"style\");o||(o=\"\"),i.setAttribute(\"style\",o),n.className=\"waves-button-input\",n.removeAttribute(\"style\"),a.replaceChild(i,n),i.appendChild(n)}}}},d={touches:0,allowEvent:function(t){var e=!0;return\"touchstart\"===t.type?d.touches+=1:\"touchend\"===t.type||\"touchcancel\"===t.type?setTimeout(function(){d.touches>0&&(d.touches-=1)},500):\"mousedown\"===t.type&&d.touches>0&&(e=!1),e},touchup:function(t){d.allowEvent(t)}};s.displayEffect=function(e){e=e||{},\"duration\"in e&&(c.duration=e.duration),c.wrapInput(u(\".waves-effect\")),\"ontouchstart\"in t&&document.body.addEventListener(\"touchstart\",r,!1),document.body.addEventListener(\"mousedown\",r,!1)},s.attach=function(e){\"input\"===e.tagName.toLowerCase()&&(c.wrapInput([e]),e=e.parentElement),\"ontouchstart\"in t&&e.addEventListener(\"touchstart\",r,!1),e.addEventListener(\"mousedown\",r,!1)},t.Waves=s,document.addEventListener(\"DOMContentLoaded\",function(){s.displayEffect()},!1)}(window);"
  },
  {
    "path": "public/css/app.css",
    "content": "@import url(https://fonts.googleapis.com/css?family=Nunito);\n\n/*!\n * Bootstrap v4.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#3490dc;--indigo:#6574cd;--purple:#9561e2;--pink:#f66d9b;--red:#e3342f;--orange:#f6993f;--yellow:#ffed4a;--green:#38c172;--teal:#4dc0b5;--cyan:#6cb2eb;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#3490dc;--secondary:#6c757d;--success:#38c172;--info:#6cb2eb;--warning:#ffed4a;--danger:#e3342f;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:\"Nunito\",sans-serif;--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Nunito,sans-serif;font-size:.9rem;font-weight:400;line-height:1.6;color:#212529;text-align:left;background-color:#f8fafc}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#3490dc;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#1d68a7;text-decoration:underline}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.25rem}.h2,h2{font-size:1.8rem}.h3,h3{font-size:1.575rem}.h4,h4{font-size:1.35rem}.h5,h5{font-size:1.125rem}.h6,h6{font-size:.9rem}.lead{font-size:1.125rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.125rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:\"\\2014\\A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#f8fafc;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#f66d9b;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#f8fafc}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#c6e0f5}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b0d4f1}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c7eed8}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b3e8ca}.table-info,.table-info>td,.table-info>th{background-color:#d6e9f9}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c0ddf6}.table-warning,.table-warning>td,.table-warning>th{background-color:#fffacc}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fff8b3}.table-danger,.table-danger>td,.table-danger>th{background-color:#f7c6c5}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f4b0af}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#f8fafc;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#f8fafc;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(2.19rem + 2px);padding:.375rem .75rem;font-size:.9rem;line-height:1.6;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#a1cbef;outline:0;box-shadow:0 0 0 .2rem rgba(52,144,220,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.6}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.125rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.7875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.6;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.68125rem + 2px);padding:.25rem .5rem;font-size:.7875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(2.6875rem + 2px);padding:.5rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#38c172}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.7875rem;line-height:1.6;color:#fff;background-color:rgba(56,193,114,.9);border-radius:.25rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#38c172}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#38c172;box-shadow:0 0 0 .2rem rgba(56,193,114,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#38c172}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#38c172}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{background-color:#98e1b7}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{background-color:#5cd08d}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 1px #f8fafc,0 0 0 .2rem rgba(56,193,114,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#38c172}.custom-file-input.is-valid~.custom-file-label:after,.was-validated .custom-file-input:valid~.custom-file-label:after{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(56,193,114,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#e3342f}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.7875rem;line-height:1.6;color:#fff;background-color:rgba(227,52,47,.9);border-radius:.25rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#e3342f}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#e3342f;box-shadow:0 0 0 .2rem rgba(227,52,47,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#e3342f}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#e3342f}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{background-color:#f2a29f}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{background-color:#e9605c}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 1px #f8fafc,0 0 0 .2rem rgba(227,52,47,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#e3342f}.custom-file-input.is-invalid~.custom-file-label:after,.was-validated .custom-file-input:invalid~.custom-file-label:after{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(227,52,47,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:.9rem;line-height:1.6;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,144,220,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#3490dc;border-color:#3490dc}.btn-primary:hover{color:#fff;background-color:#227dc7;border-color:#2176bd}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(52,144,220,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#3490dc;border-color:#3490dc}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2176bd;border-color:#1f6fb2}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,144,220,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#38c172;border-color:#38c172}.btn-success:hover{color:#fff;background-color:#2fa360;border-color:#2d995b}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(56,193,114,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#38c172;border-color:#38c172}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#2d995b;border-color:#2a9055}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(56,193,114,.5)}.btn-info{color:#212529;background-color:#6cb2eb;border-color:#6cb2eb}.btn-info:hover{color:#fff;background-color:#4aa0e6;border-color:#3f9ae5}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(108,178,235,.5)}.btn-info.disabled,.btn-info:disabled{color:#212529;background-color:#6cb2eb;border-color:#6cb2eb}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#3f9ae5;border-color:#3495e3}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,178,235,.5)}.btn-warning{color:#212529;background-color:#ffed4a;border-color:#ffed4a}.btn-warning:hover{color:#212529;background-color:#ffe924;border-color:#ffe817}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,237,74,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffed4a;border-color:#ffed4a}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#ffe817;border-color:#ffe70a}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,237,74,.5)}.btn-danger{color:#fff;background-color:#e3342f;border-color:#e3342f}.btn-danger:hover{color:#fff;background-color:#d0211c;border-color:#c51f1a}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(227,52,47,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#e3342f;border-color:#e3342f}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c51f1a;border-color:#b91d19}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(227,52,47,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#3490dc;background-color:transparent;background-image:none;border-color:#3490dc}.btn-outline-primary:hover{color:#fff;background-color:#3490dc;border-color:#3490dc}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(52,144,220,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#3490dc;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#3490dc;border-color:#3490dc}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,144,220,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#38c172;background-color:transparent;background-image:none;border-color:#38c172}.btn-outline-success:hover{color:#fff;background-color:#38c172;border-color:#38c172}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(56,193,114,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#38c172;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#38c172;border-color:#38c172}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(56,193,114,.5)}.btn-outline-info{color:#6cb2eb;background-color:transparent;background-image:none;border-color:#6cb2eb}.btn-outline-info:hover{color:#212529;background-color:#6cb2eb;border-color:#6cb2eb}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(108,178,235,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#6cb2eb;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#212529;background-color:#6cb2eb;border-color:#6cb2eb}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,178,235,.5)}.btn-outline-warning{color:#ffed4a;background-color:transparent;background-image:none;border-color:#ffed4a}.btn-outline-warning:hover{color:#212529;background-color:#ffed4a;border-color:#ffed4a}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,237,74,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffed4a;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffed4a;border-color:#ffed4a}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,237,74,.5)}.btn-outline-danger{color:#e3342f;background-color:transparent;background-image:none;border-color:#e3342f}.btn-outline-danger:hover{color:#fff;background-color:#e3342f;border-color:#e3342f}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(227,52,47,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#e3342f;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#e3342f;border-color:#e3342f}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(227,52,47,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#3490dc;background-color:transparent}.btn-link:hover{color:#1d68a7;background-color:transparent}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline;border-color:transparent}.btn-link.focus,.btn-link:focus{box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.7875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media screen and (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media screen and (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:.9rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-right{right:0;left:auto}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#3490dc}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.7875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:0 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group,.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:.9rem;font-weight:400;line-height:1.6;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{height:calc(2.6875rem + 2px);padding:.5rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{height:calc(1.68125rem + 2px);padding:.25rem .5rem;font-size:.7875rem;line-height:1.5;border-radius:.2rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.44rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;background-color:#3490dc}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #f8fafc,0 0 0 .2rem rgba(52,144,220,.25)}.custom-control-input:active~.custom-control-label:before{color:#fff;background-color:#cce3f6}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0}.custom-control-label:before{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.22rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background-repeat:no-repeat;background-position:50%;background-size:50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:before{background-color:#3490dc}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{background-color:#3490dc}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(52,144,220,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(52,144,220,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:before{background-color:#3490dc}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(52,144,220,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.19rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.6;color:#495057;vertical-align:middle;background:#fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#a1cbef;outline:0;box-shadow:0 0 0 .2rem rgba(161,203,239,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.68125rem + 2px);font-size:75%}.custom-select-lg,.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem}.custom-select-lg{height:calc(2.6875rem + 2px);font-size:125%}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(2.19rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#a1cbef;box-shadow:0 0 0 .2rem rgba(52,144,220,.25)}.custom-file-input:focus~.custom-file-label:after{border-color:#a1cbef}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-label{left:0;z-index:1;height:calc(2.19rem + 2px);background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.6;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:2.19rem;content:\"Browse\";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;padding-left:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f8fafc,0 0 0 .2rem rgba(52,144,220,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f8fafc,0 0 0 .2rem rgba(52,144,220,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #f8fafc,0 0 0 .2rem rgba(52,144,220,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#3490dc;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#cce3f6}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#3490dc;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#cce3f6}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#3490dc;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#cce3f6}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#f8fafc;border-color:#dee2e6 #dee2e6 #f8fafc}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#3490dc}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.32rem;padding-bottom:.32rem;margin-right:1rem;font-size:1.125rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.125rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child),.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion .card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion .card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion .card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#3490dc;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#1d68a7;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(52,144,220,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#3490dc;border-color:#3490dc}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.125rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.7875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#3490dc}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#2176bd}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#38c172}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#2d995b}.badge-info{color:#212529;background-color:#6cb2eb}.badge-info[href]:focus,.badge-info[href]:hover{color:#212529;text-decoration:none;background-color:#3f9ae5}.badge-warning{color:#212529;background-color:#ffed4a}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#ffe817}.badge-danger{color:#fff;background-color:#e3342f}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#c51f1a}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3.85rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#1b4b72;background-color:#d6e9f8;border-color:#c6e0f5}.alert-primary hr{border-top-color:#b0d4f1}.alert-primary .alert-link{color:#113049}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#1d643b;background-color:#d7f3e3;border-color:#c7eed8}.alert-success hr{border-top-color:#b3e8ca}.alert-success .alert-link{color:#123c24}.alert-info{color:#385d7a;background-color:#e2f0fb;border-color:#d6e9f9}.alert-info hr{border-top-color:#c0ddf6}.alert-info .alert-link{color:#284257}.alert-warning{color:#857b26;background-color:#fffbdb;border-color:#fffacc}.alert-warning hr{border-top-color:#fff8b3}.alert-warning .alert-link{color:#5d561b}.alert-danger{color:#761b18;background-color:#f9d6d5;border-color:#f7c6c5}.alert-danger hr{border-top-color:#f4b0af}.alert-danger .alert-link{color:#4c110f}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.675rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#3490dc;transition:width .6s ease}@media screen and (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#3490dc;border-color:#3490dc}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#1b4b72;background-color:#c6e0f5}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#1b4b72;background-color:#b0d4f1}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1b4b72;border-color:#1b4b72}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#1d643b;background-color:#c7eed8}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#1d643b;background-color:#b3e8ca}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#1d643b;border-color:#1d643b}.list-group-item-info{color:#385d7a;background-color:#d6e9f9}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#385d7a;background-color:#c0ddf6}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#385d7a;border-color:#385d7a}.list-group-item-warning{color:#857b26;background-color:#fffacc}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#857b26;background-color:#fff8b3}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#857b26;border-color:#857b26}.list-group-item-danger{color:#761b18;background-color:#f7c6c5}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#761b18;background-color:#f4b0af}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#761b18;border-color:#761b18}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.35rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:not(:disabled):not(.disabled){cursor:pointer}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-25%);transform:translateY(-25%)}@media screen and (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:translate(0);transform:translate(0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:\"\"}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.6}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Nunito,sans-serif;font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.7875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Nunito,sans-serif;font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.7875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=top] .arrow:after,.bs-popover-auto[x-placement^=top] .arrow:before,.bs-popover-top .arrow:after,.bs-popover-top .arrow:before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow:before,.bs-popover-top .arrow:before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow:after,.bs-popover-top .arrow:after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow:after,.bs-popover-auto[x-placement^=right] .arrow:before,.bs-popover-right .arrow:after,.bs-popover-right .arrow:before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow:before,.bs-popover-right .arrow:before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow:after,.bs-popover-right .arrow:after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=bottom] .arrow:after,.bs-popover-auto[x-placement^=bottom] .arrow:before,.bs-popover-bottom .arrow:after,.bs-popover-bottom .arrow:before{border-width:0 .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow:before,.bs-popover-bottom .arrow:before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow:after,.bs-popover-bottom .arrow:after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow:after,.bs-popover-auto[x-placement^=left] .arrow:before,.bs-popover-left .arrow:after,.bs-popover-left .arrow:before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow:before,.bs-popover-left .arrow:before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow:after,.bs-popover-left .arrow:after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:.9rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease}@media screen and (prefers-reduced-motion:reduce){.carousel-item-next,.carousel-item-prev,.carousel-item.active{transition:none}}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateZ(0);transform:translateZ(0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translateZ(0);transform:translateZ(0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat 50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:hsla(0,0%,100%,.5)}.carousel-indicators li:before{top:-10px}.carousel-indicators li:after,.carousel-indicators li:before{position:absolute;left:0;display:inline-block;width:100%;height:10px;content:\"\"}.carousel-indicators li:after{bottom:-10px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#3490dc!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#2176bd!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#38c172!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#2d995b!important}.bg-info{background-color:#6cb2eb!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#3f9ae5!important}.bg-warning{background-color:#ffed4a!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#ffe817!important}.bg-danger{background-color:#e3342f!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#c51f1a!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#3490dc!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#38c172!important}.border-info{border-color:#6cb2eb!important}.border-warning{border-color:#ffed4a!important}.border-danger{border-color:#e3342f!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.8571428571%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#3490dc!important}a.text-primary:focus,a.text-primary:hover{color:#2176bd!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#38c172!important}a.text-success:focus,a.text-success:hover{color:#2d995b!important}.text-info{color:#6cb2eb!important}a.text-info:focus,a.text-info:hover{color:#3f9ae5!important}.text-warning{color:#ffed4a!important}a.text-warning:focus,a.text-warning:hover{color:#ffe817!important}.text-danger{color:#e3342f!important}a.text-danger:focus,a.text-danger:hover{color:#c51f1a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.navbar-laravel{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.04)}"
  },
  {
    "path": "public/index.php",
    "content": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package  Laravel\n * @author   Taylor Otwell <taylor@laravel.com>\n */\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|--------------------------------------------------------------------------\n| Register The Auto Loader\n|--------------------------------------------------------------------------\n|\n| Composer provides a convenient, automatically generated class loader for\n| our application. We just need to utilize it! We'll simply require it\n| into the script here so that we don't have to worry about manual\n| loading any of our classes later on. It feels great to relax.\n|\n*/\n\nrequire __DIR__.'/../vendor/autoload.php';\n\n/*\n|--------------------------------------------------------------------------\n| Turn On The Lights\n|--------------------------------------------------------------------------\n|\n| We need to illuminate PHP development, so let us turn on the lights.\n| This bootstraps the framework and gets it ready for use, then it\n| will load up this application so that we can run it and send\n| the responses back to the browser and delight our users.\n|\n*/\n\n$app = require_once __DIR__.'/../bootstrap/app.php';\n\n/*\n|--------------------------------------------------------------------------\n| Run The Application\n|--------------------------------------------------------------------------\n|\n| Once we have the application, we can handle the incoming request\n| through the kernel, and send the associated response back to\n| the client's browser allowing them to enjoy the creative\n| and wonderful application we have prepared for them.\n|\n*/\n\n$kernel = $app->make(Illuminate\\Contracts\\Http\\Kernel::class);\n\n$response = $kernel->handle(\n    $request = Illuminate\\Http\\Request::capture()\n);\n\n$response->send();\n\n$kernel->terminate($request, $response);\n"
  },
  {
    "path": "public/js/app.js",
    "content": "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=11)}([function(e,t,n){\"use strict\";var r=n(5),i=n(19),o=Object.prototype.toString;function a(e){return\"[object Array]\"===o.call(e)}function s(e){return null!==e&&\"object\"==typeof e}function u(e){return\"[object Function]\"===o.call(e)}function c(e,t){if(null!=e)if(\"object\"!=typeof e&&(e=[e]),a(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}e.exports={isArray:a,isArrayBuffer:function(e){return\"[object ArrayBuffer]\"===o.call(e)},isBuffer:i,isFormData:function(e){return\"undefined\"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return\"string\"==typeof e},isNumber:function(e){return\"number\"==typeof e},isObject:s,isUndefined:function(e){return void 0===e},isDate:function(e){return\"[object Date]\"===o.call(e)},isFile:function(e){return\"[object File]\"===o.call(e)},isBlob:function(e){return\"[object Blob]\"===o.call(e)},isFunction:u,isStream:function(e){return s(e)&&u(e.pipe)},isURLSearchParams:function(e){return\"undefined\"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return(\"undefined\"==typeof navigator||\"ReactNative\"!==navigator.product)&&\"undefined\"!=typeof window&&\"undefined\"!=typeof document},forEach:c,merge:function e(){var t={};function n(n,r){\"object\"==typeof t[r]&&\"object\"==typeof n?t[r]=e(t[r],n):t[r]=n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return t},extend:function(e,t,n){return c(t,function(t,i){e[i]=n&&\"function\"==typeof t?r(t,n):t}),e},trim:function(e){return e.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\")}}},function(e,t){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(e){\"object\"==typeof window&&(n=window)}e.exports=n},function(e,t,n){\"use strict\";(function(t){var r=n(0),i=n(21),o={\"Content-Type\":\"application/x-www-form-urlencoded\"};function a(e,t){!r.isUndefined(e)&&r.isUndefined(e[\"Content-Type\"])&&(e[\"Content-Type\"]=t)}var s,u={adapter:(\"undefined\"!=typeof XMLHttpRequest?s=n(7):void 0!==t&&(s=n(7)),s),transformRequest:[function(e,t){return i(t,\"Content-Type\"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(a(t,\"application/x-www-form-urlencoded;charset=utf-8\"),e.toString()):r.isObject(e)?(a(t,\"application/json;charset=utf-8\"),JSON.stringify(e)):e}],transformResponse:[function(e){if(\"string\"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:\"application/json, text/plain, */*\"}},r.forEach([\"delete\",\"get\",\"head\"],function(e){u.headers[e]={}}),r.forEach([\"post\",\"put\",\"patch\"],function(e){u.headers[e]=r.merge(o)}),e.exports=u}).call(this,n(6))},function(e,t,n){\"use strict\";n.r(t),function(e){for(var n=\"undefined\"!=typeof window&&\"undefined\"!=typeof document,r=[\"Edge\",\"Trident\",\"Firefox\"],i=0,o=0;o<r.length;o+=1)if(n&&navigator.userAgent.indexOf(r[o])>=0){i=1;break}var a=n&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},i))}};function s(e){return e&&\"[object Function]\"==={}.toString.call(e)}function u(e,t){if(1!==e.nodeType)return[];var n=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?n[t]:n}function c(e){return\"HTML\"===e.nodeName?e:e.parentNode||e.host}function l(e){if(!e)return document.body;switch(e.nodeName){case\"HTML\":case\"BODY\":return e.ownerDocument.body;case\"#document\":return e.body}var t=u(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/(auto|scroll|overlay)/.test(n+i+r)?e:l(c(e))}var f=n&&!(!window.MSInputMethodContext||!document.documentMode),p=n&&/MSIE 10/.test(navigator.userAgent);function d(e){return 11===e?f:10===e?p:f||p}function h(e){if(!e)return document.documentElement;for(var t=d(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var r=n&&n.nodeName;return r&&\"BODY\"!==r&&\"HTML\"!==r?-1!==[\"TH\",\"TD\",\"TABLE\"].indexOf(n.nodeName)&&\"static\"===u(n,\"position\")?h(n):n:e?e.ownerDocument.documentElement:document.documentElement}function v(e){return null!==e.parentNode?v(e.parentNode):e}function g(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?e:t,i=n?t:e,o=document.createRange();o.setStart(r,0),o.setEnd(i,0);var a,s,u=o.commonAncestorContainer;if(e!==u&&t!==u||r.contains(i))return\"BODY\"===(s=(a=u).nodeName)||\"HTML\"!==s&&h(a.firstElementChild)!==a?h(u):u;var c=v(e);return c.host?g(c.host,t):g(e,v(t).host)}function m(e){var t=\"top\"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"top\")?\"scrollTop\":\"scrollLeft\",n=e.nodeName;if(\"BODY\"===n||\"HTML\"===n){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[t]}return e[t]}function y(e,t){var n=\"x\"===t?\"Left\":\"Top\",r=\"Left\"===n?\"Right\":\"Bottom\";return parseFloat(e[\"border\"+n+\"Width\"],10)+parseFloat(e[\"border\"+r+\"Width\"],10)}function _(e,t,n,r){return Math.max(t[\"offset\"+e],t[\"scroll\"+e],n[\"client\"+e],n[\"offset\"+e],n[\"scroll\"+e],d(10)?parseInt(n[\"offset\"+e])+parseInt(r[\"margin\"+(\"Height\"===e?\"Top\":\"Left\")])+parseInt(r[\"margin\"+(\"Height\"===e?\"Bottom\":\"Right\")]):0)}function b(e){var t=e.body,n=e.documentElement,r=d(10)&&getComputedStyle(n);return{height:_(\"Height\",t,n,r),width:_(\"Width\",t,n,r)}}var w=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")},T=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),E=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},x=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function C(e){return x({},e,{right:e.left+e.width,bottom:e.top+e.height})}function A(e){var t={};try{if(d(10)){t=e.getBoundingClientRect();var n=m(e,\"top\"),r=m(e,\"left\");t.top+=n,t.left+=r,t.bottom+=n,t.right+=r}else t=e.getBoundingClientRect()}catch(e){}var i={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top},o=\"HTML\"===e.nodeName?b(e.ownerDocument):{},a=o.width||e.clientWidth||i.right-i.left,s=o.height||e.clientHeight||i.bottom-i.top,c=e.offsetWidth-a,l=e.offsetHeight-s;if(c||l){var f=u(e);c-=y(f,\"x\"),l-=y(f,\"y\"),i.width-=c,i.height-=l}return C(i)}function S(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=d(10),i=\"HTML\"===t.nodeName,o=A(e),a=A(t),s=l(e),c=u(t),f=parseFloat(c.borderTopWidth,10),p=parseFloat(c.borderLeftWidth,10);n&&i&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var h=C({top:o.top-a.top-f,left:o.left-a.left-p,width:o.width,height:o.height});if(h.marginTop=0,h.marginLeft=0,!r&&i){var v=parseFloat(c.marginTop,10),g=parseFloat(c.marginLeft,10);h.top-=f-v,h.bottom-=f-v,h.left-=p-g,h.right-=p-g,h.marginTop=v,h.marginLeft=g}return(r&&!n?t.contains(s):t===s&&\"BODY\"!==s.nodeName)&&(h=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=m(t,\"top\"),i=m(t,\"left\"),o=n?-1:1;return e.top+=r*o,e.bottom+=r*o,e.left+=i*o,e.right+=i*o,e}(h,t)),h}function O(e){if(!e||!e.parentElement||d())return document.documentElement;for(var t=e.parentElement;t&&\"none\"===u(t,\"transform\");)t=t.parentElement;return t||document.documentElement}function D(e,t,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o={top:0,left:0},a=i?O(e):g(e,t);if(\"viewport\"===r)o=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.ownerDocument.documentElement,r=S(e,n),i=Math.max(n.clientWidth,window.innerWidth||0),o=Math.max(n.clientHeight,window.innerHeight||0),a=t?0:m(n),s=t?0:m(n,\"left\");return C({top:a-r.top+r.marginTop,left:s-r.left+r.marginLeft,width:i,height:o})}(a,i);else{var s=void 0;\"scrollParent\"===r?\"BODY\"===(s=l(c(t))).nodeName&&(s=e.ownerDocument.documentElement):s=\"window\"===r?e.ownerDocument.documentElement:r;var f=S(s,a,i);if(\"HTML\"!==s.nodeName||function e(t){var n=t.nodeName;return\"BODY\"!==n&&\"HTML\"!==n&&(\"fixed\"===u(t,\"position\")||e(c(t)))}(a))o=f;else{var p=b(e.ownerDocument),d=p.height,h=p.width;o.top+=f.top-f.marginTop,o.bottom=d+f.top,o.left+=f.left-f.marginLeft,o.right=h+f.left}}var v=\"number\"==typeof(n=n||0);return o.left+=v?n:n.left||0,o.top+=v?n:n.top||0,o.right-=v?n:n.right||0,o.bottom-=v?n:n.bottom||0,o}function I(e,t,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf(\"auto\"))return e;var a=D(n,r,o,i),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},u=Object.keys(s).map(function(e){return x({key:e},s[e],{area:(t=s[e],t.width*t.height)});var t}).sort(function(e,t){return t.area-e.area}),c=u.filter(function(e){var t=e.width,r=e.height;return t>=n.clientWidth&&r>=n.clientHeight}),l=c.length>0?c[0].key:u[0].key,f=e.split(\"-\")[1];return l+(f?\"-\"+f:\"\")}function k(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return S(n,r?O(t):g(t,n),r)}function N(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),r=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+r,height:e.offsetHeight+n}}function L(e){var t={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function j(e,t,n){n=n.split(\"-\")[0];var r=N(e),i={width:r.width,height:r.height},o=-1!==[\"right\",\"left\"].indexOf(n),a=o?\"top\":\"left\",s=o?\"left\":\"top\",u=o?\"height\":\"width\",c=o?\"width\":\"height\";return i[a]=t[a]+t[u]/2-r[u]/2,i[s]=n===s?t[s]-r[c]:t[L(s)],i}function P(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function R(e,t,n){return(void 0===n?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var r=P(e,function(e){return e[t]===n});return e.indexOf(r)}(e,\"name\",n))).forEach(function(e){e.function&&console.warn(\"`modifier.function` is deprecated, use `modifier.fn`!\");var n=e.function||e.fn;e.enabled&&s(n)&&(t.offsets.popper=C(t.offsets.popper),t.offsets.reference=C(t.offsets.reference),t=n(t,e))}),t}function $(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function H(e){for(var t=[!1,\"ms\",\"Webkit\",\"Moz\",\"O\"],n=e.charAt(0).toUpperCase()+e.slice(1),r=0;r<t.length;r++){var i=t[r],o=i?\"\"+i+n:e;if(void 0!==document.body.style[o])return o}return null}function M(e){var t=e.ownerDocument;return t?t.defaultView:window}function F(e,t,n,r){n.updateBound=r,M(e).addEventListener(\"resize\",n.updateBound,{passive:!0});var i=l(e);return function e(t,n,r,i){var o=\"BODY\"===t.nodeName,a=o?t.ownerDocument.defaultView:t;a.addEventListener(n,r,{passive:!0}),o||e(l(a.parentNode),n,r,i),i.push(a)}(i,\"scroll\",n.updateBound,n.scrollParents),n.scrollElement=i,n.eventsEnabled=!0,n}function W(){var e,t;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(e=this.reference,t=this.state,M(e).removeEventListener(\"resize\",t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener(\"scroll\",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t))}function q(e){return\"\"!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function B(e,t){Object.keys(t).forEach(function(n){var r=\"\";-1!==[\"width\",\"height\",\"top\",\"right\",\"bottom\",\"left\"].indexOf(n)&&q(t[n])&&(r=\"px\"),e.style[n]=t[n]+r})}var U=n&&/Firefox/i.test(navigator.userAgent);function V(e,t,n){var r=P(e,function(e){return e.name===t}),i=!!r&&e.some(function(e){return e.name===n&&e.enabled&&e.order<r.order});if(!i){var o=\"`\"+t+\"`\",a=\"`\"+n+\"`\";console.warn(a+\" modifier is required by \"+o+\" modifier in order to work, be sure to include it before \"+o+\"!\")}return i}var z=[\"auto-start\",\"auto\",\"auto-end\",\"top-start\",\"top\",\"top-end\",\"right-start\",\"right\",\"right-end\",\"bottom-end\",\"bottom\",\"bottom-start\",\"left-end\",\"left\",\"left-start\"],K=z.slice(3);function G(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=K.indexOf(e),r=K.slice(n+1).concat(K.slice(0,n));return t?r.reverse():r}var X={FLIP:\"flip\",CLOCKWISE:\"clockwise\",COUNTERCLOCKWISE:\"counterclockwise\"};function Q(e,t,n,r){var i=[0,0],o=-1!==[\"right\",\"left\"].indexOf(r),a=e.split(/(\\+|\\-)/).map(function(e){return e.trim()}),s=a.indexOf(P(a,function(e){return-1!==e.search(/,|\\s/)}));a[s]&&-1===a[s].indexOf(\",\")&&console.warn(\"Offsets separated by white space(s) are deprecated, use a comma (,) instead.\");var u=/\\s*,\\s*|\\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(u)[0]]),[a[s].split(u)[1]].concat(a.slice(s+1))]:[a];return(c=c.map(function(e,r){var i=(1===r?!o:o)?\"height\":\"width\",a=!1;return e.reduce(function(e,t){return\"\"===e[e.length-1]&&-1!==[\"+\",\"-\"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)},[]).map(function(e){return function(e,t,n,r){var i=e.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/),o=+i[1],a=i[2];if(!o)return e;if(0===a.indexOf(\"%\")){var s=void 0;switch(a){case\"%p\":s=n;break;case\"%\":case\"%r\":default:s=r}return C(s)[t]/100*o}if(\"vh\"===a||\"vw\"===a)return(\"vh\"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o;return o}(e,i,t,n)})})).forEach(function(e,t){e.forEach(function(n,r){q(n)&&(i[t]+=n*(\"-\"===e[r-1]?-1:1))})}),i}var Y={placement:\"bottom\",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,n=t.split(\"-\")[0],r=t.split(\"-\")[1];if(r){var i=e.offsets,o=i.reference,a=i.popper,s=-1!==[\"bottom\",\"top\"].indexOf(n),u=s?\"left\":\"top\",c=s?\"width\":\"height\",l={start:E({},u,o[u]),end:E({},u,o[u]+o[c]-a[c])};e.offsets.popper=x({},a,l[r])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,r=e.placement,i=e.offsets,o=i.popper,a=i.reference,s=r.split(\"-\")[0],u=void 0;return u=q(+n)?[+n,0]:Q(n,o,a,s),\"left\"===s?(o.top+=u[0],o.left-=u[1]):\"right\"===s?(o.top+=u[0],o.left+=u[1]):\"top\"===s?(o.left+=u[0],o.top-=u[1]):\"bottom\"===s&&(o.left+=u[0],o.top+=u[1]),e.popper=o,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var n=t.boundariesElement||h(e.instance.popper);e.instance.reference===n&&(n=h(n));var r=H(\"transform\"),i=e.instance.popper.style,o=i.top,a=i.left,s=i[r];i.top=\"\",i.left=\"\",i[r]=\"\";var u=D(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);i.top=o,i.left=a,i[r]=s,t.boundaries=u;var c=t.priority,l=e.offsets.popper,f={primary:function(e){var n=l[e];return l[e]<u[e]&&!t.escapeWithReference&&(n=Math.max(l[e],u[e])),E({},e,n)},secondary:function(e){var n=\"right\"===e?\"left\":\"top\",r=l[n];return l[e]>u[e]&&!t.escapeWithReference&&(r=Math.min(l[n],u[e]-(\"right\"===e?l.width:l.height))),E({},n,r)}};return c.forEach(function(e){var t=-1!==[\"left\",\"top\"].indexOf(e)?\"primary\":\"secondary\";l=x({},l,f[t](e))}),e.offsets.popper=l,e},priority:[\"left\",\"right\",\"top\",\"bottom\"],padding:5,boundariesElement:\"scrollParent\"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,r=t.reference,i=e.placement.split(\"-\")[0],o=Math.floor,a=-1!==[\"top\",\"bottom\"].indexOf(i),s=a?\"right\":\"bottom\",u=a?\"left\":\"top\",c=a?\"width\":\"height\";return n[s]<o(r[u])&&(e.offsets.popper[u]=o(r[u])-n[c]),n[u]>o(r[s])&&(e.offsets.popper[u]=o(r[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!V(e.instance.modifiers,\"arrow\",\"keepTogether\"))return e;var r=t.element;if(\"string\"==typeof r){if(!(r=e.instance.popper.querySelector(r)))return e}else if(!e.instance.popper.contains(r))return console.warn(\"WARNING: `arrow.element` must be child of its popper element!\"),e;var i=e.placement.split(\"-\")[0],o=e.offsets,a=o.popper,s=o.reference,c=-1!==[\"left\",\"right\"].indexOf(i),l=c?\"height\":\"width\",f=c?\"Top\":\"Left\",p=f.toLowerCase(),d=c?\"left\":\"top\",h=c?\"bottom\":\"right\",v=N(r)[l];s[h]-v<a[p]&&(e.offsets.popper[p]-=a[p]-(s[h]-v)),s[p]+v>a[h]&&(e.offsets.popper[p]+=s[p]+v-a[h]),e.offsets.popper=C(e.offsets.popper);var g=s[p]+s[l]/2-v/2,m=u(e.instance.popper),y=parseFloat(m[\"margin\"+f],10),_=parseFloat(m[\"border\"+f+\"Width\"],10),b=g-e.offsets.popper[p]-y-_;return b=Math.max(Math.min(a[l]-v,b),0),e.arrowElement=r,e.offsets.arrow=(E(n={},p,Math.round(b)),E(n,d,\"\"),n),e},element:\"[x-arrow]\"},flip:{order:600,enabled:!0,fn:function(e,t){if($(e.instance.modifiers,\"inner\"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=D(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),r=e.placement.split(\"-\")[0],i=L(r),o=e.placement.split(\"-\")[1]||\"\",a=[];switch(t.behavior){case X.FLIP:a=[r,i];break;case X.CLOCKWISE:a=G(r);break;case X.COUNTERCLOCKWISE:a=G(r,!0);break;default:a=t.behavior}return a.forEach(function(s,u){if(r!==s||a.length===u+1)return e;r=e.placement.split(\"-\")[0],i=L(r);var c=e.offsets.popper,l=e.offsets.reference,f=Math.floor,p=\"left\"===r&&f(c.right)>f(l.left)||\"right\"===r&&f(c.left)<f(l.right)||\"top\"===r&&f(c.bottom)>f(l.top)||\"bottom\"===r&&f(c.top)<f(l.bottom),d=f(c.left)<f(n.left),h=f(c.right)>f(n.right),v=f(c.top)<f(n.top),g=f(c.bottom)>f(n.bottom),m=\"left\"===r&&d||\"right\"===r&&h||\"top\"===r&&v||\"bottom\"===r&&g,y=-1!==[\"top\",\"bottom\"].indexOf(r),_=!!t.flipVariations&&(y&&\"start\"===o&&d||y&&\"end\"===o&&h||!y&&\"start\"===o&&v||!y&&\"end\"===o&&g);(p||m||_)&&(e.flipped=!0,(p||m)&&(r=a[u+1]),_&&(o=function(e){return\"end\"===e?\"start\":\"start\"===e?\"end\":e}(o)),e.placement=r+(o?\"-\"+o:\"\"),e.offsets.popper=x({},e.offsets.popper,j(e.instance.popper,e.offsets.reference,e.placement)),e=R(e.instance.modifiers,e,\"flip\"))}),e},behavior:\"flip\",padding:5,boundariesElement:\"viewport\"},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split(\"-\")[0],r=e.offsets,i=r.popper,o=r.reference,a=-1!==[\"left\",\"right\"].indexOf(n),s=-1===[\"top\",\"left\"].indexOf(n);return i[a?\"left\":\"top\"]=o[n]-(s?i[a?\"width\":\"height\"]:0),e.placement=L(t),e.offsets.popper=C(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!V(e.instance.modifiers,\"hide\",\"preventOverflow\"))return e;var t=e.offsets.reference,n=P(e.instance.modifiers,function(e){return\"preventOverflow\"===e.name}).boundaries;if(t.bottom<n.top||t.left>n.right||t.top>n.bottom||t.right<n.left){if(!0===e.hide)return e;e.hide=!0,e.attributes[\"x-out-of-boundaries\"]=\"\"}else{if(!1===e.hide)return e;e.hide=!1,e.attributes[\"x-out-of-boundaries\"]=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var n=t.x,r=t.y,i=e.offsets.popper,o=P(e.instance.modifiers,function(e){return\"applyStyle\"===e.name}).gpuAcceleration;void 0!==o&&console.warn(\"WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!\");var a=void 0!==o?o:t.gpuAcceleration,s=h(e.instance.popper),u=A(s),c={position:i.position},l=function(e,t){var n=e.offsets,r=n.popper,i=n.reference,o=-1!==[\"left\",\"right\"].indexOf(e.placement),a=-1!==e.placement.indexOf(\"-\"),s=i.width%2==r.width%2,u=i.width%2==1&&r.width%2==1,c=function(e){return e},l=t?o||a||s?Math.round:Math.floor:c,f=t?Math.round:c;return{left:l(u&&!a&&t?r.left-1:r.left),top:f(r.top),bottom:f(r.bottom),right:l(r.right)}}(e,window.devicePixelRatio<2||!U),f=\"bottom\"===n?\"top\":\"bottom\",p=\"right\"===r?\"left\":\"right\",d=H(\"transform\"),v=void 0,g=void 0;if(g=\"bottom\"===f?\"HTML\"===s.nodeName?-s.clientHeight+l.bottom:-u.height+l.bottom:l.top,v=\"right\"===p?\"HTML\"===s.nodeName?-s.clientWidth+l.right:-u.width+l.right:l.left,a&&d)c[d]=\"translate3d(\"+v+\"px, \"+g+\"px, 0)\",c[f]=0,c[p]=0,c.willChange=\"transform\";else{var m=\"bottom\"===f?-1:1,y=\"right\"===p?-1:1;c[f]=g*m,c[p]=v*y,c.willChange=f+\", \"+p}var _={\"x-placement\":e.placement};return e.attributes=x({},_,e.attributes),e.styles=x({},c,e.styles),e.arrowStyles=x({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:\"bottom\",y:\"right\"},applyStyle:{order:900,enabled:!0,fn:function(e){var t,n;return B(e.instance.popper,e.styles),t=e.instance.popper,n=e.attributes,Object.keys(n).forEach(function(e){!1!==n[e]?t.setAttribute(e,n[e]):t.removeAttribute(e)}),e.arrowElement&&Object.keys(e.arrowStyles).length&&B(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,n,r,i){var o=k(i,t,e,n.positionFixed),a=I(n.placement,o,t,e,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return t.setAttribute(\"x-placement\",a),B(t,{position:n.positionFixed?\"fixed\":\"absolute\"}),n},gpuAcceleration:void 0}}},J=function(){function e(t,n){var r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};w(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=a(this.update.bind(this)),this.options=x({},e.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(x({},e.Defaults.modifiers,i.modifiers)).forEach(function(t){r.options.modifiers[t]=x({},e.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return x({name:e},r.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&s(e.onLoad)&&e.onLoad(r.reference,r.popper,r.options,e,r.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return T(e,[{key:\"update\",value:function(){return function(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=k(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=I(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=j(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?\"fixed\":\"absolute\",e=R(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}.call(this)}},{key:\"destroy\",value:function(){return function(){return this.state.isDestroyed=!0,$(this.modifiers,\"applyStyle\")&&(this.popper.removeAttribute(\"x-placement\"),this.popper.style.position=\"\",this.popper.style.top=\"\",this.popper.style.left=\"\",this.popper.style.right=\"\",this.popper.style.bottom=\"\",this.popper.style.willChange=\"\",this.popper.style[H(\"transform\")]=\"\"),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:\"enableEventListeners\",value:function(){return function(){this.state.eventsEnabled||(this.state=F(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:\"disableEventListeners\",value:function(){return W.call(this)}}]),e}();J.Utils=(\"undefined\"!=typeof window?window:e).PopperUtils,J.placements=z,J.Defaults=Y,t.default=J}.call(this,n(1))},function(e,t,n){var r;!function(t,n){\"use strict\";\"object\"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return n(e)}:n(t)}(\"undefined\"!=typeof window?window:this,function(n,i){\"use strict\";var o=[],a=n.document,s=Object.getPrototypeOf,u=o.slice,c=o.concat,l=o.push,f=o.indexOf,p={},d=p.toString,h=p.hasOwnProperty,v=h.toString,g=v.call(Object),m={},y=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType},_=function(e){return null!=e&&e===e.window},b={type:!0,src:!0,noModule:!0};function w(e,t,n){var r,i=(t=t||a).createElement(\"script\");if(i.text=e,n)for(r in b)n[r]&&(i[r]=n[r]);t.head.appendChild(i).parentNode.removeChild(i)}function T(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?p[d.call(e)]||\"object\":typeof e}var E=function(e,t){return new E.fn.init(e,t)},x=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;function C(e){var t=!!e&&\"length\"in e&&e.length,n=T(e);return!y(e)&&!_(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}E.fn=E.prototype={jquery:\"3.3.1\",constructor:E,length:0,toArray:function(){return u.call(this)},get:function(e){return null==e?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(e){return this.pushStack(E.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:l,sort:o.sort,splice:o.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,c=!1;for(\"boolean\"==typeof a&&(c=a,a=arguments[s]||{},s++),\"object\"==typeof a||y(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(c&&r&&(E.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&E.isPlainObject(n)?n:{},a[t]=E.extend(c,o,r)):void 0!==r&&(a[t]=r));return a},E.extend({expando:\"jQuery\"+(\"3.3.1\"+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==d.call(e))&&(!(t=s(e))||\"function\"==typeof(n=h.call(t,\"constructor\")&&t.constructor)&&v.call(n)===g)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){w(e)},each:function(e,t){var n,r=0;if(C(e))for(n=e.length;r<n&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?\"\":(e+\"\").replace(x,\"\")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?E.merge(n,\"string\"==typeof e?[e]:e):l.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:f.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return c.apply([],a)},guid:1,support:m}),\"function\"==typeof Symbol&&(E.fn[Symbol.iterator]=o[Symbol.iterator]),E.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){p[\"[object \"+t+\"]\"]=t.toLowerCase()});var A=function(e){var t,n,r,i,o,a,s,u,c,l,f,p,d,h,v,g,m,y,_,b=\"sizzle\"+1*new Date,w=e.document,T=0,E=0,x=ae(),C=ae(),A=ae(),S=function(e,t){return e===t&&(f=!0),0},O={}.hasOwnProperty,D=[],I=D.pop,k=D.push,N=D.push,L=D.slice,j=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",R=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",$=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",H=\"\\\\[\"+R+\"*(\"+$+\")(?:\"+R+\"*([*^$|!~]?=)\"+R+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+$+\"))|)\"+R+\"*\\\\]\",M=\":(\"+$+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+H+\")*)|.*)\\\\)|)\",F=new RegExp(R+\"+\",\"g\"),W=new RegExp(\"^\"+R+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+R+\"+$\",\"g\"),q=new RegExp(\"^\"+R+\"*,\"+R+\"*\"),B=new RegExp(\"^\"+R+\"*([>+~]|\"+R+\")\"+R+\"*\"),U=new RegExp(\"=\"+R+\"*([^\\\\]'\\\"]*?)\"+R+\"*\\\\]\",\"g\"),V=new RegExp(M),z=new RegExp(\"^\"+$+\"$\"),K={ID:new RegExp(\"^#(\"+$+\")\"),CLASS:new RegExp(\"^\\\\.(\"+$+\")\"),TAG:new RegExp(\"^(\"+$+\"|[*])\"),ATTR:new RegExp(\"^\"+H),PSEUDO:new RegExp(\"^\"+M),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+R+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+R+\"*(?:([+-]|)\"+R+\"*(\\\\d+)|))\"+R+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+P+\")$\",\"i\"),needsContext:new RegExp(\"^\"+R+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+R+\"*((?:-\\\\d)?\\\\d*)\"+R+\"*\\\\)|)(?=[^-]|$)\",\"i\")},G=/^(?:input|select|textarea|button)$/i,X=/^h\\d$/i,Q=/^[^{]+\\{\\s*\\[native \\w/,Y=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,J=/[+~]/,Z=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+R+\"?|(\"+R+\")|.)\",\"ig\"),ee=function(e,t,n){var r=\"0x\"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ne=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},re=function(){p()},ie=ye(function(e){return!0===e.disabled&&(\"form\"in e||\"label\"in e)},{dir:\"parentNode\",next:\"legend\"});try{N.apply(D=L.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){N={apply:D.length?function(e,t){k.apply(e,L.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function oe(e,t,r,i){var o,s,c,l,f,h,m,y=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,v)){if(11!==T&&(f=Y.exec(e)))if(o=f[1]){if(9===T){if(!(c=t.getElementById(o)))return r;if(c.id===o)return r.push(c),r}else if(y&&(c=y.getElementById(o))&&_(t,c)&&c.id===o)return r.push(c),r}else{if(f[2])return N.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return N.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!g||!g.test(e))){if(1!==T)y=t,m=e;else if(\"object\"!==t.nodeName.toLowerCase()){for((l=t.getAttribute(\"id\"))?l=l.replace(te,ne):t.setAttribute(\"id\",l=b),s=(h=a(e)).length;s--;)h[s]=\"#\"+l+\" \"+me(h[s]);m=h.join(\",\"),y=J.test(e)&&ve(t.parentNode)||t}if(m)try{return N.apply(r,y.querySelectorAll(m)),r}catch(e){}finally{l===b&&t.removeAttribute(\"id\")}}}return u(e.replace(W,\"$1\"),t,r,i)}function ae(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function le(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function de(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,v=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",re,!1):i.attachEvent&&i.attachEvent(\"onunload\",re)),n.attributes=ue(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&v){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&v){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&v)return t.getElementsByClassName(e)},m=[],g=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML=\"<a id='\"+b+\"'></a><select id='\"+b+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&g.push(\"[*^$]=\"+R+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||g.push(\"\\\\[\"+R+\"*(?:value|\"+P+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||g.push(\"~=\"),e.querySelectorAll(\":checked\").length||g.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||g.push(\".#.+[+~]\")}),ue(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&g.push(\"name\"+R+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&g.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&g.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),g.push(\",.*:\")})),(n.matchesSelector=Q.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=y.call(e,\"*\"),y.call(e,\"[s!='']:x\"),m.push(\"!=\",M)}),g=g.length&&new RegExp(g.join(\"|\")),m=m.length&&new RegExp(m.join(\"|\")),t=Q.test(h.compareDocumentPosition),_=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},S=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&_(w,e)?-1:t===d||t.ownerDocument===w&&_(w,t)?1:l?j(l,e)-j(l,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:l?j(l,e)-j(l,t):0;if(i===o)return le(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?le(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(U,\"='$1']\"),n.matchesSelector&&v&&!A[t+\" \"]&&(!m||!m.test(t))&&(!g||!g.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),_(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&O.call(r.attrHandle,t.toLowerCase())?i(e,t,!v):void 0;return void 0!==o?o:n.attributes||!v?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+\"\").replace(te,ne)},oe.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return l=null,e},i=oe.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:K,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\"\").replace(Z,ee),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&V.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=x[e+\" \"];return t||(t=new RegExp(\"(^|\"+R+\")\"+e+\"(\"+R+\"|$)\"))&&x(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(F,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,d,h,v=o!==a?\"nextSibling\":\"previousSibling\",g=t.parentNode,m=s&&t.nodeName.toLowerCase(),y=!u&&!s,_=!1;if(g){if(o){for(;v;){for(p=t;p=p[v];)if(s?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=v=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(_=(d=(c=(l=(f=(p=g)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&c[1])&&c[2],p=d&&g.childNodes[d];p=++d&&p&&p[v]||(_=d=0)||h.pop();)if(1===p.nodeType&&++_&&p===t){l[e]=[T,d,_];break}}else if(y&&(_=d=(c=(l=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&c[1]),!1===_)for(;(p=++d&&p&&p[v]||(_=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++_||(y&&((l=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,_]),p!==t)););return(_-=i)===r||_%r==0&&_/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=j(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(W,\"$1\"));return r[b]?se(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return z.test(e||\"\")||oe.error(\"unsupported lang: \"+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=v?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return X.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ge(){}function me(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function ye(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&\"parentNode\"===o,s=E++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var c,l,f,p=[T,s];if(u){for(;t=t[r];)if((1===t.nodeType||a)&&e(t,n,u))return!0}else for(;t=t[r];)if(1===t.nodeType||a)if(l=(f=t[b]||(t[b]={}))[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((c=l[o])&&c[0]===T&&c[1]===s)return p[2]=c[2];if(l[o]=p,p[2]=e(t,n,u))return!0}return!1}}function _e(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,c=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),c&&t.push(s)));return a}function we(e,t,n,r,i,o){return r&&!r[b]&&(r=we(r)),i&&!i[b]&&(i=we(i,o)),se(function(o,a,s,u){var c,l,f,p=[],d=[],h=a.length,v=o||function(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}(t||\"*\",s.nodeType?[s]:s,[]),g=!e||!o&&t?v:be(v,p,e,s,u),m=n?i||(o?e:h||r)?[]:a:g;if(n&&n(g,m,s,u),r)for(c=be(m,d),r(c,[],s,u),l=c.length;l--;)(f=c[l])&&(m[d[l]]=!(g[d[l]]=f));if(o){if(i||e){if(i){for(c=[],l=m.length;l--;)(f=m[l])&&c.push(g[l]=f);i(null,m=[],c,u)}for(l=m.length;l--;)(f=m[l])&&(c=i?j(o,f):p[l])>-1&&(o[c]=!(a[c]=f))}}else m=be(m===a?m.splice(h,m.length):m),i?i(null,a,m,u):N.apply(a,m)})}function Te(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,l=ye(function(e){return e===t},s,!0),f=ye(function(e){return j(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==c)||((t=n).nodeType?l(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[ye(_e(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o&&!r.relative[e[i].type];i++);return we(u>1&&_e(p),u>1&&me(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace(W,\"$1\"),n,u<i&&Te(e.slice(u,i)),i<o&&Te(e=e.slice(i)),i<o&&me(e))}p.push(n)}return _e(p)}return ge.prototype=r.filters=r.pseudos,r.setFilters=new ge,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,c,l=C[e+\" \"];if(l)return t?0:l.slice(0);for(s=e,u=[],c=r.preFilter;s;){for(a in n&&!(i=q.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=B.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(W,\" \")}),s=s.slice(n.length)),r.filter)!(i=K[a].exec(s))||c[a]&&!(i=c[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):C(e,u).slice(0)},s=oe.compile=function(e,t){var n,i=[],o=[],s=A[e+\" \"];if(!s){for(t||(t=a(e)),n=t.length;n--;)(s=Te(t[n]))[b]?i.push(s):o.push(s);(s=A(e,function(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,l){var f,h,g,m=0,y=\"0\",_=o&&[],b=[],w=c,E=o||i&&r.find.TAG(\"*\",l),x=T+=null==w?1:Math.random()||.1,C=E.length;for(l&&(c=a===d||a||l);y!==C&&null!=(f=E[y]);y++){if(i&&f){for(h=0,a||f.ownerDocument===d||(p(f),s=!v);g=e[h++];)if(g(f,a||d,s)){u.push(f);break}l&&(T=x)}n&&((f=!g&&f)&&m--,o&&_.push(f))}if(m+=y,n&&y!==m){for(h=0;g=t[h++];)g(_,b,a,s);if(o){if(m>0)for(;y--;)_[y]||b[y]||(b[y]=I.call(u));b=be(b)}N.apply(u,b),l&&!o&&b.length>0&&m+t.length>1&&oe.uniqueSort(u)}return l&&(T=x,c=w),_};return n?se(o):o}(o,i))).selector=e}return s},u=oe.select=function(e,t,n,i){var o,u,c,l,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(c=u[0]).type&&9===t.nodeType&&v&&r.relative[u[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=K.needsContext.test(e)?0:u.length;o--&&(c=u[o],!r.relative[l=c.type]);)if((f=r.find[l])&&(i=f(c.matches[0].replace(Z,ee),J.test(u[0].type)&&ve(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&me(u)))return N.apply(n,i),n;break}}return(p||s(e,d))(i,t,!v,n,!t||J.test(e)&&ve(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(S).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))}),ue(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||ce(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||ce(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute(\"disabled\")})||ce(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(n);E.find=A,E.expr=A.selectors,E.expr[\":\"]=E.expr.pseudos,E.uniqueSort=E.unique=A.uniqueSort,E.text=A.getText,E.isXMLDoc=A.isXML,E.contains=A.contains,E.escapeSelector=A.escape;var S=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},O=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=E.expr.match.needsContext;function I(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var k=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function N(e,t,n){return y(t)?E.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?E.grep(e,function(e){return e===t!==n}):\"string\"!=typeof t?E.grep(e,function(e){return f.call(t,e)>-1!==n}):E.filter(t,e,n)}E.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<r;t++)if(E.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)E.find(e,i[t],n);return r>1?E.uniqueSort(n):n},filter:function(e){return this.pushStack(N(this,e||[],!1))},not:function(e){return this.pushStack(N(this,e||[],!0))},is:function(e){return!!N(this,\"string\"==typeof e&&D.test(e)?E(e):e||[],!1).length}});var L,j=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:a,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)y(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=a.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(a);var P=/^(?:parents|prev(?:Until|All))/,R={children:!0,contents:!0,next:!0,prev:!0};function $(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&E(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?E.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?f.call(E(e),this[0]):f.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return S(e,\"parentNode\")},parentsUntil:function(e,t,n){return S(e,\"parentNode\",n)},next:function(e){return $(e,\"nextSibling\")},prev:function(e){return $(e,\"previousSibling\")},nextAll:function(e){return S(e,\"nextSibling\")},prevAll:function(e){return S(e,\"previousSibling\")},nextUntil:function(e,t,n){return S(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return S(e,\"previousSibling\",n)},siblings:function(e){return O((e.parentNode||{}).firstChild,e)},children:function(e){return O(e.firstChild)},contents:function(e){return I(e,\"iframe\")?e.contentDocument:(I(e,\"template\")&&(e=e.content||e),E.merge([],e.childNodes))}},function(e,t){E.fn[e]=function(n,r){var i=E.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=E.filter(r,i)),this.length>1&&(R[e]||E.uniqueSort(i),P.test(e)&&i.reverse()),this.pushStack(i)}});var H=/[^\\x20\\t\\r\\n\\f]+/g;function M(e){return e}function F(e){throw e}function W(e,t,n,r){var i;try{e&&y(i=e.promise)?i.call(e).done(t).fail(n):e&&y(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return E.each(e.match(H)||[],function(e,n){t[n]=!0}),t}(e):E.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,i&&(o=n?[]:\"\")},c={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){E.each(n,function(n,r){y(r)?e.unique&&c.has(r)||o.push(r):r&&r.length&&\"string\"!==T(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return E.each(arguments,function(e,t){for(var n;(n=E.inArray(t,o,n))>-1;)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?E.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},E.extend({Deferred:function(e){var t=[[\"notify\",\"progress\",E.Callbacks(\"memory\"),E.Callbacks(\"memory\"),2],[\"resolve\",\"done\",E.Callbacks(\"once memory\"),E.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",E.Callbacks(\"once memory\"),E.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return E.Deferred(function(n){E.each(t,function(t,r){var i=y(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+\"With\"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(e,r,i){var o=0;function a(e,t,r,i){return function(){var s=this,u=arguments,c=function(){var n,c;if(!(e<o)){if((n=r.apply(s,u))===t.promise())throw new TypeError(\"Thenable self-resolution\");c=n&&(\"object\"==typeof n||\"function\"==typeof n)&&n.then,y(c)?i?c.call(n,a(o,t,M,i),a(o,t,F,i)):(o++,c.call(n,a(o,t,M,i),a(o,t,F,i),a(o,t,M,t.notifyWith))):(r!==M&&(s=void 0,u=[n]),(i||t.resolveWith)(s,u))}},l=i?c:function(){try{c()}catch(n){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(n,l.stackTrace),e+1>=o&&(r!==F&&(s=void 0,u=[n]),t.rejectWith(s,u))}};e?l():(E.Deferred.getStackHook&&(l.stackTrace=E.Deferred.getStackHook()),n.setTimeout(l))}}return E.Deferred(function(n){t[0][3].add(a(0,n,y(i)?i:M,n.notifyWith)),t[1][3].add(a(0,n,y(e)?e:M)),t[2][3].add(a(0,n,y(r)?r:F))}).promise()},promise:function(e){return null!=e?E.extend(e,i):i}},o={};return E.each(t,function(e,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add(function(){r=s},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+\"With\"](this===o?void 0:this,arguments),this},o[n[0]+\"With\"]=a.fireWith}),i.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=u.call(arguments),o=E.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?u.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(W(e,o.done(a(n)).resolve,o.reject,!t),\"pending\"===o.state()||y(i[n]&&i[n].then)))return o.then();for(;n--;)W(i[n],a(n),o.reject);return o.promise()}});var q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&q.test(e.name)&&n.console.warn(\"jQuery.Deferred exception: \"+e.message,e.stack,t)},E.readyException=function(e){n.setTimeout(function(){throw e})};var B=E.Deferred();function U(){a.removeEventListener(\"DOMContentLoaded\",U),n.removeEventListener(\"load\",U),E.ready()}E.fn.ready=function(e){return B.then(e).catch(function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0,!0!==e&&--E.readyWait>0||B.resolveWith(a,[E]))}}),E.ready.then=B.then,\"complete\"===a.readyState||\"loading\"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(E.ready):(a.addEventListener(\"DOMContentLoaded\",U),n.addEventListener(\"load\",U));var V=function(e,t,n,r,i,o,a){var s=0,u=e.length,c=null==n;if(\"object\"===T(n))for(s in i=!0,n)V(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,y(r)||(a=!0),c&&(a?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(E(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:c?t.call(e):u?t(e[0],n):o},z=/^-ms-/,K=/-([a-z])/g;function G(e,t){return t.toUpperCase()}function X(e){return e.replace(z,\"ms-\").replace(K,G)}var Q=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=E.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Q(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(H)||[]).length;for(;n--;)delete r[t[n]]}(void 0===t||E.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var J=new Y,Z=new Y,ee=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,te=/[A-Z]/g;function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(te,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=function(e){return\"true\"===e||\"false\"!==e&&(\"null\"===e?null:e===+e+\"\"?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return Z.hasData(e)||J.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),E.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=Z.get(o),1===o.nodeType&&!J.get(o,\"hasDataAttrs\"))){for(n=a.length;n--;)a[n]&&0===(r=a[n].name).indexOf(\"data-\")&&(r=X(r.slice(5)),ne(o,r,i[r]));J.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){Z.set(this,e)}):V(this,function(t){var n;if(o&&void 0===t)return void 0!==(n=Z.get(o,e))?n:void 0!==(n=ne(o,e))?n:void 0;this.each(function(){Z.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){Z.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return J.get(e,n)||J.access(e,n,{empty:E.Callbacks(\"once memory\").add(function(){J.remove(e,[t+\"queue\",n])})})}}),E.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?E.queue(this[0],e):void 0===t?this:this.each(function(){var n=E.queue(this,e,t);E._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&E.dequeue(this,e)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for(\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";a--;)(n=J.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ie=new RegExp(\"^(?:([+-])=|)(\"+re+\")([a-z%]*)$\",\"i\"),oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],ae=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&E.contains(e.ownerDocument,e)&&\"none\"===E.css(e,\"display\")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return E.css(e,t,\"\")},u=s(),c=n&&n[3]||(E.cssNumber[t]?\"\":\"px\"),l=(E.cssNumber[t]||\"px\"!==c&&+u)&&ie.exec(E.css(e,t));if(l&&l[3]!==c){for(u/=2,c=c||l[3],l=+u||1;a--;)E.style(e,t,l+c),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),l/=o;l*=2,E.style(e,t,l+c),n=n||[]}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}var ce={};function le(e){var t,n=e.ownerDocument,r=e.nodeName,i=ce[r];return i||(t=n.body.appendChild(n.createElement(r)),i=E.css(t,\"display\"),t.parentNode.removeChild(t),\"none\"===i&&(i=\"block\"),ce[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?(\"none\"===n&&(i[o]=J.get(r,\"display\")||null,i[o]||(r.style.display=\"\")),\"\"===r.style.display&&ae(r)&&(i[o]=le(r))):\"none\"!==n&&(i[o]=\"none\",J.set(r,\"display\",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}E.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?E(this).show():E(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,he=/^$|^module$|\\/(?:java|ecma)script/i,ve={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function ge(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&I(e,t)?E.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],\"globalEval\",!t||J.get(t[n],\"globalEval\"))}ve.optgroup=ve.option,ve.tbody=ve.tfoot=ve.colgroup=ve.caption=ve.thead,ve.th=ve.td;var ye,_e,be=/<|&#?\\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,c,l,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===T(o))E.merge(p,o.nodeType?[o]:o);else if(be.test(o)){for(a=a||f.appendChild(t.createElement(\"div\")),s=(de.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ve[s]||ve._default,a.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],l=u[0];l--;)a=a.lastChild;E.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));for(f.textContent=\"\",d=0;o=p[d++];)if(r&&E.inArray(o,r)>-1)i&&i.push(o);else if(c=E.contains(o.ownerDocument,o),a=ge(f.appendChild(o),\"script\"),c&&me(a),n)for(l=0;o=a[l++];)he.test(o.type||\"\")&&n.push(o);return f}ye=a.createDocumentFragment().appendChild(a.createElement(\"div\")),(_e=a.createElement(\"input\")).setAttribute(\"type\",\"radio\"),_e.setAttribute(\"checked\",\"checked\"),_e.setAttribute(\"name\",\"t\"),ye.appendChild(_e),m.checkClone=ye.cloneNode(!0).cloneNode(!0).lastChild.checked,ye.innerHTML=\"<textarea>x</textarea>\",m.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var Te=a.documentElement,Ee=/^key/,xe=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\.(.+)|)/;function Ae(){return!0}function Se(){return!1}function Oe(){try{return a.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}E.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=J.get(e);if(g)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(Te,i),n.guid||(n.guid=E.guid++),(u=g.events)||(u=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==E&&E.event.triggered!==t.type?E.event.dispatch.apply(e,arguments):void 0}),c=(t=(t||\"\").match(H)||[\"\"]).length;c--;)d=v=(s=Ce.exec(t[c])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=E.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=E.event.special[d]||{},l=E.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),E.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=J.hasData(e)&&J.get(e);if(g&&(u=g.events)){for(c=(t=(t||\"\").match(H)||[\"\"]).length;c--;)if(d=v=(s=Ce.exec(t[c])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=E.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)l=p[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&(\"**\"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,g.handle)||E.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)E.event.remove(e,d+t[c],n,r,!0);E.isEmptyObject(u)&&J.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=E.event.fix(e),u=new Array(arguments.length),c=(J.get(this,\"events\")||{})[s.type]||[],l=E.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!l.preDispatch||!1!==l.preDispatch.call(this,s)){for(a=E.event.handlers.call(this,s,c),t=0;(i=a[t++])&&!s.isPropagationStopped();)for(s.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,c=e.target;if(u&&c.nodeType&&!(\"click\"===e.type&&e.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&(\"click\"!==e.type||!0!==c.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?E(i,this).index(c)>-1:E.find(i,this,null,[c]).length),a[i]&&o.push(r);o.length&&s.push({elem:c,handlers:o})}return c=this,u<t.length&&s.push({elem:c,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(E.Event.prototype,e,{enumerable:!0,configurable:!0,get:y(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Oe()&&this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===Oe()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type&&this.click&&I(this,\"input\"))return this.click(),!1},_default:function(e){return I(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ae:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ae,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ae,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ae,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Ee.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&xe.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){E.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=e.relatedTarget,i=e.handleObj;return r&&(r===this||E.contains(this,r))||(e.type=i.origType,n=i.handler.apply(this,arguments),e.type=t),n}}}),E.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){E.event.remove(this,e,n,t)})}});var Ie=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,ke=/<script|<style|<link/i,Ne=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Le=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function je(e,t){return I(e,\"table\")&&I(11!==t.nodeType?t:t.firstChild,\"tr\")&&E(e).children(\"tbody\")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Re(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function $e(e,t){var n,r,i,o,a,s,u,c;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),c=o.events))for(i in delete a.handle,a.events={},c)for(n=0,r=c[i].length;n<r;n++)E.event.add(t,i,c[i][n]);Z.hasData(e)&&(s=Z.access(e),u=E.extend({},s),Z.set(t,u))}}function He(e,t,n,r){t=c.apply([],t);var i,o,a,s,u,l,f=0,p=e.length,d=p-1,h=t[0],v=y(h);if(v||p>1&&\"string\"==typeof h&&!m.checkClone&&Ne.test(h))return e.each(function(i){var o=e.eq(i);v&&(t[0]=h.call(this,i,o.html())),He(o,t,n,r)});if(p&&(o=(i=we(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=E.map(ge(i,\"script\"),Pe)).length;f<p;f++)u=i,f!==d&&(u=E.clone(u,!0,!0),s&&E.merge(a,ge(u,\"script\"))),n.call(e[f],u,f);if(s)for(l=a[a.length-1].ownerDocument,E.map(a,Re),f=0;f<s;f++)u=a[f],he.test(u.type||\"\")&&!J.access(u,\"globalEval\")&&E.contains(l,u)&&(u.src&&\"module\"!==(u.type||\"\").toLowerCase()?E._evalUrl&&E._evalUrl(u.src):w(u.textContent.replace(Le,\"\"),l,u))}return e}function Me(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(ge(r)),r.parentNode&&(n&&E.contains(r.ownerDocument,r)&&me(ge(r,\"script\")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e.replace(Ie,\"<$1></$2>\")},clone:function(e,t,n){var r,i,o,a,s,u,c,l=e.cloneNode(!0),f=E.contains(e.ownerDocument,e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(l),r=0,i=(o=ge(e)).length;r<i;r++)s=o[r],u=a[r],c=void 0,\"input\"===(c=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:\"input\"!==c&&\"textarea\"!==c||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ge(e),a=a||ge(l),r=0,i=o.length;r<i;r++)$e(o[r],a[r]);else $e(e,l);return(a=ge(l,\"script\")).length>0&&me(a,!f&&ge(e,\"script\")),l},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(Q(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),E.fn.extend({detach:function(e){return Me(this,e,!0)},remove:function(e){return Me(this,e)},text:function(e){return V(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ge(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return V(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!ke.test(e)&&!ve[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ge(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return He(this,arguments,function(t){var n=this.parentNode;E.inArray(this,e)<0&&(E.cleanData(ge(this)),n&&n.replaceChild(t,this))},e)}}),E.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){E.fn[e]=function(e){for(var n,r=[],i=E(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),E(i[a])[t](n),l.apply(r,n.get());return this.pushStack(r)}});var Fe=new RegExp(\"^(\"+re+\")(?!px)[a-z%]+$\",\"i\"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},qe=new RegExp(oe.join(\"|\"),\"i\");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||We(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||E.contains(e.ownerDocument,e)||(a=E.style(e,t)),!m.pixelBoxStyles()&&Fe.test(a)&&qe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+\"\":a}function Ue(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){c.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",l.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",Te.appendChild(c).appendChild(l);var e=n.getComputedStyle(l);r=\"1%\"!==e.top,u=12===t(e.marginLeft),l.style.right=\"60%\",s=36===t(e.right),i=36===t(e.width),l.style.position=\"absolute\",o=36===l.offsetWidth||\"absolute\",Te.removeChild(c),l=null}}function t(e){return Math.round(parseFloat(e))}var r,i,o,s,u,c=a.createElement(\"div\"),l=a.createElement(\"div\");l.style&&(l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",m.clearCloneStyle=\"content-box\"===l.style.backgroundClip,E.extend(m,{boxSizingReliable:function(){return e(),i},pixelBoxStyles:function(){return e(),s},pixelPosition:function(){return e(),r},reliableMarginLeft:function(){return e(),u},scrollboxSize:function(){return e(),o}}))}();var Ve=/^(none|table(?!-c[ea]).+)/,ze=/^--/,Ke={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ge={letterSpacing:\"0\",fontWeight:\"400\"},Xe=[\"Webkit\",\"Moz\",\"ms\"],Qe=a.createElement(\"div\").style;function Ye(e){var t=E.cssProps[e];return t||(t=E.cssProps[e]=function(e){if(e in Qe)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;n--;)if((e=Xe[n]+t)in Qe)return e}(e)||e),t}function Je(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=E.css(e,n+oe[a],!0,i)),r?(\"content\"===n&&(u-=E.css(e,\"padding\"+oe[a],!0,i)),\"margin\"!==n&&(u-=E.css(e,\"border\"+oe[a]+\"Width\",!0,i))):(u+=E.css(e,\"padding\"+oe[a],!0,i),\"padding\"!==n?u+=E.css(e,\"border\"+oe[a]+\"Width\",!0,i):s+=E.css(e,\"border\"+oe[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=We(e),i=Be(e,t,r),o=\"border-box\"===E.css(e,\"boxSizing\",!1,r),a=o;if(Fe.test(i)){if(!n)return i;i=\"auto\"}return a=a&&(m.boxSizingReliable()||i===e.style[t]),(\"auto\"===i||!parseFloat(i)&&\"inline\"===E.css(e,\"display\",!1,r))&&(i=e[\"offset\"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?\"border\":\"content\"),a,r,i)+\"px\"}function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=ze.test(t),c=e.style;if(u||(t=Ye(s)),a=E.cssHooks[t]||E.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:c[t];\"string\"===(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"===o&&(n+=i&&i[3]||(E.cssNumber[s]?\"\":\"px\")),m.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(c[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return ze.test(t)||(t=Ye(s)),(a=E.cssHooks[t]||E.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),\"normal\"===i&&t in Ge&&(i=Ge[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each([\"height\",\"width\"],function(e,t){E.cssHooks[t]={get:function(e,n,r){if(n)return!Ve.test(E.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ke,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=We(e),a=\"border-box\"===E.css(e,\"boxSizing\",!1,o),s=r&&Ze(e,t,r,a,o);return a&&m.scrollboxSize()===o.position&&(s-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),s&&(i=ie.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=E.css(e,t)),Je(0,n,s)}}}),E.cssHooks.marginLeft=Ue(m.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,\"marginLeft\"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),E.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){E.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(E.cssHooks[e+t].set=Je)}),E.fn.extend({css:function(e,t){return V(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a<i;a++)o[t[a]]=E.css(e,t[a],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,arguments.length>1)}}),E.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(E.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[E.cssProps[e.prop]]&&!E.cssHooks[e.prop]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},E.fx=tt.prototype.init,E.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(at):n.setTimeout(at,E.fx.interval),E.fx.tick())}function st(){return n.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=oe[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(e,t,n){var r,i,o=0,a=lt.prefilters.length,s=E.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,c.startTime+c.duration-t),r=1-(n/c.duration||0),o=0,a=c.tweens.length;o<a;o++)c.tweens[o].run(r);return s.notifyWith(e,[c,r,n]),r<1&&a?n:(a||s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:E.extend({},t),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=E.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(r),r},stop:function(t){var n=0,r=t?c.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),l=c.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=E.cssHooks[r])&&\"expand\"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(l,c.opts.specialEasing);o<a;o++)if(r=lt.prefilters[o].call(c,e,l,c.opts))return y(r.stop)&&(E._queueHooks(c.elem,c.opts.queue).stop=r.stop.bind(r)),r;return E.map(l,ct,c),y(c.opts.start)&&c.opts.start.call(e,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),E.fx.timer(E.extend(u,{elem:e,anim:c,queue:c.opts.queue})),c}E.Animation=E.extend(lt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){y(e)?(t=e,e=[\"*\"]):e=e.match(H);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,c,l,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,v=e.nodeType&&ae(e),g=J.get(e,\"fxshow\");for(r in n.queue||(null==(a=E._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,E.queue(e,\"fx\").length||a.empty.fire()})})),t)if(i=t[r],it.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(v?\"hide\":\"show\")){if(\"show\"!==i||!g||void 0===g[r])continue;v=!0}d[r]=g&&g[r]||E.style(e,r)}if((u=!E.isEmptyObject(t))||!E.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(c=g&&g.display)&&(c=J.get(e,\"display\")),\"none\"===(l=E.css(e,\"display\"))&&(c?l=c:(fe([e],!0),c=e.style.display||c,l=E.css(e,\"display\"),fe([e]))),(\"inline\"===l||\"inline-block\"===l&&null!=c)&&\"none\"===E.css(e,\"float\")&&(u||(p.done(function(){h.display=c}),null==c&&(l=h.display,c=\"none\"===l?\"\":l)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(g?\"hidden\"in g&&(v=g.hidden):g=J.access(e,\"fxshow\",{display:c}),o&&(g.hidden=!v),v&&fe([e],!0),p.done(function(){for(r in v||fe([e]),J.remove(e,\"fxshow\"),d)E.style(e,r,d[r])})),u=ct(v?g[r]:0,r,p),r in g||(g[r]=u.start,v&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),E.speed=function(e,t,n){var r=e&&\"object\"==typeof e?E.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return E.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in E.fx.speeds?r.duration=E.fx.speeds[r.duration]:r.duration=E.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){y(r.old)&&r.old.call(this),r.queue&&E.dequeue(this,r.queue)},r},E.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=E.isEmptyObject(e),o=E.speed(t,n,r),a=function(){var t=lt(this,E.extend({},e),o);(i||J.get(this,\"finish\"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=E.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||E.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||\"fx\"),this.each(function(){var t,n=J.get(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=E.timers,a=r?r.length:0;for(n.finish=!0,E.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),E.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=E.fn[t];E.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),E.each({slideDown:ut(\"show\"),slideUp:ut(\"hide\"),slideToggle:ut(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){E.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),nt=void 0},E.fx.timer=function(e){E.timers.push(e),E.fx.start()},E.fx.interval=13,E.fx.start=function(){rt||(rt=!0,at())},E.fx.stop=function(){rt=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(e,t){return e=E.fx&&E.fx.speeds[e]||e,t=t||\"fx\",this.queue(t,function(t,r){var i=n.setTimeout(t,e);r.stop=function(){n.clearTimeout(i)}})},function(){var e=a.createElement(\"input\"),t=a.createElement(\"select\").appendChild(a.createElement(\"option\"));e.type=\"checkbox\",m.checkOn=\"\"!==e.value,m.optSelected=t.selected,(e=a.createElement(\"input\")).value=\"t\",e.type=\"radio\",m.radioValue=\"t\"===e.value}();var ft,pt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return V(this,E.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(i=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&\"radio\"===t&&I(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(H);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=pt[t]||E.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}});var dt=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function vt(e){return(e.match(H)||[]).join(\" \")}function gt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function mt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(H)||[]}E.fn.extend({prop:function(e,t){return V(this,E.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,\"tabindex\");return t?parseInt(t,10):dt.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),m.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(y(e))return this.each(function(t){E(this).addClass(e.call(this,t,gt(this)))});if((t=mt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(y(e))return this.each(function(t){E(this).removeClass(e.call(this,t,gt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((t=mt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):y(e)?this.each(function(n){E(this).toggleClass(e.call(this,n,gt(this),t),t)}):this.each(function(){var t,i,o,a;if(r)for(i=0,o=E(this),a=mt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=gt(this))&&J.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":J.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+vt(gt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var yt=/\\r/g;E.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=y(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,E(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=E.map(i,function(e){return null==e?\"\":e+\"\"})),(t=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))})):i?(t=E.valHooks[i.type]||E.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(yt,\"\"):null==n?\"\":n:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,\"value\");return null!=t?t:vt(E.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!I(n.parentNode,\"optgroup\"))){if(t=E(n).val(),a)return t;s.push(t)}return s},set:function(e,t){for(var n,r,i=e.options,o=E.makeArray(t),a=i.length;a--;)((r=i[a]).selected=E.inArray(E.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each([\"radio\",\"checkbox\"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=E.inArray(E(e).val(),t)>-1}},m.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),m.focusin=\"onfocusin\"in n;var _t=/^(?:focusinfocus|focusoutblur)$/,bt=function(e){e.stopPropagation()};E.extend(E.event,{trigger:function(e,t,r,i){var o,s,u,c,l,f,p,d,v=[r||a],g=h.call(e,\"type\")?e.type:e,m=h.call(e,\"namespace\")?e.namespace.split(\".\"):[];if(s=d=u=r=r||a,3!==r.nodeType&&8!==r.nodeType&&!_t.test(g+E.event.triggered)&&(g.indexOf(\".\")>-1&&(m=g.split(\".\"),g=m.shift(),m.sort()),l=g.indexOf(\":\")<0&&\"on\"+g,(e=e[E.expando]?e:new E.Event(g,\"object\"==typeof e&&e)).isTrigger=i?2:3,e.namespace=m.join(\".\"),e.rnamespace=e.namespace?new RegExp(\"(^|\\\\.)\"+m.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:E.makeArray(t,[e]),p=E.event.special[g]||{},i||!p.trigger||!1!==p.trigger.apply(r,t))){if(!i&&!p.noBubble&&!_(r)){for(c=p.delegateType||g,_t.test(c+g)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(r.ownerDocument||a)&&v.push(u.defaultView||u.parentWindow||n)}for(o=0;(s=v[o++])&&!e.isPropagationStopped();)d=s,e.type=o>1?c:p.bindType||g,(f=(J.get(s,\"events\")||{})[e.type]&&J.get(s,\"handle\"))&&f.apply(s,t),(f=l&&s[l])&&f.apply&&Q(s)&&(e.result=f.apply(s,t),!1===e.result&&e.preventDefault());return e.type=g,i||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(v.pop(),t)||!Q(r)||l&&y(r[g])&&!_(r)&&((u=r[l])&&(r[l]=null),E.event.triggered=g,e.isPropagationStopped()&&d.addEventListener(g,bt),r[g](),e.isPropagationStopped()&&d.removeEventListener(g,bt),E.event.triggered=void 0,u&&(r[l]=u)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),m.focusin||E.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){E.event.simulate(t,e.target,E.event.fix(e))};E.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var wt=n.location,Tt=Date.now(),Et=/\\?/;E.parseXML=function(e){var t;if(!e||\"string\"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,\"text/xml\")}catch(e){t=void 0}return t&&!t.getElementsByTagName(\"parsererror\").length||E.error(\"Invalid XML: \"+e),t};var xt=/\\[\\]$/,Ct=/\\r?\\n/g,At=/^(?:submit|button|image|reset|file)$/i,St=/^(?:input|select|textarea|keygen)/i;function Ot(e,t,n,r){var i;if(Array.isArray(t))E.each(t,function(t,i){n||xt.test(e)?r(e,i):Ot(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==T(t))r(e,t);else for(i in t)Ot(e+\"[\"+i+\"]\",t[i],n,r)}E.param=function(e,t){var n,r=[],i=function(e,t){var n=y(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)Ot(n,e[n],t,i);return r.join(\"&\")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,\"elements\");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(\":disabled\")&&St.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(Ct,\"\\r\\n\")}}):{name:t.name,value:n.replace(Ct,\"\\r\\n\")}}).get()}});var Dt=/%20/g,It=/#.*$/,kt=/([?&])_=[^&]*/,Nt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,jt=/^\\/\\//,Pt={},Rt={},$t=\"*/\".concat(\"*\"),Ht=a.createElement(\"a\");function Mt(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(H)||[];if(y(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ft(e,t,n,r){var i={},o=e===Rt;function a(s){var u;return i[s]=!0,E.each(e[s]||[],function(e,s){var c=s(t,n,r);return\"string\"!=typeof c||o||i[c]?o?!(u=c):void 0:(t.dataTypes.unshift(c),a(c),!1)}),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Wt(e,t){var n,r,i=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&E.extend(!0,e,r),e}Ht.href=wt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(wt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":$t,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Wt(Wt(e,E.ajaxSettings),t):Wt(E.ajaxSettings,e)},ajaxPrefilter:Mt(Pt),ajaxTransport:Mt(Rt),ajax:function(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,o,s,u,c,l,f,p,d,h=E.ajaxSetup({},t),v=h.context||h,g=h.context&&(v.nodeType||v.jquery)?E(v):E.event,m=E.Deferred(),y=E.Callbacks(\"once memory\"),_=h.statusCode||{},b={},w={},T=\"canceled\",x={readyState:0,getResponseHeader:function(e){var t;if(l){if(!s)for(s={};t=Nt.exec(o);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)x.always(e[x.status]);else for(t in e)_[t]=[_[t],e[t]];return this},abort:function(e){var t=e||T;return r&&r.abort(t),C(0,t),this}};if(m.promise(x),h.url=((e||h.url||wt.href)+\"\").replace(jt,wt.protocol+\"//\"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||\"*\").toLowerCase().match(H)||[\"\"],null==h.crossDomain){c=a.createElement(\"a\");try{c.href=h.url,c.href=c.href,h.crossDomain=Ht.protocol+\"//\"+Ht.host!=c.protocol+\"//\"+c.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&\"string\"!=typeof h.data&&(h.data=E.param(h.data,h.traditional)),Ft(Pt,h,t,x),l)return x;for(p in(f=E.event&&h.global)&&0==E.active++&&E.event.trigger(\"ajaxStart\"),h.type=h.type.toUpperCase(),h.hasContent=!Lt.test(h.type),i=h.url.replace(It,\"\"),h.hasContent?h.data&&h.processData&&0===(h.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(h.data=h.data.replace(Dt,\"+\")):(d=h.url.slice(i.length),h.data&&(h.processData||\"string\"==typeof h.data)&&(i+=(Et.test(i)?\"&\":\"?\")+h.data,delete h.data),!1===h.cache&&(i=i.replace(kt,\"$1\"),d=(Et.test(i)?\"&\":\"?\")+\"_=\"+Tt+++d),h.url=i+d),h.ifModified&&(E.lastModified[i]&&x.setRequestHeader(\"If-Modified-Since\",E.lastModified[i]),E.etag[i]&&x.setRequestHeader(\"If-None-Match\",E.etag[i])),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&x.setRequestHeader(\"Content-Type\",h.contentType),x.setRequestHeader(\"Accept\",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+(\"*\"!==h.dataTypes[0]?\", \"+$t+\"; q=0.01\":\"\"):h.accepts[\"*\"]),h.headers)x.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(v,x,h)||l))return x.abort();if(T=\"abort\",y.add(h.complete),x.done(h.success),x.fail(h.error),r=Ft(Rt,h,t,x)){if(x.readyState=1,f&&g.trigger(\"ajaxSend\",[x,h]),l)return x;h.async&&h.timeout>0&&(u=n.setTimeout(function(){x.abort(\"timeout\")},h.timeout));try{l=!1,r.send(b,C)}catch(e){if(l)throw e;C(-1,e)}}else C(-1,\"No Transport\");function C(e,t,a,s){var c,p,d,b,w,T=t;l||(l=!0,u&&n.clearTimeout(u),r=void 0,o=s||\"\",x.readyState=e>0?4:0,c=e>=200&&e<300||304===e,a&&(b=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(h,x,a)),b=function(e,t,n,r){var i,o,a,s,u,c={},l=e.dataTypes.slice();if(l[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=l.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=l.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=c[u+\" \"+o]||c[\"* \"+o]))for(i in c)if((s=i.split(\" \"))[1]===o&&(a=c[u+\" \"+s[0]]||c[\"* \"+s[0]])){!0===a?a=c[i]:!0!==c[i]&&(o=s[0],l.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(h,b,x,c),c?(h.ifModified&&((w=x.getResponseHeader(\"Last-Modified\"))&&(E.lastModified[i]=w),(w=x.getResponseHeader(\"etag\"))&&(E.etag[i]=w)),204===e||\"HEAD\"===h.type?T=\"nocontent\":304===e?T=\"notmodified\":(T=b.state,p=b.data,c=!(d=b.error))):(d=T,!e&&T||(T=\"error\",e<0&&(e=0))),x.status=e,x.statusText=(t||T)+\"\",c?m.resolveWith(v,[p,T,x]):m.rejectWith(v,[x,T,d]),x.statusCode(_),_=void 0,f&&g.trigger(c?\"ajaxSuccess\":\"ajaxError\",[x,h,c?p:d]),y.fireWith(v,[x,T]),f&&(g.trigger(\"ajaxComplete\",[x,h]),--E.active||E.event.trigger(\"ajaxStop\")))}return x},getJSON:function(e,t,n){return E.get(e,t,n,\"json\")},getScript:function(e,t){return E.get(e,void 0,t,\"script\")}}),E.each([\"get\",\"post\"],function(e,t){E[t]=function(e,n,r,i){return y(n)&&(i=i||r,r=n,n=void 0),E.ajax(E.extend({url:e,type:t,dataType:i,data:n,success:r},E.isPlainObject(e)&&e))}}),E._evalUrl=function(e){return E.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,throws:!0})},E.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return y(e)?this.each(function(t){E(this).wrapInner(e.call(this,t))}):this.each(function(){var t=E(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=y(e);return this.each(function(n){E(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var qt={0:200,1223:204},Bt=E.ajaxSettings.xhr();m.cors=!!Bt&&\"withCredentials\"in Bt,m.ajax=Bt=!!Bt,E.ajaxTransport(function(e){var t,r;if(m.cors||Bt&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(qt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=s.ontimeout=t(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){t&&r()})},t=t(\"abort\");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),E.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),E.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),E.ajaxTransport(\"script\",function(e){var t,n;if(e.crossDomain)return{send:function(r,i){t=E(\"<script>\").prop({charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e&&i(\"error\"===e.type?404:200,e.type)}),a.head.appendChild(t[0])},abort:function(){n&&n()}}});var Ut,Vt=[],zt=/(=)\\?(?=&|$)|\\?\\?/;E.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Vt.pop()||E.expando+\"_\"+Tt++;return this[e]=!0,e}}),E.ajaxPrefilter(\"json jsonp\",function(e,t,r){var i,o,a,s=!1!==e.jsonp&&(zt.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&zt.test(e.data)&&\"data\");if(s||\"jsonp\"===e.dataTypes[0])return i=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(zt,\"$1\"+i):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+i),e.converters[\"script json\"]=function(){return a||E.error(i+\" was not called\"),a[0]},e.dataTypes[0]=\"json\",o=n[i],n[i]=function(){a=arguments},r.always(function(){void 0===o?E(n).removeProp(i):n[i]=o,e[i]&&(e.jsonpCallback=t.jsonpCallback,Vt.push(i)),a&&y(o)&&o(a[0]),a=o=void 0}),\"script\"}),m.createHTMLDocument=((Ut=a.implementation.createHTMLDocument(\"\").body).innerHTML=\"<form></form><form></form>\",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=a.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=a.location.href,t.head.appendChild(r)):t=a),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),y(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),a.length>0&&E.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?E(\"<div>\").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(e){return E.grep(E.timers,function(t){return e===t.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,c=E.css(e,\"position\"),l=E(e),f={};\"static\"===c&&(e.style.position=\"relative\"),s=l.offset(),o=E.css(e,\"top\"),u=E.css(e,\"left\"),(\"absolute\"===c||\"fixed\"===c)&&(o+u).indexOf(\"auto\")>-1?(a=(r=l.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),y(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):l.css(f)}},E.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){E.offset.setOffset(this,e,t)});var t,n,r=this[0];return r?r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===E.css(r,\"position\"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&\"static\"===E.css(e,\"position\");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,\"borderTopWidth\",!0),i.left+=E.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-E.css(r,\"marginTop\",!0),left:t.left-i.left-E.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\"static\"===E.css(e,\"position\");)e=e.offsetParent;return e||Te})}}),E.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=\"pageYOffset\"===t;E.fn[e]=function(r){return V(this,function(e,r,i){var o;if(_(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),E.each([\"top\",\"left\"],function(e,t){E.cssHooks[t]=Ue(m.pixelPosition,function(e,n){if(n)return n=Be(e,t),Fe.test(n)?E(e).position()[t]+\"px\":n})}),E.each({Height:\"height\",Width:\"width\"},function(e,t){E.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){E.fn[r]=function(i,o){var a=arguments.length&&(n||\"boolean\"!=typeof i),s=n||(!0===i||!0===o?\"margin\":\"border\");return V(this,function(t,n,i){var o;return _(t)?0===r.indexOf(\"outer\")?t[\"inner\"+e]:t.document.documentElement[\"client\"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===i?E.css(t,n,s):E.style(t,n,i,s)},t,a?i:void 0,a)}})}),E.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,t){E.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),E.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),y(e))return r=u.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(u.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=I,E.isFunction=y,E.isWindow=_,E.camelCase=X,E.type=T,E.now=Date.now,E.isNumeric=function(e){var t=E.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},void 0===(r=function(){return E}.apply(t,[]))||(e.exports=r);var Kt=n.jQuery,Gt=n.$;return E.noConflict=function(e){return n.$===E&&(n.$=Gt),e&&n.jQuery===E&&(n.jQuery=Kt),E},i||(n.jQuery=n.$=E),E})},function(e,t,n){\"use strict\";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t){var n,r,i=e.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var u,c=[],l=!1,f=-1;function p(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&d())}function d(){if(!l){var e=s(p);l=!0;for(var t=c.length;t;){for(u=c,c=[];++f<t;)u&&u[f].run();f=-1,t=c.length}u=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function v(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new h(e,t)),1!==c.length||l||s(d)},h.prototype.run=function(){this.fun.apply(null,this.array)},i.title=\"browser\",i.browser=!0,i.env={},i.argv=[],i.version=\"\",i.versions={},i.on=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,i.listeners=function(e){return[]},i.binding=function(e){throw new Error(\"process.binding is not supported\")},i.cwd=function(){return\"/\"},i.chdir=function(e){throw new Error(\"process.chdir is not supported\")},i.umask=function(){return 0}},function(e,t,n){\"use strict\";var r=n(0),i=n(22),o=n(24),a=n(25),s=n(26),u=n(8),c=\"undefined\"!=typeof window&&window.btoa&&window.btoa.bind(window)||n(27);e.exports=function(e){return new Promise(function(t,l){var f=e.data,p=e.headers;r.isFormData(f)&&delete p[\"Content-Type\"];var d=new XMLHttpRequest,h=\"onreadystatechange\",v=!1;if(\"undefined\"==typeof window||!window.XDomainRequest||\"withCredentials\"in d||s(e.url)||(d=new window.XDomainRequest,h=\"onload\",v=!0,d.onprogress=function(){},d.ontimeout=function(){}),e.auth){var g=e.auth.username||\"\",m=e.auth.password||\"\";p.Authorization=\"Basic \"+c(g+\":\"+m)}if(d.open(e.method.toUpperCase(),o(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d[h]=function(){if(d&&(4===d.readyState||v)&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf(\"file:\"))){var n=\"getAllResponseHeaders\"in d?a(d.getAllResponseHeaders()):null,r={data:e.responseType&&\"text\"!==e.responseType?d.response:d.responseText,status:1223===d.status?204:d.status,statusText:1223===d.status?\"No Content\":d.statusText,headers:n,config:e,request:d};i(t,l,r),d=null}},d.onerror=function(){l(u(\"Network Error\",e,null,d)),d=null},d.ontimeout=function(){l(u(\"timeout of \"+e.timeout+\"ms exceeded\",e,\"ECONNABORTED\",d)),d=null},r.isStandardBrowserEnv()){var y=n(28),_=(e.withCredentials||s(e.url))&&e.xsrfCookieName?y.read(e.xsrfCookieName):void 0;_&&(p[e.xsrfHeaderName]=_)}if(\"setRequestHeader\"in d&&r.forEach(p,function(e,t){void 0===f&&\"content-type\"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if(\"json\"!==e.responseType)throw t}\"function\"==typeof e.onDownloadProgress&&d.addEventListener(\"progress\",e.onDownloadProgress),\"function\"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener(\"progress\",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),l(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){\"use strict\";var r=n(23);e.exports=function(e,t,n,i,o){var a=new Error(e);return r(a,t,n,i,o)}},function(e,t,n){\"use strict\";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){\"use strict\";function r(e){this.message=e}r.prototype.toString=function(){return\"Cancel\"+(this.message?\": \"+this.message:\"\")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){n(12),e.exports=n(40)},function(e,t,n){n(13),window.Vue=n(36),Vue.component(\"example-component\",n(39).default);new Vue({el:\"#app\"})},function(e,t,n){window._=n(14);try{window.Popper=n(3).default,window.$=window.jQuery=n(4),n(16)}catch(e){}window.axios=n(17),window.axios.defaults.headers.common[\"X-Requested-With\"]=\"XMLHttpRequest\";var r=document.head.querySelector('meta[name=\"csrf-token\"]');r?window.axios.defaults.headers.common[\"X-CSRF-TOKEN\"]=r.content:console.error(\"CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token\")},function(e,t,n){(function(e,r){var i;(function(){var o,a=200,s=\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\",u=\"Expected a function\",c=\"__lodash_hash_undefined__\",l=500,f=\"__lodash_placeholder__\",p=1,d=2,h=4,v=1,g=2,m=1,y=2,_=4,b=8,w=16,T=32,E=64,x=128,C=256,A=512,S=30,O=\"...\",D=800,I=16,k=1,N=2,L=1/0,j=9007199254740991,P=1.7976931348623157e308,R=NaN,$=4294967295,H=$-1,M=$>>>1,F=[[\"ary\",x],[\"bind\",m],[\"bindKey\",y],[\"curry\",b],[\"curryRight\",w],[\"flip\",A],[\"partial\",T],[\"partialRight\",E],[\"rearg\",C]],W=\"[object Arguments]\",q=\"[object Array]\",B=\"[object AsyncFunction]\",U=\"[object Boolean]\",V=\"[object Date]\",z=\"[object DOMException]\",K=\"[object Error]\",G=\"[object Function]\",X=\"[object GeneratorFunction]\",Q=\"[object Map]\",Y=\"[object Number]\",J=\"[object Null]\",Z=\"[object Object]\",ee=\"[object Proxy]\",te=\"[object RegExp]\",ne=\"[object Set]\",re=\"[object String]\",ie=\"[object Symbol]\",oe=\"[object Undefined]\",ae=\"[object WeakMap]\",se=\"[object WeakSet]\",ue=\"[object ArrayBuffer]\",ce=\"[object DataView]\",le=\"[object Float32Array]\",fe=\"[object Float64Array]\",pe=\"[object Int8Array]\",de=\"[object Int16Array]\",he=\"[object Int32Array]\",ve=\"[object Uint8Array]\",ge=\"[object Uint8ClampedArray]\",me=\"[object Uint16Array]\",ye=\"[object Uint32Array]\",_e=/\\b__p \\+= '';/g,be=/\\b(__p \\+=) '' \\+/g,we=/(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g,Te=/&(?:amp|lt|gt|quot|#39);/g,Ee=/[&<>\"']/g,xe=RegExp(Te.source),Ce=RegExp(Ee.source),Ae=/<%-([\\s\\S]+?)%>/g,Se=/<%([\\s\\S]+?)%>/g,Oe=/<%=([\\s\\S]+?)%>/g,De=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Ie=/^\\w*$/,ke=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,Ne=/[\\\\^$.*+?()[\\]{}|]/g,Le=RegExp(Ne.source),je=/^\\s+|\\s+$/g,Pe=/^\\s+/,Re=/\\s+$/,$e=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,He=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,Me=/,? & /,Fe=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,We=/\\\\(\\\\)?/g,qe=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,Be=/\\w*$/,Ue=/^[-+]0x[0-9a-f]+$/i,Ve=/^0b[01]+$/i,ze=/^\\[object .+?Constructor\\]$/,Ke=/^0o[0-7]+$/i,Ge=/^(?:0|[1-9]\\d*)$/,Xe=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,Qe=/($^)/,Ye=/['\\n\\r\\u2028\\u2029\\\\]/g,Je=\"\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\",Ze=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",et=\"[\\\\ud800-\\\\udfff]\",tt=\"[\"+Ze+\"]\",nt=\"[\"+Je+\"]\",rt=\"\\\\d+\",it=\"[\\\\u2700-\\\\u27bf]\",ot=\"[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]\",at=\"[^\\\\ud800-\\\\udfff\"+Ze+rt+\"\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]\",st=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",ut=\"[^\\\\ud800-\\\\udfff]\",ct=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",lt=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",ft=\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]\",pt=\"(?:\"+ot+\"|\"+at+\")\",dt=\"(?:\"+ft+\"|\"+at+\")\",ht=\"(?:\"+nt+\"|\"+st+\")\"+\"?\",vt=\"[\\\\ufe0e\\\\ufe0f]?\"+ht+(\"(?:\\\\u200d(?:\"+[ut,ct,lt].join(\"|\")+\")[\\\\ufe0e\\\\ufe0f]?\"+ht+\")*\"),gt=\"(?:\"+[it,ct,lt].join(\"|\")+\")\"+vt,mt=\"(?:\"+[ut+nt+\"?\",nt,ct,lt,et].join(\"|\")+\")\",yt=RegExp(\"['’]\",\"g\"),_t=RegExp(nt,\"g\"),bt=RegExp(st+\"(?=\"+st+\")|\"+mt+vt,\"g\"),wt=RegExp([ft+\"?\"+ot+\"+(?:['’](?:d|ll|m|re|s|t|ve))?(?=\"+[tt,ft,\"$\"].join(\"|\")+\")\",dt+\"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=\"+[tt,ft+pt,\"$\"].join(\"|\")+\")\",ft+\"?\"+pt+\"+(?:['’](?:d|ll|m|re|s|t|ve))?\",ft+\"+(?:['’](?:D|LL|M|RE|S|T|VE))?\",\"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\",\"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\",rt,gt].join(\"|\"),\"g\"),Tt=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\"+Je+\"\\\\ufe0e\\\\ufe0f]\"),Et=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xt=[\"Array\",\"Buffer\",\"DataView\",\"Date\",\"Error\",\"Float32Array\",\"Float64Array\",\"Function\",\"Int8Array\",\"Int16Array\",\"Int32Array\",\"Map\",\"Math\",\"Object\",\"Promise\",\"RegExp\",\"Set\",\"String\",\"Symbol\",\"TypeError\",\"Uint8Array\",\"Uint8ClampedArray\",\"Uint16Array\",\"Uint32Array\",\"WeakMap\",\"_\",\"clearTimeout\",\"isFinite\",\"parseInt\",\"setTimeout\"],Ct=-1,At={};At[le]=At[fe]=At[pe]=At[de]=At[he]=At[ve]=At[ge]=At[me]=At[ye]=!0,At[W]=At[q]=At[ue]=At[U]=At[ce]=At[V]=At[K]=At[G]=At[Q]=At[Y]=At[Z]=At[te]=At[ne]=At[re]=At[ae]=!1;var St={};St[W]=St[q]=St[ue]=St[ce]=St[U]=St[V]=St[le]=St[fe]=St[pe]=St[de]=St[he]=St[Q]=St[Y]=St[Z]=St[te]=St[ne]=St[re]=St[ie]=St[ve]=St[ge]=St[me]=St[ye]=!0,St[K]=St[G]=St[ae]=!1;var Ot={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Dt=parseFloat,It=parseInt,kt=\"object\"==typeof e&&e&&e.Object===Object&&e,Nt=\"object\"==typeof self&&self&&self.Object===Object&&self,Lt=kt||Nt||Function(\"return this\")(),jt=t&&!t.nodeType&&t,Pt=jt&&\"object\"==typeof r&&r&&!r.nodeType&&r,Rt=Pt&&Pt.exports===jt,$t=Rt&&kt.process,Ht=function(){try{var e=Pt&&Pt.require&&Pt.require(\"util\").types;return e||$t&&$t.binding&&$t.binding(\"util\")}catch(e){}}(),Mt=Ht&&Ht.isArrayBuffer,Ft=Ht&&Ht.isDate,Wt=Ht&&Ht.isMap,qt=Ht&&Ht.isRegExp,Bt=Ht&&Ht.isSet,Ut=Ht&&Ht.isTypedArray;function Vt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function zt(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i<o;){var a=e[i];t(r,a,n(a),e)}return r}function Kt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}function Gt(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function Xt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0}function Qt(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n<r;){var a=e[n];t(a,n,e)&&(o[i++]=a)}return o}function Yt(e,t){return!!(null==e?0:e.length)&&un(e,t,0)>-1}function Jt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}function Zt(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}function en(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}function tn(e,t,n,r){var i=-1,o=null==e?0:e.length;for(r&&o&&(n=e[++i]);++i<o;)n=t(n,e[i],i,e);return n}function nn(e,t,n,r){var i=null==e?0:e.length;for(r&&i&&(n=e[--i]);i--;)n=t(n,e[i],i,e);return n}function rn(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var on=pn(\"length\");function an(e,t,n){var r;return n(e,function(e,n,i){if(t(e,n,i))return r=n,!1}),r}function sn(e,t,n,r){for(var i=e.length,o=n+(r?1:-1);r?o--:++o<i;)if(t(e[o],o,e))return o;return-1}function un(e,t,n){return t==t?function(e,t,n){var r=n-1,i=e.length;for(;++r<i;)if(e[r]===t)return r;return-1}(e,t,n):sn(e,ln,n)}function cn(e,t,n,r){for(var i=n-1,o=e.length;++i<o;)if(r(e[i],t))return i;return-1}function ln(e){return e!=e}function fn(e,t){var n=null==e?0:e.length;return n?vn(e,t)/n:R}function pn(e){return function(t){return null==t?o:t[e]}}function dn(e){return function(t){return null==e?o:e[t]}}function hn(e,t,n,r,i){return i(e,function(e,i,o){n=r?(r=!1,e):t(n,e,i,o)}),n}function vn(e,t){for(var n,r=-1,i=e.length;++r<i;){var a=t(e[r]);a!==o&&(n=n===o?a:n+a)}return n}function gn(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function mn(e){return function(t){return e(t)}}function yn(e,t){return Zt(t,function(t){return e[t]})}function _n(e,t){return e.has(t)}function bn(e,t){for(var n=-1,r=e.length;++n<r&&un(t,e[n],0)>-1;);return n}function wn(e,t){for(var n=e.length;n--&&un(t,e[n],0)>-1;);return n}var Tn=dn({\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"Ç\":\"C\",\"ç\":\"c\",\"Ð\":\"D\",\"ð\":\"d\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"Ñ\":\"N\",\"ñ\":\"n\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"Ý\":\"Y\",\"ý\":\"y\",\"ÿ\":\"y\",\"Æ\":\"Ae\",\"æ\":\"ae\",\"Þ\":\"Th\",\"þ\":\"th\",\"ß\":\"ss\",\"Ā\":\"A\",\"Ă\":\"A\",\"Ą\":\"A\",\"ā\":\"a\",\"ă\":\"a\",\"ą\":\"a\",\"Ć\":\"C\",\"Ĉ\":\"C\",\"Ċ\":\"C\",\"Č\":\"C\",\"ć\":\"c\",\"ĉ\":\"c\",\"ċ\":\"c\",\"č\":\"c\",\"Ď\":\"D\",\"Đ\":\"D\",\"ď\":\"d\",\"đ\":\"d\",\"Ē\":\"E\",\"Ĕ\":\"E\",\"Ė\":\"E\",\"Ę\":\"E\",\"Ě\":\"E\",\"ē\":\"e\",\"ĕ\":\"e\",\"ė\":\"e\",\"ę\":\"e\",\"ě\":\"e\",\"Ĝ\":\"G\",\"Ğ\":\"G\",\"Ġ\":\"G\",\"Ģ\":\"G\",\"ĝ\":\"g\",\"ğ\":\"g\",\"ġ\":\"g\",\"ģ\":\"g\",\"Ĥ\":\"H\",\"Ħ\":\"H\",\"ĥ\":\"h\",\"ħ\":\"h\",\"Ĩ\":\"I\",\"Ī\":\"I\",\"Ĭ\":\"I\",\"Į\":\"I\",\"İ\":\"I\",\"ĩ\":\"i\",\"ī\":\"i\",\"ĭ\":\"i\",\"į\":\"i\",\"ı\":\"i\",\"Ĵ\":\"J\",\"ĵ\":\"j\",\"Ķ\":\"K\",\"ķ\":\"k\",\"ĸ\":\"k\",\"Ĺ\":\"L\",\"Ļ\":\"L\",\"Ľ\":\"L\",\"Ŀ\":\"L\",\"Ł\":\"L\",\"ĺ\":\"l\",\"ļ\":\"l\",\"ľ\":\"l\",\"ŀ\":\"l\",\"ł\":\"l\",\"Ń\":\"N\",\"Ņ\":\"N\",\"Ň\":\"N\",\"Ŋ\":\"N\",\"ń\":\"n\",\"ņ\":\"n\",\"ň\":\"n\",\"ŋ\":\"n\",\"Ō\":\"O\",\"Ŏ\":\"O\",\"Ő\":\"O\",\"ō\":\"o\",\"ŏ\":\"o\",\"ő\":\"o\",\"Ŕ\":\"R\",\"Ŗ\":\"R\",\"Ř\":\"R\",\"ŕ\":\"r\",\"ŗ\":\"r\",\"ř\":\"r\",\"Ś\":\"S\",\"Ŝ\":\"S\",\"Ş\":\"S\",\"Š\":\"S\",\"ś\":\"s\",\"ŝ\":\"s\",\"ş\":\"s\",\"š\":\"s\",\"Ţ\":\"T\",\"Ť\":\"T\",\"Ŧ\":\"T\",\"ţ\":\"t\",\"ť\":\"t\",\"ŧ\":\"t\",\"Ũ\":\"U\",\"Ū\":\"U\",\"Ŭ\":\"U\",\"Ů\":\"U\",\"Ű\":\"U\",\"Ų\":\"U\",\"ũ\":\"u\",\"ū\":\"u\",\"ŭ\":\"u\",\"ů\":\"u\",\"ű\":\"u\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"Ż\":\"Z\",\"Ž\":\"Z\",\"ź\":\"z\",\"ż\":\"z\",\"ž\":\"z\",\"Ĳ\":\"IJ\",\"ĳ\":\"ij\",\"Œ\":\"Oe\",\"œ\":\"oe\",\"ŉ\":\"'n\",\"ſ\":\"s\"}),En=dn({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"});function xn(e){return\"\\\\\"+Ot[e]}function Cn(e){return Tt.test(e)}function An(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function Sn(e,t){return function(n){return e(t(n))}}function On(e,t){for(var n=-1,r=e.length,i=0,o=[];++n<r;){var a=e[n];a!==t&&a!==f||(e[n]=f,o[i++]=n)}return o}function Dn(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}function In(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=[e,e]}),n}function kn(e){return Cn(e)?function(e){var t=bt.lastIndex=0;for(;bt.test(e);)++t;return t}(e):on(e)}function Nn(e){return Cn(e)?function(e){return e.match(bt)||[]}(e):function(e){return e.split(\"\")}(e)}var Ln=dn({\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&#39;\":\"'\"});var jn=function e(t){var n,r=(t=null==t?Lt:jn.defaults(Lt.Object(),t,jn.pick(Lt,xt))).Array,i=t.Date,Je=t.Error,Ze=t.Function,et=t.Math,tt=t.Object,nt=t.RegExp,rt=t.String,it=t.TypeError,ot=r.prototype,at=Ze.prototype,st=tt.prototype,ut=t[\"__core-js_shared__\"],ct=at.toString,lt=st.hasOwnProperty,ft=0,pt=(n=/[^.]+$/.exec(ut&&ut.keys&&ut.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+n:\"\",dt=st.toString,ht=ct.call(tt),vt=Lt._,gt=nt(\"^\"+ct.call(lt).replace(Ne,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),mt=Rt?t.Buffer:o,bt=t.Symbol,Tt=t.Uint8Array,Ot=mt?mt.allocUnsafe:o,kt=Sn(tt.getPrototypeOf,tt),Nt=tt.create,jt=st.propertyIsEnumerable,Pt=ot.splice,$t=bt?bt.isConcatSpreadable:o,Ht=bt?bt.iterator:o,on=bt?bt.toStringTag:o,dn=function(){try{var e=Mo(tt,\"defineProperty\");return e({},\"\",{}),e}catch(e){}}(),Pn=t.clearTimeout!==Lt.clearTimeout&&t.clearTimeout,Rn=i&&i.now!==Lt.Date.now&&i.now,$n=t.setTimeout!==Lt.setTimeout&&t.setTimeout,Hn=et.ceil,Mn=et.floor,Fn=tt.getOwnPropertySymbols,Wn=mt?mt.isBuffer:o,qn=t.isFinite,Bn=ot.join,Un=Sn(tt.keys,tt),Vn=et.max,zn=et.min,Kn=i.now,Gn=t.parseInt,Xn=et.random,Qn=ot.reverse,Yn=Mo(t,\"DataView\"),Jn=Mo(t,\"Map\"),Zn=Mo(t,\"Promise\"),er=Mo(t,\"Set\"),tr=Mo(t,\"WeakMap\"),nr=Mo(tt,\"create\"),rr=tr&&new tr,ir={},or=fa(Yn),ar=fa(Jn),sr=fa(Zn),ur=fa(er),cr=fa(tr),lr=bt?bt.prototype:o,fr=lr?lr.valueOf:o,pr=lr?lr.toString:o;function dr(e){if(Os(e)&&!ms(e)&&!(e instanceof mr)){if(e instanceof gr)return e;if(lt.call(e,\"__wrapped__\"))return pa(e)}return new gr(e)}var hr=function(){function e(){}return function(t){if(!Ss(t))return{};if(Nt)return Nt(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function vr(){}function gr(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function mr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=$,this.__views__=[]}function yr(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function _r(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function br(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function wr(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new br;++t<n;)this.add(e[t])}function Tr(e){var t=this.__data__=new _r(e);this.size=t.size}function Er(e,t){var n=ms(e),r=!n&&gs(e),i=!n&&!r&&ws(e),o=!n&&!r&&!i&&Rs(e),a=n||r||i||o,s=a?gn(e.length,rt):[],u=s.length;for(var c in e)!t&&!lt.call(e,c)||a&&(\"length\"==c||i&&(\"offset\"==c||\"parent\"==c)||o&&(\"buffer\"==c||\"byteLength\"==c||\"byteOffset\"==c)||zo(c,u))||s.push(c);return s}function xr(e){var t=e.length;return t?e[wi(0,t-1)]:o}function Cr(e,t){return ua(no(e),jr(t,0,e.length))}function Ar(e){return ua(no(e))}function Sr(e,t,n){(n===o||ds(e[t],n))&&(n!==o||t in e)||Nr(e,t,n)}function Or(e,t,n){var r=e[t];lt.call(e,t)&&ds(r,n)&&(n!==o||t in e)||Nr(e,t,n)}function Dr(e,t){for(var n=e.length;n--;)if(ds(e[n][0],t))return n;return-1}function Ir(e,t,n,r){return Mr(e,function(e,i,o){t(r,e,n(e),o)}),r}function kr(e,t){return e&&ro(t,iu(t),e)}function Nr(e,t,n){\"__proto__\"==t&&dn?dn(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Lr(e,t){for(var n=-1,i=t.length,a=r(i),s=null==e;++n<i;)a[n]=s?o:Zs(e,t[n]);return a}function jr(e,t,n){return e==e&&(n!==o&&(e=e<=n?e:n),t!==o&&(e=e>=t?e:t)),e}function Pr(e,t,n,r,i,a){var s,u=t&p,c=t&d,l=t&h;if(n&&(s=i?n(e,r,i,a):n(e)),s!==o)return s;if(!Ss(e))return e;var f=ms(e);if(f){if(s=function(e){var t=e.length,n=new e.constructor(t);return t&&\"string\"==typeof e[0]&&lt.call(e,\"index\")&&(n.index=e.index,n.input=e.input),n}(e),!u)return no(e,s)}else{var v=qo(e),g=v==G||v==X;if(ws(e))return Qi(e,u);if(v==Z||v==W||g&&!i){if(s=c||g?{}:Uo(e),!u)return c?function(e,t){return ro(e,Wo(e),t)}(e,function(e,t){return e&&ro(t,ou(t),e)}(s,e)):function(e,t){return ro(e,Fo(e),t)}(e,kr(s,e))}else{if(!St[v])return i?e:{};s=function(e,t,n){var r,i,o,a=e.constructor;switch(t){case ue:return Yi(e);case U:case V:return new a(+e);case ce:return function(e,t){var n=t?Yi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case le:case fe:case pe:case de:case he:case ve:case ge:case me:case ye:return Ji(e,n);case Q:return new a;case Y:case re:return new a(e);case te:return(o=new(i=e).constructor(i.source,Be.exec(i))).lastIndex=i.lastIndex,o;case ne:return new a;case ie:return r=e,fr?tt(fr.call(r)):{}}}(e,v,u)}}a||(a=new Tr);var m=a.get(e);if(m)return m;if(a.set(e,s),Ls(e))return e.forEach(function(r){s.add(Pr(r,t,n,r,e,a))}),s;if(Ds(e))return e.forEach(function(r,i){s.set(i,Pr(r,t,n,i,e,a))}),s;var y=f?o:(l?c?No:ko:c?ou:iu)(e);return Kt(y||e,function(r,i){y&&(r=e[i=r]),Or(s,i,Pr(r,t,n,i,e,a))}),s}function Rr(e,t,n){var r=n.length;if(null==e)return!r;for(e=tt(e);r--;){var i=n[r],a=t[i],s=e[i];if(s===o&&!(i in e)||!a(s))return!1}return!0}function $r(e,t,n){if(\"function\"!=typeof e)throw new it(u);return ia(function(){e.apply(o,n)},t)}function Hr(e,t,n,r){var i=-1,o=Yt,s=!0,u=e.length,c=[],l=t.length;if(!u)return c;n&&(t=Zt(t,mn(n))),r?(o=Jt,s=!1):t.length>=a&&(o=_n,s=!1,t=new wr(t));e:for(;++i<u;){var f=e[i],p=null==n?f:n(f);if(f=r||0!==f?f:0,s&&p==p){for(var d=l;d--;)if(t[d]===p)continue e;c.push(f)}else o(t,p,r)||c.push(f)}return c}dr.templateSettings={escape:Ae,evaluate:Se,interpolate:Oe,variable:\"\",imports:{_:dr}},dr.prototype=vr.prototype,dr.prototype.constructor=dr,gr.prototype=hr(vr.prototype),gr.prototype.constructor=gr,mr.prototype=hr(vr.prototype),mr.prototype.constructor=mr,yr.prototype.clear=function(){this.__data__=nr?nr(null):{},this.size=0},yr.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},yr.prototype.get=function(e){var t=this.__data__;if(nr){var n=t[e];return n===c?o:n}return lt.call(t,e)?t[e]:o},yr.prototype.has=function(e){var t=this.__data__;return nr?t[e]!==o:lt.call(t,e)},yr.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=nr&&t===o?c:t,this},_r.prototype.clear=function(){this.__data__=[],this.size=0},_r.prototype.delete=function(e){var t=this.__data__,n=Dr(t,e);return!(n<0||(n==t.length-1?t.pop():Pt.call(t,n,1),--this.size,0))},_r.prototype.get=function(e){var t=this.__data__,n=Dr(t,e);return n<0?o:t[n][1]},_r.prototype.has=function(e){return Dr(this.__data__,e)>-1},_r.prototype.set=function(e,t){var n=this.__data__,r=Dr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},br.prototype.clear=function(){this.size=0,this.__data__={hash:new yr,map:new(Jn||_r),string:new yr}},br.prototype.delete=function(e){var t=$o(this,e).delete(e);return this.size-=t?1:0,t},br.prototype.get=function(e){return $o(this,e).get(e)},br.prototype.has=function(e){return $o(this,e).has(e)},br.prototype.set=function(e,t){var n=$o(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},wr.prototype.add=wr.prototype.push=function(e){return this.__data__.set(e,c),this},wr.prototype.has=function(e){return this.__data__.has(e)},Tr.prototype.clear=function(){this.__data__=new _r,this.size=0},Tr.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Tr.prototype.get=function(e){return this.__data__.get(e)},Tr.prototype.has=function(e){return this.__data__.has(e)},Tr.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _r){var r=n.__data__;if(!Jn||r.length<a-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new br(r)}return n.set(e,t),this.size=n.size,this};var Mr=ao(Kr),Fr=ao(Gr,!0);function Wr(e,t){var n=!0;return Mr(e,function(e,r,i){return n=!!t(e,r,i)}),n}function qr(e,t,n){for(var r=-1,i=e.length;++r<i;){var a=e[r],s=t(a);if(null!=s&&(u===o?s==s&&!Ps(s):n(s,u)))var u=s,c=a}return c}function Br(e,t){var n=[];return Mr(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}function Ur(e,t,n,r,i){var o=-1,a=e.length;for(n||(n=Vo),i||(i=[]);++o<a;){var s=e[o];t>0&&n(s)?t>1?Ur(s,t-1,n,r,i):en(i,s):r||(i[i.length]=s)}return i}var Vr=so(),zr=so(!0);function Kr(e,t){return e&&Vr(e,t,iu)}function Gr(e,t){return e&&zr(e,t,iu)}function Xr(e,t){return Qt(t,function(t){return xs(e[t])})}function Qr(e,t){for(var n=0,r=(t=zi(t,e)).length;null!=e&&n<r;)e=e[la(t[n++])];return n&&n==r?e:o}function Yr(e,t,n){var r=t(e);return ms(e)?r:en(r,n(e))}function Jr(e){return null==e?e===o?oe:J:on&&on in tt(e)?function(e){var t=lt.call(e,on),n=e[on];try{e[on]=o;var r=!0}catch(e){}var i=dt.call(e);return r&&(t?e[on]=n:delete e[on]),i}(e):function(e){return dt.call(e)}(e)}function Zr(e,t){return e>t}function ei(e,t){return null!=e&&lt.call(e,t)}function ti(e,t){return null!=e&&t in tt(e)}function ni(e,t,n){for(var i=n?Jt:Yt,a=e[0].length,s=e.length,u=s,c=r(s),l=1/0,f=[];u--;){var p=e[u];u&&t&&(p=Zt(p,mn(t))),l=zn(p.length,l),c[u]=!n&&(t||a>=120&&p.length>=120)?new wr(u&&p):o}p=e[0];var d=-1,h=c[0];e:for(;++d<a&&f.length<l;){var v=p[d],g=t?t(v):v;if(v=n||0!==v?v:0,!(h?_n(h,g):i(f,g,n))){for(u=s;--u;){var m=c[u];if(!(m?_n(m,g):i(e[u],g,n)))continue e}h&&h.push(g),f.push(v)}}return f}function ri(e,t,n){var r=null==(e=ta(e,t=zi(t,e)))?e:e[la(Ea(t))];return null==r?o:Vt(r,e,n)}function ii(e){return Os(e)&&Jr(e)==W}function oi(e,t,n,r,i){return e===t||(null==e||null==t||!Os(e)&&!Os(t)?e!=e&&t!=t:function(e,t,n,r,i,a){var s=ms(e),u=ms(t),c=s?q:qo(e),l=u?q:qo(t),f=(c=c==W?Z:c)==Z,p=(l=l==W?Z:l)==Z,d=c==l;if(d&&ws(e)){if(!ws(t))return!1;s=!0,f=!1}if(d&&!f)return a||(a=new Tr),s||Rs(e)?Do(e,t,n,r,i,a):function(e,t,n,r,i,o,a){switch(n){case ce:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case ue:return!(e.byteLength!=t.byteLength||!o(new Tt(e),new Tt(t)));case U:case V:case Y:return ds(+e,+t);case K:return e.name==t.name&&e.message==t.message;case te:case re:return e==t+\"\";case Q:var s=An;case ne:var u=r&v;if(s||(s=Dn),e.size!=t.size&&!u)return!1;var c=a.get(e);if(c)return c==t;r|=g,a.set(e,t);var l=Do(s(e),s(t),r,i,o,a);return a.delete(e),l;case ie:if(fr)return fr.call(e)==fr.call(t)}return!1}(e,t,c,n,r,i,a);if(!(n&v)){var h=f&&lt.call(e,\"__wrapped__\"),m=p&&lt.call(t,\"__wrapped__\");if(h||m){var y=h?e.value():e,_=m?t.value():t;return a||(a=new Tr),i(y,_,n,r,a)}}return!!d&&(a||(a=new Tr),function(e,t,n,r,i,a){var s=n&v,u=ko(e),c=u.length,l=ko(t).length;if(c!=l&&!s)return!1;for(var f=c;f--;){var p=u[f];if(!(s?p in t:lt.call(t,p)))return!1}var d=a.get(e);if(d&&a.get(t))return d==t;var h=!0;a.set(e,t),a.set(t,e);for(var g=s;++f<c;){p=u[f];var m=e[p],y=t[p];if(r)var _=s?r(y,m,p,t,e,a):r(m,y,p,e,t,a);if(!(_===o?m===y||i(m,y,n,r,a):_)){h=!1;break}g||(g=\"constructor\"==p)}if(h&&!g){var b=e.constructor,w=t.constructor;b!=w&&\"constructor\"in e&&\"constructor\"in t&&!(\"function\"==typeof b&&b instanceof b&&\"function\"==typeof w&&w instanceof w)&&(h=!1)}return a.delete(e),a.delete(t),h}(e,t,n,r,i,a))}(e,t,n,r,oi,i))}function ai(e,t,n,r){var i=n.length,a=i,s=!r;if(null==e)return!a;for(e=tt(e);i--;){var u=n[i];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++i<a;){var c=(u=n[i])[0],l=e[c],f=u[1];if(s&&u[2]){if(l===o&&!(c in e))return!1}else{var p=new Tr;if(r)var d=r(l,f,c,e,t,p);if(!(d===o?oi(f,l,v|g,r,p):d))return!1}}return!0}function si(e){return!(!Ss(e)||(t=e,pt&&pt in t))&&(xs(e)?gt:ze).test(fa(e));var t}function ui(e){return\"function\"==typeof e?e:null==e?Iu:\"object\"==typeof e?ms(e)?hi(e[0],e[1]):di(e):Mu(e)}function ci(e){if(!Yo(e))return Un(e);var t=[];for(var n in tt(e))lt.call(e,n)&&\"constructor\"!=n&&t.push(n);return t}function li(e){if(!Ss(e))return function(e){var t=[];if(null!=e)for(var n in tt(e))t.push(n);return t}(e);var t=Yo(e),n=[];for(var r in e)(\"constructor\"!=r||!t&&lt.call(e,r))&&n.push(r);return n}function fi(e,t){return e<t}function pi(e,t){var n=-1,i=_s(e)?r(e.length):[];return Mr(e,function(e,r,o){i[++n]=t(e,r,o)}),i}function di(e){var t=Ho(e);return 1==t.length&&t[0][2]?Zo(t[0][0],t[0][1]):function(n){return n===e||ai(n,e,t)}}function hi(e,t){return Go(e)&&Jo(t)?Zo(la(e),t):function(n){var r=Zs(n,e);return r===o&&r===t?eu(n,e):oi(t,r,v|g)}}function vi(e,t,n,r,i){e!==t&&Vr(t,function(a,s){if(Ss(a))i||(i=new Tr),function(e,t,n,r,i,a,s){var u=na(e,n),c=na(t,n),l=s.get(c);if(l)Sr(e,n,l);else{var f=a?a(u,c,n+\"\",e,t,s):o,p=f===o;if(p){var d=ms(c),h=!d&&ws(c),v=!d&&!h&&Rs(c);f=c,d||h||v?ms(u)?f=u:bs(u)?f=no(u):h?(p=!1,f=Qi(c,!0)):v?(p=!1,f=Ji(c,!0)):f=[]:ks(c)||gs(c)?(f=u,gs(u)?f=Us(u):Ss(u)&&!xs(u)||(f=Uo(c))):p=!1}p&&(s.set(c,f),i(f,c,r,a,s),s.delete(c)),Sr(e,n,f)}}(e,t,s,n,vi,r,i);else{var u=r?r(na(e,s),a,s+\"\",e,t,i):o;u===o&&(u=a),Sr(e,s,u)}},ou)}function gi(e,t){var n=e.length;if(n)return zo(t+=t<0?n:0,n)?e[t]:o}function mi(e,t,n){var r=-1;return t=Zt(t.length?t:[Iu],mn(Ro())),function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(pi(e,function(e,n,i){return{criteria:Zt(t,function(t){return t(e)}),index:++r,value:e}}),function(e,t){return function(e,t,n){for(var r=-1,i=e.criteria,o=t.criteria,a=i.length,s=n.length;++r<a;){var u=Zi(i[r],o[r]);if(u){if(r>=s)return u;var c=n[r];return u*(\"desc\"==c?-1:1)}}return e.index-t.index}(e,t,n)})}function yi(e,t,n){for(var r=-1,i=t.length,o={};++r<i;){var a=t[r],s=Qr(e,a);n(s,a)&&Ai(o,zi(a,e),s)}return o}function _i(e,t,n,r){var i=r?cn:un,o=-1,a=t.length,s=e;for(e===t&&(t=no(t)),n&&(s=Zt(e,mn(n)));++o<a;)for(var u=0,c=t[o],l=n?n(c):c;(u=i(s,l,u,r))>-1;)s!==e&&Pt.call(s,u,1),Pt.call(e,u,1);return e}function bi(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;zo(i)?Pt.call(e,i,1):Hi(e,i)}}return e}function wi(e,t){return e+Mn(Xn()*(t-e+1))}function Ti(e,t){var n=\"\";if(!e||t<1||t>j)return n;do{t%2&&(n+=e),(t=Mn(t/2))&&(e+=e)}while(t);return n}function Ei(e,t){return oa(ea(e,t,Iu),e+\"\")}function xi(e){return xr(du(e))}function Ci(e,t){var n=du(e);return ua(n,jr(t,0,n.length))}function Ai(e,t,n,r){if(!Ss(e))return e;for(var i=-1,a=(t=zi(t,e)).length,s=a-1,u=e;null!=u&&++i<a;){var c=la(t[i]),l=n;if(i!=s){var f=u[c];(l=r?r(f,c,u):o)===o&&(l=Ss(f)?f:zo(t[i+1])?[]:{})}Or(u,c,l),u=u[c]}return e}var Si=rr?function(e,t){return rr.set(e,t),e}:Iu,Oi=dn?function(e,t){return dn(e,\"toString\",{configurable:!0,enumerable:!1,value:Su(t),writable:!0})}:Iu;function Di(e){return ua(du(e))}function Ii(e,t,n){var i=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=r(o);++i<o;)a[i]=e[i+t];return a}function ki(e,t){var n;return Mr(e,function(e,r,i){return!(n=t(e,r,i))}),!!n}function Ni(e,t,n){var r=0,i=null==e?r:e.length;if(\"number\"==typeof t&&t==t&&i<=M){for(;r<i;){var o=r+i>>>1,a=e[o];null!==a&&!Ps(a)&&(n?a<=t:a<t)?r=o+1:i=o}return i}return Li(e,t,Iu,n)}function Li(e,t,n,r){t=n(t);for(var i=0,a=null==e?0:e.length,s=t!=t,u=null===t,c=Ps(t),l=t===o;i<a;){var f=Mn((i+a)/2),p=n(e[f]),d=p!==o,h=null===p,v=p==p,g=Ps(p);if(s)var m=r||v;else m=l?v&&(r||d):u?v&&d&&(r||!h):c?v&&d&&!h&&(r||!g):!h&&!g&&(r?p<=t:p<t);m?i=f+1:a=f}return zn(a,H)}function ji(e,t){for(var n=-1,r=e.length,i=0,o=[];++n<r;){var a=e[n],s=t?t(a):a;if(!n||!ds(s,u)){var u=s;o[i++]=0===a?0:a}}return o}function Pi(e){return\"number\"==typeof e?e:Ps(e)?R:+e}function Ri(e){if(\"string\"==typeof e)return e;if(ms(e))return Zt(e,Ri)+\"\";if(Ps(e))return pr?pr.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-L?\"-0\":t}function $i(e,t,n){var r=-1,i=Yt,o=e.length,s=!0,u=[],c=u;if(n)s=!1,i=Jt;else if(o>=a){var l=t?null:Eo(e);if(l)return Dn(l);s=!1,i=_n,c=new wr}else c=t?[]:u;e:for(;++r<o;){var f=e[r],p=t?t(f):f;if(f=n||0!==f?f:0,s&&p==p){for(var d=c.length;d--;)if(c[d]===p)continue e;t&&c.push(p),u.push(f)}else i(c,p,n)||(c!==u&&c.push(p),u.push(f))}return u}function Hi(e,t){return null==(e=ta(e,t=zi(t,e)))||delete e[la(Ea(t))]}function Mi(e,t,n,r){return Ai(e,t,n(Qr(e,t)),r)}function Fi(e,t,n,r){for(var i=e.length,o=r?i:-1;(r?o--:++o<i)&&t(e[o],o,e););return n?Ii(e,r?0:o,r?o+1:i):Ii(e,r?o+1:0,r?i:o)}function Wi(e,t){var n=e;return n instanceof mr&&(n=n.value()),tn(t,function(e,t){return t.func.apply(t.thisArg,en([e],t.args))},n)}function qi(e,t,n){var i=e.length;if(i<2)return i?$i(e[0]):[];for(var o=-1,a=r(i);++o<i;)for(var s=e[o],u=-1;++u<i;)u!=o&&(a[o]=Hr(a[o]||s,e[u],t,n));return $i(Ur(a,1),t,n)}function Bi(e,t,n){for(var r=-1,i=e.length,a=t.length,s={};++r<i;){var u=r<a?t[r]:o;n(s,e[r],u)}return s}function Ui(e){return bs(e)?e:[]}function Vi(e){return\"function\"==typeof e?e:Iu}function zi(e,t){return ms(e)?e:Go(e,t)?[e]:ca(Vs(e))}var Ki=Ei;function Gi(e,t,n){var r=e.length;return n=n===o?r:n,!t&&n>=r?e:Ii(e,t,n)}var Xi=Pn||function(e){return Lt.clearTimeout(e)};function Qi(e,t){if(t)return e.slice();var n=e.length,r=Ot?Ot(n):new e.constructor(n);return e.copy(r),r}function Yi(e){var t=new e.constructor(e.byteLength);return new Tt(t).set(new Tt(e)),t}function Ji(e,t){var n=t?Yi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Zi(e,t){if(e!==t){var n=e!==o,r=null===e,i=e==e,a=Ps(e),s=t!==o,u=null===t,c=t==t,l=Ps(t);if(!u&&!l&&!a&&e>t||a&&s&&c&&!u&&!l||r&&s&&c||!n&&c||!i)return 1;if(!r&&!a&&!l&&e<t||l&&n&&i&&!r&&!a||u&&n&&i||!s&&i||!c)return-1}return 0}function eo(e,t,n,i){for(var o=-1,a=e.length,s=n.length,u=-1,c=t.length,l=Vn(a-s,0),f=r(c+l),p=!i;++u<c;)f[u]=t[u];for(;++o<s;)(p||o<a)&&(f[n[o]]=e[o]);for(;l--;)f[u++]=e[o++];return f}function to(e,t,n,i){for(var o=-1,a=e.length,s=-1,u=n.length,c=-1,l=t.length,f=Vn(a-u,0),p=r(f+l),d=!i;++o<f;)p[o]=e[o];for(var h=o;++c<l;)p[h+c]=t[c];for(;++s<u;)(d||o<a)&&(p[h+n[s]]=e[o++]);return p}function no(e,t){var n=-1,i=e.length;for(t||(t=r(i));++n<i;)t[n]=e[n];return t}function ro(e,t,n,r){var i=!n;n||(n={});for(var a=-1,s=t.length;++a<s;){var u=t[a],c=r?r(n[u],e[u],u,n,e):o;c===o&&(c=e[u]),i?Nr(n,u,c):Or(n,u,c)}return n}function io(e,t){return function(n,r){var i=ms(n)?zt:Ir,o=t?t():{};return i(n,e,Ro(r,2),o)}}function oo(e){return Ei(function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:o,s=i>2?n[2]:o;for(a=e.length>3&&\"function\"==typeof a?(i--,a):o,s&&Ko(n[0],n[1],s)&&(a=i<3?o:a,i=1),t=tt(t);++r<i;){var u=n[r];u&&e(t,u,r,a)}return t})}function ao(e,t){return function(n,r){if(null==n)return n;if(!_s(n))return e(n,r);for(var i=n.length,o=t?i:-1,a=tt(n);(t?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function so(e){return function(t,n,r){for(var i=-1,o=tt(t),a=r(t),s=a.length;s--;){var u=a[e?s:++i];if(!1===n(o[u],u,o))break}return t}}function uo(e){return function(t){var n=Cn(t=Vs(t))?Nn(t):o,r=n?n[0]:t.charAt(0),i=n?Gi(n,1).join(\"\"):t.slice(1);return r[e]()+i}}function co(e){return function(t){return tn(xu(gu(t).replace(yt,\"\")),e,\"\")}}function lo(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=hr(e.prototype),r=e.apply(n,t);return Ss(r)?r:n}}function fo(e){return function(t,n,r){var i=tt(t);if(!_s(t)){var a=Ro(n,3);t=iu(t),n=function(e){return a(i[e],e,i)}}var s=e(t,n,r);return s>-1?i[a?t[s]:s]:o}}function po(e){return Io(function(t){var n=t.length,r=n,i=gr.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if(\"function\"!=typeof a)throw new it(u);if(i&&!s&&\"wrapper\"==jo(a))var s=new gr([],!0)}for(r=s?r:n;++r<n;){var c=jo(a=t[r]),l=\"wrapper\"==c?Lo(a):o;s=l&&Xo(l[0])&&l[1]==(x|b|T|C)&&!l[4].length&&1==l[9]?s[jo(l[0])].apply(s,l[3]):1==a.length&&Xo(a)?s[c]():s.thru(a)}return function(){var e=arguments,r=e[0];if(s&&1==e.length&&ms(r))return s.plant(r).value();for(var i=0,o=n?t[i].apply(this,e):r;++i<n;)o=t[i].call(this,o);return o}})}function ho(e,t,n,i,a,s,u,c,l,f){var p=t&x,d=t&m,h=t&y,v=t&(b|w),g=t&A,_=h?o:lo(e);return function m(){for(var y=arguments.length,b=r(y),w=y;w--;)b[w]=arguments[w];if(v)var T=Po(m),E=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}(b,T);if(i&&(b=eo(b,i,a,v)),s&&(b=to(b,s,u,v)),y-=E,v&&y<f){var x=On(b,T);return wo(e,t,ho,m.placeholder,n,b,x,c,l,f-y)}var C=d?n:this,A=h?C[e]:e;return y=b.length,c?b=function(e,t){for(var n=e.length,r=zn(t.length,n),i=no(e);r--;){var a=t[r];e[r]=zo(a,n)?i[a]:o}return e}(b,c):g&&y>1&&b.reverse(),p&&l<y&&(b.length=l),this&&this!==Lt&&this instanceof m&&(A=_||lo(A)),A.apply(C,b)}}function vo(e,t){return function(n,r){return function(e,t,n,r){return Kr(e,function(e,i,o){t(r,n(e),i,o)}),r}(n,e,t(r),{})}}function go(e,t){return function(n,r){var i;if(n===o&&r===o)return t;if(n!==o&&(i=n),r!==o){if(i===o)return r;\"string\"==typeof n||\"string\"==typeof r?(n=Ri(n),r=Ri(r)):(n=Pi(n),r=Pi(r)),i=e(n,r)}return i}}function mo(e){return Io(function(t){return t=Zt(t,mn(Ro())),Ei(function(n){var r=this;return e(t,function(e){return Vt(e,r,n)})})})}function yo(e,t){var n=(t=t===o?\" \":Ri(t)).length;if(n<2)return n?Ti(t,e):t;var r=Ti(t,Hn(e/kn(t)));return Cn(t)?Gi(Nn(r),0,e).join(\"\"):r.slice(0,e)}function _o(e){return function(t,n,i){return i&&\"number\"!=typeof i&&Ko(t,n,i)&&(n=i=o),t=Fs(t),n===o?(n=t,t=0):n=Fs(n),function(e,t,n,i){for(var o=-1,a=Vn(Hn((t-e)/(n||1)),0),s=r(a);a--;)s[i?a:++o]=e,e+=n;return s}(t,n,i=i===o?t<n?1:-1:Fs(i),e)}}function bo(e){return function(t,n){return\"string\"==typeof t&&\"string\"==typeof n||(t=Bs(t),n=Bs(n)),e(t,n)}}function wo(e,t,n,r,i,a,s,u,c,l){var f=t&b;t|=f?T:E,(t&=~(f?E:T))&_||(t&=~(m|y));var p=[e,t,i,f?a:o,f?s:o,f?o:a,f?o:s,u,c,l],d=n.apply(o,p);return Xo(e)&&ra(d,p),d.placeholder=r,aa(d,e,t)}function To(e){var t=et[e];return function(e,n){if(e=Bs(e),n=null==n?0:zn(Ws(n),292)){var r=(Vs(e)+\"e\").split(\"e\");return+((r=(Vs(t(r[0]+\"e\"+(+r[1]+n)))+\"e\").split(\"e\"))[0]+\"e\"+(+r[1]-n))}return t(e)}}var Eo=er&&1/Dn(new er([,-0]))[1]==L?function(e){return new er(e)}:Pu;function xo(e){return function(t){var n=qo(t);return n==Q?An(t):n==ne?In(t):function(e,t){return Zt(t,function(t){return[t,e[t]]})}(t,e(t))}}function Co(e,t,n,i,a,s,c,l){var p=t&y;if(!p&&\"function\"!=typeof e)throw new it(u);var d=i?i.length:0;if(d||(t&=~(T|E),i=a=o),c=c===o?c:Vn(Ws(c),0),l=l===o?l:Ws(l),d-=a?a.length:0,t&E){var h=i,v=a;i=a=o}var g=p?o:Lo(e),A=[e,t,n,i,a,h,v,s,c,l];if(g&&function(e,t){var n=e[1],r=t[1],i=n|r,o=i<(m|y|x),a=r==x&&n==b||r==x&&n==C&&e[7].length<=t[8]||r==(x|C)&&t[7].length<=t[8]&&n==b;if(!o&&!a)return e;r&m&&(e[2]=t[2],i|=n&m?0:_);var s=t[3];if(s){var u=e[3];e[3]=u?eo(u,s,t[4]):s,e[4]=u?On(e[3],f):t[4]}(s=t[5])&&(u=e[5],e[5]=u?to(u,s,t[6]):s,e[6]=u?On(e[5],f):t[6]),(s=t[7])&&(e[7]=s),r&x&&(e[8]=null==e[8]?t[8]:zn(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=i}(A,g),e=A[0],t=A[1],n=A[2],i=A[3],a=A[4],!(l=A[9]=A[9]===o?p?0:e.length:Vn(A[9]-d,0))&&t&(b|w)&&(t&=~(b|w)),t&&t!=m)S=t==b||t==w?function(e,t,n){var i=lo(e);return function a(){for(var s=arguments.length,u=r(s),c=s,l=Po(a);c--;)u[c]=arguments[c];var f=s<3&&u[0]!==l&&u[s-1]!==l?[]:On(u,l);return(s-=f.length)<n?wo(e,t,ho,a.placeholder,o,u,f,o,o,n-s):Vt(this&&this!==Lt&&this instanceof a?i:e,this,u)}}(e,t,l):t!=T&&t!=(m|T)||a.length?ho.apply(o,A):function(e,t,n,i){var o=t&m,a=lo(e);return function t(){for(var s=-1,u=arguments.length,c=-1,l=i.length,f=r(l+u),p=this&&this!==Lt&&this instanceof t?a:e;++c<l;)f[c]=i[c];for(;u--;)f[c++]=arguments[++s];return Vt(p,o?n:this,f)}}(e,t,n,i);else var S=function(e,t,n){var r=t&m,i=lo(e);return function t(){return(this&&this!==Lt&&this instanceof t?i:e).apply(r?n:this,arguments)}}(e,t,n);return aa((g?Si:ra)(S,A),e,t)}function Ao(e,t,n,r){return e===o||ds(e,st[n])&&!lt.call(r,n)?t:e}function So(e,t,n,r,i,a){return Ss(e)&&Ss(t)&&(a.set(t,e),vi(e,t,o,So,a),a.delete(t)),e}function Oo(e){return ks(e)?o:e}function Do(e,t,n,r,i,a){var s=n&v,u=e.length,c=t.length;if(u!=c&&!(s&&c>u))return!1;var l=a.get(e);if(l&&a.get(t))return l==t;var f=-1,p=!0,d=n&g?new wr:o;for(a.set(e,t),a.set(t,e);++f<u;){var h=e[f],m=t[f];if(r)var y=s?r(m,h,f,t,e,a):r(h,m,f,e,t,a);if(y!==o){if(y)continue;p=!1;break}if(d){if(!rn(t,function(e,t){if(!_n(d,t)&&(h===e||i(h,e,n,r,a)))return d.push(t)})){p=!1;break}}else if(h!==m&&!i(h,m,n,r,a)){p=!1;break}}return a.delete(e),a.delete(t),p}function Io(e){return oa(ea(e,o,ya),e+\"\")}function ko(e){return Yr(e,iu,Fo)}function No(e){return Yr(e,ou,Wo)}var Lo=rr?function(e){return rr.get(e)}:Pu;function jo(e){for(var t=e.name+\"\",n=ir[t],r=lt.call(ir,t)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==e)return i.name}return t}function Po(e){return(lt.call(dr,\"placeholder\")?dr:e).placeholder}function Ro(){var e=dr.iteratee||ku;return e=e===ku?ui:e,arguments.length?e(arguments[0],arguments[1]):e}function $o(e,t){var n,r,i=e.__data__;return(\"string\"==(r=typeof(n=t))||\"number\"==r||\"symbol\"==r||\"boolean\"==r?\"__proto__\"!==n:null===n)?i[\"string\"==typeof t?\"string\":\"hash\"]:i.map}function Ho(e){for(var t=iu(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,Jo(i)]}return t}function Mo(e,t){var n=function(e,t){return null==e?o:e[t]}(e,t);return si(n)?n:o}var Fo=Fn?function(e){return null==e?[]:(e=tt(e),Qt(Fn(e),function(t){return jt.call(e,t)}))}:qu,Wo=Fn?function(e){for(var t=[];e;)en(t,Fo(e)),e=kt(e);return t}:qu,qo=Jr;function Bo(e,t,n){for(var r=-1,i=(t=zi(t,e)).length,o=!1;++r<i;){var a=la(t[r]);if(!(o=null!=e&&n(e,a)))break;e=e[a]}return o||++r!=i?o:!!(i=null==e?0:e.length)&&As(i)&&zo(a,i)&&(ms(e)||gs(e))}function Uo(e){return\"function\"!=typeof e.constructor||Yo(e)?{}:hr(kt(e))}function Vo(e){return ms(e)||gs(e)||!!($t&&e&&e[$t])}function zo(e,t){var n=typeof e;return!!(t=null==t?j:t)&&(\"number\"==n||\"symbol\"!=n&&Ge.test(e))&&e>-1&&e%1==0&&e<t}function Ko(e,t,n){if(!Ss(n))return!1;var r=typeof t;return!!(\"number\"==r?_s(n)&&zo(t,n.length):\"string\"==r&&t in n)&&ds(n[t],e)}function Go(e,t){if(ms(e))return!1;var n=typeof e;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=e&&!Ps(e))||Ie.test(e)||!De.test(e)||null!=t&&e in tt(t)}function Xo(e){var t=jo(e),n=dr[t];if(\"function\"!=typeof n||!(t in mr.prototype))return!1;if(e===n)return!0;var r=Lo(n);return!!r&&e===r[0]}(Yn&&qo(new Yn(new ArrayBuffer(1)))!=ce||Jn&&qo(new Jn)!=Q||Zn&&\"[object Promise]\"!=qo(Zn.resolve())||er&&qo(new er)!=ne||tr&&qo(new tr)!=ae)&&(qo=function(e){var t=Jr(e),n=t==Z?e.constructor:o,r=n?fa(n):\"\";if(r)switch(r){case or:return ce;case ar:return Q;case sr:return\"[object Promise]\";case ur:return ne;case cr:return ae}return t});var Qo=ut?xs:Bu;function Yo(e){var t=e&&e.constructor;return e===(\"function\"==typeof t&&t.prototype||st)}function Jo(e){return e==e&&!Ss(e)}function Zo(e,t){return function(n){return null!=n&&n[e]===t&&(t!==o||e in tt(n))}}function ea(e,t,n){return t=Vn(t===o?e.length-1:t,0),function(){for(var i=arguments,o=-1,a=Vn(i.length-t,0),s=r(a);++o<a;)s[o]=i[t+o];o=-1;for(var u=r(t+1);++o<t;)u[o]=i[o];return u[t]=n(s),Vt(e,this,u)}}function ta(e,t){return t.length<2?e:Qr(e,Ii(t,0,-1))}function na(e,t){if(\"__proto__\"!=t)return e[t]}var ra=sa(Si),ia=$n||function(e,t){return Lt.setTimeout(e,t)},oa=sa(Oi);function aa(e,t,n){var r=t+\"\";return oa(e,function(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?\"& \":\"\")+t[r],t=t.join(n>2?\", \":\" \"),e.replace($e,\"{\\n/* [wrapped with \"+t+\"] */\\n\")}(r,function(e,t){return Kt(F,function(n){var r=\"_.\"+n[0];t&n[1]&&!Yt(e,r)&&e.push(r)}),e.sort()}(function(e){var t=e.match(He);return t?t[1].split(Me):[]}(r),n)))}function sa(e){var t=0,n=0;return function(){var r=Kn(),i=I-(r-n);if(n=r,i>0){if(++t>=D)return arguments[0]}else t=0;return e.apply(o,arguments)}}function ua(e,t){var n=-1,r=e.length,i=r-1;for(t=t===o?r:t;++n<t;){var a=wi(n,i),s=e[a];e[a]=e[n],e[n]=s}return e.length=t,e}var ca=function(e){var t=ss(e,function(e){return n.size===l&&n.clear(),e}),n=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(\"\"),e.replace(ke,function(e,n,r,i){t.push(r?i.replace(We,\"$1\"):n||e)}),t});function la(e){if(\"string\"==typeof e||Ps(e))return e;var t=e+\"\";return\"0\"==t&&1/e==-L?\"-0\":t}function fa(e){if(null!=e){try{return ct.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}function pa(e){if(e instanceof mr)return e.clone();var t=new gr(e.__wrapped__,e.__chain__);return t.__actions__=no(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var da=Ei(function(e,t){return bs(e)?Hr(e,Ur(t,1,bs,!0)):[]}),ha=Ei(function(e,t){var n=Ea(t);return bs(n)&&(n=o),bs(e)?Hr(e,Ur(t,1,bs,!0),Ro(n,2)):[]}),va=Ei(function(e,t){var n=Ea(t);return bs(n)&&(n=o),bs(e)?Hr(e,Ur(t,1,bs,!0),o,n):[]});function ga(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:Ws(n);return i<0&&(i=Vn(r+i,0)),sn(e,Ro(t,3),i)}function ma(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return n!==o&&(i=Ws(n),i=n<0?Vn(r+i,0):zn(i,r-1)),sn(e,Ro(t,3),i,!0)}function ya(e){return null!=e&&e.length?Ur(e,1):[]}function _a(e){return e&&e.length?e[0]:o}var ba=Ei(function(e){var t=Zt(e,Ui);return t.length&&t[0]===e[0]?ni(t):[]}),wa=Ei(function(e){var t=Ea(e),n=Zt(e,Ui);return t===Ea(n)?t=o:n.pop(),n.length&&n[0]===e[0]?ni(n,Ro(t,2)):[]}),Ta=Ei(function(e){var t=Ea(e),n=Zt(e,Ui);return(t=\"function\"==typeof t?t:o)&&n.pop(),n.length&&n[0]===e[0]?ni(n,o,t):[]});function Ea(e){var t=null==e?0:e.length;return t?e[t-1]:o}var xa=Ei(Ca);function Ca(e,t){return e&&e.length&&t&&t.length?_i(e,t):e}var Aa=Io(function(e,t){var n=null==e?0:e.length,r=Lr(e,t);return bi(e,Zt(t,function(e){return zo(e,n)?+e:e}).sort(Zi)),r});function Sa(e){return null==e?e:Qn.call(e)}var Oa=Ei(function(e){return $i(Ur(e,1,bs,!0))}),Da=Ei(function(e){var t=Ea(e);return bs(t)&&(t=o),$i(Ur(e,1,bs,!0),Ro(t,2))}),Ia=Ei(function(e){var t=Ea(e);return t=\"function\"==typeof t?t:o,$i(Ur(e,1,bs,!0),o,t)});function ka(e){if(!e||!e.length)return[];var t=0;return e=Qt(e,function(e){if(bs(e))return t=Vn(e.length,t),!0}),gn(t,function(t){return Zt(e,pn(t))})}function Na(e,t){if(!e||!e.length)return[];var n=ka(e);return null==t?n:Zt(n,function(e){return Vt(t,o,e)})}var La=Ei(function(e,t){return bs(e)?Hr(e,t):[]}),ja=Ei(function(e){return qi(Qt(e,bs))}),Pa=Ei(function(e){var t=Ea(e);return bs(t)&&(t=o),qi(Qt(e,bs),Ro(t,2))}),Ra=Ei(function(e){var t=Ea(e);return t=\"function\"==typeof t?t:o,qi(Qt(e,bs),o,t)}),$a=Ei(ka);var Ha=Ei(function(e){var t=e.length,n=t>1?e[t-1]:o;return n=\"function\"==typeof n?(e.pop(),n):o,Na(e,n)});function Ma(e){var t=dr(e);return t.__chain__=!0,t}function Fa(e,t){return t(e)}var Wa=Io(function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Lr(t,e)};return!(t>1||this.__actions__.length)&&r instanceof mr&&zo(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:Fa,args:[i],thisArg:o}),new gr(r,this.__chain__).thru(function(e){return t&&!e.length&&e.push(o),e})):this.thru(i)});var qa=io(function(e,t,n){lt.call(e,n)?++e[n]:Nr(e,n,1)});var Ba=fo(ga),Ua=fo(ma);function Va(e,t){return(ms(e)?Kt:Mr)(e,Ro(t,3))}function za(e,t){return(ms(e)?Gt:Fr)(e,Ro(t,3))}var Ka=io(function(e,t,n){lt.call(e,n)?e[n].push(t):Nr(e,n,[t])});var Ga=Ei(function(e,t,n){var i=-1,o=\"function\"==typeof t,a=_s(e)?r(e.length):[];return Mr(e,function(e){a[++i]=o?Vt(t,e,n):ri(e,t,n)}),a}),Xa=io(function(e,t,n){Nr(e,n,t)});function Qa(e,t){return(ms(e)?Zt:pi)(e,Ro(t,3))}var Ya=io(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]});var Ja=Ei(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Ko(e,t[0],t[1])?t=[]:n>2&&Ko(t[0],t[1],t[2])&&(t=[t[0]]),mi(e,Ur(t,1),[])}),Za=Rn||function(){return Lt.Date.now()};function es(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Co(e,x,o,o,o,o,t)}function ts(e,t){var n;if(\"function\"!=typeof t)throw new it(u);return e=Ws(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var ns=Ei(function(e,t,n){var r=m;if(n.length){var i=On(n,Po(ns));r|=T}return Co(e,r,t,n,i)}),rs=Ei(function(e,t,n){var r=m|y;if(n.length){var i=On(n,Po(rs));r|=T}return Co(t,r,e,n,i)});function is(e,t,n){var r,i,a,s,c,l,f=0,p=!1,d=!1,h=!0;if(\"function\"!=typeof e)throw new it(u);function v(t){var n=r,a=i;return r=i=o,f=t,s=e.apply(a,n)}function g(e){var n=e-l;return l===o||n>=t||n<0||d&&e-f>=a}function m(){var e=Za();if(g(e))return y(e);c=ia(m,function(e){var n=t-(e-l);return d?zn(n,a-(e-f)):n}(e))}function y(e){return c=o,h&&r?v(e):(r=i=o,s)}function _(){var e=Za(),n=g(e);if(r=arguments,i=this,l=e,n){if(c===o)return function(e){return f=e,c=ia(m,t),p?v(e):s}(l);if(d)return c=ia(m,t),v(l)}return c===o&&(c=ia(m,t)),s}return t=Bs(t)||0,Ss(n)&&(p=!!n.leading,a=(d=\"maxWait\"in n)?Vn(Bs(n.maxWait)||0,t):a,h=\"trailing\"in n?!!n.trailing:h),_.cancel=function(){c!==o&&Xi(c),f=0,r=l=i=c=o},_.flush=function(){return c===o?s:y(Za())},_}var os=Ei(function(e,t){return $r(e,1,t)}),as=Ei(function(e,t,n){return $r(e,Bs(t)||0,n)});function ss(e,t){if(\"function\"!=typeof e||null!=t&&\"function\"!=typeof t)throw new it(u);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(ss.Cache||br),n}function us(e){if(\"function\"!=typeof e)throw new it(u);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ss.Cache=br;var cs=Ki(function(e,t){var n=(t=1==t.length&&ms(t[0])?Zt(t[0],mn(Ro())):Zt(Ur(t,1),mn(Ro()))).length;return Ei(function(r){for(var i=-1,o=zn(r.length,n);++i<o;)r[i]=t[i].call(this,r[i]);return Vt(e,this,r)})}),ls=Ei(function(e,t){var n=On(t,Po(ls));return Co(e,T,o,t,n)}),fs=Ei(function(e,t){var n=On(t,Po(fs));return Co(e,E,o,t,n)}),ps=Io(function(e,t){return Co(e,C,o,o,o,t)});function ds(e,t){return e===t||e!=e&&t!=t}var hs=bo(Zr),vs=bo(function(e,t){return e>=t}),gs=ii(function(){return arguments}())?ii:function(e){return Os(e)&&lt.call(e,\"callee\")&&!jt.call(e,\"callee\")},ms=r.isArray,ys=Mt?mn(Mt):function(e){return Os(e)&&Jr(e)==ue};function _s(e){return null!=e&&As(e.length)&&!xs(e)}function bs(e){return Os(e)&&_s(e)}var ws=Wn||Bu,Ts=Ft?mn(Ft):function(e){return Os(e)&&Jr(e)==V};function Es(e){if(!Os(e))return!1;var t=Jr(e);return t==K||t==z||\"string\"==typeof e.message&&\"string\"==typeof e.name&&!ks(e)}function xs(e){if(!Ss(e))return!1;var t=Jr(e);return t==G||t==X||t==B||t==ee}function Cs(e){return\"number\"==typeof e&&e==Ws(e)}function As(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=j}function Ss(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}function Os(e){return null!=e&&\"object\"==typeof e}var Ds=Wt?mn(Wt):function(e){return Os(e)&&qo(e)==Q};function Is(e){return\"number\"==typeof e||Os(e)&&Jr(e)==Y}function ks(e){if(!Os(e)||Jr(e)!=Z)return!1;var t=kt(e);if(null===t)return!0;var n=lt.call(t,\"constructor\")&&t.constructor;return\"function\"==typeof n&&n instanceof n&&ct.call(n)==ht}var Ns=qt?mn(qt):function(e){return Os(e)&&Jr(e)==te};var Ls=Bt?mn(Bt):function(e){return Os(e)&&qo(e)==ne};function js(e){return\"string\"==typeof e||!ms(e)&&Os(e)&&Jr(e)==re}function Ps(e){return\"symbol\"==typeof e||Os(e)&&Jr(e)==ie}var Rs=Ut?mn(Ut):function(e){return Os(e)&&As(e.length)&&!!At[Jr(e)]};var $s=bo(fi),Hs=bo(function(e,t){return e<=t});function Ms(e){if(!e)return[];if(_s(e))return js(e)?Nn(e):no(e);if(Ht&&e[Ht])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ht]());var t=qo(e);return(t==Q?An:t==ne?Dn:du)(e)}function Fs(e){return e?(e=Bs(e))===L||e===-L?(e<0?-1:1)*P:e==e?e:0:0===e?e:0}function Ws(e){var t=Fs(e),n=t%1;return t==t?n?t-n:t:0}function qs(e){return e?jr(Ws(e),0,$):0}function Bs(e){if(\"number\"==typeof e)return e;if(Ps(e))return R;if(Ss(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=Ss(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(je,\"\");var n=Ve.test(e);return n||Ke.test(e)?It(e.slice(2),n?2:8):Ue.test(e)?R:+e}function Us(e){return ro(e,ou(e))}function Vs(e){return null==e?\"\":Ri(e)}var zs=oo(function(e,t){if(Yo(t)||_s(t))ro(t,iu(t),e);else for(var n in t)lt.call(t,n)&&Or(e,n,t[n])}),Ks=oo(function(e,t){ro(t,ou(t),e)}),Gs=oo(function(e,t,n,r){ro(t,ou(t),e,r)}),Xs=oo(function(e,t,n,r){ro(t,iu(t),e,r)}),Qs=Io(Lr);var Ys=Ei(function(e,t){e=tt(e);var n=-1,r=t.length,i=r>2?t[2]:o;for(i&&Ko(t[0],t[1],i)&&(r=1);++n<r;)for(var a=t[n],s=ou(a),u=-1,c=s.length;++u<c;){var l=s[u],f=e[l];(f===o||ds(f,st[l])&&!lt.call(e,l))&&(e[l]=a[l])}return e}),Js=Ei(function(e){return e.push(o,So),Vt(su,o,e)});function Zs(e,t,n){var r=null==e?o:Qr(e,t);return r===o?n:r}function eu(e,t){return null!=e&&Bo(e,t,ti)}var tu=vo(function(e,t,n){null!=t&&\"function\"!=typeof t.toString&&(t=dt.call(t)),e[t]=n},Su(Iu)),nu=vo(function(e,t,n){null!=t&&\"function\"!=typeof t.toString&&(t=dt.call(t)),lt.call(e,t)?e[t].push(n):e[t]=[n]},Ro),ru=Ei(ri);function iu(e){return _s(e)?Er(e):ci(e)}function ou(e){return _s(e)?Er(e,!0):li(e)}var au=oo(function(e,t,n){vi(e,t,n)}),su=oo(function(e,t,n,r){vi(e,t,n,r)}),uu=Io(function(e,t){var n={};if(null==e)return n;var r=!1;t=Zt(t,function(t){return t=zi(t,e),r||(r=t.length>1),t}),ro(e,No(e),n),r&&(n=Pr(n,p|d|h,Oo));for(var i=t.length;i--;)Hi(n,t[i]);return n});var cu=Io(function(e,t){return null==e?{}:function(e,t){return yi(e,t,function(t,n){return eu(e,n)})}(e,t)});function lu(e,t){if(null==e)return{};var n=Zt(No(e),function(e){return[e]});return t=Ro(t),yi(e,n,function(e,n){return t(e,n[0])})}var fu=xo(iu),pu=xo(ou);function du(e){return null==e?[]:yn(e,iu(e))}var hu=co(function(e,t,n){return t=t.toLowerCase(),e+(n?vu(t):t)});function vu(e){return Eu(Vs(e).toLowerCase())}function gu(e){return(e=Vs(e))&&e.replace(Xe,Tn).replace(_t,\"\")}var mu=co(function(e,t,n){return e+(n?\"-\":\"\")+t.toLowerCase()}),yu=co(function(e,t,n){return e+(n?\" \":\"\")+t.toLowerCase()}),_u=uo(\"toLowerCase\");var bu=co(function(e,t,n){return e+(n?\"_\":\"\")+t.toLowerCase()});var wu=co(function(e,t,n){return e+(n?\" \":\"\")+Eu(t)});var Tu=co(function(e,t,n){return e+(n?\" \":\"\")+t.toUpperCase()}),Eu=uo(\"toUpperCase\");function xu(e,t,n){return e=Vs(e),(t=n?o:t)===o?function(e){return Et.test(e)}(e)?function(e){return e.match(wt)||[]}(e):function(e){return e.match(Fe)||[]}(e):e.match(t)||[]}var Cu=Ei(function(e,t){try{return Vt(e,o,t)}catch(e){return Es(e)?e:new Je(e)}}),Au=Io(function(e,t){return Kt(t,function(t){t=la(t),Nr(e,t,ns(e[t],e))}),e});function Su(e){return function(){return e}}var Ou=po(),Du=po(!0);function Iu(e){return e}function ku(e){return ui(\"function\"==typeof e?e:Pr(e,p))}var Nu=Ei(function(e,t){return function(n){return ri(n,e,t)}}),Lu=Ei(function(e,t){return function(n){return ri(e,n,t)}});function ju(e,t,n){var r=iu(t),i=Xr(t,r);null!=n||Ss(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=Xr(t,iu(t)));var o=!(Ss(n)&&\"chain\"in n&&!n.chain),a=xs(e);return Kt(i,function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=no(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,en([this.value()],arguments))})}),e}function Pu(){}var Ru=mo(Zt),$u=mo(Xt),Hu=mo(rn);function Mu(e){return Go(e)?pn(la(e)):function(e){return function(t){return Qr(t,e)}}(e)}var Fu=_o(),Wu=_o(!0);function qu(){return[]}function Bu(){return!1}var Uu=go(function(e,t){return e+t},0),Vu=To(\"ceil\"),zu=go(function(e,t){return e/t},1),Ku=To(\"floor\");var Gu,Xu=go(function(e,t){return e*t},1),Qu=To(\"round\"),Yu=go(function(e,t){return e-t},0);return dr.after=function(e,t){if(\"function\"!=typeof t)throw new it(u);return e=Ws(e),function(){if(--e<1)return t.apply(this,arguments)}},dr.ary=es,dr.assign=zs,dr.assignIn=Ks,dr.assignInWith=Gs,dr.assignWith=Xs,dr.at=Qs,dr.before=ts,dr.bind=ns,dr.bindAll=Au,dr.bindKey=rs,dr.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return ms(e)?e:[e]},dr.chain=Ma,dr.chunk=function(e,t,n){t=(n?Ko(e,t,n):t===o)?1:Vn(Ws(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var a=0,s=0,u=r(Hn(i/t));a<i;)u[s++]=Ii(e,a,a+=t);return u},dr.compact=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var o=e[t];o&&(i[r++]=o)}return i},dr.concat=function(){var e=arguments.length;if(!e)return[];for(var t=r(e-1),n=arguments[0],i=e;i--;)t[i-1]=arguments[i];return en(ms(n)?no(n):[n],Ur(t,1))},dr.cond=function(e){var t=null==e?0:e.length,n=Ro();return e=t?Zt(e,function(e){if(\"function\"!=typeof e[1])throw new it(u);return[n(e[0]),e[1]]}):[],Ei(function(n){for(var r=-1;++r<t;){var i=e[r];if(Vt(i[0],this,n))return Vt(i[1],this,n)}})},dr.conforms=function(e){return function(e){var t=iu(e);return function(n){return Rr(n,e,t)}}(Pr(e,p))},dr.constant=Su,dr.countBy=qa,dr.create=function(e,t){var n=hr(e);return null==t?n:kr(n,t)},dr.curry=function e(t,n,r){var i=Co(t,b,o,o,o,o,o,n=r?o:n);return i.placeholder=e.placeholder,i},dr.curryRight=function e(t,n,r){var i=Co(t,w,o,o,o,o,o,n=r?o:n);return i.placeholder=e.placeholder,i},dr.debounce=is,dr.defaults=Ys,dr.defaultsDeep=Js,dr.defer=os,dr.delay=as,dr.difference=da,dr.differenceBy=ha,dr.differenceWith=va,dr.drop=function(e,t,n){var r=null==e?0:e.length;return r?Ii(e,(t=n||t===o?1:Ws(t))<0?0:t,r):[]},dr.dropRight=function(e,t,n){var r=null==e?0:e.length;return r?Ii(e,0,(t=r-(t=n||t===o?1:Ws(t)))<0?0:t):[]},dr.dropRightWhile=function(e,t){return e&&e.length?Fi(e,Ro(t,3),!0,!0):[]},dr.dropWhile=function(e,t){return e&&e.length?Fi(e,Ro(t,3),!0):[]},dr.fill=function(e,t,n,r){var i=null==e?0:e.length;return i?(n&&\"number\"!=typeof n&&Ko(e,t,n)&&(n=0,r=i),function(e,t,n,r){var i=e.length;for((n=Ws(n))<0&&(n=-n>i?0:i+n),(r=r===o||r>i?i:Ws(r))<0&&(r+=i),r=n>r?0:qs(r);n<r;)e[n++]=t;return e}(e,t,n,r)):[]},dr.filter=function(e,t){return(ms(e)?Qt:Br)(e,Ro(t,3))},dr.flatMap=function(e,t){return Ur(Qa(e,t),1)},dr.flatMapDeep=function(e,t){return Ur(Qa(e,t),L)},dr.flatMapDepth=function(e,t,n){return n=n===o?1:Ws(n),Ur(Qa(e,t),n)},dr.flatten=ya,dr.flattenDeep=function(e){return null!=e&&e.length?Ur(e,L):[]},dr.flattenDepth=function(e,t){return null!=e&&e.length?Ur(e,t=t===o?1:Ws(t)):[]},dr.flip=function(e){return Co(e,A)},dr.flow=Ou,dr.flowRight=Du,dr.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,r={};++t<n;){var i=e[t];r[i[0]]=i[1]}return r},dr.functions=function(e){return null==e?[]:Xr(e,iu(e))},dr.functionsIn=function(e){return null==e?[]:Xr(e,ou(e))},dr.groupBy=Ka,dr.initial=function(e){return null!=e&&e.length?Ii(e,0,-1):[]},dr.intersection=ba,dr.intersectionBy=wa,dr.intersectionWith=Ta,dr.invert=tu,dr.invertBy=nu,dr.invokeMap=Ga,dr.iteratee=ku,dr.keyBy=Xa,dr.keys=iu,dr.keysIn=ou,dr.map=Qa,dr.mapKeys=function(e,t){var n={};return t=Ro(t,3),Kr(e,function(e,r,i){Nr(n,t(e,r,i),e)}),n},dr.mapValues=function(e,t){var n={};return t=Ro(t,3),Kr(e,function(e,r,i){Nr(n,r,t(e,r,i))}),n},dr.matches=function(e){return di(Pr(e,p))},dr.matchesProperty=function(e,t){return hi(e,Pr(t,p))},dr.memoize=ss,dr.merge=au,dr.mergeWith=su,dr.method=Nu,dr.methodOf=Lu,dr.mixin=ju,dr.negate=us,dr.nthArg=function(e){return e=Ws(e),Ei(function(t){return gi(t,e)})},dr.omit=uu,dr.omitBy=function(e,t){return lu(e,us(Ro(t)))},dr.once=function(e){return ts(2,e)},dr.orderBy=function(e,t,n,r){return null==e?[]:(ms(t)||(t=null==t?[]:[t]),ms(n=r?o:n)||(n=null==n?[]:[n]),mi(e,t,n))},dr.over=Ru,dr.overArgs=cs,dr.overEvery=$u,dr.overSome=Hu,dr.partial=ls,dr.partialRight=fs,dr.partition=Ya,dr.pick=cu,dr.pickBy=lu,dr.property=Mu,dr.propertyOf=function(e){return function(t){return null==e?o:Qr(e,t)}},dr.pull=xa,dr.pullAll=Ca,dr.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?_i(e,t,Ro(n,2)):e},dr.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?_i(e,t,o,n):e},dr.pullAt=Aa,dr.range=Fu,dr.rangeRight=Wu,dr.rearg=ps,dr.reject=function(e,t){return(ms(e)?Qt:Br)(e,us(Ro(t,3)))},dr.remove=function(e,t){var n=[];if(!e||!e.length)return n;var r=-1,i=[],o=e.length;for(t=Ro(t,3);++r<o;){var a=e[r];t(a,r,e)&&(n.push(a),i.push(r))}return bi(e,i),n},dr.rest=function(e,t){if(\"function\"!=typeof e)throw new it(u);return Ei(e,t=t===o?t:Ws(t))},dr.reverse=Sa,dr.sampleSize=function(e,t,n){return t=(n?Ko(e,t,n):t===o)?1:Ws(t),(ms(e)?Cr:Ci)(e,t)},dr.set=function(e,t,n){return null==e?e:Ai(e,t,n)},dr.setWith=function(e,t,n,r){return r=\"function\"==typeof r?r:o,null==e?e:Ai(e,t,n,r)},dr.shuffle=function(e){return(ms(e)?Ar:Di)(e)},dr.slice=function(e,t,n){var r=null==e?0:e.length;return r?(n&&\"number\"!=typeof n&&Ko(e,t,n)?(t=0,n=r):(t=null==t?0:Ws(t),n=n===o?r:Ws(n)),Ii(e,t,n)):[]},dr.sortBy=Ja,dr.sortedUniq=function(e){return e&&e.length?ji(e):[]},dr.sortedUniqBy=function(e,t){return e&&e.length?ji(e,Ro(t,2)):[]},dr.split=function(e,t,n){return n&&\"number\"!=typeof n&&Ko(e,t,n)&&(t=n=o),(n=n===o?$:n>>>0)?(e=Vs(e))&&(\"string\"==typeof t||null!=t&&!Ns(t))&&!(t=Ri(t))&&Cn(e)?Gi(Nn(e),0,n):e.split(t,n):[]},dr.spread=function(e,t){if(\"function\"!=typeof e)throw new it(u);return t=null==t?0:Vn(Ws(t),0),Ei(function(n){var r=n[t],i=Gi(n,0,t);return r&&en(i,r),Vt(e,this,i)})},dr.tail=function(e){var t=null==e?0:e.length;return t?Ii(e,1,t):[]},dr.take=function(e,t,n){return e&&e.length?Ii(e,0,(t=n||t===o?1:Ws(t))<0?0:t):[]},dr.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Ii(e,(t=r-(t=n||t===o?1:Ws(t)))<0?0:t,r):[]},dr.takeRightWhile=function(e,t){return e&&e.length?Fi(e,Ro(t,3),!1,!0):[]},dr.takeWhile=function(e,t){return e&&e.length?Fi(e,Ro(t,3)):[]},dr.tap=function(e,t){return t(e),e},dr.throttle=function(e,t,n){var r=!0,i=!0;if(\"function\"!=typeof e)throw new it(u);return Ss(n)&&(r=\"leading\"in n?!!n.leading:r,i=\"trailing\"in n?!!n.trailing:i),is(e,t,{leading:r,maxWait:t,trailing:i})},dr.thru=Fa,dr.toArray=Ms,dr.toPairs=fu,dr.toPairsIn=pu,dr.toPath=function(e){return ms(e)?Zt(e,la):Ps(e)?[e]:no(ca(Vs(e)))},dr.toPlainObject=Us,dr.transform=function(e,t,n){var r=ms(e),i=r||ws(e)||Rs(e);if(t=Ro(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Ss(e)&&xs(o)?hr(kt(e)):{}}return(i?Kt:Kr)(e,function(e,r,i){return t(n,e,r,i)}),n},dr.unary=function(e){return es(e,1)},dr.union=Oa,dr.unionBy=Da,dr.unionWith=Ia,dr.uniq=function(e){return e&&e.length?$i(e):[]},dr.uniqBy=function(e,t){return e&&e.length?$i(e,Ro(t,2)):[]},dr.uniqWith=function(e,t){return t=\"function\"==typeof t?t:o,e&&e.length?$i(e,o,t):[]},dr.unset=function(e,t){return null==e||Hi(e,t)},dr.unzip=ka,dr.unzipWith=Na,dr.update=function(e,t,n){return null==e?e:Mi(e,t,Vi(n))},dr.updateWith=function(e,t,n,r){return r=\"function\"==typeof r?r:o,null==e?e:Mi(e,t,Vi(n),r)},dr.values=du,dr.valuesIn=function(e){return null==e?[]:yn(e,ou(e))},dr.without=La,dr.words=xu,dr.wrap=function(e,t){return ls(Vi(t),e)},dr.xor=ja,dr.xorBy=Pa,dr.xorWith=Ra,dr.zip=$a,dr.zipObject=function(e,t){return Bi(e||[],t||[],Or)},dr.zipObjectDeep=function(e,t){return Bi(e||[],t||[],Ai)},dr.zipWith=Ha,dr.entries=fu,dr.entriesIn=pu,dr.extend=Ks,dr.extendWith=Gs,ju(dr,dr),dr.add=Uu,dr.attempt=Cu,dr.camelCase=hu,dr.capitalize=vu,dr.ceil=Vu,dr.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=Bs(n))==n?n:0),t!==o&&(t=(t=Bs(t))==t?t:0),jr(Bs(e),t,n)},dr.clone=function(e){return Pr(e,h)},dr.cloneDeep=function(e){return Pr(e,p|h)},dr.cloneDeepWith=function(e,t){return Pr(e,p|h,t=\"function\"==typeof t?t:o)},dr.cloneWith=function(e,t){return Pr(e,h,t=\"function\"==typeof t?t:o)},dr.conformsTo=function(e,t){return null==t||Rr(e,t,iu(t))},dr.deburr=gu,dr.defaultTo=function(e,t){return null==e||e!=e?t:e},dr.divide=zu,dr.endsWith=function(e,t,n){e=Vs(e),t=Ri(t);var r=e.length,i=n=n===o?r:jr(Ws(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},dr.eq=ds,dr.escape=function(e){return(e=Vs(e))&&Ce.test(e)?e.replace(Ee,En):e},dr.escapeRegExp=function(e){return(e=Vs(e))&&Le.test(e)?e.replace(Ne,\"\\\\$&\"):e},dr.every=function(e,t,n){var r=ms(e)?Xt:Wr;return n&&Ko(e,t,n)&&(t=o),r(e,Ro(t,3))},dr.find=Ba,dr.findIndex=ga,dr.findKey=function(e,t){return an(e,Ro(t,3),Kr)},dr.findLast=Ua,dr.findLastIndex=ma,dr.findLastKey=function(e,t){return an(e,Ro(t,3),Gr)},dr.floor=Ku,dr.forEach=Va,dr.forEachRight=za,dr.forIn=function(e,t){return null==e?e:Vr(e,Ro(t,3),ou)},dr.forInRight=function(e,t){return null==e?e:zr(e,Ro(t,3),ou)},dr.forOwn=function(e,t){return e&&Kr(e,Ro(t,3))},dr.forOwnRight=function(e,t){return e&&Gr(e,Ro(t,3))},dr.get=Zs,dr.gt=hs,dr.gte=vs,dr.has=function(e,t){return null!=e&&Bo(e,t,ei)},dr.hasIn=eu,dr.head=_a,dr.identity=Iu,dr.includes=function(e,t,n,r){e=_s(e)?e:du(e),n=n&&!r?Ws(n):0;var i=e.length;return n<0&&(n=Vn(i+n,0)),js(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&un(e,t,n)>-1},dr.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:Ws(n);return i<0&&(i=Vn(r+i,0)),un(e,t,i)},dr.inRange=function(e,t,n){return t=Fs(t),n===o?(n=t,t=0):n=Fs(n),function(e,t,n){return e>=zn(t,n)&&e<Vn(t,n)}(e=Bs(e),t,n)},dr.invoke=ru,dr.isArguments=gs,dr.isArray=ms,dr.isArrayBuffer=ys,dr.isArrayLike=_s,dr.isArrayLikeObject=bs,dr.isBoolean=function(e){return!0===e||!1===e||Os(e)&&Jr(e)==U},dr.isBuffer=ws,dr.isDate=Ts,dr.isElement=function(e){return Os(e)&&1===e.nodeType&&!ks(e)},dr.isEmpty=function(e){if(null==e)return!0;if(_s(e)&&(ms(e)||\"string\"==typeof e||\"function\"==typeof e.splice||ws(e)||Rs(e)||gs(e)))return!e.length;var t=qo(e);if(t==Q||t==ne)return!e.size;if(Yo(e))return!ci(e).length;for(var n in e)if(lt.call(e,n))return!1;return!0},dr.isEqual=function(e,t){return oi(e,t)},dr.isEqualWith=function(e,t,n){var r=(n=\"function\"==typeof n?n:o)?n(e,t):o;return r===o?oi(e,t,o,n):!!r},dr.isError=Es,dr.isFinite=function(e){return\"number\"==typeof e&&qn(e)},dr.isFunction=xs,dr.isInteger=Cs,dr.isLength=As,dr.isMap=Ds,dr.isMatch=function(e,t){return e===t||ai(e,t,Ho(t))},dr.isMatchWith=function(e,t,n){return n=\"function\"==typeof n?n:o,ai(e,t,Ho(t),n)},dr.isNaN=function(e){return Is(e)&&e!=+e},dr.isNative=function(e){if(Qo(e))throw new Je(s);return si(e)},dr.isNil=function(e){return null==e},dr.isNull=function(e){return null===e},dr.isNumber=Is,dr.isObject=Ss,dr.isObjectLike=Os,dr.isPlainObject=ks,dr.isRegExp=Ns,dr.isSafeInteger=function(e){return Cs(e)&&e>=-j&&e<=j},dr.isSet=Ls,dr.isString=js,dr.isSymbol=Ps,dr.isTypedArray=Rs,dr.isUndefined=function(e){return e===o},dr.isWeakMap=function(e){return Os(e)&&qo(e)==ae},dr.isWeakSet=function(e){return Os(e)&&Jr(e)==se},dr.join=function(e,t){return null==e?\"\":Bn.call(e,t)},dr.kebabCase=mu,dr.last=Ea,dr.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=Ws(n))<0?Vn(r+i,0):zn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):sn(e,ln,i,!0)},dr.lowerCase=yu,dr.lowerFirst=_u,dr.lt=$s,dr.lte=Hs,dr.max=function(e){return e&&e.length?qr(e,Iu,Zr):o},dr.maxBy=function(e,t){return e&&e.length?qr(e,Ro(t,2),Zr):o},dr.mean=function(e){return fn(e,Iu)},dr.meanBy=function(e,t){return fn(e,Ro(t,2))},dr.min=function(e){return e&&e.length?qr(e,Iu,fi):o},dr.minBy=function(e,t){return e&&e.length?qr(e,Ro(t,2),fi):o},dr.stubArray=qu,dr.stubFalse=Bu,dr.stubObject=function(){return{}},dr.stubString=function(){return\"\"},dr.stubTrue=function(){return!0},dr.multiply=Xu,dr.nth=function(e,t){return e&&e.length?gi(e,Ws(t)):o},dr.noConflict=function(){return Lt._===this&&(Lt._=vt),this},dr.noop=Pu,dr.now=Za,dr.pad=function(e,t,n){e=Vs(e);var r=(t=Ws(t))?kn(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return yo(Mn(i),n)+e+yo(Hn(i),n)},dr.padEnd=function(e,t,n){e=Vs(e);var r=(t=Ws(t))?kn(e):0;return t&&r<t?e+yo(t-r,n):e},dr.padStart=function(e,t,n){e=Vs(e);var r=(t=Ws(t))?kn(e):0;return t&&r<t?yo(t-r,n)+e:e},dr.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),Gn(Vs(e).replace(Pe,\"\"),t||0)},dr.random=function(e,t,n){if(n&&\"boolean\"!=typeof n&&Ko(e,t,n)&&(t=n=o),n===o&&(\"boolean\"==typeof t?(n=t,t=o):\"boolean\"==typeof e&&(n=e,e=o)),e===o&&t===o?(e=0,t=1):(e=Fs(e),t===o?(t=e,e=0):t=Fs(t)),e>t){var r=e;e=t,t=r}if(n||e%1||t%1){var i=Xn();return zn(e+i*(t-e+Dt(\"1e-\"+((i+\"\").length-1))),t)}return wi(e,t)},dr.reduce=function(e,t,n){var r=ms(e)?tn:hn,i=arguments.length<3;return r(e,Ro(t,4),n,i,Mr)},dr.reduceRight=function(e,t,n){var r=ms(e)?nn:hn,i=arguments.length<3;return r(e,Ro(t,4),n,i,Fr)},dr.repeat=function(e,t,n){return t=(n?Ko(e,t,n):t===o)?1:Ws(t),Ti(Vs(e),t)},dr.replace=function(){var e=arguments,t=Vs(e[0]);return e.length<3?t:t.replace(e[1],e[2])},dr.result=function(e,t,n){var r=-1,i=(t=zi(t,e)).length;for(i||(i=1,e=o);++r<i;){var a=null==e?o:e[la(t[r])];a===o&&(r=i,a=n),e=xs(a)?a.call(e):a}return e},dr.round=Qu,dr.runInContext=e,dr.sample=function(e){return(ms(e)?xr:xi)(e)},dr.size=function(e){if(null==e)return 0;if(_s(e))return js(e)?kn(e):e.length;var t=qo(e);return t==Q||t==ne?e.size:ci(e).length},dr.snakeCase=bu,dr.some=function(e,t,n){var r=ms(e)?rn:ki;return n&&Ko(e,t,n)&&(t=o),r(e,Ro(t,3))},dr.sortedIndex=function(e,t){return Ni(e,t)},dr.sortedIndexBy=function(e,t,n){return Li(e,t,Ro(n,2))},dr.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var r=Ni(e,t);if(r<n&&ds(e[r],t))return r}return-1},dr.sortedLastIndex=function(e,t){return Ni(e,t,!0)},dr.sortedLastIndexBy=function(e,t,n){return Li(e,t,Ro(n,2),!0)},dr.sortedLastIndexOf=function(e,t){if(null!=e&&e.length){var n=Ni(e,t,!0)-1;if(ds(e[n],t))return n}return-1},dr.startCase=wu,dr.startsWith=function(e,t,n){return e=Vs(e),n=null==n?0:jr(Ws(n),0,e.length),t=Ri(t),e.slice(n,n+t.length)==t},dr.subtract=Yu,dr.sum=function(e){return e&&e.length?vn(e,Iu):0},dr.sumBy=function(e,t){return e&&e.length?vn(e,Ro(t,2)):0},dr.template=function(e,t,n){var r=dr.templateSettings;n&&Ko(e,t,n)&&(t=o),e=Vs(e),t=Gs({},t,r,Ao);var i,a,s=Gs({},t.imports,r.imports,Ao),u=iu(s),c=yn(s,u),l=0,f=t.interpolate||Qe,p=\"__p += '\",d=nt((t.escape||Qe).source+\"|\"+f.source+\"|\"+(f===Oe?qe:Qe).source+\"|\"+(t.evaluate||Qe).source+\"|$\",\"g\"),h=\"//# sourceURL=\"+(\"sourceURL\"in t?t.sourceURL:\"lodash.templateSources[\"+ ++Ct+\"]\")+\"\\n\";e.replace(d,function(t,n,r,o,s,u){return r||(r=o),p+=e.slice(l,u).replace(Ye,xn),n&&(i=!0,p+=\"' +\\n__e(\"+n+\") +\\n'\"),s&&(a=!0,p+=\"';\\n\"+s+\";\\n__p += '\"),r&&(p+=\"' +\\n((__t = (\"+r+\")) == null ? '' : __t) +\\n'\"),l=u+t.length,t}),p+=\"';\\n\";var v=t.variable;v||(p=\"with (obj) {\\n\"+p+\"\\n}\\n\"),p=(a?p.replace(_e,\"\"):p).replace(be,\"$1\").replace(we,\"$1;\"),p=\"function(\"+(v||\"obj\")+\") {\\n\"+(v?\"\":\"obj || (obj = {});\\n\")+\"var __t, __p = ''\"+(i?\", __e = _.escape\":\"\")+(a?\", __j = Array.prototype.join;\\nfunction print() { __p += __j.call(arguments, '') }\\n\":\";\\n\")+p+\"return __p\\n}\";var g=Cu(function(){return Ze(u,h+\"return \"+p).apply(o,c)});if(g.source=p,Es(g))throw g;return g},dr.times=function(e,t){if((e=Ws(e))<1||e>j)return[];var n=$,r=zn(e,$);t=Ro(t),e-=$;for(var i=gn(r,t);++n<e;)t(n);return i},dr.toFinite=Fs,dr.toInteger=Ws,dr.toLength=qs,dr.toLower=function(e){return Vs(e).toLowerCase()},dr.toNumber=Bs,dr.toSafeInteger=function(e){return e?jr(Ws(e),-j,j):0===e?e:0},dr.toString=Vs,dr.toUpper=function(e){return Vs(e).toUpperCase()},dr.trim=function(e,t,n){if((e=Vs(e))&&(n||t===o))return e.replace(je,\"\");if(!e||!(t=Ri(t)))return e;var r=Nn(e),i=Nn(t);return Gi(r,bn(r,i),wn(r,i)+1).join(\"\")},dr.trimEnd=function(e,t,n){if((e=Vs(e))&&(n||t===o))return e.replace(Re,\"\");if(!e||!(t=Ri(t)))return e;var r=Nn(e);return Gi(r,0,wn(r,Nn(t))+1).join(\"\")},dr.trimStart=function(e,t,n){if((e=Vs(e))&&(n||t===o))return e.replace(Pe,\"\");if(!e||!(t=Ri(t)))return e;var r=Nn(e);return Gi(r,bn(r,Nn(t))).join(\"\")},dr.truncate=function(e,t){var n=S,r=O;if(Ss(t)){var i=\"separator\"in t?t.separator:i;n=\"length\"in t?Ws(t.length):n,r=\"omission\"in t?Ri(t.omission):r}var a=(e=Vs(e)).length;if(Cn(e)){var s=Nn(e);a=s.length}if(n>=a)return e;var u=n-kn(r);if(u<1)return r;var c=s?Gi(s,0,u).join(\"\"):e.slice(0,u);if(i===o)return c+r;if(s&&(u+=c.length-u),Ns(i)){if(e.slice(u).search(i)){var l,f=c;for(i.global||(i=nt(i.source,Vs(Be.exec(i))+\"g\")),i.lastIndex=0;l=i.exec(f);)var p=l.index;c=c.slice(0,p===o?u:p)}}else if(e.indexOf(Ri(i),u)!=u){var d=c.lastIndexOf(i);d>-1&&(c=c.slice(0,d))}return c+r},dr.unescape=function(e){return(e=Vs(e))&&xe.test(e)?e.replace(Te,Ln):e},dr.uniqueId=function(e){var t=++ft;return Vs(e)+t},dr.upperCase=Tu,dr.upperFirst=Eu,dr.each=Va,dr.eachRight=za,dr.first=_a,ju(dr,(Gu={},Kr(dr,function(e,t){lt.call(dr.prototype,t)||(Gu[t]=e)}),Gu),{chain:!1}),dr.VERSION=\"4.17.11\",Kt([\"bind\",\"bindKey\",\"curry\",\"curryRight\",\"partial\",\"partialRight\"],function(e){dr[e].placeholder=dr}),Kt([\"drop\",\"take\"],function(e,t){mr.prototype[e]=function(n){n=n===o?1:Vn(Ws(n),0);var r=this.__filtered__&&!t?new mr(this):this.clone();return r.__filtered__?r.__takeCount__=zn(n,r.__takeCount__):r.__views__.push({size:zn(n,$),type:e+(r.__dir__<0?\"Right\":\"\")}),r},mr.prototype[e+\"Right\"]=function(t){return this.reverse()[e](t).reverse()}}),Kt([\"filter\",\"map\",\"takeWhile\"],function(e,t){var n=t+1,r=n==k||3==n;mr.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Ro(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}}),Kt([\"head\",\"last\"],function(e,t){var n=\"take\"+(t?\"Right\":\"\");mr.prototype[e]=function(){return this[n](1).value()[0]}}),Kt([\"initial\",\"tail\"],function(e,t){var n=\"drop\"+(t?\"\":\"Right\");mr.prototype[e]=function(){return this.__filtered__?new mr(this):this[n](1)}}),mr.prototype.compact=function(){return this.filter(Iu)},mr.prototype.find=function(e){return this.filter(e).head()},mr.prototype.findLast=function(e){return this.reverse().find(e)},mr.prototype.invokeMap=Ei(function(e,t){return\"function\"==typeof e?new mr(this):this.map(function(n){return ri(n,e,t)})}),mr.prototype.reject=function(e){return this.filter(us(Ro(e)))},mr.prototype.slice=function(e,t){e=Ws(e);var n=this;return n.__filtered__&&(e>0||t<0)?new mr(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=Ws(t))<0?n.dropRight(-t):n.take(t-e)),n)},mr.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},mr.prototype.toArray=function(){return this.take($)},Kr(mr.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=dr[r?\"take\"+(\"last\"==t?\"Right\":\"\"):t],a=r||/^find/.test(t);i&&(dr.prototype[t]=function(){var t=this.__wrapped__,s=r?[1]:arguments,u=t instanceof mr,c=s[0],l=u||ms(t),f=function(e){var t=i.apply(dr,en([e],s));return r&&p?t[0]:t};l&&n&&\"function\"==typeof c&&1!=c.length&&(u=l=!1);var p=this.__chain__,d=!!this.__actions__.length,h=a&&!p,v=u&&!d;if(!a&&l){t=v?t:new mr(this);var g=e.apply(t,s);return g.__actions__.push({func:Fa,args:[f],thisArg:o}),new gr(g,p)}return h&&v?e.apply(this,s):(g=this.thru(f),h?r?g.value()[0]:g.value():g)})}),Kt([\"pop\",\"push\",\"shift\",\"sort\",\"splice\",\"unshift\"],function(e){var t=ot[e],n=/^(?:push|sort|unshift)$/.test(e)?\"tap\":\"thru\",r=/^(?:pop|shift)$/.test(e);dr.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(ms(i)?i:[],e)}return this[n](function(n){return t.apply(ms(n)?n:[],e)})}}),Kr(mr.prototype,function(e,t){var n=dr[t];if(n){var r=n.name+\"\";(ir[r]||(ir[r]=[])).push({name:t,func:n})}}),ir[ho(o,y).name]=[{name:\"wrapper\",func:o}],mr.prototype.clone=function(){var e=new mr(this.__wrapped__);return e.__actions__=no(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=no(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=no(this.__views__),e},mr.prototype.reverse=function(){if(this.__filtered__){var e=new mr(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},mr.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=ms(e),r=t<0,i=n?e.length:0,o=function(e,t,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case\"drop\":e+=a;break;case\"dropRight\":t-=a;break;case\"take\":t=zn(t,e+a);break;case\"takeRight\":e=Vn(e,t-a)}}return{start:e,end:t}}(0,i,this.__views__),a=o.start,s=o.end,u=s-a,c=r?s:a-1,l=this.__iteratees__,f=l.length,p=0,d=zn(u,this.__takeCount__);if(!n||!r&&i==u&&d==u)return Wi(e,this.__actions__);var h=[];e:for(;u--&&p<d;){for(var v=-1,g=e[c+=t];++v<f;){var m=l[v],y=m.iteratee,_=m.type,b=y(g);if(_==N)g=b;else if(!b){if(_==k)continue e;break e}}h[p++]=g}return h},dr.prototype.at=Wa,dr.prototype.chain=function(){return Ma(this)},dr.prototype.commit=function(){return new gr(this.value(),this.__chain__)},dr.prototype.next=function(){this.__values__===o&&(this.__values__=Ms(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},dr.prototype.plant=function(e){for(var t,n=this;n instanceof vr;){var r=pa(n);r.__index__=0,r.__values__=o,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},dr.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof mr){var t=e;return this.__actions__.length&&(t=new mr(this)),(t=t.reverse()).__actions__.push({func:Fa,args:[Sa],thisArg:o}),new gr(t,this.__chain__)}return this.thru(Sa)},dr.prototype.toJSON=dr.prototype.valueOf=dr.prototype.value=function(){return Wi(this.__wrapped__,this.__actions__)},dr.prototype.first=dr.prototype.head,Ht&&(dr.prototype[Ht]=function(){return this}),dr}();Lt._=jn,(i=function(){return jn}.call(t,n,t,r))===o||(r.exports=i)}).call(this)}).call(this,n(1),n(15)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){!function(e,t,n){\"use strict\";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);\"function\"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){o(e,t,n[t])})}return e}t=t&&t.hasOwnProperty(\"default\")?t.default:t,n=n&&n.hasOwnProperty(\"default\")?n.default:n;var s=function(e){var t=\"transitionend\";function n(t){var n=this,i=!1;return e(this).one(r.TRANSITION_END,function(){i=!0}),setTimeout(function(){i||r.triggerTransitionEnd(n)},t),this}var r={TRANSITION_END:\"bsTransitionEnd\",getUID:function(e){do{e+=~~(1e6*Math.random())}while(document.getElementById(e));return e},getSelectorFromElement:function(e){var t=e.getAttribute(\"data-target\");t&&\"#\"!==t||(t=e.getAttribute(\"href\")||\"\");try{return document.querySelector(t)?t:null}catch(e){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var n=e(t).css(\"transition-duration\"),r=parseFloat(n);return r?(n=n.split(\",\")[0],1e3*parseFloat(n)):0},reflow:function(e){return e.offsetHeight},triggerTransitionEnd:function(n){e(n).trigger(t)},supportsTransitionEnd:function(){return Boolean(t)},isElement:function(e){return(e[0]||e).nodeType},typeCheckConfig:function(e,t,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],a=t[i],s=a&&r.isElement(a)?\"element\":(u=a,{}.toString.call(u).match(/\\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(e.toUpperCase()+': Option \"'+i+'\" provided type \"'+s+'\" but expected type \"'+o+'\".')}var u}};return e.fn.emulateTransitionEnd=n,e.event.special[r.TRANSITION_END]={bindType:t,delegateType:t,handle:function(t){if(e(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}},r}(t),u=function(e){var t=e.fn.alert,n={CLOSE:\"close.bs.alert\",CLOSED:\"closed.bs.alert\",CLICK_DATA_API:\"click.bs.alert.data-api\"},r={ALERT:\"alert\",FADE:\"fade\",SHOW:\"show\"},o=function(){function t(e){this._element=e}var o=t.prototype;return o.close=function(e){var t=this._element;e&&(t=this._getRootElement(e));var n=this._triggerCloseEvent(t);n.isDefaultPrevented()||this._removeElement(t)},o.dispose=function(){e.removeData(this._element,\"bs.alert\"),this._element=null},o._getRootElement=function(t){var n=s.getSelectorFromElement(t),i=!1;return n&&(i=document.querySelector(n)),i||(i=e(t).closest(\".\"+r.ALERT)[0]),i},o._triggerCloseEvent=function(t){var r=e.Event(n.CLOSE);return e(t).trigger(r),r},o._removeElement=function(t){var n=this;if(e(t).removeClass(r.SHOW),e(t).hasClass(r.FADE)){var i=s.getTransitionDurationFromElement(t);e(t).one(s.TRANSITION_END,function(e){return n._destroyElement(t,e)}).emulateTransitionEnd(i)}else this._destroyElement(t)},o._destroyElement=function(t){e(t).detach().trigger(n.CLOSED).remove()},t._jQueryInterface=function(n){return this.each(function(){var r=e(this),i=r.data(\"bs.alert\");i||(i=new t(this),r.data(\"bs.alert\",i)),\"close\"===n&&i[n](this)})},t._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},i(t,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}}]),t}();return e(document).on(n.CLICK_DATA_API,'[data-dismiss=\"alert\"]',o._handleDismiss(new o)),e.fn.alert=o._jQueryInterface,e.fn.alert.Constructor=o,e.fn.alert.noConflict=function(){return e.fn.alert=t,o._jQueryInterface},o}(t),c=function(e){var t=\"button\",n=e.fn[t],r={ACTIVE:\"active\",BUTTON:\"btn\",FOCUS:\"focus\"},o={DATA_TOGGLE_CARROT:'[data-toggle^=\"button\"]',DATA_TOGGLE:'[data-toggle=\"buttons\"]',INPUT:\"input\",ACTIVE:\".active\",BUTTON:\".btn\"},a={CLICK_DATA_API:\"click.bs.button.data-api\",FOCUS_BLUR_DATA_API:\"focus.bs.button.data-api blur.bs.button.data-api\"},s=function(){function t(e){this._element=e}var n=t.prototype;return n.toggle=function(){var t=!0,n=!0,i=e(this._element).closest(o.DATA_TOGGLE)[0];if(i){var a=this._element.querySelector(o.INPUT);if(a){if(\"radio\"===a.type)if(a.checked&&this._element.classList.contains(r.ACTIVE))t=!1;else{var s=i.querySelector(o.ACTIVE);s&&e(s).removeClass(r.ACTIVE)}if(t){if(a.hasAttribute(\"disabled\")||i.hasAttribute(\"disabled\")||a.classList.contains(\"disabled\")||i.classList.contains(\"disabled\"))return;a.checked=!this._element.classList.contains(r.ACTIVE),e(a).trigger(\"change\")}a.focus(),n=!1}}n&&this._element.setAttribute(\"aria-pressed\",!this._element.classList.contains(r.ACTIVE)),t&&e(this._element).toggleClass(r.ACTIVE)},n.dispose=function(){e.removeData(this._element,\"bs.button\"),this._element=null},t._jQueryInterface=function(n){return this.each(function(){var r=e(this).data(\"bs.button\");r||(r=new t(this),e(this).data(\"bs.button\",r)),\"toggle\"===n&&r[n]()})},i(t,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}}]),t}();return e(document).on(a.CLICK_DATA_API,o.DATA_TOGGLE_CARROT,function(t){t.preventDefault();var n=t.target;e(n).hasClass(r.BUTTON)||(n=e(n).closest(o.BUTTON)),s._jQueryInterface.call(e(n),\"toggle\")}).on(a.FOCUS_BLUR_DATA_API,o.DATA_TOGGLE_CARROT,function(t){var n=e(t.target).closest(o.BUTTON)[0];e(n).toggleClass(r.FOCUS,/^focus(in)?$/.test(t.type))}),e.fn[t]=s._jQueryInterface,e.fn[t].Constructor=s,e.fn[t].noConflict=function(){return e.fn[t]=n,s._jQueryInterface},s}(t),l=function(e){var t=\"carousel\",n=\"bs.carousel\",r=\".\"+n,o=e.fn[t],u={interval:5e3,keyboard:!0,slide:!1,pause:\"hover\",wrap:!0},c={interval:\"(number|boolean)\",keyboard:\"boolean\",slide:\"(boolean|string)\",pause:\"(string|boolean)\",wrap:\"boolean\"},l={NEXT:\"next\",PREV:\"prev\",LEFT:\"left\",RIGHT:\"right\"},f={SLIDE:\"slide\"+r,SLID:\"slid\"+r,KEYDOWN:\"keydown\"+r,MOUSEENTER:\"mouseenter\"+r,MOUSELEAVE:\"mouseleave\"+r,TOUCHEND:\"touchend\"+r,LOAD_DATA_API:\"load.bs.carousel.data-api\",CLICK_DATA_API:\"click.bs.carousel.data-api\"},p={CAROUSEL:\"carousel\",ACTIVE:\"active\",SLIDE:\"slide\",RIGHT:\"carousel-item-right\",LEFT:\"carousel-item-left\",NEXT:\"carousel-item-next\",PREV:\"carousel-item-prev\",ITEM:\"carousel-item\"},d={ACTIVE:\".active\",ACTIVE_ITEM:\".active.carousel-item\",ITEM:\".carousel-item\",NEXT_PREV:\".carousel-item-next, .carousel-item-prev\",INDICATORS:\".carousel-indicators\",DATA_SLIDE:\"[data-slide], [data-slide-to]\",DATA_RIDE:'[data-ride=\"carousel\"]'},h=function(){function o(t,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=e(t)[0],this._indicatorsElement=this._element.querySelector(d.INDICATORS),this._addEventListeners()}var h=o.prototype;return h.next=function(){this._isSliding||this._slide(l.NEXT)},h.nextWhenVisible=function(){!document.hidden&&e(this._element).is(\":visible\")&&\"hidden\"!==e(this._element).css(\"visibility\")&&this.next()},h.prev=function(){this._isSliding||this._slide(l.PREV)},h.pause=function(e){e||(this._isPaused=!0),this._element.querySelector(d.NEXT_PREV)&&(s.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},h.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},h.to=function(t){var n=this;this._activeElement=this._element.querySelector(d.ACTIVE_ITEM);var r=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)e(this._element).one(f.SLID,function(){return n.to(t)});else{if(r===t)return this.pause(),void this.cycle();var i=t>r?l.NEXT:l.PREV;this._slide(i,this._items[t])}},h.dispose=function(){e(this._element).off(r),e.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},h._getConfig=function(e){return e=a({},u,e),s.typeCheckConfig(t,e,c),e},h._addEventListeners=function(){var t=this;this._config.keyboard&&e(this._element).on(f.KEYDOWN,function(e){return t._keydown(e)}),\"hover\"===this._config.pause&&(e(this._element).on(f.MOUSEENTER,function(e){return t.pause(e)}).on(f.MOUSELEAVE,function(e){return t.cycle(e)}),\"ontouchstart\"in document.documentElement&&e(this._element).on(f.TOUCHEND,function(){t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout(function(e){return t.cycle(e)},500+t._config.interval)}))},h._keydown=function(e){if(!/input|textarea/i.test(e.target.tagName))switch(e.which){case 37:e.preventDefault(),this.prev();break;case 39:e.preventDefault(),this.next()}},h._getItemIndex=function(e){return this._items=e&&e.parentNode?[].slice.call(e.parentNode.querySelectorAll(d.ITEM)):[],this._items.indexOf(e)},h._getItemByDirection=function(e,t){var n=e===l.NEXT,r=e===l.PREV,i=this._getItemIndex(t),o=this._items.length-1,a=r&&0===i||n&&i===o;if(a&&!this._config.wrap)return t;var s=e===l.PREV?-1:1,u=(i+s)%this._items.length;return-1===u?this._items[this._items.length-1]:this._items[u]},h._triggerSlideEvent=function(t,n){var r=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(d.ACTIVE_ITEM)),o=e.Event(f.SLIDE,{relatedTarget:t,direction:n,from:i,to:r});return e(this._element).trigger(o),o},h._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var n=[].slice.call(this._indicatorsElement.querySelectorAll(d.ACTIVE));e(n).removeClass(p.ACTIVE);var r=this._indicatorsElement.children[this._getItemIndex(t)];r&&e(r).addClass(p.ACTIVE)}},h._slide=function(t,n){var r,i,o,a=this,u=this._element.querySelector(d.ACTIVE_ITEM),c=this._getItemIndex(u),h=n||u&&this._getItemByDirection(t,u),v=this._getItemIndex(h),g=Boolean(this._interval);if(t===l.NEXT?(r=p.LEFT,i=p.NEXT,o=l.LEFT):(r=p.RIGHT,i=p.PREV,o=l.RIGHT),h&&e(h).hasClass(p.ACTIVE))this._isSliding=!1;else{var m=this._triggerSlideEvent(h,o);if(!m.isDefaultPrevented()&&u&&h){this._isSliding=!0,g&&this.pause(),this._setActiveIndicatorElement(h);var y=e.Event(f.SLID,{relatedTarget:h,direction:o,from:c,to:v});if(e(this._element).hasClass(p.SLIDE)){e(h).addClass(i),s.reflow(h),e(u).addClass(r),e(h).addClass(r);var _=s.getTransitionDurationFromElement(u);e(u).one(s.TRANSITION_END,function(){e(h).removeClass(r+\" \"+i).addClass(p.ACTIVE),e(u).removeClass(p.ACTIVE+\" \"+i+\" \"+r),a._isSliding=!1,setTimeout(function(){return e(a._element).trigger(y)},0)}).emulateTransitionEnd(_)}else e(u).removeClass(p.ACTIVE),e(h).addClass(p.ACTIVE),this._isSliding=!1,e(this._element).trigger(y);g&&this.cycle()}}},o._jQueryInterface=function(t){return this.each(function(){var r=e(this).data(n),i=a({},u,e(this).data());\"object\"==typeof t&&(i=a({},i,t));var s=\"string\"==typeof t?t:i.slide;if(r||(r=new o(this,i),e(this).data(n,r)),\"number\"==typeof t)r.to(t);else if(\"string\"==typeof s){if(void 0===r[s])throw new TypeError('No method named \"'+s+'\"');r[s]()}else i.interval&&(r.pause(),r.cycle())})},o._dataApiClickHandler=function(t){var r=s.getSelectorFromElement(this);if(r){var i=e(r)[0];if(i&&e(i).hasClass(p.CAROUSEL)){var u=a({},e(i).data(),e(this).data()),c=this.getAttribute(\"data-slide-to\");c&&(u.interval=!1),o._jQueryInterface.call(e(i),u),c&&e(i).data(n).to(c),t.preventDefault()}}},i(o,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return u}}]),o}();return e(document).on(f.CLICK_DATA_API,d.DATA_SLIDE,h._dataApiClickHandler),e(window).on(f.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(d.DATA_RIDE)),n=0,r=t.length;n<r;n++){var i=e(t[n]);h._jQueryInterface.call(i,i.data())}}),e.fn[t]=h._jQueryInterface,e.fn[t].Constructor=h,e.fn[t].noConflict=function(){return e.fn[t]=o,h._jQueryInterface},h}(t),f=function(e){var t=\"collapse\",n=\"bs.collapse\",r=e.fn[t],o={toggle:!0,parent:\"\"},u={toggle:\"boolean\",parent:\"(string|element)\"},c={SHOW:\"show.bs.collapse\",SHOWN:\"shown.bs.collapse\",HIDE:\"hide.bs.collapse\",HIDDEN:\"hidden.bs.collapse\",CLICK_DATA_API:\"click.bs.collapse.data-api\"},l={SHOW:\"show\",COLLAPSE:\"collapse\",COLLAPSING:\"collapsing\",COLLAPSED:\"collapsed\"},f={WIDTH:\"width\",HEIGHT:\"height\"},p={ACTIVES:\".show, .collapsing\",DATA_TOGGLE:'[data-toggle=\"collapse\"]'},d=function(){function r(t,n){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(n),this._triggerArray=e.makeArray(document.querySelectorAll('[data-toggle=\"collapse\"][href=\"#'+t.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+t.id+'\"]'));for(var r=[].slice.call(document.querySelectorAll(p.DATA_TOGGLE)),i=0,o=r.length;i<o;i++){var a=r[i],u=s.getSelectorFromElement(a),c=[].slice.call(document.querySelectorAll(u)).filter(function(e){return e===t});null!==u&&c.length>0&&(this._selector=u,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var d=r.prototype;return d.toggle=function(){e(this._element).hasClass(l.SHOW)?this.hide():this.show()},d.show=function(){var t,i,o=this;if(!(this._isTransitioning||e(this._element).hasClass(l.SHOW)||(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(p.ACTIVES)).filter(function(e){return e.getAttribute(\"data-parent\")===o._config.parent})).length&&(t=null),t&&(i=e(t).not(this._selector).data(n))&&i._isTransitioning))){var a=e.Event(c.SHOW);if(e(this._element).trigger(a),!a.isDefaultPrevented()){t&&(r._jQueryInterface.call(e(t).not(this._selector),\"hide\"),i||e(t).data(n,null));var u=this._getDimension();e(this._element).removeClass(l.COLLAPSE).addClass(l.COLLAPSING),this._element.style[u]=0,this._triggerArray.length&&e(this._triggerArray).removeClass(l.COLLAPSED).attr(\"aria-expanded\",!0),this.setTransitioning(!0);var f=u[0].toUpperCase()+u.slice(1),d=\"scroll\"+f,h=s.getTransitionDurationFromElement(this._element);e(this._element).one(s.TRANSITION_END,function(){e(o._element).removeClass(l.COLLAPSING).addClass(l.COLLAPSE).addClass(l.SHOW),o._element.style[u]=\"\",o.setTransitioning(!1),e(o._element).trigger(c.SHOWN)}).emulateTransitionEnd(h),this._element.style[u]=this._element[d]+\"px\"}}},d.hide=function(){var t=this;if(!this._isTransitioning&&e(this._element).hasClass(l.SHOW)){var n=e.Event(c.HIDE);if(e(this._element).trigger(n),!n.isDefaultPrevented()){var r=this._getDimension();this._element.style[r]=this._element.getBoundingClientRect()[r]+\"px\",s.reflow(this._element),e(this._element).addClass(l.COLLAPSING).removeClass(l.COLLAPSE).removeClass(l.SHOW);var i=this._triggerArray.length;if(i>0)for(var o=0;o<i;o++){var a=this._triggerArray[o],u=s.getSelectorFromElement(a);if(null!==u){var f=e([].slice.call(document.querySelectorAll(u)));f.hasClass(l.SHOW)||e(a).addClass(l.COLLAPSED).attr(\"aria-expanded\",!1)}}this.setTransitioning(!0),this._element.style[r]=\"\";var p=s.getTransitionDurationFromElement(this._element);e(this._element).one(s.TRANSITION_END,function(){t.setTransitioning(!1),e(t._element).removeClass(l.COLLAPSING).addClass(l.COLLAPSE).trigger(c.HIDDEN)}).emulateTransitionEnd(p)}}},d.setTransitioning=function(e){this._isTransitioning=e},d.dispose=function(){e.removeData(this._element,n),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},d._getConfig=function(e){return(e=a({},o,e)).toggle=Boolean(e.toggle),s.typeCheckConfig(t,e,u),e},d._getDimension=function(){var t=e(this._element).hasClass(f.WIDTH);return t?f.WIDTH:f.HEIGHT},d._getParent=function(){var t=this,n=null;s.isElement(this._config.parent)?(n=this._config.parent,void 0!==this._config.parent.jquery&&(n=this._config.parent[0])):n=document.querySelector(this._config.parent);var i='[data-toggle=\"collapse\"][data-parent=\"'+this._config.parent+'\"]',o=[].slice.call(n.querySelectorAll(i));return e(o).each(function(e,n){t._addAriaAndCollapsedClass(r._getTargetFromElement(n),[n])}),n},d._addAriaAndCollapsedClass=function(t,n){if(t){var r=e(t).hasClass(l.SHOW);n.length&&e(n).toggleClass(l.COLLAPSED,!r).attr(\"aria-expanded\",r)}},r._getTargetFromElement=function(e){var t=s.getSelectorFromElement(e);return t?document.querySelector(t):null},r._jQueryInterface=function(t){return this.each(function(){var i=e(this),s=i.data(n),u=a({},o,i.data(),\"object\"==typeof t&&t?t:{});if(!s&&u.toggle&&/show|hide/.test(t)&&(u.toggle=!1),s||(s=new r(this,u),i.data(n,s)),\"string\"==typeof t){if(void 0===s[t])throw new TypeError('No method named \"'+t+'\"');s[t]()}})},i(r,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return o}}]),r}();return e(document).on(c.CLICK_DATA_API,p.DATA_TOGGLE,function(t){\"A\"===t.currentTarget.tagName&&t.preventDefault();var r=e(this),i=s.getSelectorFromElement(this),o=[].slice.call(document.querySelectorAll(i));e(o).each(function(){var t=e(this),i=t.data(n),o=i?\"toggle\":r.data();d._jQueryInterface.call(t,o)})}),e.fn[t]=d._jQueryInterface,e.fn[t].Constructor=d,e.fn[t].noConflict=function(){return e.fn[t]=r,d._jQueryInterface},d}(t),p=function(e){var t=\"dropdown\",r=\"bs.dropdown\",o=\".\"+r,u=e.fn[t],c=new RegExp(\"38|40|27\"),l={HIDE:\"hide\"+o,HIDDEN:\"hidden\"+o,SHOW:\"show\"+o,SHOWN:\"shown\"+o,CLICK:\"click\"+o,CLICK_DATA_API:\"click.bs.dropdown.data-api\",KEYDOWN_DATA_API:\"keydown.bs.dropdown.data-api\",KEYUP_DATA_API:\"keyup.bs.dropdown.data-api\"},f={DISABLED:\"disabled\",SHOW:\"show\",DROPUP:\"dropup\",DROPRIGHT:\"dropright\",DROPLEFT:\"dropleft\",MENURIGHT:\"dropdown-menu-right\",MENULEFT:\"dropdown-menu-left\",POSITION_STATIC:\"position-static\"},p={DATA_TOGGLE:'[data-toggle=\"dropdown\"]',FORM_CHILD:\".dropdown form\",MENU:\".dropdown-menu\",NAVBAR_NAV:\".navbar-nav\",VISIBLE_ITEMS:\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\"},d={TOP:\"top-start\",TOPEND:\"top-end\",BOTTOM:\"bottom-start\",BOTTOMEND:\"bottom-end\",RIGHT:\"right-start\",RIGHTEND:\"right-end\",LEFT:\"left-start\",LEFTEND:\"left-end\"},h={offset:0,flip:!0,boundary:\"scrollParent\",reference:\"toggle\",display:\"dynamic\"},v={offset:\"(number|string|function)\",flip:\"boolean\",boundary:\"(string|element)\",reference:\"(string|element)\",display:\"string\"},g=function(){function u(e,t){this._element=e,this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var g=u.prototype;return g.toggle=function(){if(!this._element.disabled&&!e(this._element).hasClass(f.DISABLED)){var t=u._getParentFromElement(this._element),r=e(this._menu).hasClass(f.SHOW);if(u._clearMenus(),!r){var i={relatedTarget:this._element},o=e.Event(l.SHOW,i);if(e(t).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar){if(void 0===n)throw new TypeError(\"Bootstrap dropdown require Popper.js (https://popper.js.org)\");var a=this._element;\"parent\"===this._config.reference?a=t:s.isElement(this._config.reference)&&(a=this._config.reference,void 0!==this._config.reference.jquery&&(a=this._config.reference[0])),\"scrollParent\"!==this._config.boundary&&e(t).addClass(f.POSITION_STATIC),this._popper=new n(a,this._menu,this._getPopperConfig())}\"ontouchstart\"in document.documentElement&&0===e(t).closest(p.NAVBAR_NAV).length&&e(document.body).children().on(\"mouseover\",null,e.noop),this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),e(this._menu).toggleClass(f.SHOW),e(t).toggleClass(f.SHOW).trigger(e.Event(l.SHOWN,i))}}}},g.dispose=function(){e.removeData(this._element,r),e(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},g.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},g._addEventListeners=function(){var t=this;e(this._element).on(l.CLICK,function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},g._getConfig=function(n){return n=a({},this.constructor.Default,e(this._element).data(),n),s.typeCheckConfig(t,n,this.constructor.DefaultType),n},g._getMenuElement=function(){if(!this._menu){var e=u._getParentFromElement(this._element);e&&(this._menu=e.querySelector(p.MENU))}return this._menu},g._getPlacement=function(){var t=e(this._element.parentNode),n=d.BOTTOM;return t.hasClass(f.DROPUP)?(n=d.TOP,e(this._menu).hasClass(f.MENURIGHT)&&(n=d.TOPEND)):t.hasClass(f.DROPRIGHT)?n=d.RIGHT:t.hasClass(f.DROPLEFT)?n=d.LEFT:e(this._menu).hasClass(f.MENURIGHT)&&(n=d.BOTTOMEND),n},g._detectNavbar=function(){return e(this._element).closest(\".navbar\").length>0},g._getPopperConfig=function(){var e=this,t={};\"function\"==typeof this._config.offset?t.fn=function(t){return t.offsets=a({},t.offsets,e._config.offset(t.offsets)||{}),t}:t.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:t,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return\"static\"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},u._jQueryInterface=function(t){return this.each(function(){var n=e(this).data(r),i=\"object\"==typeof t?t:null;if(n||(n=new u(this,i),e(this).data(r,n)),\"string\"==typeof t){if(void 0===n[t])throw new TypeError('No method named \"'+t+'\"');n[t]()}})},u._clearMenus=function(t){if(!t||3!==t.which&&(\"keyup\"!==t.type||9===t.which))for(var n=[].slice.call(document.querySelectorAll(p.DATA_TOGGLE)),i=0,o=n.length;i<o;i++){var a=u._getParentFromElement(n[i]),s=e(n[i]).data(r),c={relatedTarget:n[i]};if(t&&\"click\"===t.type&&(c.clickEvent=t),s){var d=s._menu;if(e(a).hasClass(f.SHOW)&&!(t&&(\"click\"===t.type&&/input|textarea/i.test(t.target.tagName)||\"keyup\"===t.type&&9===t.which)&&e.contains(a,t.target))){var h=e.Event(l.HIDE,c);e(a).trigger(h),h.isDefaultPrevented()||(\"ontouchstart\"in document.documentElement&&e(document.body).children().off(\"mouseover\",null,e.noop),n[i].setAttribute(\"aria-expanded\",\"false\"),e(d).removeClass(f.SHOW),e(a).removeClass(f.SHOW).trigger(e.Event(l.HIDDEN,c)))}}}},u._getParentFromElement=function(e){var t,n=s.getSelectorFromElement(e);return n&&(t=document.querySelector(n)),t||e.parentNode},u._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||e(t.target).closest(p.MENU).length)):c.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!e(this).hasClass(f.DISABLED))){var n=u._getParentFromElement(this),r=e(n).hasClass(f.SHOW);if((r||27===t.which&&32===t.which)&&(!r||27!==t.which&&32!==t.which)){var i=[].slice.call(n.querySelectorAll(p.VISIBLE_ITEMS));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&o>0&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var a=n.querySelector(p.DATA_TOGGLE);e(a).trigger(\"focus\")}e(this).trigger(\"click\")}}},i(u,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return h}},{key:\"DefaultType\",get:function(){return v}}]),u}();return e(document).on(l.KEYDOWN_DATA_API,p.DATA_TOGGLE,g._dataApiKeydownHandler).on(l.KEYDOWN_DATA_API,p.MENU,g._dataApiKeydownHandler).on(l.CLICK_DATA_API+\" \"+l.KEYUP_DATA_API,g._clearMenus).on(l.CLICK_DATA_API,p.DATA_TOGGLE,function(t){t.preventDefault(),t.stopPropagation(),g._jQueryInterface.call(e(this),\"toggle\")}).on(l.CLICK_DATA_API,p.FORM_CHILD,function(e){e.stopPropagation()}),e.fn[t]=g._jQueryInterface,e.fn[t].Constructor=g,e.fn[t].noConflict=function(){return e.fn[t]=u,g._jQueryInterface},g}(t),d=function(e){var t=\"modal\",n=\".bs.modal\",r=e.fn.modal,o={backdrop:!0,keyboard:!0,focus:!0,show:!0},u={backdrop:\"(boolean|string)\",keyboard:\"boolean\",focus:\"boolean\",show:\"boolean\"},c={HIDE:\"hide.bs.modal\",HIDDEN:\"hidden.bs.modal\",SHOW:\"show.bs.modal\",SHOWN:\"shown.bs.modal\",FOCUSIN:\"focusin.bs.modal\",RESIZE:\"resize.bs.modal\",CLICK_DISMISS:\"click.dismiss.bs.modal\",KEYDOWN_DISMISS:\"keydown.dismiss.bs.modal\",MOUSEUP_DISMISS:\"mouseup.dismiss.bs.modal\",MOUSEDOWN_DISMISS:\"mousedown.dismiss.bs.modal\",CLICK_DATA_API:\"click.bs.modal.data-api\"},l={SCROLLBAR_MEASURER:\"modal-scrollbar-measure\",BACKDROP:\"modal-backdrop\",OPEN:\"modal-open\",FADE:\"fade\",SHOW:\"show\"},f={DIALOG:\".modal-dialog\",DATA_TOGGLE:'[data-toggle=\"modal\"]',DATA_DISMISS:'[data-dismiss=\"modal\"]',FIXED_CONTENT:\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",STICKY_CONTENT:\".sticky-top\"},p=function(){function r(e,t){this._config=this._getConfig(t),this._element=e,this._dialog=e.querySelector(f.DIALOG),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._scrollbarWidth=0}var p=r.prototype;return p.toggle=function(e){return this._isShown?this.hide():this.show(e)},p.show=function(t){var n=this;if(!this._isTransitioning&&!this._isShown){e(this._element).hasClass(l.FADE)&&(this._isTransitioning=!0);var r=e.Event(c.SHOW,{relatedTarget:t});e(this._element).trigger(r),this._isShown||r.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),e(document.body).addClass(l.OPEN),this._setEscapeEvent(),this._setResizeEvent(),e(this._element).on(c.CLICK_DISMISS,f.DATA_DISMISS,function(e){return n.hide(e)}),e(this._dialog).on(c.MOUSEDOWN_DISMISS,function(){e(n._element).one(c.MOUSEUP_DISMISS,function(t){e(t.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(t)}))}},p.hide=function(t){var n=this;if(t&&t.preventDefault(),!this._isTransitioning&&this._isShown){var r=e.Event(c.HIDE);if(e(this._element).trigger(r),this._isShown&&!r.isDefaultPrevented()){this._isShown=!1;var i=e(this._element).hasClass(l.FADE);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),e(document).off(c.FOCUSIN),e(this._element).removeClass(l.SHOW),e(this._element).off(c.CLICK_DISMISS),e(this._dialog).off(c.MOUSEDOWN_DISMISS),i){var o=s.getTransitionDurationFromElement(this._element);e(this._element).one(s.TRANSITION_END,function(e){return n._hideModal(e)}).emulateTransitionEnd(o)}else this._hideModal()}}},p.dispose=function(){e.removeData(this._element,\"bs.modal\"),e(window,document,this._element,this._backdrop).off(n),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},p.handleUpdate=function(){this._adjustDialog()},p._getConfig=function(e){return e=a({},o,e),s.typeCheckConfig(t,e,u),e},p._showElement=function(t){var n=this,r=e(this._element).hasClass(l.FADE);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.scrollTop=0,r&&s.reflow(this._element),e(this._element).addClass(l.SHOW),this._config.focus&&this._enforceFocus();var i=e.Event(c.SHOWN,{relatedTarget:t}),o=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,e(n._element).trigger(i)};if(r){var a=s.getTransitionDurationFromElement(this._element);e(this._dialog).one(s.TRANSITION_END,o).emulateTransitionEnd(a)}else o()},p._enforceFocus=function(){var t=this;e(document).off(c.FOCUSIN).on(c.FOCUSIN,function(n){document!==n.target&&t._element!==n.target&&0===e(t._element).has(n.target).length&&t._element.focus()})},p._setEscapeEvent=function(){var t=this;this._isShown&&this._config.keyboard?e(this._element).on(c.KEYDOWN_DISMISS,function(e){27===e.which&&(e.preventDefault(),t.hide())}):this._isShown||e(this._element).off(c.KEYDOWN_DISMISS)},p._setResizeEvent=function(){var t=this;this._isShown?e(window).on(c.RESIZE,function(e){return t.handleUpdate(e)}):e(window).off(c.RESIZE)},p._hideModal=function(){var t=this;this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._isTransitioning=!1,this._showBackdrop(function(){e(document.body).removeClass(l.OPEN),t._resetAdjustments(),t._resetScrollbar(),e(t._element).trigger(c.HIDDEN)})},p._removeBackdrop=function(){this._backdrop&&(e(this._backdrop).remove(),this._backdrop=null)},p._showBackdrop=function(t){var n=this,r=e(this._element).hasClass(l.FADE)?l.FADE:\"\";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement(\"div\"),this._backdrop.className=l.BACKDROP,r&&this._backdrop.classList.add(r),e(this._backdrop).appendTo(document.body),e(this._element).on(c.CLICK_DISMISS,function(e){n._ignoreBackdropClick?n._ignoreBackdropClick=!1:e.target===e.currentTarget&&(\"static\"===n._config.backdrop?n._element.focus():n.hide())}),r&&s.reflow(this._backdrop),e(this._backdrop).addClass(l.SHOW),!t)return;if(!r)return void t();var i=s.getTransitionDurationFromElement(this._backdrop);e(this._backdrop).one(s.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){e(this._backdrop).removeClass(l.SHOW);var o=function(){n._removeBackdrop(),t&&t()};if(e(this._element).hasClass(l.FADE)){var a=s.getTransitionDurationFromElement(this._backdrop);e(this._backdrop).one(s.TRANSITION_END,o).emulateTransitionEnd(a)}else o()}else t&&t()},p._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},p._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},p._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},p._setScrollbar=function(){var t=this;if(this._isBodyOverflowing){var n=[].slice.call(document.querySelectorAll(f.FIXED_CONTENT)),r=[].slice.call(document.querySelectorAll(f.STICKY_CONTENT));e(n).each(function(n,r){var i=r.style.paddingRight,o=e(r).css(\"padding-right\");e(r).data(\"padding-right\",i).css(\"padding-right\",parseFloat(o)+t._scrollbarWidth+\"px\")}),e(r).each(function(n,r){var i=r.style.marginRight,o=e(r).css(\"margin-right\");e(r).data(\"margin-right\",i).css(\"margin-right\",parseFloat(o)-t._scrollbarWidth+\"px\")});var i=document.body.style.paddingRight,o=e(document.body).css(\"padding-right\");e(document.body).data(\"padding-right\",i).css(\"padding-right\",parseFloat(o)+this._scrollbarWidth+\"px\")}},p._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(f.FIXED_CONTENT));e(t).each(function(t,n){var r=e(n).data(\"padding-right\");e(n).removeData(\"padding-right\"),n.style.paddingRight=r||\"\"});var n=[].slice.call(document.querySelectorAll(\"\"+f.STICKY_CONTENT));e(n).each(function(t,n){var r=e(n).data(\"margin-right\");void 0!==r&&e(n).css(\"margin-right\",r).removeData(\"margin-right\")});var r=e(document.body).data(\"padding-right\");e(document.body).removeData(\"padding-right\"),document.body.style.paddingRight=r||\"\"},p._getScrollbarWidth=function(){var e=document.createElement(\"div\");e.className=l.SCROLLBAR_MEASURER,document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t},r._jQueryInterface=function(t,n){return this.each(function(){var i=e(this).data(\"bs.modal\"),s=a({},o,e(this).data(),\"object\"==typeof t&&t?t:{});if(i||(i=new r(this,s),e(this).data(\"bs.modal\",i)),\"string\"==typeof t){if(void 0===i[t])throw new TypeError('No method named \"'+t+'\"');i[t](n)}else s.show&&i.show(n)})},i(r,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return o}}]),r}();return e(document).on(c.CLICK_DATA_API,f.DATA_TOGGLE,function(t){var n,r=this,i=s.getSelectorFromElement(this);i&&(n=document.querySelector(i));var o=e(n).data(\"bs.modal\")?\"toggle\":a({},e(n).data(),e(this).data());\"A\"!==this.tagName&&\"AREA\"!==this.tagName||t.preventDefault();var u=e(n).one(c.SHOW,function(t){t.isDefaultPrevented()||u.one(c.HIDDEN,function(){e(r).is(\":visible\")&&r.focus()})});p._jQueryInterface.call(e(n),o,this)}),e.fn.modal=p._jQueryInterface,e.fn.modal.Constructor=p,e.fn.modal.noConflict=function(){return e.fn.modal=r,p._jQueryInterface},p}(t),h=function(e){var t=\"tooltip\",r=\".bs.tooltip\",o=e.fn[t],u=new RegExp(\"(^|\\\\s)bs-tooltip\\\\S+\",\"g\"),c={animation:\"boolean\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\",delay:\"(number|object)\",html:\"boolean\",selector:\"(string|boolean)\",placement:\"(string|function)\",offset:\"(number|string)\",container:\"(string|element|boolean)\",fallbackPlacement:\"(string|array)\",boundary:\"(string|element)\"},l={AUTO:\"auto\",TOP:\"top\",RIGHT:\"right\",BOTTOM:\"bottom\",LEFT:\"left\"},f={animation:!0,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,selector:!1,placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\"},p={SHOW:\"show\",OUT:\"out\"},d={HIDE:\"hide\"+r,HIDDEN:\"hidden\"+r,SHOW:\"show\"+r,SHOWN:\"shown\"+r,INSERTED:\"inserted\"+r,CLICK:\"click\"+r,FOCUSIN:\"focusin\"+r,FOCUSOUT:\"focusout\"+r,MOUSEENTER:\"mouseenter\"+r,MOUSELEAVE:\"mouseleave\"+r},h={FADE:\"fade\",SHOW:\"show\"},v={TOOLTIP:\".tooltip\",TOOLTIP_INNER:\".tooltip-inner\",ARROW:\".arrow\"},g={HOVER:\"hover\",FOCUS:\"focus\",CLICK:\"click\",MANUAL:\"manual\"},m=function(){function o(e,t){if(void 0===n)throw new TypeError(\"Bootstrap tooltips require Popper.js (https://popper.js.org)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var m=o.prototype;return m.enable=function(){this._isEnabled=!0},m.disable=function(){this._isEnabled=!1},m.toggleEnabled=function(){this._isEnabled=!this._isEnabled},m.toggle=function(t){if(this._isEnabled)if(t){var n=this.constructor.DATA_KEY,r=e(t.currentTarget).data(n);r||(r=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(n,r)),r._activeTrigger.click=!r._activeTrigger.click,r._isWithActiveTrigger()?r._enter(null,r):r._leave(null,r)}else{if(e(this.getTipElement()).hasClass(h.SHOW))return void this._leave(null,this);this._enter(null,this)}},m.dispose=function(){clearTimeout(this._timeout),e.removeData(this.element,this.constructor.DATA_KEY),e(this.element).off(this.constructor.EVENT_KEY),e(this.element).closest(\".modal\").off(\"hide.bs.modal\"),this.tip&&e(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},m.show=function(){var t=this;if(\"none\"===e(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var r=e.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){e(this.element).trigger(r);var i=e.contains(this.element.ownerDocument.documentElement,this.element);if(r.isDefaultPrevented()||!i)return;var o=this.getTipElement(),a=s.getUID(this.constructor.NAME);o.setAttribute(\"id\",a),this.element.setAttribute(\"aria-describedby\",a),this.setContent(),this.config.animation&&e(o).addClass(h.FADE);var u=\"function\"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,c=this._getAttachment(u);this.addAttachmentClass(c);var l=!1===this.config.container?document.body:e(document).find(this.config.container);e(o).data(this.constructor.DATA_KEY,this),e.contains(this.element.ownerDocument.documentElement,this.tip)||e(o).appendTo(l),e(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,o,{placement:c,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v.ARROW},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){t._handlePopperPlacementChange(e)}}),e(o).addClass(h.SHOW),\"ontouchstart\"in document.documentElement&&e(document.body).children().on(\"mouseover\",null,e.noop);var f=function(){t.config.animation&&t._fixTransition();var n=t._hoverState;t._hoverState=null,e(t.element).trigger(t.constructor.Event.SHOWN),n===p.OUT&&t._leave(null,t)};if(e(this.tip).hasClass(h.FADE)){var d=s.getTransitionDurationFromElement(this.tip);e(this.tip).one(s.TRANSITION_END,f).emulateTransitionEnd(d)}else f()}},m.hide=function(t){var n=this,r=this.getTipElement(),i=e.Event(this.constructor.Event.HIDE),o=function(){n._hoverState!==p.SHOW&&r.parentNode&&r.parentNode.removeChild(r),n._cleanTipClass(),n.element.removeAttribute(\"aria-describedby\"),e(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t()};if(e(this.element).trigger(i),!i.isDefaultPrevented()){if(e(r).removeClass(h.SHOW),\"ontouchstart\"in document.documentElement&&e(document.body).children().off(\"mouseover\",null,e.noop),this._activeTrigger[g.CLICK]=!1,this._activeTrigger[g.FOCUS]=!1,this._activeTrigger[g.HOVER]=!1,e(this.tip).hasClass(h.FADE)){var a=s.getTransitionDurationFromElement(r);e(r).one(s.TRANSITION_END,o).emulateTransitionEnd(a)}else o();this._hoverState=\"\"}},m.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},m.isWithContent=function(){return Boolean(this.getTitle())},m.addAttachmentClass=function(t){e(this.getTipElement()).addClass(\"bs-tooltip-\"+t)},m.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},m.setContent=function(){var t=this.getTipElement();this.setElementContent(e(t.querySelectorAll(v.TOOLTIP_INNER)),this.getTitle()),e(t).removeClass(h.FADE+\" \"+h.SHOW)},m.setElementContent=function(t,n){var r=this.config.html;\"object\"==typeof n&&(n.nodeType||n.jquery)?r?e(n).parent().is(t)||t.empty().append(n):t.text(e(n).text()):t[r?\"html\":\"text\"](n)},m.getTitle=function(){var e=this.element.getAttribute(\"data-original-title\");return e||(e=\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title),e},m._getAttachment=function(e){return l[e.toUpperCase()]},m._setListeners=function(){var t=this,n=this.config.trigger.split(\" \");n.forEach(function(n){if(\"click\"===n)e(t.element).on(t.constructor.Event.CLICK,t.config.selector,function(e){return t.toggle(e)});else if(n!==g.MANUAL){var r=n===g.HOVER?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=n===g.HOVER?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;e(t.element).on(r,t.config.selector,function(e){return t._enter(e)}).on(i,t.config.selector,function(e){return t._leave(e)})}e(t.element).closest(\".modal\").on(\"hide.bs.modal\",function(){return t.hide()})}),this.config.selector?this.config=a({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},m._fixTitle=function(){var e=typeof this.element.getAttribute(\"data-original-title\");(this.element.getAttribute(\"title\")||\"string\"!==e)&&(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},m._enter=function(t,n){var r=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(r))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(r,n)),t&&(n._activeTrigger[\"focusin\"===t.type?g.FOCUS:g.HOVER]=!0),e(n.getTipElement()).hasClass(h.SHOW)||n._hoverState===p.SHOW?n._hoverState=p.SHOW:(clearTimeout(n._timeout),n._hoverState=p.SHOW,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===p.SHOW&&n.show()},n.config.delay.show):n.show())},m._leave=function(t,n){var r=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(r))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(r,n)),t&&(n._activeTrigger[\"focusout\"===t.type?g.FOCUS:g.HOVER]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=p.OUT,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===p.OUT&&n.hide()},n.config.delay.hide):n.hide())},m._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},m._getConfig=function(n){return\"number\"==typeof(n=a({},this.constructor.Default,e(this.element).data(),\"object\"==typeof n&&n?n:{})).delay&&(n.delay={show:n.delay,hide:n.delay}),\"number\"==typeof n.title&&(n.title=n.title.toString()),\"number\"==typeof n.content&&(n.content=n.content.toString()),s.typeCheckConfig(t,n,this.constructor.DefaultType),n},m._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},m._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr(\"class\").match(u);null!==n&&n.length&&t.removeClass(n.join(\"\"))},m._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},m._fixTransition=function(){var t=this.getTipElement(),n=this.config.animation;null===t.getAttribute(\"x-placement\")&&(e(t).removeClass(h.FADE),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},o._jQueryInterface=function(t){return this.each(function(){var n=e(this).data(\"bs.tooltip\"),r=\"object\"==typeof t&&t;if((n||!/dispose|hide/.test(t))&&(n||(n=new o(this,r),e(this).data(\"bs.tooltip\",n)),\"string\"==typeof t)){if(void 0===n[t])throw new TypeError('No method named \"'+t+'\"');n[t]()}})},i(o,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return f}},{key:\"NAME\",get:function(){return t}},{key:\"DATA_KEY\",get:function(){return\"bs.tooltip\"}},{key:\"Event\",get:function(){return d}},{key:\"EVENT_KEY\",get:function(){return r}},{key:\"DefaultType\",get:function(){return c}}]),o}();return e.fn[t]=m._jQueryInterface,e.fn[t].Constructor=m,e.fn[t].noConflict=function(){return e.fn[t]=o,m._jQueryInterface},m}(t),v=function(e){var t=\"popover\",n=\".bs.popover\",r=e.fn[t],o=new RegExp(\"(^|\\\\s)bs-popover\\\\S+\",\"g\"),s=a({},h.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>'}),u=a({},h.DefaultType,{content:\"(string|element|function)\"}),c={FADE:\"fade\",SHOW:\"show\"},l={TITLE:\".popover-header\",CONTENT:\".popover-body\"},f={HIDE:\"hide\"+n,HIDDEN:\"hidden\"+n,SHOW:\"show\"+n,SHOWN:\"shown\"+n,INSERTED:\"inserted\"+n,CLICK:\"click\"+n,FOCUSIN:\"focusin\"+n,FOCUSOUT:\"focusout\"+n,MOUSEENTER:\"mouseenter\"+n,MOUSELEAVE:\"mouseleave\"+n},p=function(r){var a,p;function d(){return r.apply(this,arguments)||this}p=r,(a=d).prototype=Object.create(p.prototype),a.prototype.constructor=a,a.__proto__=p;var h=d.prototype;return h.isWithContent=function(){return this.getTitle()||this._getContent()},h.addAttachmentClass=function(t){e(this.getTipElement()).addClass(\"bs-popover-\"+t)},h.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},h.setContent=function(){var t=e(this.getTipElement());this.setElementContent(t.find(l.TITLE),this.getTitle());var n=this._getContent();\"function\"==typeof n&&(n=n.call(this.element)),this.setElementContent(t.find(l.CONTENT),n),t.removeClass(c.FADE+\" \"+c.SHOW)},h._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},h._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr(\"class\").match(o);null!==n&&n.length>0&&t.removeClass(n.join(\"\"))},d._jQueryInterface=function(t){return this.each(function(){var n=e(this).data(\"bs.popover\"),r=\"object\"==typeof t?t:null;if((n||!/destroy|hide/.test(t))&&(n||(n=new d(this,r),e(this).data(\"bs.popover\",n)),\"string\"==typeof t)){if(void 0===n[t])throw new TypeError('No method named \"'+t+'\"');n[t]()}})},i(d,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return s}},{key:\"NAME\",get:function(){return t}},{key:\"DATA_KEY\",get:function(){return\"bs.popover\"}},{key:\"Event\",get:function(){return f}},{key:\"EVENT_KEY\",get:function(){return n}},{key:\"DefaultType\",get:function(){return u}}]),d}(h);return e.fn[t]=p._jQueryInterface,e.fn[t].Constructor=p,e.fn[t].noConflict=function(){return e.fn[t]=r,p._jQueryInterface},p}(t),g=function(e){var t=\"scrollspy\",n=e.fn[t],r={offset:10,method:\"auto\",target:\"\"},o={offset:\"number\",method:\"string\",target:\"(string|element)\"},u={ACTIVATE:\"activate.bs.scrollspy\",SCROLL:\"scroll.bs.scrollspy\",LOAD_DATA_API:\"load.bs.scrollspy.data-api\"},c={DROPDOWN_ITEM:\"dropdown-item\",DROPDOWN_MENU:\"dropdown-menu\",ACTIVE:\"active\"},l={DATA_SPY:'[data-spy=\"scroll\"]',ACTIVE:\".active\",NAV_LIST_GROUP:\".nav, .list-group\",NAV_LINKS:\".nav-link\",NAV_ITEMS:\".nav-item\",LIST_ITEMS:\".list-group-item\",DROPDOWN:\".dropdown\",DROPDOWN_ITEMS:\".dropdown-item\",DROPDOWN_TOGGLE:\".dropdown-toggle\"},f={OFFSET:\"offset\",POSITION:\"position\"},p=function(){function n(t,n){var r=this;this._element=t,this._scrollElement=\"BODY\"===t.tagName?window:t,this._config=this._getConfig(n),this._selector=this._config.target+\" \"+l.NAV_LINKS+\",\"+this._config.target+\" \"+l.LIST_ITEMS+\",\"+this._config.target+\" \"+l.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,e(this._scrollElement).on(u.SCROLL,function(e){return r._process(e)}),this.refresh(),this._process()}var p=n.prototype;return p.refresh=function(){var t=this,n=this._scrollElement===this._scrollElement.window?f.OFFSET:f.POSITION,r=\"auto\"===this._config.method?n:this._config.method,i=r===f.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight();var o=[].slice.call(document.querySelectorAll(this._selector));o.map(function(t){var n,o=s.getSelectorFromElement(t);if(o&&(n=document.querySelector(o)),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[e(n)[r]().top+i,o]}return null}).filter(function(e){return e}).sort(function(e,t){return e[0]-t[0]}).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1])})},p.dispose=function(){e.removeData(this._element,\"bs.scrollspy\"),e(this._scrollElement).off(\".bs.scrollspy\"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},p._getConfig=function(n){if(\"string\"!=typeof(n=a({},r,\"object\"==typeof n&&n?n:{})).target){var i=e(n.target).attr(\"id\");i||(i=s.getUID(t),e(n.target).attr(\"id\",i)),n.target=\"#\"+i}return s.typeCheckConfig(t,n,o),n},p._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},p._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},p._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},p._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=n){var r=this._targets[this._targets.length-1];this._activeTarget!==r&&this._activate(r)}else{if(this._activeTarget&&e<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var i=this._offsets.length,o=i;o--;){var a=this._activeTarget!==this._targets[o]&&e>=this._offsets[o]&&(void 0===this._offsets[o+1]||e<this._offsets[o+1]);a&&this._activate(this._targets[o])}}},p._activate=function(t){this._activeTarget=t,this._clear();var n=this._selector.split(\",\");n=n.map(function(e){return e+'[data-target=\"'+t+'\"],'+e+'[href=\"'+t+'\"]'});var r=e([].slice.call(document.querySelectorAll(n.join(\",\"))));r.hasClass(c.DROPDOWN_ITEM)?(r.closest(l.DROPDOWN).find(l.DROPDOWN_TOGGLE).addClass(c.ACTIVE),r.addClass(c.ACTIVE)):(r.addClass(c.ACTIVE),r.parents(l.NAV_LIST_GROUP).prev(l.NAV_LINKS+\", \"+l.LIST_ITEMS).addClass(c.ACTIVE),r.parents(l.NAV_LIST_GROUP).prev(l.NAV_ITEMS).children(l.NAV_LINKS).addClass(c.ACTIVE)),e(this._scrollElement).trigger(u.ACTIVATE,{relatedTarget:t})},p._clear=function(){var t=[].slice.call(document.querySelectorAll(this._selector));e(t).filter(l.ACTIVE).removeClass(c.ACTIVE)},n._jQueryInterface=function(t){return this.each(function(){var r=e(this).data(\"bs.scrollspy\"),i=\"object\"==typeof t&&t;if(r||(r=new n(this,i),e(this).data(\"bs.scrollspy\",r)),\"string\"==typeof t){if(void 0===r[t])throw new TypeError('No method named \"'+t+'\"');r[t]()}})},i(n,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return r}}]),n}();return e(window).on(u.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(l.DATA_SPY)),n=t.length,r=n;r--;){var i=e(t[r]);p._jQueryInterface.call(i,i.data())}}),e.fn[t]=p._jQueryInterface,e.fn[t].Constructor=p,e.fn[t].noConflict=function(){return e.fn[t]=n,p._jQueryInterface},p}(t),m=function(e){var t=e.fn.tab,n={HIDE:\"hide.bs.tab\",HIDDEN:\"hidden.bs.tab\",SHOW:\"show.bs.tab\",SHOWN:\"shown.bs.tab\",CLICK_DATA_API:\"click.bs.tab.data-api\"},r={DROPDOWN_MENU:\"dropdown-menu\",ACTIVE:\"active\",DISABLED:\"disabled\",FADE:\"fade\",SHOW:\"show\"},o={DROPDOWN:\".dropdown\",NAV_LIST_GROUP:\".nav, .list-group\",ACTIVE:\".active\",ACTIVE_UL:\"> li > .active\",DATA_TOGGLE:'[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',DROPDOWN_TOGGLE:\".dropdown-toggle\",DROPDOWN_ACTIVE_CHILD:\"> .dropdown-menu .active\"},a=function(){function t(e){this._element=e}var a=t.prototype;return a.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&e(this._element).hasClass(r.ACTIVE)||e(this._element).hasClass(r.DISABLED))){var i,a,u=e(this._element).closest(o.NAV_LIST_GROUP)[0],c=s.getSelectorFromElement(this._element);if(u){var l=\"UL\"===u.nodeName?o.ACTIVE_UL:o.ACTIVE;a=(a=e.makeArray(e(u).find(l)))[a.length-1]}var f=e.Event(n.HIDE,{relatedTarget:this._element}),p=e.Event(n.SHOW,{relatedTarget:a});if(a&&e(a).trigger(f),e(this._element).trigger(p),!p.isDefaultPrevented()&&!f.isDefaultPrevented()){c&&(i=document.querySelector(c)),this._activate(this._element,u);var d=function(){var r=e.Event(n.HIDDEN,{relatedTarget:t._element}),i=e.Event(n.SHOWN,{relatedTarget:a});e(a).trigger(r),e(t._element).trigger(i)};i?this._activate(i,i.parentNode,d):d()}}},a.dispose=function(){e.removeData(this._element,\"bs.tab\"),this._element=null},a._activate=function(t,n,i){var a=this,u=(\"UL\"===n.nodeName?e(n).find(o.ACTIVE_UL):e(n).children(o.ACTIVE))[0],c=i&&u&&e(u).hasClass(r.FADE),l=function(){return a._transitionComplete(t,u,i)};if(u&&c){var f=s.getTransitionDurationFromElement(u);e(u).one(s.TRANSITION_END,l).emulateTransitionEnd(f)}else l()},a._transitionComplete=function(t,n,i){if(n){e(n).removeClass(r.SHOW+\" \"+r.ACTIVE);var a=e(n.parentNode).find(o.DROPDOWN_ACTIVE_CHILD)[0];a&&e(a).removeClass(r.ACTIVE),\"tab\"===n.getAttribute(\"role\")&&n.setAttribute(\"aria-selected\",!1)}if(e(t).addClass(r.ACTIVE),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!0),s.reflow(t),e(t).addClass(r.SHOW),t.parentNode&&e(t.parentNode).hasClass(r.DROPDOWN_MENU)){var u=e(t).closest(o.DROPDOWN)[0];if(u){var c=[].slice.call(u.querySelectorAll(o.DROPDOWN_TOGGLE));e(c).addClass(r.ACTIVE)}t.setAttribute(\"aria-expanded\",!0)}i&&i()},t._jQueryInterface=function(n){return this.each(function(){var r=e(this),i=r.data(\"bs.tab\");if(i||(i=new t(this),r.data(\"bs.tab\",i)),\"string\"==typeof n){if(void 0===i[n])throw new TypeError('No method named \"'+n+'\"');i[n]()}})},i(t,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}}]),t}();return e(document).on(n.CLICK_DATA_API,o.DATA_TOGGLE,function(t){t.preventDefault(),a._jQueryInterface.call(e(this),\"show\")}),e.fn.tab=a._jQueryInterface,e.fn.tab.Constructor=a,e.fn.tab.noConflict=function(){return e.fn.tab=t,a._jQueryInterface},a}(t);(function(e){if(void 0===e)throw new TypeError(\"Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.\");var t=e.fn.jquery.split(\" \")[0].split(\".\");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||t[0]>=4)throw new Error(\"Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\")})(t),e.Util=s,e.Alert=u,e.Button=c,e.Carousel=l,e.Collapse=f,e.Dropdown=p,e.Modal=d,e.Popover=v,e.Scrollspy=g,e.Tab=m,e.Tooltip=h,Object.defineProperty(e,\"__esModule\",{value:!0})}(t,n(4),n(3))},function(e,t,n){e.exports=n(18)},function(e,t,n){\"use strict\";var r=n(0),i=n(5),o=n(20),a=n(2);function s(e){var t=new o(e),n=i(o.prototype.request,t);return r.extend(n,o.prototype,t),r.extend(n,t),n}var u=s(a);u.Axios=o,u.create=function(e){return s(r.merge(a,e))},u.Cancel=n(10),u.CancelToken=n(34),u.isCancel=n(9),u.all=function(e){return Promise.all(e)},u.spread=n(35),e.exports=u,e.exports.default=u},function(e,t){function n(e){return!!e.constructor&&\"function\"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(n(e)||function(e){return\"function\"==typeof e.readFloatLE&&\"function\"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,n){\"use strict\";var r=n(2),i=n(0),o=n(29),a=n(30);function s(e){this.defaults=e,this.interceptors={request:new o,response:new o}}s.prototype.request=function(e){\"string\"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),(e=i.merge(r,{method:\"get\"},this.defaults,e)).method=e.method.toLowerCase();var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},i.forEach([\"delete\",\"get\",\"head\",\"options\"],function(e){s.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))}}),i.forEach([\"post\",\"put\",\"patch\"],function(e){s.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=s},function(e,t,n){\"use strict\";var r=n(0);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){\"use strict\";var r=n(8);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r(\"Request failed with status code \"+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){\"use strict\";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e}},function(e,t,n){\"use strict\";var r=n(0);function i(e){return encodeURIComponent(e).replace(/%40/gi,\"@\").replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(r.isURLSearchParams(t))o=t.toString();else{var a=[];r.forEach(t,function(e,t){null!=e&&(r.isArray(e)?t+=\"[]\":e=[e],r.forEach(e,function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(i(t)+\"=\"+i(e))}))}),o=a.join(\"&\")}return o&&(e+=(-1===e.indexOf(\"?\")?\"?\":\"&\")+o),e}},function(e,t,n){\"use strict\";var r=n(0),i=[\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split(\"\\n\"),function(e){if(o=e.indexOf(\":\"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]=\"set-cookie\"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+\", \"+n:n}}),a):a}},function(e,t,n){\"use strict\";var r=n(0);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement(\"a\");function i(e){var r=e;return t&&(n.setAttribute(\"href\",r),r=n.href),n.setAttribute(\"href\",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,\"\"):\"\",host:n.host,search:n.search?n.search.replace(/^\\?/,\"\"):\"\",hash:n.hash?n.hash.replace(/^#/,\"\"):\"\",hostname:n.hostname,port:n.port,pathname:\"/\"===n.pathname.charAt(0)?n.pathname:\"/\"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){\"use strict\";var r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";function i(){this.message=\"String contains an invalid character\"}i.prototype=new Error,i.prototype.code=5,i.prototype.name=\"InvalidCharacterError\",e.exports=function(e){for(var t,n,o=String(e),a=\"\",s=0,u=r;o.charAt(0|s)||(u=\"=\",s%1);a+=u.charAt(63&t>>8-s%1*8)){if((n=o.charCodeAt(s+=.75))>255)throw new i;t=t<<8|n}return a}},function(e,t,n){\"use strict\";var r=n(0);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var s=[];s.push(e+\"=\"+encodeURIComponent(t)),r.isNumber(n)&&s.push(\"expires=\"+new Date(n).toGMTString()),r.isString(i)&&s.push(\"path=\"+i),r.isString(o)&&s.push(\"domain=\"+o),!0===a&&s.push(\"secure\"),document.cookie=s.join(\"; \")},read:function(e){var t=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+e+\")=([^;]*)\"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){\"use strict\";var r=n(0);function i(){this.handlers=[]}i.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=i},function(e,t,n){\"use strict\";var r=n(0),i=n(31),o=n(9),a=n(2),s=n(32),u=n(33);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.baseURL&&!s(e.url)&&(e.url=u(e.baseURL,e.url)),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],function(t){delete e.headers[t]}),(e.adapter||a.adapter)(e).then(function(t){return c(e),t.data=i(t.data,t.headers,e.transformResponse),t},function(t){return o(t)||(c(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){\"use strict\";var r=n(0);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){\"use strict\";e.exports=function(e){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(e)}},function(e,t,n){\"use strict\";e.exports=function(e,t){return t?e.replace(/\\/+$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}},function(e,t,n){\"use strict\";var r=n(10);function i(e){if(\"function\"!=typeof e)throw new TypeError(\"executor must be a function.\");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new r(e),t(n.reason))})}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i(function(t){e=t}),cancel:e}},e.exports=i},function(e,t,n){\"use strict\";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){\"use strict\";(function(t,n){var r=Object.freeze({});function i(e){return null==e}function o(e){return null!=e}function a(e){return!0===e}function s(e){return\"string\"==typeof e||\"number\"==typeof e||\"symbol\"==typeof e||\"boolean\"==typeof e}function u(e){return null!==e&&\"object\"==typeof e}var c=Object.prototype.toString;function l(e){return\"[object Object]\"===c.call(e)}function f(e){return\"[object RegExp]\"===c.call(e)}function p(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function d(e){return null==e?\"\":\"object\"==typeof e?JSON.stringify(e,null,2):String(e)}function h(e){var t=parseFloat(e);return isNaN(t)?e:t}function v(e,t){for(var n=Object.create(null),r=e.split(\",\"),i=0;i<r.length;i++)n[r[i]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}var g=v(\"slot,component\",!0),m=v(\"key,ref,slot,slot-scope,is\");function y(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}var _=Object.prototype.hasOwnProperty;function b(e,t){return _.call(e,t)}function w(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var T=/-(\\w)/g,E=w(function(e){return e.replace(T,function(e,t){return t?t.toUpperCase():\"\"})}),x=w(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),C=/\\B([A-Z])/g,A=w(function(e){return e.replace(C,\"-$1\").toLowerCase()});var S=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function O(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function D(e,t){for(var n in t)e[n]=t[n];return e}function I(e){for(var t={},n=0;n<e.length;n++)e[n]&&D(t,e[n]);return t}function k(e,t,n){}var N=function(e,t,n){return!1},L=function(e){return e};function j(e,t){if(e===t)return!0;var n=u(e),r=u(t);if(!n||!r)return!n&&!r&&String(e)===String(t);try{var i=Array.isArray(e),o=Array.isArray(t);if(i&&o)return e.length===t.length&&e.every(function(e,n){return j(e,t[n])});if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(i||o)return!1;var a=Object.keys(e),s=Object.keys(t);return a.length===s.length&&a.every(function(n){return j(e[n],t[n])})}catch(e){return!1}}function P(e,t){for(var n=0;n<e.length;n++)if(j(e[n],t))return n;return-1}function R(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}var $=\"data-server-rendered\",H=[\"component\",\"directive\",\"filter\"],M=[\"beforeCreate\",\"created\",\"beforeMount\",\"mounted\",\"beforeUpdate\",\"updated\",\"beforeDestroy\",\"destroyed\",\"activated\",\"deactivated\",\"errorCaptured\"],F={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:N,isReservedAttr:N,isUnknownElement:N,getTagNamespace:k,parsePlatformTagName:L,mustUseProp:N,async:!0,_lifecycleHooks:M};function W(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var q=/[^\\w.$]/;var B,U=\"__proto__\"in{},V=\"undefined\"!=typeof window,z=\"undefined\"!=typeof WXEnvironment&&!!WXEnvironment.platform,K=z&&WXEnvironment.platform.toLowerCase(),G=V&&window.navigator.userAgent.toLowerCase(),X=G&&/msie|trident/.test(G),Q=G&&G.indexOf(\"msie 9.0\")>0,Y=G&&G.indexOf(\"edge/\")>0,J=(G&&G.indexOf(\"android\"),G&&/iphone|ipad|ipod|ios/.test(G)||\"ios\"===K),Z=(G&&/chrome\\/\\d+/.test(G),{}.watch),ee=!1;if(V)try{var te={};Object.defineProperty(te,\"passive\",{get:function(){ee=!0}}),window.addEventListener(\"test-passive\",null,te)}catch(e){}var ne=function(){return void 0===B&&(B=!V&&!z&&void 0!==t&&(t.process&&\"server\"===t.process.env.VUE_ENV)),B},re=V&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ie(e){return\"function\"==typeof e&&/native code/.test(e.toString())}var oe,ae=\"undefined\"!=typeof Symbol&&ie(Symbol)&&\"undefined\"!=typeof Reflect&&ie(Reflect.ownKeys);oe=\"undefined\"!=typeof Set&&ie(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var se=k,ue=0,ce=function(){this.id=ue++,this.subs=[]};ce.prototype.addSub=function(e){this.subs.push(e)},ce.prototype.removeSub=function(e){y(this.subs,e)},ce.prototype.depend=function(){ce.target&&ce.target.addDep(this)},ce.prototype.notify=function(){var e=this.subs.slice();for(var t=0,n=e.length;t<n;t++)e[t].update()},ce.target=null;var le=[];function fe(e){le.push(e),ce.target=e}function pe(){le.pop(),ce.target=le[le.length-1]}var de=function(e,t,n,r,i,o,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},he={child:{configurable:!0}};he.child.get=function(){return this.componentInstance},Object.defineProperties(de.prototype,he);var ve=function(e){void 0===e&&(e=\"\");var t=new de;return t.text=e,t.isComment=!0,t};function ge(e){return new de(void 0,void 0,void 0,String(e))}function me(e){var t=new de(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var ye=Array.prototype,_e=Object.create(ye);[\"push\",\"pop\",\"shift\",\"unshift\",\"splice\",\"sort\",\"reverse\"].forEach(function(e){var t=ye[e];W(_e,e,function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=t.apply(this,n),a=this.__ob__;switch(e){case\"push\":case\"unshift\":i=n;break;case\"splice\":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})});var be=Object.getOwnPropertyNames(_e),we=!0;function Te(e){we=e}var Ee=function(e){var t;this.value=e,this.dep=new ce,this.vmCount=0,W(e,\"__ob__\",this),Array.isArray(e)?(U?(t=_e,e.__proto__=t):function(e,t,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];W(e,o,t[o])}}(e,_e,be),this.observeArray(e)):this.walk(e)};function xe(e,t){var n;if(u(e)&&!(e instanceof de))return b(e,\"__ob__\")&&e.__ob__ instanceof Ee?n=e.__ob__:we&&!ne()&&(Array.isArray(e)||l(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Ee(e)),t&&n&&n.vmCount++,n}function Ce(e,t,n,r,i){var o=new ce,a=Object.getOwnPropertyDescriptor(e,t);if(!a||!1!==a.configurable){var s=a&&a.get,u=a&&a.set;s&&!u||2!==arguments.length||(n=e[t]);var c=!i&&xe(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=s?s.call(e):n;return ce.target&&(o.depend(),c&&(c.dep.depend(),Array.isArray(t)&&function e(t){for(var n=void 0,r=0,i=t.length;r<i;r++)(n=t[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&e(n)}(t))),t},set:function(t){var r=s?s.call(e):n;t===r||t!=t&&r!=r||s&&!u||(u?u.call(e,t):n=t,c=!i&&xe(t),o.notify())}})}}function Ae(e,t,n){if(Array.isArray(e)&&p(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n,n;var r=e.__ob__;return e._isVue||r&&r.vmCount?n:r?(Ce(r.value,t,n),r.dep.notify(),n):(e[t]=n,n)}function Se(e,t){if(Array.isArray(e)&&p(t))e.splice(t,1);else{var n=e.__ob__;e._isVue||n&&n.vmCount||b(e,t)&&(delete e[t],n&&n.dep.notify())}}Ee.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)Ce(e,t[n])},Ee.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)xe(e[t])};var Oe=F.optionMergeStrategies;function De(e,t){if(!t)return e;for(var n,r,i,o=Object.keys(t),a=0;a<o.length;a++)r=e[n=o[a]],i=t[n],b(e,n)?r!==i&&l(r)&&l(i)&&De(r,i):Ae(e,n,i);return e}function Ie(e,t,n){return n?function(){var r=\"function\"==typeof t?t.call(n,n):t,i=\"function\"==typeof e?e.call(n,n):e;return r?De(r,i):i}:t?e?function(){return De(\"function\"==typeof t?t.call(this,this):t,\"function\"==typeof e?e.call(this,this):e)}:t:e}function ke(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}function Ne(e,t,n,r){var i=Object.create(e||null);return t?D(i,t):i}Oe.data=function(e,t,n){return n?Ie(e,t,n):t&&\"function\"!=typeof t?e:Ie(e,t)},M.forEach(function(e){Oe[e]=ke}),H.forEach(function(e){Oe[e+\"s\"]=Ne}),Oe.watch=function(e,t,n,r){if(e===Z&&(e=void 0),t===Z&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var i={};for(var o in D(i,e),t){var a=i[o],s=t[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},Oe.props=Oe.methods=Oe.inject=Oe.computed=function(e,t,n,r){if(!e)return t;var i=Object.create(null);return D(i,e),t&&D(i,t),i},Oe.provide=Ie;var Le=function(e,t){return void 0===t?e:t};function je(e,t,n){if(\"function\"==typeof t&&(t=t.options),function(e,t){var n=e.props;if(n){var r,i,o={};if(Array.isArray(n))for(r=n.length;r--;)\"string\"==typeof(i=n[r])&&(o[E(i)]={type:null});else if(l(n))for(var a in n)i=n[a],o[E(a)]=l(i)?i:{type:i};e.props=o}}(t),function(e,t){var n=e.inject;if(n){var r=e.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(l(n))for(var o in n){var a=n[o];r[o]=l(a)?D({from:o},a):{from:a}}}}(t),function(e){var t=e.directives;if(t)for(var n in t){var r=t[n];\"function\"==typeof r&&(t[n]={bind:r,update:r})}}(t),!t._base&&(t.extends&&(e=je(e,t.extends,n)),t.mixins))for(var r=0,i=t.mixins.length;r<i;r++)e=je(e,t.mixins[r],n);var o,a={};for(o in e)s(o);for(o in t)b(e,o)||s(o);function s(r){var i=Oe[r]||Le;a[r]=i(e[r],t[r],n,r)}return a}function Pe(e,t,n,r){if(\"string\"==typeof n){var i=e[t];if(b(i,n))return i[n];var o=E(n);if(b(i,o))return i[o];var a=x(o);return b(i,a)?i[a]:i[n]||i[o]||i[a]}}function Re(e,t,n,r){var i=t[e],o=!b(n,e),a=n[e],s=Me(Boolean,i.type);if(s>-1)if(o&&!b(i,\"default\"))a=!1;else if(\"\"===a||a===A(e)){var u=Me(String,i.type);(u<0||s<u)&&(a=!0)}if(void 0===a){a=function(e,t,n){if(!b(t,\"default\"))return;var r=t.default;0;if(e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n])return e._props[n];return\"function\"==typeof r&&\"Function\"!==$e(t.type)?r.call(e):r}(r,i,e);var c=we;Te(!0),xe(a),Te(c)}return a}function $e(e){var t=e&&e.toString().match(/^\\s*function (\\w+)/);return t?t[1]:\"\"}function He(e,t){return $e(e)===$e(t)}function Me(e,t){if(!Array.isArray(t))return He(t,e)?0:-1;for(var n=0,r=t.length;n<r;n++)if(He(t[n],e))return n;return-1}function Fe(e,t,n){if(t)for(var r=t;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var o=0;o<i.length;o++)try{if(!1===i[o].call(r,e,t,n))return}catch(e){We(e,r,\"errorCaptured hook\")}}We(e,t,n)}function We(e,t,n){if(F.errorHandler)try{return F.errorHandler.call(null,e,t,n)}catch(e){qe(e,null,\"config.errorHandler\")}qe(e,t,n)}function qe(e,t,n){if(!V&&!z||\"undefined\"==typeof console)throw e;console.error(e)}var Be,Ue,Ve=[],ze=!1;function Ke(){ze=!1;var e=Ve.slice(0);Ve.length=0;for(var t=0;t<e.length;t++)e[t]()}var Ge=!1;if(void 0!==n&&ie(n))Ue=function(){n(Ke)};else if(\"undefined\"==typeof MessageChannel||!ie(MessageChannel)&&\"[object MessageChannelConstructor]\"!==MessageChannel.toString())Ue=function(){setTimeout(Ke,0)};else{var Xe=new MessageChannel,Qe=Xe.port2;Xe.port1.onmessage=Ke,Ue=function(){Qe.postMessage(1)}}if(\"undefined\"!=typeof Promise&&ie(Promise)){var Ye=Promise.resolve();Be=function(){Ye.then(Ke),J&&setTimeout(k)}}else Be=Ue;function Je(e,t){var n;if(Ve.push(function(){if(e)try{e.call(t)}catch(e){Fe(e,t,\"nextTick\")}else n&&n(t)}),ze||(ze=!0,Ge?Ue():Be()),!e&&\"undefined\"!=typeof Promise)return new Promise(function(e){n=e})}var Ze=new oe;function et(e){!function e(t,n){var r,i;var o=Array.isArray(t);if(!o&&!u(t)||Object.isFrozen(t)||t instanceof de)return;if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(r=t.length;r--;)e(t[r],n);else for(i=Object.keys(t),r=i.length;r--;)e(t[i[r]],n)}(e,Ze),Ze.clear()}var tt,nt=w(function(e){var t=\"&\"===e.charAt(0),n=\"~\"===(e=t?e.slice(1):e).charAt(0),r=\"!\"===(e=n?e.slice(1):e).charAt(0);return{name:e=r?e.slice(1):e,once:n,capture:r,passive:t}});function rt(e){function t(){var e=arguments,n=t.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=n.slice(),i=0;i<r.length;i++)r[i].apply(null,e)}return t.fns=e,t}function it(e,t,n,r,o,s){var u,c,l,f;for(u in e)c=e[u],l=t[u],f=nt(u),i(c)||(i(l)?(i(c.fns)&&(c=e[u]=rt(c)),a(f.once)&&(c=e[u]=o(f.name,c,f.capture)),n(f.name,c,f.capture,f.passive,f.params)):c!==l&&(l.fns=c,e[u]=l));for(u in t)i(e[u])&&r((f=nt(u)).name,t[u],f.capture)}function ot(e,t,n){var r;e instanceof de&&(e=e.data.hook||(e.data.hook={}));var s=e[t];function u(){n.apply(this,arguments),y(r.fns,u)}i(s)?r=rt([u]):o(s.fns)&&a(s.merged)?(r=s).fns.push(u):r=rt([s,u]),r.merged=!0,e[t]=r}function at(e,t,n,r,i){if(o(t)){if(b(t,n))return e[n]=t[n],i||delete t[n],!0;if(b(t,r))return e[n]=t[r],i||delete t[r],!0}return!1}function st(e){return s(e)?[ge(e)]:Array.isArray(e)?function e(t,n){var r=[];var u,c,l,f;for(u=0;u<t.length;u++)i(c=t[u])||\"boolean\"==typeof c||(l=r.length-1,f=r[l],Array.isArray(c)?c.length>0&&(ut((c=e(c,(n||\"\")+\"_\"+u))[0])&&ut(f)&&(r[l]=ge(f.text+c[0].text),c.shift()),r.push.apply(r,c)):s(c)?ut(f)?r[l]=ge(f.text+c):\"\"!==c&&r.push(ge(c)):ut(c)&&ut(f)?r[l]=ge(f.text+c.text):(a(t._isVList)&&o(c.tag)&&i(c.key)&&o(n)&&(c.key=\"__vlist\"+n+\"_\"+u+\"__\"),r.push(c)));return r}(e):void 0}function ut(e){return o(e)&&o(e.text)&&!1===e.isComment}function ct(e,t){return(e.__esModule||ae&&\"Module\"===e[Symbol.toStringTag])&&(e=e.default),u(e)?t.extend(e):e}function lt(e){return e.isComment&&e.asyncFactory}function ft(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(o(n)&&(o(n.componentOptions)||lt(n)))return n}}function pt(e,t){tt.$on(e,t)}function dt(e,t){tt.$off(e,t)}function ht(e,t){var n=tt;return function r(){null!==t.apply(null,arguments)&&n.$off(e,r)}}function vt(e,t,n){tt=e,it(t,n||{},pt,dt,ht),tt=void 0}function gt(e,t){var n={};if(!e)return n;for(var r=0,i=e.length;r<i;r++){var o=e[r],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==t&&o.fnContext!==t||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,u=n[s]||(n[s]=[]);\"template\"===o.tag?u.push.apply(u,o.children||[]):u.push(o)}}for(var c in n)n[c].every(mt)&&delete n[c];return n}function mt(e){return e.isComment&&!e.asyncFactory||\" \"===e.text}function yt(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?yt(e[n],t):t[e[n].key]=e[n].fn;return t}var _t=null;function bt(e){var t=_t;return _t=e,function(){_t=t}}function wt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function Tt(e,t){if(t){if(e._directInactive=!1,wt(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)Tt(e.$children[n]);Et(e,\"activated\")}}function Et(e,t){fe();var n=e.$options[t];if(n)for(var r=0,i=n.length;r<i;r++)try{n[r].call(e)}catch(n){Fe(n,e,t+\" hook\")}e._hasHookEvent&&e.$emit(\"hook:\"+t),pe()}var xt=[],Ct=[],At={},St=!1,Ot=!1,Dt=0;function It(){var e,t;for(Ot=!0,xt.sort(function(e,t){return e.id-t.id}),Dt=0;Dt<xt.length;Dt++)(e=xt[Dt]).before&&e.before(),t=e.id,At[t]=null,e.run();var n=Ct.slice(),r=xt.slice();Dt=xt.length=Ct.length=0,At={},St=Ot=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,Tt(e[t],!0)}(n),function(e){var t=e.length;for(;t--;){var n=e[t],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&Et(r,\"updated\")}}(r),re&&F.devtools&&re.emit(\"flush\")}var kt=0,Nt=function(e,t,n,r,i){this.vm=e,i&&(e._watcher=this),e._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++kt,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new oe,this.newDepIds=new oe,this.expression=\"\",\"function\"==typeof t?this.getter=t:(this.getter=function(e){if(!q.test(e)){var t=e.split(\".\");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}(t),this.getter||(this.getter=k)),this.value=this.lazy?void 0:this.get()};Nt.prototype.get=function(){var e;fe(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;Fe(e,t,'getter for watcher \"'+this.expression+'\"')}finally{this.deep&&et(e),pe(),this.cleanupDeps()}return e},Nt.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},Nt.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},Nt.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(e){var t=e.id;if(null==At[t]){if(At[t]=!0,Ot){for(var n=xt.length-1;n>Dt&&xt[n].id>e.id;)n--;xt.splice(n+1,0,e)}else xt.push(e);St||(St=!0,Je(It))}}(this)},Nt.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||u(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Fe(e,this.vm,'callback for watcher \"'+this.expression+'\"')}else this.cb.call(this.vm,e,t)}}},Nt.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Nt.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},Nt.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var Lt={enumerable:!0,configurable:!0,get:k,set:k};function jt(e,t,n){Lt.get=function(){return this[t][n]},Lt.set=function(e){this[t][n]=e},Object.defineProperty(e,n,Lt)}function Pt(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&Te(!1);var o=function(o){i.push(o);var a=Re(o,t,n,e);Ce(r,o,a),o in e||jt(e,\"_props\",o)};for(var a in t)o(a);Te(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]=\"function\"!=typeof t[n]?k:S(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;l(t=e._data=\"function\"==typeof t?function(e,t){fe();try{return e.call(t,t)}catch(e){return Fe(e,t,\"data()\"),{}}finally{pe()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];0,r&&b(r,o)||(a=void 0,36!==(a=(o+\"\").charCodeAt(0))&&95!==a&&jt(e,\"_data\",o))}var a;xe(t,!0)}(e):xe(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=ne();for(var i in t){var o=t[i],a=\"function\"==typeof o?o:o.get;0,r||(n[i]=new Nt(e,a||k,k,Rt)),i in e||$t(e,i,o)}}(e,t.computed),t.watch&&t.watch!==Z&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)Ft(e,n,r[i]);else Ft(e,n,r)}}(e,t.watch)}var Rt={lazy:!0};function $t(e,t,n){var r=!ne();\"function\"==typeof n?(Lt.get=r?Ht(t):Mt(n),Lt.set=k):(Lt.get=n.get?r&&!1!==n.cache?Ht(t):Mt(n.get):k,Lt.set=n.set||k),Object.defineProperty(e,t,Lt)}function Ht(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),ce.target&&t.depend(),t.value}}function Mt(e){return function(){return e.call(this,this)}}function Ft(e,t,n,r){return l(n)&&(r=n,n=n.handler),\"string\"==typeof n&&(n=e[n]),e.$watch(t,n,r)}function Wt(e,t){if(e){for(var n=Object.create(null),r=ae?Reflect.ownKeys(e).filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}):Object.keys(e),i=0;i<r.length;i++){for(var o=r[i],a=e[o].from,s=t;s;){if(s._provided&&b(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s)if(\"default\"in e[o]){var u=e[o].default;n[o]=\"function\"==typeof u?u.call(t):u}else 0}return n}}function qt(e,t){var n,r,i,a,s;if(Array.isArray(e)||\"string\"==typeof e)for(n=new Array(e.length),r=0,i=e.length;r<i;r++)n[r]=t(e[r],r);else if(\"number\"==typeof e)for(n=new Array(e),r=0;r<e;r++)n[r]=t(r+1,r);else if(u(e))for(a=Object.keys(e),n=new Array(a.length),r=0,i=a.length;r<i;r++)s=a[r],n[r]=t(e[s],s,r);return o(n)||(n=[]),n._isVList=!0,n}function Bt(e,t,n,r){var i,o=this.$scopedSlots[e];o?(n=n||{},r&&(n=D(D({},r),n)),i=o(n)||t):i=this.$slots[e]||t;var a=n&&n.slot;return a?this.$createElement(\"template\",{slot:a},i):i}function Ut(e){return Pe(this.$options,\"filters\",e)||L}function Vt(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}function zt(e,t,n,r,i){var o=F.keyCodes[t]||n;return i&&r&&!F.keyCodes[t]?Vt(i,r):o?Vt(o,e):r?A(r)!==t:void 0}function Kt(e,t,n,r,i){if(n)if(u(n)){var o;Array.isArray(n)&&(n=I(n));var a=function(a){if(\"class\"===a||\"style\"===a||m(a))o=e;else{var s=e.attrs&&e.attrs.type;o=r||F.mustUseProp(t,s,a)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}var u=E(a);a in o||u in o||(o[a]=n[a],i&&((e.on||(e.on={}))[\"update:\"+u]=function(e){n[a]=e}))};for(var s in n)a(s)}else;return e}function Gt(e,t){var n=this._staticTrees||(this._staticTrees=[]),r=n[e];return r&&!t?r:(Qt(r=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),\"__static__\"+e,!1),r)}function Xt(e,t,n){return Qt(e,\"__once__\"+t+(n?\"_\"+n:\"\"),!0),e}function Qt(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&\"string\"!=typeof e[r]&&Yt(e[r],t+\"_\"+r,n);else Yt(e,t,n)}function Yt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function Jt(e,t){if(t)if(l(t)){var n=e.on=e.on?D({},e.on):{};for(var r in t){var i=n[r],o=t[r];n[r]=i?[].concat(i,o):o}}else;return e}function Zt(e){e._o=Xt,e._n=h,e._s=d,e._l=qt,e._t=Bt,e._q=j,e._i=P,e._m=Gt,e._f=Ut,e._k=zt,e._b=Kt,e._v=ge,e._e=ve,e._u=yt,e._g=Jt}function en(e,t,n,i,o){var s,u=o.options;b(i,\"_uid\")?(s=Object.create(i))._original=i:(s=i,i=i._original);var c=a(u._compiled),l=!c;this.data=e,this.props=t,this.children=n,this.parent=i,this.listeners=e.on||r,this.injections=Wt(u.inject,i),this.slots=function(){return gt(n,i)},c&&(this.$options=u,this.$slots=this.slots(),this.$scopedSlots=e.scopedSlots||r),u._scopeId?this._c=function(e,t,n,r){var o=ln(s,e,t,n,r,l);return o&&!Array.isArray(o)&&(o.fnScopeId=u._scopeId,o.fnContext=i),o}:this._c=function(e,t,n,r){return ln(s,e,t,n,r,l)}}function tn(e,t,n,r,i){var o=me(e);return o.fnContext=n,o.fnOptions=r,t.slot&&((o.data||(o.data={})).slot=t.slot),o}function nn(e,t){for(var n in t)e[E(n)]=t[n]}Zt(en.prototype);var rn={init:function(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var n=e;rn.prepatch(n,n)}else{(e.componentInstance=function(e,t){var n={_isComponent:!0,_parentVnode:e,parent:t},r=e.data.inlineTemplate;o(r)&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns);return new e.componentOptions.Ctor(n)}(e,_t)).$mount(t?e.elm:void 0,t)}},prepatch:function(e,t){var n=t.componentOptions;!function(e,t,n,i,o){var a=!!(o||e.$options._renderChildren||i.data.scopedSlots||e.$scopedSlots!==r);if(e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=o,e.$attrs=i.data.attrs||r,e.$listeners=n||r,t&&e.$options.props){Te(!1);for(var s=e._props,u=e.$options._propKeys||[],c=0;c<u.length;c++){var l=u[c],f=e.$options.props;s[l]=Re(l,f,t,e)}Te(!0),e.$options.propsData=t}n=n||r;var p=e.$options._parentListeners;e.$options._parentListeners=n,vt(e,n,p),a&&(e.$slots=gt(o,i.context),e.$forceUpdate())}(t.componentInstance=e.componentInstance,n.propsData,n.listeners,t,n.children)},insert:function(e){var t,n=e.context,r=e.componentInstance;r._isMounted||(r._isMounted=!0,Et(r,\"mounted\")),e.data.keepAlive&&(n._isMounted?((t=r)._inactive=!1,Ct.push(t)):Tt(r,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,n){if(!(n&&(t._directInactive=!0,wt(t))||t._inactive)){t._inactive=!0;for(var r=0;r<t.$children.length;r++)e(t.$children[r]);Et(t,\"deactivated\")}}(t,!0):t.$destroy())}},on=Object.keys(rn);function an(e,t,n,s,c){if(!i(e)){var l=n.$options._base;if(u(e)&&(e=l.extend(e)),\"function\"==typeof e){var f;if(i(e.cid)&&void 0===(e=function(e,t,n){if(a(e.error)&&o(e.errorComp))return e.errorComp;if(o(e.resolved))return e.resolved;if(a(e.loading)&&o(e.loadingComp))return e.loadingComp;if(!o(e.contexts)){var r=e.contexts=[n],s=!0,c=function(e){for(var t=0,n=r.length;t<n;t++)r[t].$forceUpdate();e&&(r.length=0)},l=R(function(n){e.resolved=ct(n,t),s||c(!0)}),f=R(function(t){o(e.errorComp)&&(e.error=!0,c(!0))}),p=e(l,f);return u(p)&&(\"function\"==typeof p.then?i(e.resolved)&&p.then(l,f):o(p.component)&&\"function\"==typeof p.component.then&&(p.component.then(l,f),o(p.error)&&(e.errorComp=ct(p.error,t)),o(p.loading)&&(e.loadingComp=ct(p.loading,t),0===p.delay?e.loading=!0:setTimeout(function(){i(e.resolved)&&i(e.error)&&(e.loading=!0,c(!1))},p.delay||200)),o(p.timeout)&&setTimeout(function(){i(e.resolved)&&f(null)},p.timeout))),s=!1,e.loading?e.loadingComp:e.resolved}e.contexts.push(n)}(f=e,l,n)))return function(e,t,n,r,i){var o=ve();return o.asyncFactory=e,o.asyncMeta={data:t,context:n,children:r,tag:i},o}(f,t,n,s,c);t=t||{},pn(e),o(t.model)&&function(e,t){var n=e.model&&e.model.prop||\"value\",r=e.model&&e.model.event||\"input\";(t.props||(t.props={}))[n]=t.model.value;var i=t.on||(t.on={}),a=i[r],s=t.model.callback;o(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(i[r]=[s].concat(a)):i[r]=s}(e.options,t);var p=function(e,t,n){var r=t.options.props;if(!i(r)){var a={},s=e.attrs,u=e.props;if(o(s)||o(u))for(var c in r){var l=A(c);at(a,u,c,l,!0)||at(a,s,c,l,!1)}return a}}(t,e);if(a(e.options.functional))return function(e,t,n,i,a){var s=e.options,u={},c=s.props;if(o(c))for(var l in c)u[l]=Re(l,c,t||r);else o(n.attrs)&&nn(u,n.attrs),o(n.props)&&nn(u,n.props);var f=new en(n,u,a,i,e),p=s.render.call(null,f._c,f);if(p instanceof de)return tn(p,n,f.parent,s);if(Array.isArray(p)){for(var d=st(p)||[],h=new Array(d.length),v=0;v<d.length;v++)h[v]=tn(d[v],n,f.parent,s);return h}}(e,p,t,n,s);var d=t.on;if(t.on=t.nativeOn,a(e.options.abstract)){var h=t.slot;t={},h&&(t.slot=h)}!function(e){for(var t=e.hook||(e.hook={}),n=0;n<on.length;n++){var r=on[n],i=t[r],o=rn[r];i===o||i&&i._merged||(t[r]=i?sn(o,i):o)}}(t);var v=e.options.name||c;return new de(\"vue-component-\"+e.cid+(v?\"-\"+v:\"\"),t,void 0,void 0,void 0,n,{Ctor:e,propsData:p,listeners:d,tag:c,children:s},f)}}}function sn(e,t){var n=function(n,r){e(n,r),t(n,r)};return n._merged=!0,n}var un=1,cn=2;function ln(e,t,n,r,c,l){return(Array.isArray(n)||s(n))&&(c=r,r=n,n=void 0),a(l)&&(c=cn),function(e,t,n,r,s){if(o(n)&&o(n.__ob__))return ve();o(n)&&o(n.is)&&(t=n.is);if(!t)return ve();0;Array.isArray(r)&&\"function\"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0);s===cn?r=st(r):s===un&&(r=function(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}(r));var c,l;if(\"string\"==typeof t){var f;l=e.$vnode&&e.$vnode.ns||F.getTagNamespace(t),c=F.isReservedTag(t)?new de(F.parsePlatformTagName(t),n,r,void 0,void 0,e):n&&n.pre||!o(f=Pe(e.$options,\"components\",t))?new de(t,n,r,void 0,void 0,e):an(f,n,e,r,t)}else c=an(t,n,e,r);return Array.isArray(c)?c:o(c)?(o(l)&&function e(t,n,r){t.ns=n;\"foreignObject\"===t.tag&&(n=void 0,r=!0);if(o(t.children))for(var s=0,u=t.children.length;s<u;s++){var c=t.children[s];o(c.tag)&&(i(c.ns)||a(r)&&\"svg\"!==c.tag)&&e(c,n,r)}}(c,l),o(n)&&function(e){u(e.style)&&et(e.style);u(e.class)&&et(e.class)}(n),c):ve()}(e,t,n,r,c)}var fn=0;function pn(e){var t=e.options;if(e.super){var n=pn(e.super);if(n!==e.superOptions){e.superOptions=n;var r=function(e){var t,n=e.options,r=e.extendOptions,i=e.sealedOptions;for(var o in n)n[o]!==i[o]&&(t||(t={}),t[o]=dn(n[o],r[o],i[o]));return t}(e);r&&D(e.extendOptions,r),(t=e.options=je(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function dn(e,t,n){if(Array.isArray(e)){var r=[];n=Array.isArray(n)?n:[n],t=Array.isArray(t)?t:[t];for(var i=0;i<e.length;i++)(t.indexOf(e[i])>=0||n.indexOf(e[i])<0)&&r.push(e[i]);return r}return e}function hn(e){this._init(e)}function vn(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r=n.cid,i=e._Ctor||(e._Ctor={});if(i[r])return i[r];var o=e.name||n.options.name;var a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=je(n.options,e),a.super=n,a.options.props&&function(e){var t=e.options.props;for(var n in t)jt(e.prototype,\"_props\",n)}(a),a.options.computed&&function(e){var t=e.options.computed;for(var n in t)$t(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,H.forEach(function(e){a[e]=n[e]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=D({},a.options),i[r]=a,a}}function gn(e){return e&&(e.Ctor.options.name||e.tag)}function mn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:\"string\"==typeof e?e.split(\",\").indexOf(t)>-1:!!f(e)&&e.test(t)}function yn(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=gn(a.componentOptions);s&&!t(s)&&_n(n,o,r,i)}}}function _n(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,y(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=fn++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=je(pn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&vt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=gt(t._renderChildren,i),e.$scopedSlots=r,e._c=function(t,n,r,i){return ln(e,t,n,r,i,!1)},e.$createElement=function(t,n,r,i){return ln(e,t,n,r,i,!0)};var o=n&&n.data;Ce(e,\"$attrs\",o&&o.attrs||r,null,!0),Ce(e,\"$listeners\",t._parentListeners||r,null,!0)}(t),Et(t,\"beforeCreate\"),function(e){var t=Wt(e.$options.inject,e);t&&(Te(!1),Object.keys(t).forEach(function(n){Ce(e,n,t[n])}),Te(!0))}(t),Pt(t),function(e){var t=e.$options.provide;t&&(e._provided=\"function\"==typeof t?t.call(e):t)}(t),Et(t,\"created\"),t.$options.el&&t.$mount(t.$options.el)}}(hn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,\"$data\",t),Object.defineProperty(e.prototype,\"$props\",n),e.prototype.$set=Ae,e.prototype.$delete=Se,e.prototype.$watch=function(e,t,n){if(l(t))return Ft(this,e,t,n);(n=n||{}).user=!0;var r=new Nt(this,e,t,n);if(n.immediate)try{t.call(this,r.value)}catch(e){Fe(e,this,'callback for immediate watcher \"'+r.expression+'\"')}return function(){r.teardown()}}}(hn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var i=0,o=e.length;i<o;i++)r.$on(e[i],n);else(r._events[e]||(r._events[e]=[])).push(n),t.test(e)&&(r._hasHookEvent=!0);return r},e.prototype.$once=function(e,t){var n=this;function r(){n.$off(e,r),t.apply(n,arguments)}return r.fn=t,n.$on(e,r),n},e.prototype.$off=function(e,t){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(e)){for(var r=0,i=e.length;r<i;r++)n.$off(e[r],t);return n}var o=n._events[e];if(!o)return n;if(!t)return n._events[e]=null,n;if(t)for(var a,s=o.length;s--;)if((a=o[s])===t||a.fn===t){o.splice(s,1);break}return n},e.prototype.$emit=function(e){var t=this._events[e];if(t){t=t.length>1?O(t):t;for(var n=O(arguments,1),r=0,i=t.length;r<i;r++)try{t[r].apply(this,n)}catch(t){Fe(t,this,'event handler for \"'+e+'\"')}}return this}}(hn),function(e){e.prototype._update=function(e,t){var n=this,r=n.$el,i=n._vnode,o=bt(n);n._vnode=e,n.$el=i?n.__patch__(i,e):n.__patch__(n.$el,e,t,!1),o(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Et(e,\"beforeDestroy\"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||y(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Et(e,\"destroyed\"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(hn),function(e){Zt(e.prototype),e.prototype.$nextTick=function(e){return Je(e,this)},e.prototype._render=function(){var e,t=this,n=t.$options,i=n.render,o=n._parentVnode;o&&(t.$scopedSlots=o.data.scopedSlots||r),t.$vnode=o;try{e=i.call(t._renderProxy,t.$createElement)}catch(n){Fe(n,t,\"render\"),e=t._vnode}return e instanceof de||(e=ve()),e.parent=o,e}}(hn);var bn=[String,RegExp,Array],wn={KeepAlive:{name:\"keep-alive\",abstract:!0,props:{include:bn,exclude:bn,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)_n(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch(\"include\",function(t){yn(e,function(e){return mn(t,e)})}),this.$watch(\"exclude\",function(t){yn(e,function(e){return!mn(t,e)})})},render:function(){var e=this.$slots.default,t=ft(e),n=t&&t.componentOptions;if(n){var r=gn(n),i=this.include,o=this.exclude;if(i&&(!r||!mn(i,r))||o&&r&&mn(o,r))return t;var a=this.cache,s=this.keys,u=null==t.key?n.Ctor.cid+(n.tag?\"::\"+n.tag:\"\"):t.key;a[u]?(t.componentInstance=a[u].componentInstance,y(s,u),s.push(u)):(a[u]=t,s.push(u),this.max&&s.length>parseInt(this.max)&&_n(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,\"config\",t),e.util={warn:se,extend:D,mergeOptions:je,defineReactive:Ce},e.set=Ae,e.delete=Se,e.nextTick=Je,e.options=Object.create(null),H.forEach(function(t){e.options[t+\"s\"]=Object.create(null)}),e.options._base=e,D(e.options.components,wn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=O(arguments,1);return n.unshift(this),\"function\"==typeof e.install?e.install.apply(e,n):\"function\"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=je(this.options,e),this}}(e),vn(e),function(e){H.forEach(function(t){e[t]=function(e,n){return n?(\"component\"===t&&l(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),\"directive\"===t&&\"function\"==typeof n&&(n={bind:n,update:n}),this.options[t+\"s\"][e]=n,n):this.options[t+\"s\"][e]}})}(e)}(hn),Object.defineProperty(hn.prototype,\"$isServer\",{get:ne}),Object.defineProperty(hn.prototype,\"$ssrContext\",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(hn,\"FunctionalRenderContext\",{value:en}),hn.version=\"2.5.21\";var Tn=v(\"style,class\"),En=v(\"input,textarea,option,select,progress\"),xn=function(e,t,n){return\"value\"===n&&En(e)&&\"button\"!==t||\"selected\"===n&&\"option\"===e||\"checked\"===n&&\"input\"===e||\"muted\"===n&&\"video\"===e},Cn=v(\"contenteditable,draggable,spellcheck\"),An=v(\"allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible\"),Sn=\"http://www.w3.org/1999/xlink\",On=function(e){return\":\"===e.charAt(5)&&\"xlink\"===e.slice(0,5)},Dn=function(e){return On(e)?e.slice(6,e.length):\"\"},In=function(e){return null==e||!1===e};function kn(e){for(var t=e.data,n=e,r=e;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=Nn(r.data,t));for(;o(n=n.parent);)n&&n.data&&(t=Nn(t,n.data));return function(e,t){if(o(e)||o(t))return Ln(e,jn(t));return\"\"}(t.staticClass,t.class)}function Nn(e,t){return{staticClass:Ln(e.staticClass,t.staticClass),class:o(e.class)?[e.class,t.class]:t.class}}function Ln(e,t){return e?t?e+\" \"+t:e:t||\"\"}function jn(e){return Array.isArray(e)?function(e){for(var t,n=\"\",r=0,i=e.length;r<i;r++)o(t=jn(e[r]))&&\"\"!==t&&(n&&(n+=\" \"),n+=t);return n}(e):u(e)?function(e){var t=\"\";for(var n in e)e[n]&&(t&&(t+=\" \"),t+=n);return t}(e):\"string\"==typeof e?e:\"\"}var Pn={svg:\"http://www.w3.org/2000/svg\",math:\"http://www.w3.org/1998/Math/MathML\"},Rn=v(\"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot\"),$n=v(\"svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view\",!0),Hn=function(e){return Rn(e)||$n(e)};function Mn(e){return $n(e)?\"svg\":\"math\"===e?\"math\":void 0}var Fn=Object.create(null);var Wn=v(\"text,number,password,search,email,tel,url\");function qn(e){if(\"string\"==typeof e){var t=document.querySelector(e);return t||document.createElement(\"div\")}return e}var Bn=Object.freeze({createElement:function(e,t){var n=document.createElement(e);return\"select\"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute(\"multiple\",\"multiple\"),n)},createElementNS:function(e,t){return document.createElementNS(Pn[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,\"\")}}),Un={create:function(e,t){Vn(t)},update:function(e,t){e.data.ref!==t.data.ref&&(Vn(e,!0),Vn(t))},destroy:function(e){Vn(e,!0)}};function Vn(e,t){var n=e.data.ref;if(o(n)){var r=e.context,i=e.componentInstance||e.elm,a=r.$refs;t?Array.isArray(a[n])?y(a[n],i):a[n]===i&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var zn=new de(\"\",{},[]),Kn=[\"create\",\"activate\",\"update\",\"remove\",\"destroy\"];function Gn(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&o(e.data)===o(t.data)&&function(e,t){if(\"input\"!==e.tag)return!0;var n,r=o(n=e.data)&&o(n=n.attrs)&&n.type,i=o(n=t.data)&&o(n=n.attrs)&&n.type;return r===i||Wn(r)&&Wn(i)}(e,t)||a(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function Xn(e,t,n){var r,i,a={};for(r=t;r<=n;++r)o(i=e[r].key)&&(a[i]=r);return a}var Qn={create:Yn,update:Yn,destroy:function(e){Yn(e,zn)}};function Yn(e,t){(e.data.directives||t.data.directives)&&function(e,t){var n,r,i,o=e===zn,a=t===zn,s=Zn(e.data.directives,e.context),u=Zn(t.data.directives,t.context),c=[],l=[];for(n in u)r=s[n],i=u[n],r?(i.oldValue=r.value,tr(i,\"update\",t,e),i.def&&i.def.componentUpdated&&l.push(i)):(tr(i,\"bind\",t,e),i.def&&i.def.inserted&&c.push(i));if(c.length){var f=function(){for(var n=0;n<c.length;n++)tr(c[n],\"inserted\",t,e)};o?ot(t,\"insert\",f):f()}l.length&&ot(t,\"postpatch\",function(){for(var n=0;n<l.length;n++)tr(l[n],\"componentUpdated\",t,e)});if(!o)for(n in s)u[n]||tr(s[n],\"unbind\",e,e,a)}(e,t)}var Jn=Object.create(null);function Zn(e,t){var n,r,i=Object.create(null);if(!e)return i;for(n=0;n<e.length;n++)(r=e[n]).modifiers||(r.modifiers=Jn),i[er(r)]=r,r.def=Pe(t.$options,\"directives\",r.name);return i}function er(e){return e.rawName||e.name+\".\"+Object.keys(e.modifiers||{}).join(\".\")}function tr(e,t,n,r,i){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,r,i)}catch(r){Fe(r,n.context,\"directive \"+e.name+\" \"+t+\" hook\")}}var nr=[Un,Qn];function rr(e,t){var n=t.componentOptions;if(!(o(n)&&!1===n.Ctor.options.inheritAttrs||i(e.data.attrs)&&i(t.data.attrs))){var r,a,s=t.elm,u=e.data.attrs||{},c=t.data.attrs||{};for(r in o(c.__ob__)&&(c=t.data.attrs=D({},c)),c)a=c[r],u[r]!==a&&ir(s,r,a);for(r in(X||Y)&&c.value!==u.value&&ir(s,\"value\",c.value),u)i(c[r])&&(On(r)?s.removeAttributeNS(Sn,Dn(r)):Cn(r)||s.removeAttribute(r))}}function ir(e,t,n){e.tagName.indexOf(\"-\")>-1?or(e,t,n):An(t)?In(n)?e.removeAttribute(t):(n=\"allowfullscreen\"===t&&\"EMBED\"===e.tagName?\"true\":t,e.setAttribute(t,n)):Cn(t)?e.setAttribute(t,In(n)||\"false\"===n?\"false\":\"true\"):On(t)?In(n)?e.removeAttributeNS(Sn,Dn(t)):e.setAttributeNS(Sn,t,n):or(e,t,n)}function or(e,t,n){if(In(n))e.removeAttribute(t);else{if(X&&!Q&&(\"TEXTAREA\"===e.tagName||\"INPUT\"===e.tagName)&&\"placeholder\"===t&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener(\"input\",r)};e.addEventListener(\"input\",r),e.__ieph=!0}e.setAttribute(t,n)}}var ar={create:rr,update:rr};function sr(e,t){var n=t.elm,r=t.data,a=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=kn(t),u=n._transitionClasses;o(u)&&(s=Ln(s,jn(u))),s!==n._prevClass&&(n.setAttribute(\"class\",s),n._prevClass=s)}}var ur,cr,lr,fr,pr,dr,hr={create:sr,update:sr},vr=/[\\w).+\\-_$\\]]/;function gr(e){var t,n,r,i,o,a=!1,s=!1,u=!1,c=!1,l=0,f=0,p=0,d=0;for(r=0;r<e.length;r++)if(n=t,t=e.charCodeAt(r),a)39===t&&92!==n&&(a=!1);else if(s)34===t&&92!==n&&(s=!1);else if(u)96===t&&92!==n&&(u=!1);else if(c)47===t&&92!==n&&(c=!1);else if(124!==t||124===e.charCodeAt(r+1)||124===e.charCodeAt(r-1)||l||f||p){switch(t){case 34:s=!0;break;case 39:a=!0;break;case 96:u=!0;break;case 40:p++;break;case 41:p--;break;case 91:f++;break;case 93:f--;break;case 123:l++;break;case 125:l--}if(47===t){for(var h=r-1,v=void 0;h>=0&&\" \"===(v=e.charAt(h));h--);v&&vr.test(v)||(c=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):g();function g(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&g(),o)for(r=0;r<o.length;r++)i=mr(i,o[r]);return i}function mr(e,t){var n=t.indexOf(\"(\");if(n<0)return'_f(\"'+t+'\")('+e+\")\";var r=t.slice(0,n),i=t.slice(n+1);return'_f(\"'+r+'\")('+e+(\")\"!==i?\",\"+i:i)}function yr(e){console.error(\"[Vue compiler]: \"+e)}function _r(e,t){return e?e.map(function(e){return e[t]}).filter(function(e){return e}):[]}function br(e,t,n){(e.props||(e.props=[])).push({name:t,value:n}),e.plain=!1}function wr(e,t,n){(e.attrs||(e.attrs=[])).push({name:t,value:n}),e.plain=!1}function Tr(e,t,n){e.attrsMap[t]=n,e.attrsList.push({name:t,value:n})}function Er(e,t,n,r,i,o){(e.directives||(e.directives=[])).push({name:t,rawName:n,value:r,arg:i,modifiers:o}),e.plain=!1}function xr(e,t,n,i,o,a){var s;i=i||r,\"click\"===t&&(i.right?(t=\"contextmenu\",delete i.right):i.middle&&(t=\"mouseup\")),i.capture&&(delete i.capture,t=\"!\"+t),i.once&&(delete i.once,t=\"~\"+t),i.passive&&(delete i.passive,t=\"&\"+t),i.native?(delete i.native,s=e.nativeEvents||(e.nativeEvents={})):s=e.events||(e.events={});var u={value:n.trim()};i!==r&&(u.modifiers=i);var c=s[t];Array.isArray(c)?o?c.unshift(u):c.push(u):s[t]=c?o?[u,c]:[c,u]:u,e.plain=!1}function Cr(e,t,n){var r=Ar(e,\":\"+t)||Ar(e,\"v-bind:\"+t);if(null!=r)return gr(r);if(!1!==n){var i=Ar(e,t);if(null!=i)return JSON.stringify(i)}}function Ar(e,t,n){var r;if(null!=(r=e.attrsMap[t]))for(var i=e.attrsList,o=0,a=i.length;o<a;o++)if(i[o].name===t){i.splice(o,1);break}return n&&delete e.attrsMap[t],r}function Sr(e,t,n){var r=n||{},i=r.number,o=\"$$v\";r.trim&&(o=\"(typeof $$v === 'string'? $$v.trim(): $$v)\"),i&&(o=\"_n(\"+o+\")\");var a=Or(t,o);e.model={value:\"(\"+t+\")\",expression:JSON.stringify(t),callback:\"function ($$v) {\"+a+\"}\"}}function Or(e,t){var n=function(e){if(e=e.trim(),ur=e.length,e.indexOf(\"[\")<0||e.lastIndexOf(\"]\")<ur-1)return(fr=e.lastIndexOf(\".\"))>-1?{exp:e.slice(0,fr),key:'\"'+e.slice(fr+1)+'\"'}:{exp:e,key:null};cr=e,fr=pr=dr=0;for(;!Ir();)kr(lr=Dr())?Lr(lr):91===lr&&Nr(lr);return{exp:e.slice(0,pr),key:e.slice(pr+1,dr)}}(e);return null===n.key?e+\"=\"+t:\"$set(\"+n.exp+\", \"+n.key+\", \"+t+\")\"}function Dr(){return cr.charCodeAt(++fr)}function Ir(){return fr>=ur}function kr(e){return 34===e||39===e}function Nr(e){var t=1;for(pr=fr;!Ir();)if(kr(e=Dr()))Lr(e);else if(91===e&&t++,93===e&&t--,0===t){dr=fr;break}}function Lr(e){for(var t=e;!Ir()&&(e=Dr())!==t;);}var jr,Pr=\"__r\",Rr=\"__c\";function $r(e,t,n){var r=jr;return function i(){null!==t.apply(null,arguments)&&Mr(e,i,n,r)}}function Hr(e,t,n,r){var i;t=(i=t)._withTask||(i._withTask=function(){Ge=!0;try{return i.apply(null,arguments)}finally{Ge=!1}}),jr.addEventListener(e,t,ee?{capture:n,passive:r}:n)}function Mr(e,t,n,r){(r||jr).removeEventListener(e,t._withTask||t,n)}function Fr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};jr=t.elm,function(e){if(o(e[Pr])){var t=X?\"change\":\"input\";e[t]=[].concat(e[Pr],e[t]||[]),delete e[Pr]}o(e[Rr])&&(e.change=[].concat(e[Rr],e.change||[]),delete e[Rr])}(n),it(n,r,Hr,Mr,$r,t.context),jr=void 0}}var Wr={create:Fr,update:Fr};function qr(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,a=t.elm,s=e.data.domProps||{},u=t.data.domProps||{};for(n in o(u.__ob__)&&(u=t.data.domProps=D({},u)),s)i(u[n])&&(a[n]=\"\");for(n in u){if(r=u[n],\"textContent\"===n||\"innerHTML\"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if(\"value\"===n){a._value=r;var c=i(r)?\"\":String(r);Br(a,c)&&(a.value=c)}else a[n]=r}}}function Br(e,t){return!e.composing&&(\"OPTION\"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(o(r)){if(r.lazy)return!1;if(r.number)return h(n)!==h(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Ur={create:qr,update:qr},Vr=w(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function zr(e){var t=Kr(e.style);return e.staticStyle?D(e.staticStyle,t):t}function Kr(e){return Array.isArray(e)?I(e):\"string\"==typeof e?Vr(e):e}var Gr,Xr=/^--/,Qr=/\\s*!important$/,Yr=function(e,t,n){if(Xr.test(t))e.style.setProperty(t,n);else if(Qr.test(n))e.style.setProperty(t,n.replace(Qr,\"\"),\"important\");else{var r=Zr(t);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)e.style[r]=n[i];else e.style[r]=n}},Jr=[\"Webkit\",\"Moz\",\"ms\"],Zr=w(function(e){if(Gr=Gr||document.createElement(\"div\").style,\"filter\"!==(e=E(e))&&e in Gr)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<Jr.length;n++){var r=Jr[n]+t;if(r in Gr)return r}});function ei(e,t){var n=t.data,r=e.data;if(!(i(n.staticStyle)&&i(n.style)&&i(r.staticStyle)&&i(r.style))){var a,s,u=t.elm,c=r.staticStyle,l=r.normalizedStyle||r.style||{},f=c||l,p=Kr(t.data.style)||{};t.data.normalizedStyle=o(p.__ob__)?D({},p):p;var d=function(e,t){var n,r={};if(t)for(var i=e;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=zr(i.data))&&D(r,n);(n=zr(e.data))&&D(r,n);for(var o=e;o=o.parent;)o.data&&(n=zr(o.data))&&D(r,n);return r}(t,!0);for(s in f)i(d[s])&&Yr(u,s,\"\");for(s in d)(a=d[s])!==f[s]&&Yr(u,s,null==a?\"\":a)}}var ti={create:ei,update:ei},ni=/\\s+/;function ri(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(\" \")>-1?t.split(ni).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \";n.indexOf(\" \"+t+\" \")<0&&e.setAttribute(\"class\",(n+t).trim())}}function ii(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(\" \")>-1?t.split(ni).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute(\"class\");else{for(var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \",r=\" \"+t+\" \";n.indexOf(r)>=0;)n=n.replace(r,\" \");(n=n.trim())?e.setAttribute(\"class\",n):e.removeAttribute(\"class\")}}function oi(e){if(e){if(\"object\"==typeof e){var t={};return!1!==e.css&&D(t,ai(e.name||\"v\")),D(t,e),t}return\"string\"==typeof e?ai(e):void 0}}var ai=w(function(e){return{enterClass:e+\"-enter\",enterToClass:e+\"-enter-to\",enterActiveClass:e+\"-enter-active\",leaveClass:e+\"-leave\",leaveToClass:e+\"-leave-to\",leaveActiveClass:e+\"-leave-active\"}}),si=V&&!Q,ui=\"transition\",ci=\"animation\",li=\"transition\",fi=\"transitionend\",pi=\"animation\",di=\"animationend\";si&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(li=\"WebkitTransition\",fi=\"webkitTransitionEnd\"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(pi=\"WebkitAnimation\",di=\"webkitAnimationEnd\"));var hi=V?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function vi(e){hi(function(){hi(e)})}function gi(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),ri(e,t))}function mi(e,t){e._transitionClasses&&y(e._transitionClasses,t),ii(e,t)}function yi(e,t,n){var r=bi(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===ui?fi:di,u=0,c=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++u>=a&&c()};setTimeout(function(){u<a&&c()},o+1),e.addEventListener(s,l)}var _i=/\\b(transform|all)(,|$)/;function bi(e,t){var n,r=window.getComputedStyle(e),i=(r[li+\"Delay\"]||\"\").split(\", \"),o=(r[li+\"Duration\"]||\"\").split(\", \"),a=wi(i,o),s=(r[pi+\"Delay\"]||\"\").split(\", \"),u=(r[pi+\"Duration\"]||\"\").split(\", \"),c=wi(s,u),l=0,f=0;return t===ui?a>0&&(n=ui,l=a,f=o.length):t===ci?c>0&&(n=ci,l=c,f=u.length):f=(n=(l=Math.max(a,c))>0?a>c?ui:ci:null)?n===ui?o.length:u.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===ui&&_i.test(r[li+\"Property\"])}}function wi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map(function(t,n){return Ti(t)+Ti(e[n])}))}function Ti(e){return 1e3*Number(e.slice(0,-1).replace(\",\",\".\"))}function Ei(e,t){var n=e.elm;o(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=oi(e.data.transition);if(!i(r)&&!o(n._enterCb)&&1===n.nodeType){for(var a=r.css,s=r.type,c=r.enterClass,l=r.enterToClass,f=r.enterActiveClass,p=r.appearClass,d=r.appearToClass,v=r.appearActiveClass,g=r.beforeEnter,m=r.enter,y=r.afterEnter,_=r.enterCancelled,b=r.beforeAppear,w=r.appear,T=r.afterAppear,E=r.appearCancelled,x=r.duration,C=_t,A=_t.$vnode;A&&A.parent;)C=(A=A.parent).context;var S=!C._isMounted||!e.isRootInsert;if(!S||w||\"\"===w){var O=S&&p?p:c,D=S&&v?v:f,I=S&&d?d:l,k=S&&b||g,N=S&&\"function\"==typeof w?w:m,L=S&&T||y,j=S&&E||_,P=h(u(x)?x.enter:x);0;var $=!1!==a&&!Q,H=Ai(N),M=n._enterCb=R(function(){$&&(mi(n,I),mi(n,D)),M.cancelled?($&&mi(n,O),j&&j(n)):L&&L(n),n._enterCb=null});e.data.show||ot(e,\"insert\",function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),N&&N(n,M)}),k&&k(n),$&&(gi(n,O),gi(n,D),vi(function(){mi(n,O),M.cancelled||(gi(n,I),H||(Ci(P)?setTimeout(M,P):yi(n,s,M)))})),e.data.show&&(t&&t(),N&&N(n,M)),$||H||M()}}}function xi(e,t){var n=e.elm;o(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=oi(e.data.transition);if(i(r)||1!==n.nodeType)return t();if(!o(n._leaveCb)){var a=r.css,s=r.type,c=r.leaveClass,l=r.leaveToClass,f=r.leaveActiveClass,p=r.beforeLeave,d=r.leave,v=r.afterLeave,g=r.leaveCancelled,m=r.delayLeave,y=r.duration,_=!1!==a&&!Q,b=Ai(d),w=h(u(y)?y.leave:y);0;var T=n._leaveCb=R(function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),_&&(mi(n,l),mi(n,f)),T.cancelled?(_&&mi(n,c),g&&g(n)):(t(),v&&v(n)),n._leaveCb=null});m?m(E):E()}function E(){T.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),p&&p(n),_&&(gi(n,c),gi(n,f),vi(function(){mi(n,c),T.cancelled||(gi(n,l),b||(Ci(w)?setTimeout(T,w):yi(n,s,T)))})),d&&d(n,T),_||b||T())}}function Ci(e){return\"number\"==typeof e&&!isNaN(e)}function Ai(e){if(i(e))return!1;var t=e.fns;return o(t)?Ai(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Si(e,t){!0!==t.data.show&&Ei(t)}var Oi=function(e){var t,n,r={},u=e.modules,c=e.nodeOps;for(t=0;t<Kn.length;++t)for(r[Kn[t]]=[],n=0;n<u.length;++n)o(u[n][Kn[t]])&&r[Kn[t]].push(u[n][Kn[t]]);function l(e){var t=c.parentNode(e);o(t)&&c.removeChild(t,e)}function f(e,t,n,i,s,u,l){if(o(e.elm)&&o(u)&&(e=u[l]=me(e)),e.isRootInsert=!s,!function(e,t,n,i){var s=e.data;if(o(s)){var u=o(e.componentInstance)&&s.keepAlive;if(o(s=s.hook)&&o(s=s.init)&&s(e,!1),o(e.componentInstance))return p(e,t),d(n,e.elm,i),a(u)&&function(e,t,n,i){for(var a,s=e;s.componentInstance;)if(s=s.componentInstance._vnode,o(a=s.data)&&o(a=a.transition)){for(a=0;a<r.activate.length;++a)r.activate[a](zn,s);t.push(s);break}d(n,e.elm,i)}(e,t,n,i),!0}}(e,t,n,i)){var f=e.data,v=e.children,g=e.tag;o(g)?(e.elm=e.ns?c.createElementNS(e.ns,g):c.createElement(g,e),y(e),h(e,v,t),o(f)&&m(e,t),d(n,e.elm,i)):a(e.isComment)?(e.elm=c.createComment(e.text),d(n,e.elm,i)):(e.elm=c.createTextNode(e.text),d(n,e.elm,i))}}function p(e,t){o(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,g(e)?(m(e,t),y(e)):(Vn(e),t.push(e))}function d(e,t,n){o(e)&&(o(n)?c.parentNode(n)===e&&c.insertBefore(e,t,n):c.appendChild(e,t))}function h(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)f(t[r],n,e.elm,null,!0,t,r);else s(e.text)&&c.appendChild(e.elm,c.createTextNode(String(e.text)))}function g(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return o(e.tag)}function m(e,n){for(var i=0;i<r.create.length;++i)r.create[i](zn,e);o(t=e.data.hook)&&(o(t.create)&&t.create(zn,e),o(t.insert)&&n.push(e))}function y(e){var t;if(o(t=e.fnScopeId))c.setStyleScope(e.elm,t);else for(var n=e;n;)o(t=n.context)&&o(t=t.$options._scopeId)&&c.setStyleScope(e.elm,t),n=n.parent;o(t=_t)&&t!==e.context&&t!==e.fnContext&&o(t=t.$options._scopeId)&&c.setStyleScope(e.elm,t)}function _(e,t,n,r,i,o){for(;r<=i;++r)f(n[r],o,e,t,!1,n,r)}function b(e){var t,n,i=e.data;if(o(i))for(o(t=i.hook)&&o(t=t.destroy)&&t(e),t=0;t<r.destroy.length;++t)r.destroy[t](e);if(o(t=e.children))for(n=0;n<e.children.length;++n)b(e.children[n])}function w(e,t,n,r){for(;n<=r;++n){var i=t[n];o(i)&&(o(i.tag)?(T(i),b(i)):l(i.elm))}}function T(e,t){if(o(t)||o(e.data)){var n,i=r.remove.length+1;for(o(t)?t.listeners+=i:t=function(e,t){function n(){0==--n.listeners&&l(e)}return n.listeners=t,n}(e.elm,i),o(n=e.componentInstance)&&o(n=n._vnode)&&o(n.data)&&T(n,t),n=0;n<r.remove.length;++n)r.remove[n](e,t);o(n=e.data.hook)&&o(n=n.remove)?n(e,t):t()}else l(e.elm)}function E(e,t,n,r){for(var i=n;i<r;i++){var a=t[i];if(o(a)&&Gn(e,a))return i}}function x(e,t,n,s,u,l){if(e!==t){o(t.elm)&&o(s)&&(t=s[u]=me(t));var p=t.elm=e.elm;if(a(e.isAsyncPlaceholder))o(t.asyncFactory.resolved)?S(e.elm,t,n):t.isAsyncPlaceholder=!0;else if(a(t.isStatic)&&a(e.isStatic)&&t.key===e.key&&(a(t.isCloned)||a(t.isOnce)))t.componentInstance=e.componentInstance;else{var d,h=t.data;o(h)&&o(d=h.hook)&&o(d=d.prepatch)&&d(e,t);var v=e.children,m=t.children;if(o(h)&&g(t)){for(d=0;d<r.update.length;++d)r.update[d](e,t);o(d=h.hook)&&o(d=d.update)&&d(e,t)}i(t.text)?o(v)&&o(m)?v!==m&&function(e,t,n,r,a){for(var s,u,l,p=0,d=0,h=t.length-1,v=t[0],g=t[h],m=n.length-1,y=n[0],b=n[m],T=!a;p<=h&&d<=m;)i(v)?v=t[++p]:i(g)?g=t[--h]:Gn(v,y)?(x(v,y,r,n,d),v=t[++p],y=n[++d]):Gn(g,b)?(x(g,b,r,n,m),g=t[--h],b=n[--m]):Gn(v,b)?(x(v,b,r,n,m),T&&c.insertBefore(e,v.elm,c.nextSibling(g.elm)),v=t[++p],b=n[--m]):Gn(g,y)?(x(g,y,r,n,d),T&&c.insertBefore(e,g.elm,v.elm),g=t[--h],y=n[++d]):(i(s)&&(s=Xn(t,p,h)),i(u=o(y.key)?s[y.key]:E(y,t,p,h))?f(y,r,e,v.elm,!1,n,d):Gn(l=t[u],y)?(x(l,y,r,n,d),t[u]=void 0,T&&c.insertBefore(e,l.elm,v.elm)):f(y,r,e,v.elm,!1,n,d),y=n[++d]);p>h?_(e,i(n[m+1])?null:n[m+1].elm,n,d,m,r):d>m&&w(0,t,p,h)}(p,v,m,n,l):o(m)?(o(e.text)&&c.setTextContent(p,\"\"),_(p,null,m,0,m.length-1,n)):o(v)?w(0,v,0,v.length-1):o(e.text)&&c.setTextContent(p,\"\"):e.text!==t.text&&c.setTextContent(p,t.text),o(h)&&o(d=h.hook)&&o(d=d.postpatch)&&d(e,t)}}}function C(e,t,n){if(a(n)&&o(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r<t.length;++r)t[r].data.hook.insert(t[r])}var A=v(\"attrs,class,staticClass,staticStyle,key\");function S(e,t,n,r){var i,s=t.tag,u=t.data,c=t.children;if(r=r||u&&u.pre,t.elm=e,a(t.isComment)&&o(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(o(u)&&(o(i=u.hook)&&o(i=i.init)&&i(t,!0),o(i=t.componentInstance)))return p(t,n),!0;if(o(s)){if(o(c))if(e.hasChildNodes())if(o(i=u)&&o(i=i.domProps)&&o(i=i.innerHTML)){if(i!==e.innerHTML)return!1}else{for(var l=!0,f=e.firstChild,d=0;d<c.length;d++){if(!f||!S(f,c[d],n,r)){l=!1;break}f=f.nextSibling}if(!l||f)return!1}else h(t,c,n);if(o(u)){var v=!1;for(var g in u)if(!A(g)){v=!0,m(t,n);break}!v&&u.class&&et(u.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,n,s){if(!i(t)){var u,l=!1,p=[];if(i(e))l=!0,f(t,p);else{var d=o(e.nodeType);if(!d&&Gn(e,t))x(e,t,p,null,null,s);else{if(d){if(1===e.nodeType&&e.hasAttribute($)&&(e.removeAttribute($),n=!0),a(n)&&S(e,t,p))return C(t,p,!0),e;u=e,e=new de(c.tagName(u).toLowerCase(),{},[],void 0,u)}var h=e.elm,v=c.parentNode(h);if(f(t,p,h._leaveCb?null:v,c.nextSibling(h)),o(t.parent))for(var m=t.parent,y=g(t);m;){for(var _=0;_<r.destroy.length;++_)r.destroy[_](m);if(m.elm=t.elm,y){for(var T=0;T<r.create.length;++T)r.create[T](zn,m);var E=m.data.hook.insert;if(E.merged)for(var A=1;A<E.fns.length;A++)E.fns[A]()}else Vn(m);m=m.parent}o(v)?w(0,[e],0,0):o(e.tag)&&b(e)}}return C(t,p,l),t.elm}o(e)&&b(e)}}({nodeOps:Bn,modules:[ar,hr,Wr,Ur,ti,V?{create:Si,activate:Si,remove:function(e,t){!0!==e.data.show?xi(e,t):t()}}:{}].concat(nr)});Q&&document.addEventListener(\"selectionchange\",function(){var e=document.activeElement;e&&e.vmodel&&Ri(e,\"input\")});var Di={inserted:function(e,t,n,r){\"select\"===n.tag?(r.elm&&!r.elm._vOptions?ot(n,\"postpatch\",function(){Di.componentUpdated(e,t,n)}):Ii(e,t,n.context),e._vOptions=[].map.call(e.options,Li)):(\"textarea\"===n.tag||Wn(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener(\"compositionstart\",ji),e.addEventListener(\"compositionend\",Pi),e.addEventListener(\"change\",Pi),Q&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if(\"select\"===n.tag){Ii(e,t,n.context);var r=e._vOptions,i=e._vOptions=[].map.call(e.options,Li);if(i.some(function(e,t){return!j(e,r[t])}))(e.multiple?t.value.some(function(e){return Ni(e,i)}):t.value!==t.oldValue&&Ni(t.value,i))&&Ri(e,\"change\")}}};function Ii(e,t,n){ki(e,t,n),(X||Y)&&setTimeout(function(){ki(e,t,n)},0)}function ki(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,u=e.options.length;s<u;s++)if(a=e.options[s],i)o=P(r,Li(a))>-1,a.selected!==o&&(a.selected=o);else if(j(Li(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Ni(e,t){return t.every(function(t){return!j(t,e)})}function Li(e){return\"_value\"in e?e._value:e.value}function ji(e){e.target.composing=!0}function Pi(e){e.target.composing&&(e.target.composing=!1,Ri(e.target,\"input\"))}function Ri(e,t){var n=document.createEvent(\"HTMLEvents\");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function $i(e){return!e.componentInstance||e.data&&e.data.transition?e:$i(e.componentInstance._vnode)}var Hi={model:Di,show:{bind:function(e,t,n){var r=t.value,i=(n=$i(n)).data&&n.data.transition,o=e.__vOriginalDisplay=\"none\"===e.style.display?\"\":e.style.display;r&&i?(n.data.show=!0,Ei(n,function(){e.style.display=o})):e.style.display=r?o:\"none\"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=$i(n)).data&&n.data.transition?(n.data.show=!0,r?Ei(n,function(){e.style.display=e.__vOriginalDisplay}):xi(n,function(){e.style.display=\"none\"})):e.style.display=r?e.__vOriginalDisplay:\"none\")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},Mi={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Fi(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Fi(ft(t.children)):e}function Wi(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[E(o)]=i[o];return t}function qi(e,t){if(/\\d-keep-alive$/.test(t.tag))return e(\"keep-alive\",{props:t.componentOptions.propsData})}var Bi=function(e){return e.tag||lt(e)},Ui=function(e){return\"show\"===e.name},Vi={name:\"transition\",props:Mi,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Bi)).length){0;var r=this.mode;0;var i=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var o=Fi(i);if(!o)return i;if(this._leaving)return qi(e,i);var a=\"__transition-\"+this._uid+\"-\";o.key=null==o.key?o.isComment?a+\"comment\":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var u=(o.data||(o.data={})).transition=Wi(this),c=this._vnode,l=Fi(c);if(o.data.directives&&o.data.directives.some(Ui)&&(o.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,l)&&!lt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=D({},u);if(\"out-in\"===r)return this._leaving=!0,ot(f,\"afterLeave\",function(){t._leaving=!1,t.$forceUpdate()}),qi(e,i);if(\"in-out\"===r){if(lt(o))return c;var p,d=function(){p()};ot(u,\"afterEnter\",d),ot(u,\"enterCancelled\",d),ot(f,\"delayLeave\",function(e){p=e})}}return i}}},zi=D({tag:String,moveClass:String},Mi);function Ki(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Gi(e){e.data.newPos=e.elm.getBoundingClientRect()}function Xi(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform=\"translate(\"+r+\"px,\"+i+\"px)\",o.transitionDuration=\"0s\"}}delete zi.mode;var Qi={Transition:Vi,TransitionGroup:{props:zi,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=bt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||\"span\",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Wi(this),s=0;s<i.length;s++){var u=i[s];if(u.tag)if(null!=u.key&&0!==String(u.key).indexOf(\"__vlist\"))o.push(u),n[u.key]=u,(u.data||(u.data={})).transition=a;else;}if(r){for(var c=[],l=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?c.push(p):l.push(p)}this.kept=e(t,null,c),this.removed=l}return e(t,null,o)},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||\"v\")+\"-move\";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(Ki),e.forEach(Gi),e.forEach(Xi),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var n=e.elm,r=n.style;gi(n,t),r.transform=r.WebkitTransform=r.transitionDuration=\"\",n.addEventListener(fi,n._moveCb=function e(r){r&&r.target!==n||r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(fi,e),n._moveCb=null,mi(n,t))})}}))},methods:{hasMove:function(e,t){if(!si)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){ii(n,e)}),ri(n,t),n.style.display=\"none\",this.$el.appendChild(n);var r=bi(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};hn.config.mustUseProp=xn,hn.config.isReservedTag=Hn,hn.config.isReservedAttr=Tn,hn.config.getTagNamespace=Mn,hn.config.isUnknownElement=function(e){if(!V)return!0;if(Hn(e))return!1;if(e=e.toLowerCase(),null!=Fn[e])return Fn[e];var t=document.createElement(e);return e.indexOf(\"-\")>-1?Fn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Fn[e]=/HTMLUnknownElement/.test(t.toString())},D(hn.options.directives,Hi),D(hn.options.components,Qi),hn.prototype.__patch__=V?Oi:k,hn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ve),Et(e,\"beforeMount\"),r=function(){e._update(e._render(),n)},new Nt(e,r,k,{before:function(){e._isMounted&&!e._isDestroyed&&Et(e,\"beforeUpdate\")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Et(e,\"mounted\")),e}(this,e=e&&V?qn(e):void 0,t)},V&&setTimeout(function(){F.devtools&&re&&re.emit(\"init\",hn)},0);var Yi=/\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g,Ji=/[-.*+?^${}()|[\\]\\/\\\\]/g,Zi=w(function(e){var t=e[0].replace(Ji,\"\\\\$&\"),n=e[1].replace(Ji,\"\\\\$&\");return new RegExp(t+\"((?:.|\\\\n)+?)\"+n,\"g\")});var eo={staticKeys:[\"staticClass\"],transformNode:function(e,t){t.warn;var n=Ar(e,\"class\");n&&(e.staticClass=JSON.stringify(n));var r=Cr(e,\"class\",!1);r&&(e.classBinding=r)},genData:function(e){var t=\"\";return e.staticClass&&(t+=\"staticClass:\"+e.staticClass+\",\"),e.classBinding&&(t+=\"class:\"+e.classBinding+\",\"),t}};var to,no={staticKeys:[\"staticStyle\"],transformNode:function(e,t){t.warn;var n=Ar(e,\"style\");n&&(e.staticStyle=JSON.stringify(Vr(n)));var r=Cr(e,\"style\",!1);r&&(e.styleBinding=r)},genData:function(e){var t=\"\";return e.staticStyle&&(t+=\"staticStyle:\"+e.staticStyle+\",\"),e.styleBinding&&(t+=\"style:(\"+e.styleBinding+\"),\"),t}},ro=function(e){return(to=to||document.createElement(\"div\")).innerHTML=e,to.textContent},io=v(\"area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr\"),oo=v(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source\"),ao=v(\"address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track\"),so=/^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,uo=\"[a-zA-Z_][\\\\w\\\\-\\\\.]*\",co=\"((?:\"+uo+\"\\\\:)?\"+uo+\")\",lo=new RegExp(\"^<\"+co),fo=/^\\s*(\\/?)>/,po=new RegExp(\"^<\\\\/\"+co+\"[^>]*>\"),ho=/^<!DOCTYPE [^>]+>/i,vo=/^<!\\--/,go=/^<!\\[/,mo=v(\"script,style,textarea\",!0),yo={},_o={\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&amp;\":\"&\",\"&#10;\":\"\\n\",\"&#9;\":\"\\t\"},bo=/&(?:lt|gt|quot|amp);/g,wo=/&(?:lt|gt|quot|amp|#10|#9);/g,To=v(\"pre,textarea\",!0),Eo=function(e,t){return e&&To(e)&&\"\\n\"===t[0]};function xo(e,t){var n=t?wo:bo;return e.replace(n,function(e){return _o[e]})}var Co,Ao,So,Oo,Do,Io,ko,No,Lo=/^@|^v-on:/,jo=/^v-|^@|^:/,Po=/([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/,Ro=/,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/,$o=/^\\(|\\)$/g,Ho=/:(.*)$/,Mo=/^:|^v-bind:/,Fo=/\\.[^.]+/g,Wo=w(ro);function qo(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:Go(t),parent:n,children:[]}}function Bo(e,t){Co=t.warn||yr,Io=t.isPreTag||N,ko=t.mustUseProp||N,No=t.getTagNamespace||N,So=_r(t.modules,\"transformNode\"),Oo=_r(t.modules,\"preTransformNode\"),Do=_r(t.modules,\"postTransformNode\"),Ao=t.delimiters;var n,r,i=[],o=!1!==t.preserveWhitespace,a=!1,s=!1;function u(e){e.pre&&(a=!1),Io(e.tag)&&(s=!1);for(var n=0;n<Do.length;n++)Do[n](e,t)}return function(e,t){for(var n,r,i=[],o=t.expectHTML,a=t.isUnaryTag||N,s=t.canBeLeftOpenTag||N,u=0;e;){if(n=e,r&&mo(r)){var c=0,l=r.toLowerCase(),f=yo[l]||(yo[l]=new RegExp(\"([\\\\s\\\\S]*?)(</\"+l+\"[^>]*>)\",\"i\")),p=e.replace(f,function(e,n,r){return c=r.length,mo(l)||\"noscript\"===l||(n=n.replace(/<!\\--([\\s\\S]*?)-->/g,\"$1\").replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g,\"$1\")),Eo(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),\"\"});u+=e.length-p.length,e=p,A(l,u-c,u)}else{var d=e.indexOf(\"<\");if(0===d){if(vo.test(e)){var h=e.indexOf(\"--\\x3e\");if(h>=0){t.shouldKeepComment&&t.comment(e.substring(4,h)),E(h+3);continue}}if(go.test(e)){var v=e.indexOf(\"]>\");if(v>=0){E(v+2);continue}}var g=e.match(ho);if(g){E(g[0].length);continue}var m=e.match(po);if(m){var y=u;E(m[0].length),A(m[1],y,u);continue}var _=x();if(_){C(_),Eo(_.tagName,e)&&E(1);continue}}var b=void 0,w=void 0,T=void 0;if(d>=0){for(w=e.slice(d);!(po.test(w)||lo.test(w)||vo.test(w)||go.test(w)||(T=w.indexOf(\"<\",1))<0);)d+=T,w=e.slice(d);b=e.substring(0,d),E(d)}d<0&&(b=e,e=\"\"),t.chars&&b&&t.chars(b)}if(e===n){t.chars&&t.chars(e);break}}function E(t){u+=t,e=e.substring(t)}function x(){var t=e.match(lo);if(t){var n,r,i={tagName:t[1],attrs:[],start:u};for(E(t[0].length);!(n=e.match(fo))&&(r=e.match(so));)E(r[0].length),i.attrs.push(r);if(n)return i.unarySlash=n[1],E(n[0].length),i.end=u,i}}function C(e){var n=e.tagName,u=e.unarySlash;o&&(\"p\"===r&&ao(n)&&A(r),s(n)&&r===n&&A(n));for(var c=a(n)||!!u,l=e.attrs.length,f=new Array(l),p=0;p<l;p++){var d=e.attrs[p],h=d[3]||d[4]||d[5]||\"\",v=\"a\"===n&&\"href\"===d[1]?t.shouldDecodeNewlinesForHref:t.shouldDecodeNewlines;f[p]={name:d[1],value:xo(h,v)}}c||(i.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:f}),r=n),t.start&&t.start(n,f,c,e.start,e.end)}function A(e,n,o){var a,s;if(null==n&&(n=u),null==o&&(o=u),e)for(s=e.toLowerCase(),a=i.length-1;a>=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var c=i.length-1;c>=a;c--)t.end&&t.end(i[c].tag,n,o);i.length=a,r=a&&i[a-1].tag}else\"br\"===s?t.start&&t.start(e,[],!0,n,o):\"p\"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:Co,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,start:function(e,o,c){var l=r&&r.ns||No(e);X&&\"svg\"===l&&(o=function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];Xo.test(r.name)||(r.name=r.name.replace(Qo,\"\"),t.push(r))}return t}(o));var f,p=qo(e,o,r);l&&(p.ns=l),\"style\"!==(f=p).tag&&(\"script\"!==f.tag||f.attrsMap.type&&\"text/javascript\"!==f.attrsMap.type)||ne()||(p.forbidden=!0);for(var d=0;d<Oo.length;d++)p=Oo[d](p,t)||p;function h(e){0}if(a||(!function(e){null!=Ar(e,\"v-pre\")&&(e.pre=!0)}(p),p.pre&&(a=!0)),Io(p.tag)&&(s=!0),a?function(e){var t=e.attrsList.length;if(t)for(var n=e.attrs=new Array(t),r=0;r<t;r++)n[r]={name:e.attrsList[r].name,value:JSON.stringify(e.attrsList[r].value)};else e.pre||(e.plain=!0)}(p):p.processed||(Vo(p),function(e){var t=Ar(e,\"v-if\");if(t)e.if=t,zo(e,{exp:t,block:e});else{null!=Ar(e,\"v-else\")&&(e.else=!0);var n=Ar(e,\"v-else-if\");n&&(e.elseif=n)}}(p),function(e){null!=Ar(e,\"v-once\")&&(e.once=!0)}(p),Uo(p,t)),n?i.length||n.if&&(p.elseif||p.else)&&(h(),zo(n,{exp:p.elseif,block:p})):(n=p,h()),r&&!p.forbidden)if(p.elseif||p.else)!function(e,t){var n=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(t.children);n&&n.if&&zo(n,{exp:e.elseif,block:e})}(p,r);else if(p.slotScope){r.plain=!1;var v=p.slotTarget||'\"default\"';(r.scopedSlots||(r.scopedSlots={}))[v]=p}else r.children.push(p),p.parent=r;c?u(p):(r=p,i.push(p))},end:function(){var e=i[i.length-1],t=e.children[e.children.length-1];t&&3===t.type&&\" \"===t.text&&!s&&e.children.pop(),i.length-=1,r=i[i.length-1],u(e)},chars:function(e){if(r&&(!X||\"textarea\"!==r.tag||r.attrsMap.placeholder!==e)){var t,n,i=r.children;if(e=s||e.trim()?\"script\"===(t=r).tag||\"style\"===t.tag?e:Wo(e):o&&i.length?\" \":\"\")!a&&\" \"!==e&&(n=function(e,t){var n=t?Zi(t):Yi;if(n.test(e)){for(var r,i,o,a=[],s=[],u=n.lastIndex=0;r=n.exec(e);){(i=r.index)>u&&(s.push(o=e.slice(u,i)),a.push(JSON.stringify(o)));var c=gr(r[1].trim());a.push(\"_s(\"+c+\")\"),s.push({\"@binding\":c}),u=i+r[0].length}return u<e.length&&(s.push(o=e.slice(u)),a.push(JSON.stringify(o))),{expression:a.join(\"+\"),tokens:s}}}(e,Ao))?i.push({type:2,expression:n.expression,tokens:n.tokens,text:e}):\" \"===e&&i.length&&\" \"===i[i.length-1].text||i.push({type:3,text:e})}},comment:function(e){r.children.push({type:3,text:e,isComment:!0})}}),n}function Uo(e,t){var n,r;!function(e){var t=Cr(e,\"key\");if(t){e.key=t}}(e),e.plain=!e.key&&!e.attrsList.length,(r=Cr(n=e,\"ref\"))&&(n.ref=r,n.refInFor=function(e){for(var t=e;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(n)),function(e){if(\"slot\"===e.tag)e.slotName=Cr(e,\"name\");else{var t;\"template\"===e.tag?(t=Ar(e,\"scope\"),e.slotScope=t||Ar(e,\"slot-scope\")):(t=Ar(e,\"slot-scope\"))&&(e.slotScope=t);var n=Cr(e,\"slot\");n&&(e.slotTarget='\"\"'===n?'\"default\"':n,\"template\"===e.tag||e.slotScope||wr(e,\"slot\",n))}}(e),function(e){var t;(t=Cr(e,\"is\"))&&(e.component=t);null!=Ar(e,\"inline-template\")&&(e.inlineTemplate=!0)}(e);for(var i=0;i<So.length;i++)e=So[i](e,t)||e;!function(e){var t,n,r,i,o,a,s,u=e.attrsList;for(t=0,n=u.length;t<n;t++){if(r=i=u[t].name,o=u[t].value,jo.test(r))if(e.hasBindings=!0,(a=Ko(r))&&(r=r.replace(Fo,\"\")),Mo.test(r))r=r.replace(Mo,\"\"),o=gr(o),s=!1,a&&(a.prop&&(s=!0,\"innerHtml\"===(r=E(r))&&(r=\"innerHTML\")),a.camel&&(r=E(r)),a.sync&&xr(e,\"update:\"+E(r),Or(o,\"$event\"))),s||!e.component&&ko(e.tag,e.attrsMap.type,r)?br(e,r,o):wr(e,r,o);else if(Lo.test(r))r=r.replace(Lo,\"\"),xr(e,r,o,a,!1);else{var c=(r=r.replace(jo,\"\")).match(Ho),l=c&&c[1];l&&(r=r.slice(0,-(l.length+1))),Er(e,r,i,o,l,a)}else wr(e,r,JSON.stringify(o)),!e.component&&\"muted\"===r&&ko(e.tag,e.attrsMap.type,r)&&br(e,r,\"true\")}}(e)}function Vo(e){var t;if(t=Ar(e,\"v-for\")){var n=function(e){var t=e.match(Po);if(!t)return;var n={};n.for=t[2].trim();var r=t[1].trim().replace($o,\"\"),i=r.match(Ro);i?(n.alias=r.replace(Ro,\"\").trim(),n.iterator1=i[1].trim(),i[2]&&(n.iterator2=i[2].trim())):n.alias=r;return n}(t);n&&D(e,n)}}function zo(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function Ko(e){var t=e.match(Fo);if(t){var n={};return t.forEach(function(e){n[e.slice(1)]=!0}),n}}function Go(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n].name]=e[n].value;return t}var Xo=/^xmlns:NS\\d+/,Qo=/^NS\\d+:/;function Yo(e){return qo(e.tag,e.attrsList.slice(),e.parent)}var Jo=[eo,no,{preTransformNode:function(e,t){if(\"input\"===e.tag){var n,r=e.attrsMap;if(!r[\"v-model\"])return;if((r[\":type\"]||r[\"v-bind:type\"])&&(n=Cr(e,\"type\")),r.type||n||!r[\"v-bind\"]||(n=\"(\"+r[\"v-bind\"]+\").type\"),n){var i=Ar(e,\"v-if\",!0),o=i?\"&&(\"+i+\")\":\"\",a=null!=Ar(e,\"v-else\",!0),s=Ar(e,\"v-else-if\",!0),u=Yo(e);Vo(u),Tr(u,\"type\",\"checkbox\"),Uo(u,t),u.processed=!0,u.if=\"(\"+n+\")==='checkbox'\"+o,zo(u,{exp:u.if,block:u});var c=Yo(e);Ar(c,\"v-for\",!0),Tr(c,\"type\",\"radio\"),Uo(c,t),zo(u,{exp:\"(\"+n+\")==='radio'\"+o,block:c});var l=Yo(e);return Ar(l,\"v-for\",!0),Tr(l,\":type\",n),Uo(l,t),zo(u,{exp:i,block:l}),a?u.else=!0:s&&(u.elseif=s),u}}}}];var Zo,ea,ta={expectHTML:!0,modules:Jo,directives:{model:function(e,t,n){n;var r=t.value,i=t.modifiers,o=e.tag,a=e.attrsMap.type;if(e.component)return Sr(e,r,i),!1;if(\"select\"===o)!function(e,t,n){var r='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return '+(n&&n.number?\"_n(val)\":\"val\")+\"});\";r=r+\" \"+Or(t,\"$event.target.multiple ? $$selectedVal : $$selectedVal[0]\"),xr(e,\"change\",r,null,!0)}(e,r,i);else if(\"input\"===o&&\"checkbox\"===a)!function(e,t,n){var r=n&&n.number,i=Cr(e,\"value\")||\"null\",o=Cr(e,\"true-value\")||\"true\",a=Cr(e,\"false-value\")||\"false\";br(e,\"checked\",\"Array.isArray(\"+t+\")?_i(\"+t+\",\"+i+\")>-1\"+(\"true\"===o?\":(\"+t+\")\":\":_q(\"+t+\",\"+o+\")\")),xr(e,\"change\",\"var $$a=\"+t+\",$$el=$event.target,$$c=$$el.checked?(\"+o+\"):(\"+a+\");if(Array.isArray($$a)){var $$v=\"+(r?\"_n(\"+i+\")\":i)+\",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(\"+Or(t,\"$$a.concat([$$v])\")+\")}else{$$i>-1&&(\"+Or(t,\"$$a.slice(0,$$i).concat($$a.slice($$i+1))\")+\")}}else{\"+Or(t,\"$$c\")+\"}\",null,!0)}(e,r,i);else if(\"input\"===o&&\"radio\"===a)!function(e,t,n){var r=n&&n.number,i=Cr(e,\"value\")||\"null\";br(e,\"checked\",\"_q(\"+t+\",\"+(i=r?\"_n(\"+i+\")\":i)+\")\"),xr(e,\"change\",Or(t,i),null,!0)}(e,r,i);else if(\"input\"===o||\"textarea\"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,u=!o&&\"range\"!==r,c=o?\"change\":\"range\"===r?Pr:\"input\",l=\"$event.target.value\";s&&(l=\"$event.target.value.trim()\"),a&&(l=\"_n(\"+l+\")\");var f=Or(t,l);u&&(f=\"if($event.target.composing)return;\"+f),br(e,\"value\",\"(\"+t+\")\"),xr(e,c,f,null,!0),(s||a)&&xr(e,\"blur\",\"$forceUpdate()\")}(e,r,i);else if(!F.isReservedTag(o))return Sr(e,r,i),!1;return!0},text:function(e,t){t.value&&br(e,\"textContent\",\"_s(\"+t.value+\")\")},html:function(e,t){t.value&&br(e,\"innerHTML\",\"_s(\"+t.value+\")\")}},isPreTag:function(e){return\"pre\"===e},isUnaryTag:io,mustUseProp:xn,canBeLeftOpenTag:oo,isReservedTag:Hn,getTagNamespace:Mn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(\",\")}(Jo)},na=w(function(e){return v(\"type,tag,attrsList,attrsMap,plain,parent,children,attrs\"+(e?\",\"+e:\"\"))});function ra(e,t){e&&(Zo=na(t.staticKeys||\"\"),ea=t.isReservedTag||N,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||g(e.tag)||!ea(e.tag)||function(e){for(;e.parent;){if(\"template\"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(Zo)))}(t);if(1===t.type){if(!ea(t.tag)&&\"slot\"!==t.tag&&null==t.attrsMap[\"inline-template\"])return;for(var n=0,r=t.children.length;n<r;n++){var i=t.children[n];e(i),i.static||(t.static=!1)}if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++){var s=t.ifConditions[o].block;e(s),s.static||(t.static=!1)}}}(e),function e(t,n){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=n),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var r=0,i=t.children.length;r<i;r++)e(t.children[r],n||!!t.for);if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++)e(t.ifConditions[o].block,n)}}(e,!1))}var ia=/^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/,oa=/^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/,aa={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},sa={esc:[\"Esc\",\"Escape\"],tab:\"Tab\",enter:\"Enter\",space:[\" \",\"Spacebar\"],up:[\"Up\",\"ArrowUp\"],left:[\"Left\",\"ArrowLeft\"],right:[\"Right\",\"ArrowRight\"],down:[\"Down\",\"ArrowDown\"],delete:[\"Backspace\",\"Delete\",\"Del\"]},ua=function(e){return\"if(\"+e+\")return null;\"},ca={stop:\"$event.stopPropagation();\",prevent:\"$event.preventDefault();\",self:ua(\"$event.target !== $event.currentTarget\"),ctrl:ua(\"!$event.ctrlKey\"),shift:ua(\"!$event.shiftKey\"),alt:ua(\"!$event.altKey\"),meta:ua(\"!$event.metaKey\"),left:ua(\"'button' in $event && $event.button !== 0\"),middle:ua(\"'button' in $event && $event.button !== 1\"),right:ua(\"'button' in $event && $event.button !== 2\")};function la(e,t){var n=t?\"nativeOn:{\":\"on:{\";for(var r in e)n+='\"'+r+'\":'+fa(r,e[r])+\",\";return n.slice(0,-1)+\"}\"}function fa(e,t){if(!t)return\"function(){}\";if(Array.isArray(t))return\"[\"+t.map(function(t){return fa(e,t)}).join(\",\")+\"]\";var n=oa.test(t.value),r=ia.test(t.value);if(t.modifiers){var i=\"\",o=\"\",a=[];for(var s in t.modifiers)if(ca[s])o+=ca[s],aa[s]&&a.push(s);else if(\"exact\"===s){var u=t.modifiers;o+=ua([\"ctrl\",\"shift\",\"alt\",\"meta\"].filter(function(e){return!u[e]}).map(function(e){return\"$event.\"+e+\"Key\"}).join(\"||\"))}else a.push(s);return a.length&&(i+=function(e){return\"if(!('button' in $event)&&\"+e.map(pa).join(\"&&\")+\")return null;\"}(a)),o&&(i+=o),\"function($event){\"+i+(n?\"return \"+t.value+\"($event)\":r?\"return (\"+t.value+\")($event)\":t.value)+\"}\"}return n||r?t.value:\"function($event){\"+t.value+\"}\"}function pa(e){var t=parseInt(e,10);if(t)return\"$event.keyCode!==\"+t;var n=aa[e],r=sa[e];return\"_k($event.keyCode,\"+JSON.stringify(e)+\",\"+JSON.stringify(n)+\",$event.key,\"+JSON.stringify(r)+\")\"}var da={on:function(e,t){e.wrapListeners=function(e){return\"_g(\"+e+\",\"+t.value+\")\"}},bind:function(e,t){e.wrapData=function(n){return\"_b(\"+n+\",'\"+e.tag+\"',\"+t.value+\",\"+(t.modifiers&&t.modifiers.prop?\"true\":\"false\")+(t.modifiers&&t.modifiers.sync?\",true\":\"\")+\")\"}},cloak:k},ha=function(e){this.options=e,this.warn=e.warn||yr,this.transforms=_r(e.modules,\"transformCode\"),this.dataGenFns=_r(e.modules,\"genData\"),this.directives=D(D({},da),e.directives);var t=e.isReservedTag||N;this.maybeComponent=function(e){return!(t(e.tag)&&!e.component)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function va(e,t){var n=new ha(t);return{render:\"with(this){return \"+(e?ga(e,n):'_c(\"div\")')+\"}\",staticRenderFns:n.staticRenderFns}}function ga(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return ma(e,t);if(e.once&&!e.onceProcessed)return ya(e,t);if(e.for&&!e.forProcessed)return function(e,t,n,r){var i=e.for,o=e.alias,a=e.iterator1?\",\"+e.iterator1:\"\",s=e.iterator2?\",\"+e.iterator2:\"\";0;return e.forProcessed=!0,(r||\"_l\")+\"((\"+i+\"),function(\"+o+a+s+\"){return \"+(n||ga)(e,t)+\"})\"}(e,t);if(e.if&&!e.ifProcessed)return _a(e,t);if(\"template\"!==e.tag||e.slotTarget||t.pre){if(\"slot\"===e.tag)return function(e,t){var n=e.slotName||'\"default\"',r=Ta(e,t),i=\"_t(\"+n+(r?\",\"+r:\"\"),o=e.attrs&&\"{\"+e.attrs.map(function(e){return E(e.name)+\":\"+e.value}).join(\",\")+\"}\",a=e.attrsMap[\"v-bind\"];!o&&!a||r||(i+=\",null\");o&&(i+=\",\"+o);a&&(i+=(o?\"\":\",null\")+\",\"+a);return i+\")\"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:Ta(t,n,!0);return\"_c(\"+e+\",\"+ba(t,n)+(r?\",\"+r:\"\")+\")\"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=ba(e,t));var i=e.inlineTemplate?null:Ta(e,t,!0);n=\"_c('\"+e.tag+\"'\"+(r?\",\"+r:\"\")+(i?\",\"+i:\"\")+\")\"}for(var o=0;o<t.transforms.length;o++)n=t.transforms[o](e,n);return n}return Ta(e,t)||\"void 0\"}function ma(e,t){e.staticProcessed=!0;var n=t.pre;return e.pre&&(t.pre=e.pre),t.staticRenderFns.push(\"with(this){return \"+ga(e,t)+\"}\"),t.pre=n,\"_m(\"+(t.staticRenderFns.length-1)+(e.staticInFor?\",true\":\"\")+\")\"}function ya(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return _a(e,t);if(e.staticInFor){for(var n=\"\",r=e.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?\"_o(\"+ga(e,t)+\",\"+t.onceId+++\",\"+n+\")\":ga(e,t)}return ma(e,t)}function _a(e,t,n,r){return e.ifProcessed=!0,function e(t,n,r,i){if(!t.length)return i||\"_e()\";var o=t.shift();return o.exp?\"(\"+o.exp+\")?\"+a(o.block)+\":\"+e(t,n,r,i):\"\"+a(o.block);function a(e){return r?r(e,n):e.once?ya(e,n):ga(e,n)}}(e.ifConditions.slice(),t,n,r)}function ba(e,t){var n=\"{\",r=function(e,t){var n=e.directives;if(!n)return;var r,i,o,a,s=\"directives:[\",u=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var c=t.directives[o.name];c&&(a=!!c(e,o,t.warn)),a&&(u=!0,s+='{name:\"'+o.name+'\",rawName:\"'+o.rawName+'\"'+(o.value?\",value:(\"+o.value+\"),expression:\"+JSON.stringify(o.value):\"\")+(o.arg?',arg:\"'+o.arg+'\"':\"\")+(o.modifiers?\",modifiers:\"+JSON.stringify(o.modifiers):\"\")+\"},\")}if(u)return s.slice(0,-1)+\"]\"}(e,t);r&&(n+=r+\",\"),e.key&&(n+=\"key:\"+e.key+\",\"),e.ref&&(n+=\"ref:\"+e.ref+\",\"),e.refInFor&&(n+=\"refInFor:true,\"),e.pre&&(n+=\"pre:true,\"),e.component&&(n+='tag:\"'+e.tag+'\",');for(var i=0;i<t.dataGenFns.length;i++)n+=t.dataGenFns[i](e);if(e.attrs&&(n+=\"attrs:{\"+Ca(e.attrs)+\"},\"),e.props&&(n+=\"domProps:{\"+Ca(e.props)+\"},\"),e.events&&(n+=la(e.events,!1)+\",\"),e.nativeEvents&&(n+=la(e.nativeEvents,!0)+\",\"),e.slotTarget&&!e.slotScope&&(n+=\"slot:\"+e.slotTarget+\",\"),e.scopedSlots&&(n+=function(e,t){return\"scopedSlots:_u([\"+Object.keys(e).map(function(n){return wa(n,e[n],t)}).join(\",\")+\"])\"}(e.scopedSlots,t)+\",\"),e.model&&(n+=\"model:{value:\"+e.model.value+\",callback:\"+e.model.callback+\",expression:\"+e.model.expression+\"},\"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];0;if(1===n.type){var r=va(n,t.options);return\"inlineTemplate:{render:function(){\"+r.render+\"},staticRenderFns:[\"+r.staticRenderFns.map(function(e){return\"function(){\"+e+\"}\"}).join(\",\")+\"]}\"}}(e,t);o&&(n+=o+\",\")}return n=n.replace(/,$/,\"\")+\"}\",e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function wa(e,t,n){return t.for&&!t.forProcessed?function(e,t,n){var r=t.for,i=t.alias,o=t.iterator1?\",\"+t.iterator1:\"\",a=t.iterator2?\",\"+t.iterator2:\"\";return t.forProcessed=!0,\"_l((\"+r+\"),function(\"+i+o+a+\"){return \"+wa(e,t,n)+\"})\"}(e,t,n):\"{key:\"+e+\",fn:\"+(\"function(\"+String(t.slotScope)+\"){return \"+(\"template\"===t.tag?t.if?\"(\"+t.if+\")?\"+(Ta(t,n)||\"undefined\")+\":undefined\":Ta(t,n)||\"undefined\":ga(t,n))+\"}\")+\"}\"}function Ta(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&\"template\"!==a.tag&&\"slot\"!==a.tag){var s=n?t.maybeComponent(a)?\",1\":\",0\":\"\";return\"\"+(r||ga)(a,t)+s}var u=n?function(e,t){for(var n=0,r=0;r<e.length;r++){var i=e[r];if(1===i.type){if(Ea(i)||i.ifConditions&&i.ifConditions.some(function(e){return Ea(e.block)})){n=2;break}(t(i)||i.ifConditions&&i.ifConditions.some(function(e){return t(e.block)}))&&(n=1)}}return n}(o,t.maybeComponent):0,c=i||xa;return\"[\"+o.map(function(e){return c(e,t)}).join(\",\")+\"]\"+(u?\",\"+u:\"\")}}function Ea(e){return void 0!==e.for||\"template\"===e.tag||\"slot\"===e.tag}function xa(e,t){return 1===e.type?ga(e,t):3===e.type&&e.isComment?(r=e,\"_e(\"+JSON.stringify(r.text)+\")\"):\"_v(\"+(2===(n=e).type?n.expression:Aa(JSON.stringify(n.text)))+\")\";var n,r}function Ca(e){for(var t=\"\",n=0;n<e.length;n++){var r=e[n];t+='\"'+r.name+'\":'+Aa(r.value)+\",\"}return t.slice(0,-1)}function Aa(e){return e.replace(/\\u2028/g,\"\\\\u2028\").replace(/\\u2029/g,\"\\\\u2029\")}new RegExp(\"\\\\b\"+\"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments\".split(\",\").join(\"\\\\b|\\\\b\")+\"\\\\b\"),new RegExp(\"\\\\b\"+\"delete,typeof,void\".split(\",\").join(\"\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b\")+\"\\\\s*\\\\([^\\\\)]*\\\\)\");function Sa(e,t){try{return new Function(e)}catch(n){return t.push({err:n,code:e}),k}}function Oa(e){var t=Object.create(null);return function(n,r,i){(r=D({},r)).warn;delete r.warn;var o=r.delimiters?String(r.delimiters)+n:n;if(t[o])return t[o];var a=e(n,r);var s={},u=[];return s.render=Sa(a.render,u),s.staticRenderFns=a.staticRenderFns.map(function(e){return Sa(e,u)}),t[o]=s}}var Da,Ia,ka=(Da=function(e,t){var n=Bo(e.trim(),t);!1!==t.optimize&&ra(n,t);var r=va(n,t);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}},function(e){function t(t,n){var r=Object.create(e),i=[],o=[];if(r.warn=function(e,t){(t?o:i).push(e)},n)for(var a in n.modules&&(r.modules=(e.modules||[]).concat(n.modules)),n.directives&&(r.directives=D(Object.create(e.directives||null),n.directives)),n)\"modules\"!==a&&\"directives\"!==a&&(r[a]=n[a]);var s=Da(t,r);return s.errors=i,s.tips=o,s}return{compile:t,compileToFunctions:Oa(t)}})(ta),Na=(ka.compile,ka.compileToFunctions);function La(e){return(Ia=Ia||document.createElement(\"div\")).innerHTML=e?'<a href=\"\\n\"/>':'<div a=\"\\n\"/>',Ia.innerHTML.indexOf(\"&#10;\")>0}var ja=!!V&&La(!1),Pa=!!V&&La(!0),Ra=w(function(e){var t=qn(e);return t&&t.innerHTML}),$a=hn.prototype.$mount;hn.prototype.$mount=function(e,t){if((e=e&&qn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if(\"string\"==typeof r)\"#\"===r.charAt(0)&&(r=Ra(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement(\"div\");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){0;var i=Na(r,{shouldDecodeNewlines:ja,shouldDecodeNewlinesForHref:Pa,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return $a.call(this,e,t)},hn.compile=Na,e.exports=hn}).call(this,n(1),n(37).setImmediate)},function(e,t,n){(function(e){var r=void 0!==e&&e||\"undefined\"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(38),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(1))},function(e,t,n){(function(e,t){!function(e,n){\"use strict\";if(!e.setImmediate){var r,i,o,a,s,u=1,c={},l=!1,f=e.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(e);p=p&&p.setTimeout?p:e,\"[object process]\"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){h(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){h(e.data)},r=function(e){o.port2.postMessage(e)}):f&&\"onreadystatechange\"in f.createElement(\"script\")?(i=f.documentElement,r=function(e){var t=f.createElement(\"script\");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(h,0,e)}:(a=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(a)&&h(+t.data.slice(a.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),r=function(t){e.postMessage(a+t,\"*\")}),p.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var i={callback:e,args:t};return c[u]=i,r(u),u++},p.clearImmediate=d}function d(e){delete c[e]}function h(e){if(l)setTimeout(h,0,e);else{var t=c[e];if(t){l=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{d(e),l=!1}}}}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,n(1),n(6))},function(e,t,n){\"use strict\";n.r(t);var r=function(e,t,n,r,i,o,a,s){var u,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),o&&(c._scopeId=\"data-v-\"+o),a?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=u):i&&(u=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),u)if(c.functional){c._injectStyles=u;var l=c.render;c.render=function(e,t){return u.call(t),l(e,t)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,u):[u]}return{exports:e,options:c}}({mounted:function(){console.log(\"Component mounted.\")}},function(){this.$createElement;this._self._c;return this._m(0)},[function(){var e=this.$createElement,t=this._self._c||e;return t(\"div\",{staticClass:\"container\"},[t(\"div\",{staticClass:\"row justify-content-center\"},[t(\"div\",{staticClass:\"col-md-8\"},[t(\"div\",{staticClass:\"card\"},[t(\"div\",{staticClass:\"card-header\"},[this._v(\"Example Component\")]),this._v(\" \"),t(\"div\",{staticClass:\"card-body\"},[this._v(\"\\n                    I'm an example component.\\n                \")])])])])])}],!1,null,null,null);r.options.__file=\"ExampleComponent.vue\";t.default=r.exports},function(e,t){}]);\n"
  },
  {
    "path": "public/robots.txt",
    "content": "User-agent: *\nDisallow:\n"
  },
  {
    "path": "resources/js/app.js",
    "content": "\n/**\n * First we will load all of this project's JavaScript dependencies which\n * includes Vue and other libraries. It is a great starting point when\n * building robust, powerful web applications using Vue and Laravel.\n */\n\nrequire('./bootstrap');\n\nwindow.Vue = require('vue');\n\n/**\n * The following block of code may be used to automatically register your\n * Vue components. It will recursively scan this directory for the Vue\n * components and automatically register them with their \"basename\".\n *\n * Eg. ./components/ExampleComponent.vue -> <example-component></example-component>\n */\n\n// const files = require.context('./', true, /\\.vue$/i);\n// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default));\n\nVue.component('example-component', require('./components/ExampleComponent.vue').default);\n\n/**\n * Next, we will create a fresh Vue application instance and attach it to\n * the page. Then, you may begin adding components to this application\n * or customize the JavaScript scaffolding to fit your unique needs.\n */\n\nconst app = new Vue({\n    el: '#app'\n});\n"
  },
  {
    "path": "resources/js/bootstrap.js",
    "content": "\nwindow._ = require('lodash');\n\n/**\n * We'll load jQuery and the Bootstrap jQuery plugin which provides support\n * for JavaScript based Bootstrap features such as modals and tabs. This\n * code may be modified to fit the specific needs of your application.\n */\n\ntry {\n    window.Popper = require('popper.js').default;\n    window.$ = window.jQuery = require('jquery');\n\n    require('bootstrap');\n} catch (e) {}\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n */\n\nwindow.axios = require('axios');\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n/**\n * Next we will register the CSRF Token as a common header with Axios so that\n * all outgoing HTTP requests automatically have it attached. This is just\n * a simple convenience so we don't have to attach every token manually.\n */\n\nlet token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n} else {\n    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from 'laravel-echo'\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n//     broadcaster: 'pusher',\n//     key: process.env.MIX_PUSHER_APP_KEY,\n//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n//     encrypted: true\n// });\n"
  },
  {
    "path": "resources/js/components/ExampleComponent.vue",
    "content": "<template>\n    <div class=\"container\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-md-8\">\n                <div class=\"card\">\n                    <div class=\"card-header\">Example Component</div>\n\n                    <div class=\"card-body\">\n                        I'm an example component.\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script>\n    export default {\n        mounted() {\n            console.log('Component mounted.')\n        }\n    }\n</script>\n"
  },
  {
    "path": "resources/lang/en/auth.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used during authentication for various\n    | messages that we need to display to the user. You are free to modify\n    | these language lines according to your application's requirements.\n    |\n    */\n\n    'failed' => 'These credentials do not match our records.',\n    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',\n\n];\n"
  },
  {
    "path": "resources/lang/en/pagination.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Pagination Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used by the paginator library to build\n    | the simple pagination links. You are free to change them to anything\n    | you want to customize your views to better match your application.\n    |\n    */\n\n    'previous' => '&laquo; Previous',\n    'next' => 'Next &raquo;',\n\n];\n"
  },
  {
    "path": "resources/lang/en/passwords.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Password Reset Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are the default lines which match reasons\n    | that are given by the password broker for a password update attempt\n    | has failed, such as for an invalid token or invalid new password.\n    |\n    */\n\n    'password' => 'Passwords must be at least eight characters and match the confirmation.',\n    'reset' => 'Your password has been reset!',\n    'sent' => 'We have e-mailed your password reset link!',\n    'token' => 'This password reset token is invalid.',\n    'user' => \"We can't find a user with that e-mail address.\",\n\n];\n"
  },
  {
    "path": "resources/lang/en/validation.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Validation Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines contain the default error messages used by\n    | the validator class. Some of these rules have multiple versions such\n    | as the size rules. Feel free to tweak each of these messages here.\n    |\n    */\n\n    'accepted' => 'The :attribute must be accepted.',\n    'active_url' => 'The :attribute is not a valid URL.',\n    'after' => 'The :attribute must be a date after :date.',\n    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',\n    'alpha' => 'The :attribute may only contain letters.',\n    'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',\n    'alpha_num' => 'The :attribute may only contain letters and numbers.',\n    'array' => 'The :attribute must be an array.',\n    'before' => 'The :attribute must be a date before :date.',\n    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',\n    'between' => [\n        'numeric' => 'The :attribute must be between :min and :max.',\n        'file' => 'The :attribute must be between :min and :max kilobytes.',\n        'string' => 'The :attribute must be between :min and :max characters.',\n        'array' => 'The :attribute must have between :min and :max items.',\n    ],\n    'boolean' => 'The :attribute field must be true or false.',\n    'confirmed' => 'The :attribute confirmation does not match.',\n    'date' => 'The :attribute is not a valid date.',\n    'date_equals' => 'The :attribute must be a date equal to :date.',\n    'date_format' => 'The :attribute does not match the format :format.',\n    'different' => 'The :attribute and :other must be different.',\n    'digits' => 'The :attribute must be :digits digits.',\n    'digits_between' => 'The :attribute must be between :min and :max digits.',\n    'dimensions' => 'The :attribute has invalid image dimensions.',\n    'distinct' => 'The :attribute field has a duplicate value.',\n    'email' => 'The :attribute must be a valid email address.',\n    'exists' => 'The selected :attribute is invalid.',\n    'file' => 'The :attribute must be a file.',\n    'filled' => 'The :attribute field must have a value.',\n    'gt' => [\n        'numeric' => 'The :attribute must be greater than :value.',\n        'file' => 'The :attribute must be greater than :value kilobytes.',\n        'string' => 'The :attribute must be greater than :value characters.',\n        'array' => 'The :attribute must have more than :value items.',\n    ],\n    'gte' => [\n        'numeric' => 'The :attribute must be greater than or equal :value.',\n        'file' => 'The :attribute must be greater than or equal :value kilobytes.',\n        'string' => 'The :attribute must be greater than or equal :value characters.',\n        'array' => 'The :attribute must have :value items or more.',\n    ],\n    'image' => 'The :attribute must be an image.',\n    'in' => 'The selected :attribute is invalid.',\n    'in_array' => 'The :attribute field does not exist in :other.',\n    'integer' => 'The :attribute must be an integer.',\n    'ip' => 'The :attribute must be a valid IP address.',\n    'ipv4' => 'The :attribute must be a valid IPv4 address.',\n    'ipv6' => 'The :attribute must be a valid IPv6 address.',\n    'json' => 'The :attribute must be a valid JSON string.',\n    'lt' => [\n        'numeric' => 'The :attribute must be less than :value.',\n        'file' => 'The :attribute must be less than :value kilobytes.',\n        'string' => 'The :attribute must be less than :value characters.',\n        'array' => 'The :attribute must have less than :value items.',\n    ],\n    'lte' => [\n        'numeric' => 'The :attribute must be less than or equal :value.',\n        'file' => 'The :attribute must be less than or equal :value kilobytes.',\n        'string' => 'The :attribute must be less than or equal :value characters.',\n        'array' => 'The :attribute must not have more than :value items.',\n    ],\n    'max' => [\n        'numeric' => 'The :attribute may not be greater than :max.',\n        'file' => 'The :attribute may not be greater than :max kilobytes.',\n        'string' => 'The :attribute may not be greater than :max characters.',\n        'array' => 'The :attribute may not have more than :max items.',\n    ],\n    'mimes' => 'The :attribute must be a file of type: :values.',\n    'mimetypes' => 'The :attribute must be a file of type: :values.',\n    'min' => [\n        'numeric' => 'The :attribute must be at least :min.',\n        'file' => 'The :attribute must be at least :min kilobytes.',\n        'string' => 'The :attribute must be at least :min characters.',\n        'array' => 'The :attribute must have at least :min items.',\n    ],\n    'not_in' => 'The selected :attribute is invalid.',\n    'not_regex' => 'The :attribute format is invalid.',\n    'numeric' => 'The :attribute must be a number.',\n    'present' => 'The :attribute field must be present.',\n    'regex' => 'The :attribute format is invalid.',\n    'required' => 'The :attribute field is required.',\n    'required_if' => 'The :attribute field is required when :other is :value.',\n    'required_unless' => 'The :attribute field is required unless :other is in :values.',\n    'required_with' => 'The :attribute field is required when :values is present.',\n    'required_with_all' => 'The :attribute field is required when :values are present.',\n    'required_without' => 'The :attribute field is required when :values is not present.',\n    'required_without_all' => 'The :attribute field is required when none of :values are present.',\n    'same' => 'The :attribute and :other must match.',\n    'size' => [\n        'numeric' => 'The :attribute must be :size.',\n        'file' => 'The :attribute must be :size kilobytes.',\n        'string' => 'The :attribute must be :size characters.',\n        'array' => 'The :attribute must contain :size items.',\n    ],\n    'starts_with' => 'The :attribute must start with one of the following: :values',\n    'string' => 'The :attribute must be a string.',\n    'timezone' => 'The :attribute must be a valid zone.',\n    'unique' => 'The :attribute has already been taken.',\n    'uploaded' => 'The :attribute failed to upload.',\n    'url' => 'The :attribute format is invalid.',\n    'uuid' => 'The :attribute must be a valid UUID.',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Custom Validation Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify custom validation messages for attributes using the\n    | convention \"attribute.rule\" to name the lines. This makes it quick to\n    | specify a specific custom language line for a given attribute rule.\n    |\n    */\n\n    'custom' => [\n        'attribute-name' => [\n            'rule-name' => 'custom-message',\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Custom Validation Attributes\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used to swap our attribute placeholder\n    | with something more reader friendly such as \"E-Mail Address\" instead\n    | of \"email\". This simply helps us make our message more expressive.\n    |\n    */\n\n    'attributes' => [],\n\n];\n"
  },
  {
    "path": "resources/sass/_variables.scss",
    "content": "\n// Body\n$body-bg: #f8fafc;\n\n// Typography\n$font-family-sans-serif: \"Nunito\", sans-serif;\n$font-size-base: 0.9rem;\n$line-height-base: 1.6;\n\n// Colors\n$blue: #3490dc;\n$indigo: #6574cd;\n$purple: #9561e2;\n$pink: #f66D9b;\n$red: #e3342f;\n$orange: #f6993f;\n$yellow: #ffed4a;\n$green: #38c172;\n$teal: #4dc0b5;\n$cyan: #6cb2eb;\n"
  },
  {
    "path": "resources/sass/app.scss",
    "content": "\n// Fonts\n@import url('https://fonts.googleapis.com/css?family=Nunito');\n\n// Variables\n@import 'variables';\n\n// Bootstrap\n@import '~bootstrap/scss/bootstrap';\n\n.navbar-laravel {\n  background-color: #fff;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n}\n"
  },
  {
    "path": "resources/views/admin/auth/login.blade.php",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <!-- Tell the browser to be responsive to screen width -->\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta name=\"description\" content=\"\">\n    <meta name=\"author\" content=\"\">\n    <!-- Favicon icon -->\n    <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"{{asset('admin-panel/assets/images/favicon.png')}}\">\n    <title>Admin Dashboard</title>\n    <!-- Custom CSS -->\n    <link href=\"{{asset('admin-panel/dist/css/style.min.css')}}\" rel=\"stylesheet\">\n\n    <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n    <script src=\"https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js\"></script>\n    <![endif]-->\n</head>\n\n<body>\n<div class=\"main-wrapper\">\n    <div class=\"preloader\">\n        <div class=\"lds-ripple\">\n            <div class=\"lds-pos\"></div>\n            <div class=\"lds-pos\"></div>\n        </div>\n    </div>\n    <div class=\"auth-wrapper d-flex no-block justify-content-center align-items-center bg-dark\">\n        <div class=\"auth-box bg-dark border-top border-secondary\">\n            <div id=\"loginform\">\n                <div class=\"text-center p-t-20 p-b-20\">\n                    <span class=\"db\"><img src=\"{{asset('admin-panel/assets/images/logo.png')}}\" alt=\"logo\" /></span>\n                </div>\n                <!-- Form -->\n                {{--<form class=\"form-horizontal m-t-20\" id=\"loginform\" action=\"index.html\">--}}\n                    <form method=\"POST\" action=\"{{ route('login') }}\">\n                        @csrf\n                    <div class=\"row p-b-30\">\n                        <div class=\"col-12\">\n                            <div class=\"input-group mb-3\">\n                                <div class=\"input-group-prepend\">\n                                    <span class=\"input-group-text bg-success text-white\" id=\"basic-addon1\"><i class=\"ti-user\"></i></span>\n                                </div>\n                                <input type=\"email\" name=\"email\" class=\"form-control form-control-lg{{ $errors->has('email') ? ' is-invalid' : '' }}\" placeholder=\"Email\" aria-label=\"Username\" aria-describedby=\"basic-addon1\" required=\"\">\n                                @if ($errors->has('email'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('email') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                            <div class=\"input-group mb-3\">\n                                <div class=\"input-group-prepend\">\n                                    <span class=\"input-group-text bg-warning text-white\" id=\"basic-addon2\"><i class=\"ti-pencil\"></i></span>\n                                </div>\n                                <input type=\"password\" name=\"password\" class=\"form-control form-control-lg{{ $errors->has('password') ? ' is-invalid' : '' }}\" placeholder=\"Password\" aria-label=\"Password\" aria-describedby=\"basic-addon1\" required=\"\">\n                                @if ($errors->has('password'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('password') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row border-top border-secondary\">\n                        <div class=\"col-12\">\n                            <div class=\"form-group\">\n                                <div class=\"p-t-20\">\n                                    <button class=\"btn btn-info\" id=\"to-recover\" type=\"button\"><i class=\"fa fa-lock m-r-5\"></i> Lost password?</button>\n                                    <button class=\"btn btn-success float-right\" type=\"submit\">Login</button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </form>\n            </div>\n            <div id=\"recoverform\">\n                <div class=\"text-center\">\n                    <span class=\"text-white\">Enter your e-mail address below and we will send you instructions how to recover a password.</span>\n                </div>\n                <div class=\"row m-t-20\">\n                    <!-- Form -->\n                    <form class=\"col-12\" action=\"index.html\">\n                        <!-- email -->\n                        <div class=\"input-group mb-3\">\n                            <div class=\"input-group-prepend\">\n                                <span class=\"input-group-text bg-danger text-white\" id=\"basic-addon1\"><i class=\"ti-email\"></i></span>\n                            </div>\n                            <input type=\"text\" class=\"form-control form-control-lg\" placeholder=\"Email Address\" aria-label=\"Username\" aria-describedby=\"basic-addon1\">\n                        </div>\n                        <!-- pwd -->\n                        <div class=\"row m-t-20 p-t-20 border-top border-secondary\">\n                            <div class=\"col-12\">\n                                <a class=\"btn btn-success\" href=\"#\" id=\"to-login\" name=\"action\">Back To Login</a>\n                                <button class=\"btn btn-info float-right\" type=\"button\" name=\"action\">Recover</button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<script src=\"{{asset('admin-panel/assets/libs/jquery/dist/jquery.min.js')}}\"></script>\n<!-- Bootstrap tether Core JavaScript -->\n<script src=\"{{asset('admin-panel/assets/libs/popper.js/dist/umd/popper.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/bootstrap/dist/js/bootstrap.min.js')}}\"></script>\n\n<script>\n\n    $('[data-toggle=\"tooltip\"]').tooltip();\n    $(\".preloader\").fadeOut();\n\n    $('#to-recover').on(\"click\", function() {\n        $(\"#loginform\").slideUp();\n        $(\"#recoverform\").fadeIn();\n    });\n    $('#to-login').click(function(){\n\n        $(\"#recoverform\").hide();\n        $(\"#loginform\").fadeIn();\n    });\n</script>\n\n</body>\n\n</html>"
  },
  {
    "path": "resources/views/admin/calendar/addevent.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n\n        @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Add Event</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"#\">Event</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n\n            <div class=\"container-fluid\">\n                    <div class=\"jombotron\">\n                        <div class=\"row\">\n                            <div class=\"col-md-8 col-md-offset-2\">\n                                <div class=\"panel panel-default\">\n                                    {{--<div class=\"panel-heading\" style=\"backgroumd:#2e6da4; color: orangered;\">--}}\n                                        {{--Add event--}}\n                                    {{--</div>--}}\n                                    <div class=\"panel-body\">\n\n                                        <form method=\"post\" action=\"{{url('calendar/store')}}\">\n                                            @csrf\n                                            <div class=\"form-group\">\n                                                <label for=\"exampleInputEmail1\">Event name</label>\n                                                <input type=\"text\" class=\"form-control\" name=\"title\" placeholder=\"Enter event name\">\n                                            </div>\n                                            <div class=\"form-group\">\n                                                <label for=\"exampleInputEmail1\">Color</label>\n                                                <input type=\"color\" class=\"form-control\" name=\"color\">\n                                            </div>\n                                            <div class=\"form-group\">\n                                                <label>Start date</label>\n                                                <input type=\"datetime-local\" class=\"form-control\" name=\"start_date\" id=\"\">\n                                            </div>\n                                            <div class=\"form-group\">\n                                                <label>End date</label>\n                                                <input type=\"datetime-local\" class=\"form-control\" name=\"end_date\" id=\"\">\n                                            </div>\n                                            <button type=\"submit\" class=\"btn btn-primary\">Submit</button>\n                                        </form>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n            </div>\n\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/calendar/event.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n\n        @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"#\">Calendar</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n\n            <div class=\"container-fluid\">\n                <h4 class=\"page-title\">Calendar</h4>\n                    <div class=\"jumbotron\">\n                        <div class=\"row\">\n                            @can('isAdmin')\n                            <a href=\"{{url('calendar/add')}}\" class=\"btn btn-success\">Add events</a>\n                            @endcan\n                            {{--<a href=\"{{url('calendar/edit')}}\" class=\"btn btn-warning\">Edit events</a>--}}\n                            {{--<a href=\"#\" class=\"btn btn-danger\">Delete events</a>--}}\n                        </div><br>\n                        <div class=\"row\">\n                            <div class=\"col-md-8 col-md-offset-2\">\n                                <div class=\"panel panel-default\">\n                                    <div class=\"panel-heading\" style=\"background: #2e642e; color: white\">\n                                        Full calendar\n                                    </div>\n                                    <div class=\"panel-body\">\n                                        {!! $calendar->calendar() !!}\n                                        {!! $calendar->script() !!}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n            </div>\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n@endsection"
  },
  {
    "path": "resources/views/admin/city/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n            @if(session()->has('message'))\n                <div class=\"alert alert-success\">\n                    {{ session()->get('message') }}\n                </div>\n            @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">City</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('city')}}\">City</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('city.store')}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">City</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">City name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"city_name\" class=\"form-control\" id=\"fname\" placeholder=\"Enter a department name\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Zip code</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"zip_code\" class=\"form-control\" id=\"lname\" placeholder=\"Enter a department type\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Add</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/city/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">City</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('city')}}\">City</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('city.update',$city -> id)}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">City</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">City name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"city_name\" class=\"form-control\" id=\"fname\" value=\"{{$city -> city_name}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Zip code</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"zip_code\" class=\"form-control\" id=\"lname\" value=\"{{$city -> zip_code}}\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Update</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/city/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n    @include('admin.includes.sidebar')\n\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">City</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('city')}}\">City</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"container-fluid\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('city.create')}}\">Add city</a>\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Salary List</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N.</th>\n                                            <th>City</th>\n                                            <th>Zip</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($cities as $city)\n                                            <tr>\n                                                <td>{{$loop -> index+1 }}</td>\n                                                <td>{{$city->city_name}}</td>\n                                                <td>{{$city->zip_code}}</td>\n                                                <td>\n                                                    <form id=\"delete-form-{{$city->id}}\" action=\"{{route('city.delete',$city->id)}}\" method=\"put\">\n                                                        @csrf\n                                                        @method('DELETE')\n                                                        <a href=\"{{route('city.edit',$city->id)}}\" class=\"btn btn-sm btn-dark\">Edit</a>\n                                                        <button onclick=\"deletePost({{$city->id}})\" type=\"button\" class=\"btn btn-sm btn-danger\">Delete</button>\n                                                    </form>\n                                                </td>\n                                            </tr>\n                                        </tbody>\n                                        @endforeach\n                                    </table>\n                                    {{ $cities->links() }}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n            </div>\n\n            {{--sweetalert box for deleting start--}}\n            <script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@7.28.8/dist/sweetalert2.all.min.js\"></script>\n\n            <script type=\"text/javascript\">\n                function deletePost(id)\n\n                {\n                    const swalWithBootstrapButtons = swal.mixin({\n                        confirmButtonClass: 'btn btn-success',\n                        cancelButtonClass: 'btn btn-danger',\n                        buttonsStyling: false,\n                    })\n\n                    swalWithBootstrapButtons({\n                        title: 'Are you sure?',\n                        text: \"You won't be able to revert this!\",\n                        type: 'warning',\n                        showCancelButton: true,\n                        confirmButtonText: 'Yes, delete it!',\n                        cancelButtonText: 'No, cancel!',\n                        reverseButtons: true\n                    }).then((result) => {\n                        if (result.value) {\n                            event.preventDefault();\n                            document.getElementById('delete-form-'+id).submit();\n                        } else if (\n                            // Read more about handling dismissals\n                            result.dismiss === swal.DismissReason.cancel\n                        ) {\n                            swalWithBootstrapButtons(\n                                'Cancelled',\n                                'Your file is safe :)',\n                                'error'\n                            )\n                        }\n                    })\n                }\n\n            </script>\n            {{--sweetalert box for deleting end--}}\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n\n        </div>\n\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/dashboard/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div class=\"page-wrapper\">\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Dashboard</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\">Dashboard</li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n\n            <div class=\"row\">\n                <!-- Column -->\n                <div class=\"col-md-6 col-lg-4 col-xlg-3\">\n                    <div class=\"card card-hover\">\n                        <div class=\"box bg-success text-center\">\n                            <h1 class=\"font-light text-white\"><i class=\"mdi mdi-chart-areaspline\"></i></h1>\n                            <h5 class=\"m-b-0 m-t-5 text-white\">{{ $users->total() }}</h5>\n                            <h6 class=\"text-white\">Total employees</h6>\n                        </div>\n                    </div>\n                </div>\n                <!-- Column -->\n                <div class=\"col-md-6 col-lg-2 col-xlg-3\">\n                    <div class=\"card card-hover\">\n                        <div class=\"box bg-warning text-center\">\n                            <h1 class=\"font-light text-white\"><i class=\"mdi mdi-collage\"></i></h1>\n                            <h5 class=\"m-b-0 m-t-5 text-white\">25</h5>\n                            <h6 class=\"text-white\">Total leaves</h6>\n                        </div>\n                    </div>\n                </div>\n                <!-- Column -->\n                <div class=\"col-md-6 col-lg-2 col-xlg-3\">\n                    <div class=\"card card-hover\">\n                        <div class=\"box bg-danger text-center\">\n                            <h1 class=\"font-light text-white\"><i class=\"mdi mdi-border-outside\"></i></h1>\n                            <h5 class=\"m-b-0 m-t-5 text-white\">2</h5>\n                            <h6 class=\"text-white\">On leave</h6>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"col-md-6 col-lg-2 col-xlg-3\">\n                    <div class=\"card card-hover\">\n                        <div class=\"box bg-cyan text-center\">\n                            <h1 class=\"font-light text-white\"><i class=\"mdi mdi-view-dashboard\"></i></h1>\n                            <h5 class=\"m-b-0 m-t-5 text-white\">6</h5>\n                            <h6 class=\"text-white\">Designation</h6>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"card\">\n                        <div class=\"card-body\">\n                            <div class=\"d-md-flex align-items-center\">\n                                <div>\n                                    <h4 class=\"card-title\">Calendar</h4>\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                    <div class=\"col-lg-12\">\n                                        <div class=\"card-body b-l calender-sidebar\">\n                                            <div id=\"calendar\"></div>\n                                        </div>\n                                    </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n        </div>\n\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n\n    </div>\n\n@endsection\n\n@section('js')\n\n    <script src=\"{{asset('admin-panel/assets/libs/flot/excanvas.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.pie.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.time.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.stack.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.crosshair.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot.tooltip/js/jquery.flot.tooltip.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/pages/chart/chart-page-init.js')}}\"></script>\n\n    <script src=\"{{asset('admin-panel/assets/libs/jquery/dist/jquery.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/jquery-ui.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/bootstrap/dist/js/bootstrap.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/custom.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/moment/min/moment.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/fullcalendar/dist/fullcalendar.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/pages/calendar/cal-init.js')}}\"></script>\n\n    @endsection\n"
  },
  {
    "path": "resources/views/admin/department/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">System Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('employee')}}\">Department</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n            <div class=\"container-fluid\">\n\n                <div class=\"row\">\n                    <div class=\"col-md-10\">\n                        <div class=\"card\">\n                            <form action=\"{{route('department.store')}}\" method=\"post\" class=\"form-horizontal\">\n                                @csrf\n                                <div class=\"card-body\">\n                                    <h4 class=\"card-title\">Department</h4>\n                                    <div class=\"form-group row\">\n                                        <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Department Name</label>\n                                        <div class=\"col-sm-9\">\n                                            <input type=\"text\" name=\"department_name\" class=\"form-control\" id=\"fname\" placeholder=\"Enter a department name\">\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"border-top\">\n                                    <div class=\"card-body\">\n                                        <button type=\"submit\" class=\"btn btn-dark\">Add</button>\n                                    </div>\n                                </div>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n\n            </div>\n\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/department/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">System Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('employee')}}\">Department</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('department.update',$department->id)}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Department</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Department Name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"department_name\" class=\"form-control\" id=\"fname\" value=\"{{$department->department_name}}\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Update</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/department/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n\n    @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Employee Management</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('employee')}}\">Employee</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n\n            <div class=\"container-fluid\">\n\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('department.create')}}\">Add department</a>\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Employee List</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N.</th>\n                                            <th>Department name</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($departments as $department)\n                                        <tr>\n                                            <td>{{$loop -> index+1 }}</td>\n                                            <td>{{$department->department_name}}</td>\n                                            <td>\n                                                <form id=\"delete-form-{{ $department->id }}\" action=\"{{route('department.delete',$department->id)}}\" method=\"put\">\n                                                    @csrf\n                                                    @method('DELETE')\n                                                       <a href=\"{{route('department.edit',$department->id)}}\" class=\"btn btn-sm btn-dark\">Edit</a>\n                                                    <button type=\"button\" onclick=\"deletePost({{ $department->id }})\" class=\"btn btn-sm btn-danger\">Delete</button>\n                                                    {{--onclick=\"return confirm('Are you sure?')\"--}}\n                                                </form>\n                                            </td>\n                                        </tr>\n                                        </tbody>\n                                        @endforeach\n                                    </table>\n                                    {{ $departments->links() }}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                {{--sweetalert box for deleting start--}}\n                <script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@7.28.8/dist/sweetalert2.all.min.js\"></script>\n\n                <script type=\"text/javascript\">\n                    function deletePost(id)\n\n                    {\n                        const swalWithBootstrapButtons = swal.mixin({\n                            confirmButtonClass: 'btn btn-success',\n                            cancelButtonClass: 'btn btn-danger',\n                            buttonsStyling: false,\n                        })\n\n                        swalWithBootstrapButtons({\n                            title: 'Are you sure?',\n                            text: \"You won't be able to revert this!\",\n                            type: 'warning',\n                            showCancelButton: true,\n                            confirmButtonText: 'Yes, delete it!',\n                            cancelButtonText: 'No, cancel!',\n                            reverseButtons: true\n                        }).then((result) => {\n                            if (result.value) {\n                                event.preventDefault();\n                                document.getElementById('delete-form-'+id).submit();\n                            } else if (\n                                // Read more about handling dismissals\n                                result.dismiss === swal.DismissReason.cancel\n                            ) {\n                                swalWithBootstrapButtons(\n                                    'Cancelled',\n                                    'Your file is safe :)',\n                                    'error'\n                                )\n                            }\n                        })\n                    }\n\n                </script>\n            {{--sweetalert box for deleting end--}}\n            </div>\n\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/designation/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">System Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('designation')}}\">Designation</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n            <div class=\"container-fluid\">\n                <div class=\"row\">\n                    <div class=\"col-md-10\">\n                        <div class=\"card\">\n                            <form action=\"{{route('designation.store')}}\" method=\"post\" class=\"form-horizontal\">\n                                @csrf\n                                <div class=\"card-body\">\n                                    <h4 class=\"card-title\">Designation</h4>\n                                    <div class=\"form-group row\">\n                                        <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Employee name</label>\n                                        <div class=\"col-sm-9\">\n                                            <select type=\"text\" name=\"employee_name\" class=\"form-control\" id=\"fname\" placeholder=\"Enter a salary amount\">\n                                                @foreach($users as $user)\n                                                    {{--<option value=\"{{$user->all}}\" {{ old('user') ? 'selected' : '' }}>{{$user->all()}}</option>--}}\n                                                    <option value=\"{{$user->id}}\" {{ old('user') ? 'selected' : '' }}>{{$user->username}}</option>\n                                                @endforeach\n                                            </select>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group row\">\n                                        <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Designation Name</label>\n                                        <div class=\"col-sm-9\">\n                                            <input type=\"text\" name=\"designation\" class=\"form-control\" id=\"fname\" placeholder=\"Enter a designation type\">\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"border-top\">\n                                    <div class=\"card-body\">\n                                        <button type=\"submit\" class=\"btn btn-dark\">Add</button>\n                                    </div>\n                                </div>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/designation/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">System Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('designation')}}\">Designation</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('designation.update',$designation->id)}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Designation</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Designation Name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"designation\" class=\"form-control\" id=\"fname\" value=\"{{$designation->designation_type}}\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Update</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/designation/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n\n    @include('admin.includes.sidebar')\n\n        <div class=\"page-wrapper\">\n\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Employee Management</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('designation')}}\">Designation</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n\n            <div class=\"container-fluid\">\n\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('designation.create')}}\">Add designation</a>\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Designation List</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N.</th>\n                                            <th>Employe name</th>\n                                            <th>Designation type</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($designations as $designation)\n                                        <tr>\n                                            <td>{{$loop -> index+1 }}</td>\n                                            <td>{{$designation ->userss->username }}</td>\n                                            <td>{{$designation->designation_type}}</td>\n                                            <td>\n                                                <form id=\"delete-form-{{$designation->id}}\" action=\"{{route('designation.delete',$designation->id)}}\" method=\"put\">\n                                                    @csrf\n                                                    @method('DELETE')\n                                                       <a href=\"{{route('designation.edit',$designation->id)}}\" class=\"btn btn-sm btn-dark\">Edit</a>\n                                                    <button type=\"button\" onclick=\"deletePost({{$designation->id}})\" class=\"btn btn-sm btn-danger\">Delete</button>\n                                                </form>\n                                            </td>\n                                        </tr>\n                                        </tbody>\n                                        @endforeach\n                                    </table>\n                                    {{ $designations->links() }}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n            </div>\n\n            {{--sweetalert box for deleting start--}}\n            <script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@7.28.8/dist/sweetalert2.all.min.js\"></script>\n\n            <script type=\"text/javascript\">\n                function deletePost(id)\n\n                {\n                    const swalWithBootstrapButtons = swal.mixin({\n                        confirmButtonClass: 'btn btn-success',\n                        cancelButtonClass: 'btn btn-danger',\n                        buttonsStyling: false,\n                    })\n\n                    swalWithBootstrapButtons({\n                        title: 'Are you sure?',\n                        text: \"You won't be able to revert this!\",\n                        type: 'warning',\n                        showCancelButton: true,\n                        confirmButtonText: 'Yes, delete it!',\n                        cancelButtonText: 'No, cancel!',\n                        reverseButtons: true\n                    }).then((result) => {\n                        if (result.value) {\n                            event.preventDefault();\n                            document.getElementById('delete-form-'+id).submit();\n                        } else if (\n                            // Read more about handling dismissals\n                            result.dismiss === swal.DismissReason.cancel\n                        ) {\n                            swalWithBootstrapButtons(\n                                'Cancelled',\n                                'Your file is safe :)',\n                                'error'\n                            )\n                        }\n                    })\n                }\n\n            </script>\n            {{--sweetalert box for deleting end--}}\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n\n        </div>\n\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/download/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n    @include('admin.includes.sidebar')\n\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                            {{--<h4 class=\"page-title\">Download form</h4>--}}\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('download')}}\">Download</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"box box-success\">\n\n                        <div class=\"panel bg-gradient\">\n                            <h2 class=\"text\" style=\"text-align:center\"> Notices </h2>\n                            <div class=\"mt40\">\n                                <div class=\"table-layout br-t\">\n                                    <div class=\"row\">\n                                        <div class=\"col-md-4\">\n\n                                            <h3> Forms  </h3><br />\n                                            <ul class=\"fs15 list-splitter mb30\">\n                                                <li>\n\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form1 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form2 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form3 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form4 </a></h4>\n                                                </li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"col-md-4\">\n                                            <h3> IT </h3><br />\n                                            <ul class=\"fs15 list-splitter mb30\" >\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download\"></i> Form5 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download\"></i> Form6 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download\"></i> Form7 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download\"></i> Form8 </a></h4>\n                                                </li>\n                                            </ul>\n                                        </div>\n                                        <div class=\"col-md-4\">\n                                            <h3> Asset </h3><br />\n                                            <ul class=\"fs15 list-splitter mb30\">\n                                                <li>\n\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form1 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form2 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form3 </a></h4>\n                                                </li>\n                                                <li>\n                                                    <h4><a class=\"link-unstyled\" href=\"#\" title=\"\">\n                                                            <i class=\"fa fa-cloud-download \"></i> Form4 </a></h4>\n                                                </li>\n                                            </ul>\n                                        </div>\n\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/employee/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Employee Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('employee')}}\">Employee</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('employee.store')}}\" method=\"post\" class=\"form-horizontal\" enctype=\"multipart/form-data\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Add Employee</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">First name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"fname\" class=\"form-control\" id=\"username\" placeholder=\"Enter a first name\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Last name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"lname\" class=\"form-control\" id=\"username\" placeholder=\"Enter a last name\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">File Upload</label>\n                                    <div class=\"col-md-9\">\n                                        <div class=\"custom-file\">\n                                            <input type=\"file\" name=\"image\" class=\"custom-file-input\">\n                                            <label class=\"custom-file-label\">Choose file...</label>\n                                            <div class=\"invalid-feedback\">Example invalid custom file feedback</div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Email</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"email\" class=\"form-control\" id=\"fname\" placeholder=\"Enter email address\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Phone number</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"phone\" class=\"form-control\" id=\"lname\" placeholder=\"Enter phone number\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Address</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"address\" class=\"form-control\" id=\"lname\" placeholder=\"Enter address\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Gender</label>\n                                    <div class=\"col-sm-9\">\n                                        <select type=\"text\" name=\"gender\" class=\"form-control\" id=\"lname\" placeholder=\"Gender\">\n                                            <option value=\"male\">Male</option>\n                                            <option value=\"female\">Female</option>\n                                            <option value=\"other\">Other</option>\n                                        </select>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Date of birth</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"date\" name=\"dob\" class=\"form-control\" id=\"lname\" placeholder=\"Date of birth\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Join date</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"date\" name=\"jdate\" class=\"form-control\" id=\"lname\" placeholder=\"Join date\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Job type</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"jtype\" class=\"form-control\" id=\"lname\" placeholder=\"Job type\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">City</label>\n                                    <div class=\"col-sm-9\">\n                                        <select type=\"text\" name=\"city\" class=\"form-control\" id=\"lname\" placeholder=\"City name\">\n                                            @foreach ($empcities as $empcity)\n                                                <option>{{$empcity->city_name}}</option>\n                                            @endforeach\n                                        </select>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Salary</label>\n                                    <div class=\"col-sm-9\">\n                                        <select type=\"text\" name=\"salary\" class=\"form-control\" id=\"lname\" placeholder=\"Salary\">\n                                            @foreach($salamounts as $salamount)\n                                                <option>{{$salamount -> salary_amount}}</option>\n                                            @endforeach\n                                        </select>\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Age</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"age\" class=\"form-control\" placeholder=\"Age\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Submit</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/employee/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Employee Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('employee')}}\">Employee</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('employee.update',$employee->id)}}\" method=\"post\" class=\"form-horizontal\" enctype=\"multipart/form-data\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Add Employee</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">First name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"fname\" class=\"form-control\" id=\"username\" value=\"{{$employee->first_name}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Last name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"lname\" class=\"form-control\" id=\"username\" value=\"{{$employee->last_name}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">File Upload</label>\n                                    <div class=\"col-md-9\">\n                                        <div class=\"custom-file\">\n                                            <input type=\"file\" name=\"image\" class=\"custom-file-input\" value=\"{{$employee->image}}\">\n                                            <label class=\"custom-file-label\">Choose file...</label>\n                                            <div class=\"invalid-feedback\">Example invalid custom file feedback</div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Email</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"email\" class=\"form-control\" id=\"fname\" value=\"{{$employee->email}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Phone number</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"phone\" class=\"form-control\" id=\"lname\" value=\"{{$employee->phone}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Address</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"address\" class=\"form-control\" id=\"lname\" value=\"{{$employee->address}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Gender</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"gender\" class=\"form-control\" id=\"lname\" value=\"gender\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Date of birth</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"date\" name=\"dob\" class=\"form-control\" id=\"lname\" value=\"{{$employee->dob}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Join date</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"date\" name=\"jdate\" class=\"form-control\" id=\"lname\" value=\"{{$employee->join_date}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Job type</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"jtype\" class=\"form-control\" id=\"lname\" value=\"{{$employee->job_type}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">City</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"city\" class=\"form-control\" id=\"lname\" value=\"{{$employee->city}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Salary</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"salary\" class=\"form-control\" id=\"lname\" value=\"{{$employee->salary}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Age</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"age\" class=\"form-control\" value=\"{{$employee->age}}\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Submit</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/employee/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n    @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Employee Management</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('employee')}}\">Employee</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"container-fluid\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('employee.create')}}\">Create</a>\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Employee List</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N</th>\n                                            <th>First name</th>\n                                            <th>Last name</th>\n                                            <th>Image</th>\n                                            <th>Email</th>\n                                            <th>Phone number</th>\n                                            <th>Address</th>\n                                            <th>Gender</th>\n                                            <th>Date of birth</th>\n                                            <th>Join date</th>\n                                            <th>Job type</th>\n                                            <th>City</th>\n                                            <th>Salary</th>\n                                            <th>Age</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($employees as $employee)\n                                            <tr>\n                                                <th>{{$loop->index+1}}</th>\n                                                <td>{{$employee -> first_name}}</td>\n                                                <td>{{$employee -> last_name}}</td>\n                                                <td><img src=\"{{ asset('uploads/gallery/' . $employee->image) }}\" width=\"80px\" height=\"80px\" alt=\"Image\"> </td>\n                                                <td>{{$employee -> email}}</td>\n                                                <td>{{$employee -> phone}}</td>\n                                                <td>{{$employee -> address}}</td>\n                                                <td>{{$employee -> gender}}</td>\n                                                <td>{{$employee -> dob}}</td>\n                                                <td>{{$employee -> join_date}}</td>\n                                                <td>{{$employee -> job_type}}</td>\n                                                <td>{{$employee -> city}}</td>\n                                                <td>{{$employee -> salary}}</td>\n                                                <td>{{$employee -> age}}</td>\n                                                <td>\n                                                    <form action=\"{{route('employee.delete',$employee->id)}}\" method=\"put\">\n                                                        @csrf\n                                                        @method('DELETE')\n                                                        <a href=\"{{route('employee.edit',$employee->id)}}\" class=\"btn btn-sm btn-dark\">Edit</a>\n                                                        <button type=\"submit\" class=\"btn btn-sm btn-danger\">Delete</button>\n                                                    </form>\n                                                </td>\n                                            </tr>\n                                        @endforeach\n                                        </tbody>\n                                    </table>\n                                    {{ $employees->links() }}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/event/event.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div class=\"page-wrapper\">\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Dashboard</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\">Dashboard</li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"card\">\n                        <div class=\"\">\n                            <div class=\"row\">\n                                <div class=\"col-lg-3 border-right p-r-0\">\n                                    <div class=\"card-body border-bottom\">\n                                        <h4 class=\"card-title m-t-10\">Drag & Drop Event</h4>\n                                    </div>\n                                    <div class=\"card-body\">\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div id=\"calendar-events\" class=\"\">\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-info\"><i class=\"fa fa-circle text-info m-r-10\"></i>Event</div>\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-success\"><i class=\"fa fa-circle text-success m-r-10\"></i>Event</div>\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-danger\"><i class=\"fa fa-circle text-danger m-r-10\"></i>Event</div>\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-warning\"><i class=\"fa fa-circle text-warning m-r-10\"></i>Event</div>\n                                                </div>\n                                                <!-- checkbox -->\n                                                <div class=\"custom-control custom-checkbox\">\n                                                    <input type=\"checkbox\" class=\"custom-control-input\" id=\"drop-remove\">\n                                                    <label class=\"custom-control-label\" for=\"drop-remove\">Remove after drop</label>\n                                                </div>\n                                                <a href=\"javascript:void(0)\" data-toggle=\"modal\" data-target=\"#add-new-event\" class=\"btn m-t-20 btn-info btn-block waves-effect waves-light\">\n                                                    <i class=\"ti-plus\"></i> Add New Event\n                                                </a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"col-lg-9\">\n                                    <div class=\"card-body b-l calender-sidebar\">\n                                        <div id=\"calendar\"></div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- BEGIN MODAL -->\n            <div class=\"modal none-border\" id=\"my-event\">\n                <div class=\"modal-dialog\">\n                    <div class=\"modal-content\">\n                        <div class=\"modal-header\">\n                            <h4 class=\"modal-title\"><strong>Add Event</strong></h4>\n                            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                        </div>\n                        <div class=\"modal-body\"></div>\n                        <div class=\"modal-footer\">\n                            <button type=\"button\" class=\"btn btn-secondary waves-effect\" data-dismiss=\"modal\">Close</button>\n                            <button type=\"button\" class=\"btn btn-success save-event waves-effect waves-light\">Create event</button>\n                            <button type=\"button\" class=\"btn btn-danger delete-event waves-effect waves-light\" data-dismiss=\"modal\">Delete</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- Modal Add Category -->\n            <div class=\"modal fade none-border\" id=\"add-new-event\">\n                <div class=\"modal-dialog\">\n                    <div class=\"modal-content\">\n                        <div class=\"modal-header\">\n                            <h4 class=\"modal-title\"><strong>Add</strong> Event</h4>\n                            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                        </div>\n                        <form action=\"{{route('event.store')}}\" method=\"post\">\n                            @csrf\n                        <div class=\"modal-body\">\n                                <div class=\"row\">\n                                    <div class=\"col-md-6\">\n                                        <label class=\"control-label\">Date</label>\n                                        <input class=\"form-control form-white\" name=\"date\" type=\"date\"/>\n                                    </div>\n                                    <div class=\"col-md-6\">\n                                        <label class=\"control-label\">Event Name</label>\n                                        <input class=\"form-control form-white\" name=\"event\" placeholder=\"Enter name\" type=\"text\"/>\n                                        <br>\n                                    </div>\n                                    <div class=\"col-md-12\">\n                                        <label class=\"control-label\">Description</label>\n                                        <input class=\"form-control form-white\" name=\"description\" placeholder=\"Enter description\" type=\"text\"/>\n                                    </div>\n                                </div>\n                                <div class=\"modal-footer\">\n                                    <button type=\"submit\" class=\"btn btn-danger waves-effect waves-light save-category\">Save</button>\n                                    <button type=\"button\" class=\"btn btn-secondary waves-effect\" data-dismiss=\"modal\">Close</button>\n                                </div>\n                             </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n\n        </div>\n\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\" target=\"_blank\">Khozinfo</a>.\n        </footer>\n\n    </div>\n\n@endsection\n\n@section('js')\n\n    <script src=\"{{asset('admin-panel/assets/libs/flot/excanvas.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.pie.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.time.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.stack.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot/jquery.flot.crosshair.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/flot.tooltip/js/jquery.flot.tooltip.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/pages/chart/chart-page-init.js')}}\"></script>\n\n    <script src=\"{{asset('admin-panel/assets/libs/jquery/dist/jquery.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/jquery-ui.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/bootstrap/dist/js/bootstrap.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/custom.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/moment/min/moment.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/assets/libs/fullcalendar/dist/fullcalendar.min.js')}}\"></script>\n    <script src=\"{{asset('admin-panel/dist/js/pages/calendar/cal-init.js')}}\"></script>\n\n@endsection\n"
  },
  {
    "path": "resources/views/admin/event/test.blade.php",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en\">\n\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <!-- Tell the browser to be responsive to screen width -->\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta name=\"description\" content=\"\">\n    <meta name=\"author\" content=\"\">\n    <!-- Favicon icon -->\n    <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"{{asset('admin-panel/assets/images/favicon.png')}}\">\n    <title>Matrix Template - The Ultimate Multipurpose admin template</title>\n    <!-- Custom CSS -->\n    <link href=\"{{asset('admin-panel/assets/libs/fullcalendar/dist/fullcalendar.min.css')}}\" rel=\"stylesheet\" />\n    <link href=\"{{asset('event')}}\" rel=\"stylesheet\" />\n    <link href=\"{{asset('admin-panel/dist/css/style.min.css')}}\" rel=\"stylesheet\">\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n    <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n    <script src=\"https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js\"></script>\n    <![endif]-->\n</head>\n\n<body>\n<!-- ============================================================== -->\n<!-- Preloader - style you can find in spinners.css -->\n<!-- ============================================================== -->\n<div class=\"preloader\">\n    <div class=\"lds-ripple\">\n        <div class=\"lds-pos\"></div>\n        <div class=\"lds-pos\"></div>\n    </div>\n</div>\n<!-- ============================================================== -->\n<!-- Main wrapper - style you can find in pages.scss -->\n<!-- ============================================================== -->\n<div id=\"main-wrapper\">\n    <!-- ============================================================== -->\n    <!-- Topbar header - style you can find in pages.scss -->\n    <!-- ============================================================== -->\n    <header class=\"topbar\" data-navbarbg=\"skin5\">\n        <nav class=\"navbar top-navbar navbar-expand-md navbar-dark\">\n            <div class=\"navbar-header\" data-logobg=\"skin5\">\n                <!-- This is for the sidebar toggle which is visible on mobile only -->\n                <a class=\"nav-toggler waves-effect waves-light d-block d-md-none\" href=\"javascript:void(0)\"><i class=\"ti-menu ti-close\"></i></a>\n                <!-- ============================================================== -->\n                <!-- Logo -->\n                <!-- ============================================================== -->\n                <a class=\"navbar-brand\" href=\"index.html\">\n                    <!-- Logo icon -->\n                    <b class=\"logo-icon p-l-10\">\n                        <!--You can put here icon as well // <i class=\"wi wi-sunset\"></i> //-->\n                        <!-- Dark Logo icon -->\n                        <img src=\"{{asset('admin-panel/assets/images/logo-icon.png')}}\" alt=\"homepage\" class=\"light-logo\" />\n\n                    </b>\n                    <!--End Logo icon -->\n                    <!-- Logo text -->\n                    <span class=\"logo-text\">\n                             <!-- dark Logo text -->\n                             <img src=\"{{asset('admin-panel/assets/images/logo-text.png')}}\" alt=\"homepage\" class=\"light-logo\" />\n\n                        </span>\n                    <!-- Logo icon -->\n                    <!-- <b class=\"logo-icon\"> -->\n                    <!--You can put here icon as well // <i class=\"wi wi-sunset\"></i> //-->\n                    <!-- Dark Logo icon -->\n                    <!-- <img src=\"assets/images/logo-text.png\" alt=\"homepage\" class=\"light-logo\" /> -->\n\n                    <!-- </b> -->\n                    <!--End Logo icon -->\n                </a>\n                <!-- ============================================================== -->\n                <!-- End Logo -->\n                <!-- ============================================================== -->\n                <!-- ============================================================== -->\n                <!-- Toggle which is visible on mobile only -->\n                <!-- ============================================================== -->\n                <a class=\"topbartoggler d-block d-md-none waves-effect waves-light\" href=\"javascript:void(0)\" data-toggle=\"collapse\" data-target=\"#navbarSupportedContent\" aria-controls=\"navbarSupportedContent\" aria-expanded=\"false\" aria-label=\"Toggle navigation\"><i class=\"ti-more\"></i></a>\n            </div>\n            <!-- ============================================================== -->\n            <!-- End Logo -->\n            <!-- ============================================================== -->\n            <div class=\"navbar-collapse collapse\" id=\"navbarSupportedContent\" data-navbarbg=\"skin5\">\n                <!-- ============================================================== -->\n                <!-- toggle and nav items -->\n                <!-- ============================================================== -->\n                <ul class=\"navbar-nav float-left mr-auto\">\n                    <li class=\"nav-item d-none d-md-block\"><a class=\"nav-link sidebartoggler waves-effect waves-light\" href=\"javascript:void(0)\" data-sidebartype=\"mini-sidebar\"><i class=\"mdi mdi-menu font-24\"></i></a></li>\n                    <!-- ============================================================== -->\n                    <!-- create new -->\n                    <!-- ============================================================== -->\n                    <li class=\"nav-item dropdown\">\n                        <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                            <span class=\"d-none d-md-block\">Create New <i class=\"fa fa-angle-down\"></i></span>\n                            <span class=\"d-block d-md-none\"><i class=\"fa fa-plus\"></i></span>\n                        </a>\n                        <div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdown\">\n                            <a class=\"dropdown-item\" href=\"#\">Action</a>\n                            <a class=\"dropdown-item\" href=\"#\">Another action</a>\n                            <div class=\"dropdown-divider\"></div>\n                            <a class=\"dropdown-item\" href=\"#\">Something else here</a>\n                        </div>\n                    </li>\n                    <!-- ============================================================== -->\n                    <!-- Search -->\n                    <!-- ============================================================== -->\n                    <li class=\"nav-item search-box\"> <a class=\"nav-link waves-effect waves-dark\" href=\"javascript:void(0)\"><i class=\"ti-search\"></i></a>\n                        <form class=\"app-search position-absolute\">\n                            <input type=\"text\" class=\"form-control\" placeholder=\"Search &amp; enter\"> <a class=\"srh-btn\"><i class=\"ti-close\"></i></a>\n                        </form>\n                    </li>\n                </ul>\n                <!-- ============================================================== -->\n                <!-- Right side toggle and nav items -->\n                <!-- ============================================================== -->\n                <ul class=\"navbar-nav float-right\">\n                    <!-- ============================================================== -->\n                    <!-- Comment -->\n                    <!-- ============================================================== -->\n                    <li class=\"nav-item dropdown\">\n                        <a class=\"nav-link dropdown-toggle waves-effect waves-dark\" href=\"\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"> <i class=\"mdi mdi-bell font-24\"></i>\n                        </a>\n                        <div class=\"dropdown-menu\" aria-labelledby=\"navbarDropdown\">\n                            <a class=\"dropdown-item\" href=\"#\">Action</a>\n                            <a class=\"dropdown-item\" href=\"#\">Another action</a>\n                            <div class=\"dropdown-divider\"></div>\n                            <a class=\"dropdown-item\" href=\"#\">Something else here</a>\n                        </div>\n                    </li>\n                    <!-- ============================================================== -->\n                    <!-- End Comment -->\n                    <!-- ============================================================== -->\n                    <!-- ============================================================== -->\n                    <!-- Messages -->\n                    <!-- ============================================================== -->\n                    <li class=\"nav-item dropdown\">\n                        <a class=\"nav-link dropdown-toggle waves-effect waves-dark\" href=\"\" id=\"2\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"> <i class=\"font-24 mdi mdi-comment-processing\"></i>\n                        </a>\n                        <div class=\"dropdown-menu dropdown-menu-right mailbox animated bounceInDown\" aria-labelledby=\"2\">\n                            <ul class=\"list-style-none\">\n                                <li>\n                                    <div class=\"\">\n                                        <!-- Message -->\n                                        <a href=\"javascript:void(0)\" class=\"link border-top\">\n                                            <div class=\"d-flex no-block align-items-center p-10\">\n                                                <span class=\"btn btn-success btn-circle\"><i class=\"ti-calendar\"></i></span>\n                                                <div class=\"m-l-10\">\n                                                    <h5 class=\"m-b-0\">Event today</h5>\n                                                    <span class=\"mail-desc\">Just a reminder that event</span>\n                                                </div>\n                                            </div>\n                                        </a>\n                                        <!-- Message -->\n                                        <a href=\"javascript:void(0)\" class=\"link border-top\">\n                                            <div class=\"d-flex no-block align-items-center p-10\">\n                                                <span class=\"btn btn-info btn-circle\"><i class=\"ti-settings\"></i></span>\n                                                <div class=\"m-l-10\">\n                                                    <h5 class=\"m-b-0\">Settings</h5>\n                                                    <span class=\"mail-desc\">You can customize this template</span>\n                                                </div>\n                                            </div>\n                                        </a>\n                                        <!-- Message -->\n                                        <a href=\"javascript:void(0)\" class=\"link border-top\">\n                                            <div class=\"d-flex no-block align-items-center p-10\">\n                                                <span class=\"btn btn-primary btn-circle\"><i class=\"ti-user\"></i></span>\n                                                <div class=\"m-l-10\">\n                                                    <h5 class=\"m-b-0\">Pavan kumar</h5>\n                                                    <span class=\"mail-desc\">Just see the my admin!</span>\n                                                </div>\n                                            </div>\n                                        </a>\n                                        <!-- Message -->\n                                        <a href=\"javascript:void(0)\" class=\"link border-top\">\n                                            <div class=\"d-flex no-block align-items-center p-10\">\n                                                <span class=\"btn btn-danger btn-circle\"><i class=\"fa fa-link\"></i></span>\n                                                <div class=\"m-l-10\">\n                                                    <h5 class=\"m-b-0\">Luanch Admin</h5>\n                                                    <span class=\"mail-desc\">Just see the my new admin!</span>\n                                                </div>\n                                            </div>\n                                        </a>\n                                    </div>\n                                </li>\n                            </ul>\n                        </div>\n                    </li>\n                    <!-- ============================================================== -->\n                    <!-- End Messages -->\n                    <!-- ============================================================== -->\n\n                    <!-- ============================================================== -->\n                    <!-- User profile and search -->\n                    <!-- ============================================================== -->\n                    <li class=\"nav-item dropdown\">\n                        <a class=\"nav-link dropdown-toggle text-muted waves-effect waves-dark pro-pic\" href=\"\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"><img src=\"{{asset('admin-panel/')}}assets/images/users/1.jpg\" alt=\"user\" class=\"rounded-circle\" width=\"31\"></a>\n                        <div class=\"dropdown-menu dropdown-menu-right user-dd animated\">\n                            <a class=\"dropdown-item\" href=\"javascript:void(0)\"><i class=\"ti-user m-r-5 m-l-5\"></i> My Profile</a>\n                            <a class=\"dropdown-item\" href=\"javascript:void(0)\"><i class=\"ti-wallet m-r-5 m-l-5\"></i> My Balance</a>\n                            <a class=\"dropdown-item\" href=\"javascript:void(0)\"><i class=\"ti-email m-r-5 m-l-5\"></i> Inbox</a>\n                            <div class=\"dropdown-divider\"></div>\n                            <a class=\"dropdown-item\" href=\"javascript:void(0)\"><i class=\"ti-settings m-r-5 m-l-5\"></i> Account Setting</a>\n                            <div class=\"dropdown-divider\"></div>\n                            <a class=\"dropdown-item\" href=\"javascript:void(0)\"><i class=\"fa fa-power-off m-r-5 m-l-5\"></i> Logout</a>\n                            <div class=\"dropdown-divider\"></div>\n                            <div class=\"p-l-30 p-10\"><a href=\"javascript:void(0)\" class=\"btn btn-sm btn-success btn-rounded\">View Profile</a></div>\n                        </div>\n                    </li>\n                    <!-- ============================================================== -->\n                    <!-- User profile and search -->\n                    <!-- ============================================================== -->\n                </ul>\n            </div>\n        </nav>\n    </header>\n    <!-- ============================================================== -->\n    <!-- End Topbar header -->\n    <!-- ============================================================== -->\n    <!-- ============================================================== -->\n    <!-- Left Sidebar - style you can find in sidebar.scss  -->\n    <!-- ============================================================== -->\n    <aside class=\"left-sidebar\" data-sidebarbg=\"skin5\">\n        <!-- Sidebar scroll-->\n        <div class=\"scroll-sidebar\">\n            <!-- Sidebar navigation-->\n            <nav class=\"sidebar-nav\">\n                <ul id=\"sidebarnav\" class=\"p-t-30\">\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"index.html\" aria-expanded=\"false\"><i class=\"mdi mdi-view-dashboard\"></i><span class=\"hide-menu\">Dashboard</span></a></li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"charts.html\" aria-expanded=\"false\"><i class=\"mdi mdi-chart-bar\"></i><span class=\"hide-menu\">Charts</span></a></li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"widgets.html\" aria-expanded=\"false\"><i class=\"mdi mdi-chart-bubble\"></i><span class=\"hide-menu\">Widgets</span></a></li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"tables.html\" aria-expanded=\"false\"><i class=\"mdi mdi-border-inside\"></i><span class=\"hide-menu\">Tables</span></a></li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"grid.html\" aria-expanded=\"false\"><i class=\"mdi mdi-blur-linear\"></i><span class=\"hide-menu\">Full Width</span></a></li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-receipt\"></i><span class=\"hide-menu\">Forms </span></a>\n                        <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                            <li class=\"sidebar-item\"><a href=\"form-basic.html\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Form Basic </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"form-wizard.html\" class=\"sidebar-link\"><i class=\"mdi mdi-note-plus\"></i><span class=\"hide-menu\"> Form Wizard </span></a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"pages-buttons.html\" aria-expanded=\"false\"><i class=\"mdi mdi-relative-scale\"></i><span class=\"hide-menu\">Buttons</span></a></li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-face\"></i><span class=\"hide-menu\">Icons </span></a>\n                        <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                            <li class=\"sidebar-item\"><a href=\"icon-material.html\" class=\"sidebar-link\"><i class=\"mdi mdi-emoticon\"></i><span class=\"hide-menu\"> Material Icons </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"icon-fontawesome.html\" class=\"sidebar-link\"><i class=\"mdi mdi-emoticon-cool\"></i><span class=\"hide-menu\"> Font Awesome Icons </span></a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"pages-elements.html\" aria-expanded=\"false\"><i class=\"mdi mdi-pencil\"></i><span class=\"hide-menu\">Elements</span></a></li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-move-resize-variant\"></i><span class=\"hide-menu\">Addons </span></a>\n                        <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                            <li class=\"sidebar-item\"><a href=\"index2.html\" class=\"sidebar-link\"><i class=\"mdi mdi-view-dashboard\"></i><span class=\"hide-menu\"> Dashboard-2 </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"pages-gallery.html\" class=\"sidebar-link\"><i class=\"mdi mdi-multiplication-box\"></i><span class=\"hide-menu\"> Gallery </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"pages-calendar.html\" class=\"sidebar-link\"><i class=\"mdi mdi-calendar-check\"></i><span class=\"hide-menu\"> Calendar </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"pages-invoice.html\" class=\"sidebar-link\"><i class=\"mdi mdi-bulletin-board\"></i><span class=\"hide-menu\"> Invoice </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"pages-chat.html\" class=\"sidebar-link\"><i class=\"mdi mdi-message-outline\"></i><span class=\"hide-menu\"> Chat Option </span></a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-account-key\"></i><span class=\"hide-menu\">Authentication </span></a>\n                        <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                            <li class=\"sidebar-item\"><a href=\"authentication-login.html\" class=\"sidebar-link\"><i class=\"mdi mdi-all-inclusive\"></i><span class=\"hide-menu\"> Login </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"authentication-register.html\" class=\"sidebar-link\"><i class=\"mdi mdi-all-inclusive\"></i><span class=\"hide-menu\"> Register </span></a></li>\n                        </ul>\n                    </li>\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-alert\"></i><span class=\"hide-menu\">Errors </span></a>\n                        <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                            <li class=\"sidebar-item\"><a href=\"error-403.html\" class=\"sidebar-link\"><i class=\"mdi mdi-alert-octagon\"></i><span class=\"hide-menu\"> Error 403 </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"error-404.html\" class=\"sidebar-link\"><i class=\"mdi mdi-alert-octagon\"></i><span class=\"hide-menu\"> Error 404 </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"error-405.html\" class=\"sidebar-link\"><i class=\"mdi mdi-alert-octagon\"></i><span class=\"hide-menu\"> Error 405 </span></a></li>\n                            <li class=\"sidebar-item\"><a href=\"error-500.html\" class=\"sidebar-link\"><i class=\"mdi mdi-alert-octagon\"></i><span class=\"hide-menu\"> Error 500 </span></a></li>\n                        </ul>\n                    </li>\n                </ul>\n            </nav>\n            <!-- End Sidebar navigation -->\n        </div>\n        <!-- End Sidebar scroll-->\n    </aside>\n    <!-- ============================================================== -->\n    <!-- End Left Sidebar - style you can find in sidebar.scss  -->\n    <!-- ============================================================== -->\n    <!-- ============================================================== -->\n    <!-- Page wrapper  -->\n    <!-- ============================================================== -->\n    <div class=\"page-wrapper\">\n        <!-- ============================================================== -->\n        <!-- Bread crumb and right sidebar toggle -->\n        <!-- ============================================================== -->\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Calendar</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"#\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\">Library</li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <!-- ============================================================== -->\n        <!-- End Bread crumb and right sidebar toggle -->\n        <!-- ============================================================== -->\n        <!-- ============================================================== -->\n        <!-- Container fluid  -->\n        <!-- ============================================================== -->\n        <div class=\"container-fluid\">\n            <!-- ============================================================== -->\n            <!-- Start Page Content -->\n            <!-- ============================================================== -->\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"card\">\n                        <div class=\"\">\n                            <div class=\"row\">\n                                <div class=\"col-lg-3 border-right p-r-0\">\n                                    <div class=\"card-body border-bottom\">\n                                        <h4 class=\"card-title m-t-10\">Drag & Drop Event</h4>\n                                    </div>\n                                    <div class=\"card-body\">\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div id=\"calendar-events\" class=\"\">\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-info\"><i class=\"fa fa-circle text-info m-r-10\"></i>Event One</div>\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-success\"><i class=\"fa fa-circle text-success m-r-10\"></i> Event Two</div>\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-danger\"><i class=\"fa fa-circle text-danger m-r-10\"></i>Event Three</div>\n                                                    <div class=\"calendar-events m-b-20\" data-class=\"bg-warning\"><i class=\"fa fa-circle text-warning m-r-10\"></i>Event Four</div>\n                                                </div>\n                                                <!-- checkbox -->\n                                                <div class=\"custom-control custom-checkbox\">\n                                                    <input type=\"checkbox\" class=\"custom-control-input\" id=\"drop-remove\">\n                                                    <label class=\"custom-control-label\" for=\"drop-remove\">Remove after drop</label>\n                                                </div>\n                                                <a href=\"javascript:void(0)\" data-toggle=\"modal\" data-target=\"#add-new-event\" class=\"btn m-t-20 btn-info btn-block waves-effect waves-light\">\n                                                    <i class=\"ti-plus\"></i> Add New Event\n                                                </a>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"col-lg-9\">\n                                    <div class=\"card-body b-l calender-sidebar\">\n                                        <div id=\"calendar\"></div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- BEGIN MODAL -->\n            <div class=\"modal none-border\" id=\"my-event\">\n                <div class=\"modal-dialog\">\n                    <div class=\"modal-content\">\n                        <div class=\"modal-header\">\n                            <h4 class=\"modal-title\"><strong>Add Event</strong></h4>\n                            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                        </div>\n                        <div class=\"modal-body\"></div>\n                        <div class=\"modal-footer\">\n                            <button type=\"button\" class=\"btn btn-secondary waves-effect\" data-dismiss=\"modal\">Close</button>\n                            <button type=\"button\" class=\"btn btn-success save-event waves-effect waves-light\">Create event</button>\n                            <button type=\"button\" class=\"btn btn-danger delete-event waves-effect waves-light\" data-dismiss=\"modal\">Delete</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- Modal Add Category -->\n            <div class=\"modal fade none-border\" id=\"add-new-event\">\n                <div class=\"modal-dialog\">\n                    <div class=\"modal-content\">\n                        <div class=\"modal-header\">\n                            <h4 class=\"modal-title\"><strong>Add</strong> a category</h4>\n                            <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                        </div>\n                        <div class=\"modal-body\">\n                            <form>\n                                <div class=\"row\">\n                                    <div class=\"col-md-6\">\n                                        <label class=\"control-label\">Category Name</label>\n                                        <input class=\"form-control form-white\" placeholder=\"Enter name\" type=\"text\" name=\"category-name\" />\n                                    </div>\n                                    <div class=\"col-md-6\">\n                                        <label class=\"control-label\">Choose Category Color</label>\n                                        <select class=\"form-control form-white\" data-placeholder=\"Choose a color...\" name=\"category-color\">\n                                            <option value=\"success\">Success</option>\n                                            <option value=\"danger\">Danger</option>\n                                            <option value=\"info\">Info</option>\n                                            <option value=\"primary\">Primary</option>\n                                            <option value=\"warning\">Warning</option>\n                                            <option value=\"inverse\">Inverse</option>\n                                        </select>\n                                    </div>\n                                </div>\n                            </form>\n                        </div>\n                        <div class=\"modal-footer\">\n                            <button type=\"button\" class=\"btn btn-danger waves-effect waves-light save-category\" data-dismiss=\"modal\">Save</button>\n                            <button type=\"button\" class=\"btn btn-secondary waves-effect\" data-dismiss=\"modal\">Close</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- END MODAL -->\n            <!-- ============================================================== -->\n            <!-- End PAge Content -->\n            <!-- ============================================================== -->\n        </div>\n        <!-- ============================================================== -->\n        <!-- End Container fluid  -->\n        <!-- ============================================================== -->\n        <!-- ============================================================== -->\n        <!-- footer -->\n        <!-- ============================================================== -->\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Matrix-admin. Designed and Developed by <a href=\"https://wrappixel.com\">WrapPixel</a>.\n        </footer>\n        <!-- ============================================================== -->\n        <!-- End footer -->\n        <!-- ============================================================== -->\n    </div>\n    <!-- ============================================================== -->\n    <!-- End Page wrapper  -->\n    <!-- ============================================================== -->\n</div>\n<!-- ============================================================== -->\n<!-- End Wrapper -->\n<!-- ============================================================== -->\n<!-- ============================================================== -->\n<!-- All Jquery -->\n<!-- ============================================================== -->\n<script src=\"{{asset('admin-panel/assets/libs/jquery/dist/jquery.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/dist/js/jquery-ui.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/bootstrap/dist/js/bootstrap.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/dist/js/custom.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/moment/min/moment.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/fullcalendar/dist/fullcalendar.min.js')}}\"></script>\n<script src=\"{{asset('event')}}\"></script>\n</body>\n\n</html>"
  },
  {
    "path": "resources/views/admin/includes/head.blade.php",
    "content": "\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <!-- Tell the browser to be responsive to screen width -->\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta name=\"description\" content=\"\">\n    <meta name=\"author\" content=\"\">\n    <!-- Favicon icon -->\n    <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"{{asset('admin-panel/assets/images/favicon.png')}}\">\n    <title>Admin Dashboard - Employment management system</title>\n    <!-- Custom CSS -->\n    <link href=\"{{asset('admin-panel/assets/libs/flot/css/float-chart.css')}}\" rel=\"stylesheet\">\n\n    <link href=\"{{asset('admin-panel/assets/libs/fullcalendar/dist/fullcalendar.min.css')}}\" rel=\"stylesheet\" />\n    <link href=\"{{asset('admin-panel/assets/extra-libs/calendar/calendar.css')}}\" rel=\"stylesheet\" />\n    <!-- Custom CSS -->\n    <link href=\"{{asset('admin-panel/dist/css/style.min.css')}}\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/buttons/1.5.2/css/buttons.dataTables.min.css\">\n    <script src=\"{{asset('admin-panel/assets/libs/jquery/dist/jquery.min.js')}}\"></script>\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>-->\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css\" />\n\n    <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css\">\n\n\n    <script src=\"//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js\"></script>\n    <script src=\"//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js\"></script>\n    <script src=\"//cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.2.7/fullcalendar.min.js\"></script>\n    {{--<link rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.2.7/fullcalendar.min.css\"/>--}}\n\n\n    <link rel=\"stylesheet\" href=\"http://cdn.bootcss.com/toastr.js/latest/css/toastr.min.css\">\n\n"
  },
  {
    "path": "resources/views/admin/includes/navigation.blade.php",
    "content": "<header class=\"topbar\" data-navbarbg=\"skin5\">\n    <nav class=\"navbar top-navbar navbar-expand-md navbar-dark\">\n        <div class=\"navbar-header\" data-logobg=\"skin5\">\n            <!-- This is for the sidebar toggle which is visible on mobile only -->\n            <a class=\"nav-toggler waves-effect waves-light d-block d-md-none\" href=\"javascript:void(0)\"><i class=\"ti-menu ti-close\"></i></a>\n\n            <a class=\"navbar-brand\" href=\"{{route('dashboard')}}\">\n                <b class=\"logo-icon p-l-10\">\n                    <img src=\"{{asset('admin-panel/assets/images/logo-icon.png')}}\" alt=\"homepage\" class=\"light-logo\" />\n                </b>\n                <span class=\"logo-text\">\n                             <!-- dark Logo text -->\n                             <img src=\"{{asset('admin-panel/assets/images/logo-text.png')}}\" alt=\"homepage\" class=\"light-logo\" />\n\n                        </span>\n            </a>\n            <a class=\"topbartoggler d-block d-md-none waves-effect waves-light\" href=\"javascript:void(0)\" data-toggle=\"collapse\" data-target=\"#navbarSupportedContent\" aria-controls=\"navbarSupportedContent\" aria-expanded=\"false\" aria-label=\"Toggle navigation\"><i class=\"ti-more\"></i></a>\n        </div>\n\n        <div class=\"navbar-collapse collapse\" id=\"navbarSupportedContent\" data-navbarbg=\"skin5\">\n            <ul class=\"navbar-nav float-left mr-auto\">\n                <li class=\"nav-item d-none d-md-block\"><a class=\"nav-link sidebartoggler waves-effect waves-light\" href=\"javascript:void(0)\" data-sidebartype=\"mini-sidebar\"><i class=\"mdi mdi-menu font-24\"></i></a></li>\n                <li class=\"nav-item search-box\"> <a class=\"nav-link waves-effect waves-dark\" href=\"javascript:void(0)\"><i class=\"ti-search\"></i></a>\n                    <form class=\"app-search position-absolute\">\n                        <input type=\"text\" class=\"form-control\" placeholder=\"Search &amp; enter\"> <a class=\"srh-btn\"><i class=\"ti-close\"></i></a>\n                    </form>\n                </li>\n            </ul>\n            <ul class=\"navbar-nav float-right\">\n                <li class=\"nav-item dropdown\">\n                    <a class=\"nav-link dropdown-toggle waves-effect waves-dark\" href=\"\" id=\"2\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"> <i class=\"font-24 mdi mdi-comment-processing\"></i>\n                    </a>\n                    <div class=\"dropdown-menu dropdown-menu-right mailbox animated bounceInDown\" aria-labelledby=\"2\">\n                        <ul class=\"list-style-none\">\n                            <li>\n                                <div class=\"\">\n                                    <!-- Message -->\n                                    <a href=\"javascript:void(0)\" class=\"link border-top\">\n                                        <div class=\"d-flex no-block align-items-center p-10\">\n                                            <span class=\"btn btn-success btn-circle\"><i class=\"ti-calendar\"></i></span>\n                                            <div class=\"m-l-10\">\n                                                <h5 class=\"m-b-0\">Event today</h5>\n                                                <span class=\"mail-desc\">Khozinfo</span>\n                                            </div>\n                                        </div>\n                                    </a>\n                                    <!-- Message -->\n                                    <a href=\"javascript:void(0)\" class=\"link border-top\">\n                                        <div class=\"d-flex no-block align-items-center p-10\">\n                                            <span class=\"btn btn-primary btn-circle\"><i class=\"ti-user\"></i></span>\n                                            <div class=\"m-l-10\">\n                                                <h5 class=\"m-b-0\">Ganesh Khadka</h5>\n                                                <span class=\"mail-desc\">Just see the my admin!</span>\n                                            </div>\n                                        </div>\n                                    </a>\n                                    <!-- Message -->\n                                    <a href=\"javascript:void(0)\" class=\"link border-top\">\n                                        <div class=\"d-flex no-block align-items-center p-10\">\n                                            <span class=\"btn btn-danger btn-circle\"><i class=\"fa fa-link\"></i></span>\n                                            <div class=\"m-l-10\">\n                                                <h5 class=\"m-b-0\">Luanch Admin</h5>\n                                                <span class=\"mail-desc\">Just see the my new admin!</span>\n                                            </div>\n                                        </div>\n                                    </a>\n                                </div>\n                            </li>\n                        </ul>\n                    </div>\n                </li>\n\n                <li class=\"nav-item dropdown\">\n                    <a class=\"nav-link dropdown-toggle text-muted waves-effect waves-dark pro-pic\" href=\"\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"><img src=\"{{asset('admin-panel/assets/images/users/1.jpg')}}\" alt=\"user\" class=\"rounded-circle\" width=\"31\"></a>\n                    <div class=\"dropdown-menu dropdown-menu-right user-dd animated\">\n                        <a class=\"dropdown-item\" href=\"{{route('profile')}}\"><i class=\"ti-user m-r-5 m-l-5\"></i> My Profile</a>\n\n                        {{--<a class=\"dropdown-item\" href=\"javascript:void(0)\"><i class=\"fa fa-power-off m-r-5 m-l-5\"></i> Logout</a>--}}\n\n                        <a href=\"#\" onclick=\"event.preventDefault();document.getElementById('logout-form').submit();\" class=\"dropdown-item\">\n                            <i class=\"fa fa-power-off m-r-5 m-l-5\"></i>\n                            Logout\n                        </a>\n                        <form id=\"logout-form\" action=\"{{route('logout')}}\" method=\"POST\" style=\"display: none;\">\n                            @csrf\n                        </form>\n\n                        <div class=\"dropdown-divider\"></div>\n                        <div class=\"p-l-30 p-10\"><a href=\"{{route('profile')}}\" class=\"btn btn-sm btn-success btn-rounded\">View Profile</a></div>\n                    </div>\n                </li>\n            </ul>\n        </div>\n    </nav>\n</header>"
  },
  {
    "path": "resources/views/admin/includes/scripts.blade.php",
    "content": "\n<script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n<script src=\"https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js\"></script>\n<![endif]-->\n<script src=\"https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js\"></script>\n<script src=\"https://cdn.datatables.net/buttons/1.5.2/js/dataTables.buttons.min.js\"></script>\n<script src=\"https://cdn.datatables.net/buttons/1.5.2/js/buttons.flash.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js\"></script>\n<script src=\"https://cdn.datatables.net/buttons/1.5.2/js/buttons.html5.min.js\"></script>\n<script src=\"https://cdn.datatables.net/buttons/1.5.2/js/buttons.print.min.js\"></script>\n\n{{--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js\"></script>--}}\n{{--date picker--}}\n<script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/jquery/latest/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/momentjs/latest/moment.min.js\"></script>\n<script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js\"></script>\n\n<!-- Bootstrap tether Core JavaScript -->\n<script src=\"{{asset('admin-panel/assets/libs/popper.js/dist/umd/popper.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/bootstrap/dist/js/bootstrap.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.jquery.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/extra-libs/sparkline/sparkline.js')}}\"></script>\n<!--Wave Effects -->\n<script src=\"{{asset('admin-panel/dist/js/waves.js')}}\"></script>\n<!--Menu sidebar -->\n<script src=\"{{asset('admin-panel/dist/js/sidebarmenu.js')}}\"></script>\n<!--Custom JavaScript -->\n<script src=\"{{asset('admin-panel/dist/js/custom.min.js')}}\"></script>\n\n<script src=\"{{asset('admin-panel/assets/libs/moment/min/moment.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/fullcalendar/dist/fullcalendar.min.js')}}\"></script>\n\n{{--poxi add gareko--}}\n\n<script src=\"{{asset('admin-panel/assets/libs/jquery/dist/jquery.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/dist/js/jquery-ui.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/bootstrap/dist/js/bootstrap.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/dist/js/custom.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/moment/min/moment.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/assets/libs/fullcalendar/dist/fullcalendar.min.js')}}\"></script>\n<script src=\"{{asset('admin-panel/dist/js/pages/calendar/cal-init.js')}}\"></script>\n\n{{--<script src=\"//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js\"></script>--}}\n<script src=\"//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js\"></script>\n<script src=\"//cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.2.7/fullcalendar.min.js\"></script>\n\n{{--toastr message--}}\n{{--<script src=\"http://cdn.bootcss.com/jquery/2.2.4/jquery.min.js\"></script>--}}\n<script src=\"http://cdn.bootcss.com/toastr.js/latest/js/toastr.min.js\"></script>\n{!! Toastr::message() !!}\n"
  },
  {
    "path": "resources/views/admin/includes/sidebar.blade.php",
    "content": "<aside class=\"left-sidebar\" data-sidebarbg=\"skin5\">\n    <!-- Sidebar scroll-->\n    <div class=\"scroll-sidebar\">\n        <!-- Sidebar navigation-->\n        <nav class=\"sidebar-nav\">\n            <ul id=\"sidebarnav\" class=\"p-t-30\">\n                <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"{{route('dashboard')}}\" aria-expanded=\"false\"><i class=\"mdi mdi-view-dashboard\"></i><span class=\"hide-menu\">Dashboard</span></a></li>\n\n                @can('isAdmin')\n                {{--<li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"{{route('employee')}}\" aria-expanded=\"false\"><i class=\"mdi mdi-border-inside\"></i><span class=\"hide-menu\">Employee Management</span></a></li>--}}\n                @endcan\n                   @can('isAdmin')\n                    <li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"{{route('user')}}\" aria-expanded=\"false\"><i class=\"mdi mdi-border-inside\"></i><span class=\"hide-menu\">User Management</span></a></li>\n                {{--<li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"{{route('user')}}\" aria-expanded=\"false\"><i class=\"mdi mdi-receipt\"></i><span class=\"hide-menu\">User Management</span></a>--}}\n                    {{--<ul aria-expanded=\"false\" class=\"collapse  first-level\">--}}\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('user')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> User </span></a></li>--}}\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('user.create')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-plus\"></i><span class=\"hide-menu\"> Add </span></a></li>--}}\n                    {{--</ul>--}}\n                {{--</li>--}}\n                @endcan\n\n                @can('isAdmin')\n                <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-receipt\"></i><span class=\"hide-menu\">System management</span></a>\n                    <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                        <li class=\"sidebar-item\"><a href=\"{{route('designation')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Designation </span></a></li>\n                        <li class=\"sidebar-item\"><a href=\"{{route('department')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Department </span></a></li>\n                        <li class=\"sidebar-item\"><a href=\"{{route('salary')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-plus\"></i><span class=\"hide-menu\"> Salary </span></a></li>\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('city')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-plus\"></i><span class=\"hide-menu\"> City </span></a></li>--}}\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('shift')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-plus\"></i><span class=\"hide-menu\"> Shift </span></a></li>--}}\n                    </ul>\n                </li>\n                @endcan\n\n                <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-receipt\"></i><span class=\"hide-menu\">Leave management</span></a>\n                    <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                        @can('isEmployee')\n                        <li class=\"sidebar-item\"><a href=\"{{route('leave.create')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\">Apply Leave</span></a></li>\n                        @endcan\n                        <li class=\"sidebar-item\"><a href=\"{{route('leave')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\">Leave list</span></a></li>\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('total-leave')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\">Total leave list</span></a></li>--}}\n                    </ul>\n                </li>\n\n                @can('isAdmin')\n                <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-receipt\"></i><span class=\"hide-menu\">Payroll management</span></a>\n                    <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('managesalary')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Manage salary details </span></a></li>--}}\n                        <li class=\"sidebar-item\"><a href=\"{{route('managesalary.salarylist')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Employee salary list</span></a></li>\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('payroll.list')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Employee salary list </span></a></li>--}}\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('payroll.payment')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Make payment </span></a></li>--}}\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('payroll.payslip')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Generate payslip </span></a></li>--}}\n                    </ul>\n                </li>\n                @endcan\n\n                {{--<li class=\"sidebar-item\"><a href=\"{{route('event')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-calendar-check\"></i><span class=\"hide-menu\"> Calendar </span></a></li>--}}\n                <li class=\"sidebar-item\"><a href=\"{{route('calendar')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-calendar-check\"></i><span class=\"hide-menu\"> Calendar </span></a></li>\n\n\n                {{--<li class=\"sidebar-item\"> <a class=\"sidebar-link waves-effect waves-dark sidebar-link\" href=\"{{route('download')}}\" aria-expanded=\"false\"><i class=\"mdi mdi-border-inside\"></i><span class=\"hide-menu\">Downloads</span></a></li>--}}\n\n                <li class=\"sidebar-item\"> <a class=\"sidebar-link has-arrow waves-effect waves-dark\" href=\"javascript:void(0)\" aria-expanded=\"false\"><i class=\"mdi mdi-receipt\"></i><span class=\"hide-menu\">Settings</span></a>\n                    <ul aria-expanded=\"false\" class=\"collapse  first-level\">\n                        <li class=\"sidebar-item\"><a href=\"{{route('profile')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> My profile </span></a></li>\n                        {{--<li class=\"sidebar-item\"><a href=\"{{route('change.password')}}\" class=\"sidebar-link\"><i class=\"mdi mdi-note-outline\"></i><span class=\"hide-menu\"> Change Password </span></a></li>--}}\n                    </ul>\n                </li>\n            </ul>\n        </nav>\n        <!-- End Sidebar navigation -->\n    </div>\n    <!-- End Sidebar scroll-->\n</aside>"
  },
  {
    "path": "resources/views/admin/layout/master.blade.php",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en\">\n<head>\n    @include('admin.includes.head')\n    @yield('css')\n</head>\n<body>\n    {{--<div class=\"preloader\">--}}\n        {{--<div class=\"lds-ripple\">--}}\n            {{--<div class=\"lds-pos\"></div>--}}\n            {{--<div class=\"lds-pos\"></div>--}}\n        {{--</div>--}}\n    {{--</div>--}}\n    <div id=\"main-wrapper\">\n       @include('admin.includes.navigation')\n       @include('admin.includes.sidebar')\n\n       @yield('content')\n\n    </div>\n    @include('admin.includes.scripts')\n\n        @yield('js')\n\n</body>\n\n</html>"
  },
  {
    "path": "resources/views/admin/leave/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n            <script src=\"https://code.jquery.com/jquery-3.3.1.min.js\"></script>\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Leave Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('leave.create')}}\">Leave</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('leave.store')}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Apply Leave</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Leave type</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"leave_type\" class=\"form-control\" id=\"fname\" placeholder=\"Leave type\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Date from</label>\n                                    <div class=\"col-sm-4\">\n                                        <input type=\"date\" min=\"{{date('Y-m-d')}}\" name=\"date_from\" class=\"form-control\" id=\"FromDate\">\n                                    </div>\n                                    <div class=\"col-sm-4\">\n                                        <input type=\"date\" name=\"date_to\" class=\"form-control\" id=\"ToDate\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Days</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"days\" class=\"form-control\" id=\"TotalDays\" placeholder=\"Number of leave days\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Reason</label>\n                                    <div class=\"col-sm-9\">\n                                        <textarea type=\"text\" name=\"reason\" class=\"form-control\" placeholder=\"Reason\">\n                                        </textarea></div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Apply</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n\n    </div>\n\n@endsection\n\n@section('js')\n    <script>\n        $(\"#ToDate\").change(function () {\n            var start = new Date($('#FromDate').val());\n            var end = new Date($('#ToDate').val());\n\n            var diff = new Date(end - start);\n            var days=1;\n            days = diff / 1000 / 60 / 60 / 24;\n\n            // $('#TotalDays').val(days);\n            if (days == NaN) {\n                $('#TotalDays').val(0);\n            } else {\n                $('#TotalDays').val(days+1);\n            }\n        })\n\n        $(\"#FromDate\").change(function () {\n            var start = new Date($('#FromDate').val());\n            var end = new Date($('#ToDate').val());\n\n            var diff = new Date(end - start);\n            var days=1;\n            days = diff / 1000 / 60 / 60 / 24;\n\n            // $('#TotalDays').val(days);\n            if (days == NaN) {\n                $('#TotalDays').val(0);\n            } else {\n                $('#TotalDays').val(days+1);\n            }\n        })\n    </script>\n    @endsection"
  },
  {
    "path": "resources/views/admin/leave/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Leave Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('leave.update')}}\">Leave</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('leave.update',$leave->id)}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Update Leave</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Leave type</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"leave_type\" class=\"form-control\" id=\"fname\" placeholder=\"Leave type\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Date from</label>\n                                    <div class=\"col-sm-4\">\n                                        <input type=\"date\" name=\"date_from\" class=\"form-control\" id=\"lname\">\n                                    </div>\n                                    <div class=\"col-sm-4\">\n                                        <input type=\"date\" name=\"date_to\" class=\"form-control\" id=\"lname\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Days</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"days\" class=\"form-control\" id=\"fname\" placeholder=\"Number of leave days\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Reason</label>\n                                    <div class=\"col-sm-9\">\n                                        <textarea type=\"text\" name=\"reason\" class=\"form-control\" id=\"fname\" placeholder=\"Reason\">\n                                        </textarea></div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Apply</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/leave/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n    @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Leave Management</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('leave')}}\">Leave</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"container-fluid\">\n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"card\">\n                            <form action=\"{{route('leave.search')}}\" method=\"GET\" class=\"form-horizontal\">\n                                <div class=\"card-body\">\n                                    <h4 class=\"card-title\">Search</h4>\n                                    <div class=\"form-group row\">\n                                        <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Search by leave type</label>\n                                        <div class=\"col-sm-9\">\n                                            <input type=\"text\" name=\"search\" class=\"form-control\" id=\"fname\" placeholder=\"Leave type\">\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"border-top\">\n                                    <div class=\"card-body\">\n                                        <button type=\"submit\" class=\"btn btn-success\">Search</button>\n                                        <a href=\"{{route('leave')}}\" class=\"btn btn-md btn-danger\">Clear</a>\n                                    </div>\n                                </div>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        @can('isEmployee')\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('leave.create')}}\">Apply leave</a>\n                        @endcan\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Leave List</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N.</th>\n                                            <th>Employee name</th>\n                                            <th>Leave type</th>\n                                            <th>Date from</th>\n                                            <th>Date to</th>\n                                            <th>No. of days</th>\n                                            <th>Reason</th>\n                                            <th>Leave type offer</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($leaves as $leave)\n                                            <tr>\n                                                <td>{{$loop -> index+1 }}</td>\n                                                <td>{{$leave->users->username }}</td>\n                                                <td>{{$leave->leave_type}}</td>\n                                                <td>{{$leave->date_from}}</td>\n                                                <td>{{$leave->date_to}}</td>\n                                                <td>{{$leave->days}}</td>\n                                                <td>{{$leave->reason}}</td>\n                                                <td>\n                                                    @if(Auth::user()->role=='admin')\n                                                        {{--{{$leave->is_approved}}--}}\n                                                        @if($leave->leave_type_offer==0)\n                                                            <form id=\"{{$leave->id}}\" action=\"{{route('leave.paid',$leave->id)}}\" method=\"POST\">\n                                                                @csrf\n                                                                {{--<button type=\"button\" onclick=\"approveLeave({{$leave->id}})\" class=\"btn btn-sm btn-cyan\" name=\"approve\" value=\"1\">Approve</button>--}}\n                                                                <button type=\"submit\" onclick=\"return confirm('Are you sure want to paid for leave?')\" class=\"btn btn-sm btn-cyan\" name=\"paid\" value=\"1\">Paid</button>\n                                                            </form>\n                                                            <form id=\"{{$leave->id}}\" action=\"{{route('leave.paid',$leave->id)}}\" method=\"POST\">\n                                                                @csrf\n                                                                {{--<button type=\"button\" onclick=\"rejectLeave({{$leave->id}})\" class=\"btn btn-sm btn-danger\" name=\"approve\" value=\"2\">Reject</button>--}}\n                                                                <button type=\"submit\" onclick=\"return confirm('Are you sure want to paid for leave?')\" class=\"btn btn-sm btn-danger\" name=\"paid\" value=\"2\">Unpaid</button>\n                                                            </form>\n                                                        @elseif($leave->leave_type_offer==1)\n\n                                                            <form action=\"{{route('leave.paid',$leave->id)}}\" method=\"POST\">\n                                                                @csrf\n                                                                <button class=\"btn btn-sm btn-danger\" onclick=\"return confirm('Are you sure want to unpaid for leave?')\" type=\"submit\" name=\"paid\" value=\"2\">Unpaid</button>\n                                                            </form>\n                                                        @else\n                                                            <form action=\"{{route('leave.paid',$leave->id)}}\" method=\"POST\">\n                                                                @csrf\n                                                                <button class=\"btn btn-sm btn-cyan\" onclick=\"return confirm('Are you sure want to piad for leave?')\" type=\"submit\" name=\"paid\" value=\"1\">Paid</button>\n                                                            </form>\n                                                        @endif\n\n                                                        {{--<a href=\"{{route('leave.approve',$leave->id)}}\" class=\"btn btn-sm btn-cyan\">Approve</a>--}}\n                                                        {{--<a href=\"{{route('leave.pending',$leave->id)}}\" class=\"btn btn-sm btn-warning\">Pending</a>--}}\n                                                        {{--<a href=\"{{route('leave.reject',$leave->id)}}\" class=\"btn btn-sm btn-danger\">Reject</a>--}}\n                                                    @else\n                                                        @if($leave->leave_type_offer==0)\n                                                            <span class=\"badge badge-pill badge-warning\">Pending</span>\n                                                        @elseif($leave->leave_type_offer==1)\n                                                            <span class=\"badge badge-pill badge-success\">Paid</span>\n                                                        @else\n                                                            <span class=\"badge badge-pill badge-danger\">Unpaid</span>\n                                                        @endif\n                                                    @endif\n                                                </td>\n\n                                                        <td>\n                                                            @if(Auth::user()->role=='admin')\n                                                            {{--{{$leave->is_approved}}--}}\n                                                            @if($leave->is_approved==0)\n                                                                <form id=\"approve-leave-{{$leave->id}}\" action=\"{{route('leave.approve',$leave->id)}}\" method=\"POST\">\n                                                                    @csrf\n                                                                    {{--<button type=\"button\" onclick=\"approveLeave({{$leave->id}})\" class=\"btn btn-sm btn-cyan\" name=\"approve\" value=\"1\">Approve</button>--}}\n                                                                    <button type=\"submit\" onclick=\"return confirm('Are you sure want to approve leave?')\" class=\"btn btn-sm btn-cyan\" name=\"approve\" value=\"1\">Approve</button>\n                                                                </form>\n                                                                <form id=\"reject-leave-{{$leave->id}}\" action=\"{{route('leave.approve',$leave->id)}}\" method=\"POST\">\n                                                                    @csrf\n                                                                    {{--<button type=\"button\" onclick=\"rejectLeave({{$leave->id}})\" class=\"btn btn-sm btn-danger\" name=\"approve\" value=\"2\">Reject</button>--}}\n                                                                    <button type=\"submit\" onclick=\"return confirm('Are you sure want to reject leave?')\" class=\"btn btn-sm btn-danger\" name=\"approve\" value=\"2\">Reject</button>\n                                                                </form>\n                                                            @elseif($leave->is_approved==1)\n\n                                                                <form action=\"{{route('leave.approve',$leave->id)}}\" method=\"POST\">\n                                                                    @csrf\n                                                                    <button class=\"btn btn-sm btn-danger\" onclick=\"return confirm('Are you sure want to reject leave?')\" type=\"submit\" name=\"approve\" value=\"2\">Reject</button>\n                                                                </form>\n                                                            @else\n                                                                <form action=\"{{route('leave.approve',$leave->id)}}\" method=\"POST\">\n                                                                    @csrf\n                                                                    <button class=\"btn btn-sm btn-cyan\" onclick=\"return confirm('Are you sure want to approve leave?')\" type=\"submit\" name=\"approve\" value=\"1\">Approve</button>\n                                                                </form>\n                                                            @endif\n\n                                                                {{--<a href=\"{{route('leave.approve',$leave->id)}}\" class=\"btn btn-sm btn-cyan\">Approve</a>--}}\n                                                                {{--<a href=\"{{route('leave.pending',$leave->id)}}\" class=\"btn btn-sm btn-warning\">Pending</a>--}}\n                                                                {{--<a href=\"{{route('leave.reject',$leave->id)}}\" class=\"btn btn-sm btn-danger\">Reject</a>--}}\n                                                                @else\n                                                                @if($leave->is_approved==0)\n                                                                    <span class=\"badge badge-pill badge-warning\">Pending</span>\n                                                                @elseif($leave->is_approved==1)\n                                                                    <span class=\"badge badge-pill badge-success\">Approved</span>\n                                                                @else\n                                                                    <span class=\"badge badge-pill badge-danger\">Rejected</span>\n                                                                @endif\n                                                            @endif\n                                                </td>\n                                            </tr>\n                                        </tbody>\n                                        @endforeach\n                                    </table>\n                                    {{ $leaves->links() }}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <{{--sweetalert box for deleting start--}}\n            {{--<script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@7.28.8/dist/sweetalert2.all.min.js\"></script>--}}\n\n            {{--<script type=\"text/javascript\">--}}\n                {{--function rejectLeave(id)--}}\n\n                {{--{--}}\n                    {{--const swalWithBootstrapButtons = swal.mixin({--}}\n                        {{--confirmButtonClass: 'btn btn-success',--}}\n                        {{--cancelButtonClass: 'btn btn-danger',--}}\n                        {{--buttonsStyling: false,--}}\n                    {{--})--}}\n\n                    {{--swalWithBootstrapButtons({--}}\n                        {{--title: 'Are you sure?',--}}\n                        {{--text: \"You won't be able to do again this!\",--}}\n                        {{--type: 'warning',--}}\n                        {{--showCancelButton: true,--}}\n                        {{--confirmButtonText: 'Yes, reject it!',--}}\n                        {{--cancelButtonText: 'No, cancel!',--}}\n                        {{--reverseButtons: true--}}\n                    {{--}).then((result) => {--}}\n                        {{--if (result.value) {--}}\n                            {{--event.preventDefault();--}}\n                            {{--document.getElementById('reject-leave-'+id).submit();--}}\n                        {{--} else if (--}}\n                            {{--// Read more about handling dismissals--}}\n                            {{--result.dismiss === swal.DismissReason.cancel--}}\n                        {{--) {--}}\n                            {{--swalWithBootstrapButtons(--}}\n                                {{--'Cancelled',--}}\n                                {{--'You have not cancel yet ! Your are safe :)',--}}\n                                {{--'error'--}}\n                            {{--)--}}\n                        {{--}--}}\n                    {{--})--}}\n                {{--}--}}\n\n            {{--</script>--}}\n            {{--<script type=\"text/javascript\">--}}\n                {{--function approveLeave(id)--}}\n\n                {{--{--}}\n                    {{--const swalWithBootstrapButtons = swal.mixin({--}}\n                        {{--confirmButtonClass: 'btn btn-success',--}}\n                        {{--cancelButtonClass: 'btn btn-danger',--}}\n                        {{--buttonsStyling: false,--}}\n                    {{--})--}}\n\n                    {{--swalWithBootstrapButtons({--}}\n                        {{--title: 'Are you sure?',--}}\n                        {{--text: \"You want to approve leave!\",--}}\n                        {{--type: 'warning',--}}\n                        {{--showCancelButton: true,--}}\n                        {{--confirmButtonText: 'Yes, approve leave!',--}}\n                        {{--cancelButtonText: 'No, cancel!',--}}\n                        {{--reverseButtons: true--}}\n                    {{--}).then((result) => {--}}\n                        {{--if (result.value) {--}}\n                            {{--event.preventDefault();--}}\n                            {{--document.getElementById('approve-leave-'+id).submit();--}}\n                        {{--} else if (--}}\n                            {{--// Read more about handling dismissals--}}\n                            {{--result.dismiss === swal.DismissReason.cancel--}}\n                        {{--) {--}}\n                            {{--swalWithBootstrapButtons(--}}\n                                {{--'Cancelled',--}}\n                                {{--'You are safe.You can approve later :)',--}}\n                                {{--'error'--}}\n                            {{--)--}}\n                        {{--}--}}\n                    {{--})--}}\n                {{--}--}}\n\n            {{--</script>--}}\n            {{--sweetalert box for deleting end--}}\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/managesalary/detail.blade.php",
    "content": "@extends('admin.layout.master')\n@section('content')\n\n    <style type=\"text/css\">\n        #startDate, #startTime, #search {\n            width:30%;\n            float: left;\n        }\n        /*#date,#amount{*/\n            /*width: 30%;*/\n            /*float: right;*/\n        /*}*/\n    </style>\n\n    <style>\n        @media print  {\n            .page-breadcrumb{\n                display: none;\n            }\n            .sidebar-nav{\n                display: none;\n            }\n            .no-print {\n                display: none;\n            }\n            .text-center{\n                display: none;\n            }\n            .advance-pay{\n                display: none;\n            }\n            .managesalary{\n                display: none;\n            }\n            dl.employeedetails{\n                border: 1px solid red;\n                padding: 35px 70px 50px;\n            }\n            table.advancepayment{\n                border: 1px solid red;\n                padding: 35px 70px 50px;\n            }\n        }\n    </style>\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n        @endif\n\n\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Salary management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\" \">Manage salary</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"card\">\n                        <form action=\"{{route('managesalary.detail',$user->id)}}\" method=\"GET\" class=\"form-horizontal no-print\">\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Search</h4>\n                                <div class=\"form-group\">\n                                    <!-- Date Picker -->\n                                    <div class=\"input-group date \" id=\"startDate\">\n                                        <strong>From</strong>\n                                        <input type='date' value=\"{{request()->startdate}}\" name=\"startdate\" class=\"form-control\" />\n                                    </div>\n                                    <!-- Time Picker -->\n                                    <div class=\"input-group date\" id=\"startTime\">\n                                        <strong>To</strong>\n                                        <input type='date' value=\"{{request()->enddate}}\" name=\"enddate\" class=\"form-control\" />\n                                    </div>\n                                    <div class=\"input-group date\" id=\"search\">\n                                        <button type=\"submit\" class=\"btn btn-success\">Search</button>\n                                        <a href=\"{{route('managesalary.detail',$user->id)}}\" class=\"btn btn-md btn-danger\">Clear</a>\n                                    </div>\n                                </div>\n                            </div>\n                            <br><br>\n                        </form>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"row no-print\">\n                <div class=\"col-12\">\n                    {{--<a href=\"\" id=\"pdffile\" target=\"-_blank\" class=\"btn btn-default\"><i class=\"fa fa-print\"></i>Print </a>--}}\n                    <button class=\"btn btn-danger\" onclick=\"pdf()\"><i class=\"fa fa-print\"></i> Print</button>\n                </div>\n            </div>\n\n            <div class=\"row \">\n                <div class=\"col-md-6\">\n                    <div class=\"card\">\n                        <form action=\"{{route('managesalary.store')}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <h4 class=\"card-title managesalary\">Manage salary</h4>\n                            <dl class=\"row employeedetails\">\n                                <dt class=\"col-sm-5\">Employee name:</dt>\n                                <dd class=\"col-sm-7\" name=\"employee_name\" id=\"employee_name\"><strong>{{$employee_name}}</strong></dd>\n\n                                <dt class=\"col-sm-5\">Employee designation:</dt>\n                                <dd class=\"col-sm-7\" name=\"employee_designation\" id=\"employee_designation\">{{$des}}</dd>\n\n                                <dt class=\"col-sm-5\">Employee Salary:</dt>\n                                <dd class=\"col-sm-7\" name=\"employee_salary\" id=\"employee_salary\">{{$amt}}</dd>\n\n                                <dt class=\"col-sm-5\">Employee leave:</dt>\n                                <dd class=\"col-sm-7\" name=\"leave_count\" id=\"leave_count\">{{$total_leaves}}</dd>\n\n                                <dt class=\"col-sm-5\">Tax (1%): </dt>\n                                <dd class=\"col-sm-7\" name=\"tax\" id=\"tax\"></dd>\n\n                                <dt class=\"col-sm-5\">Advance payment:</dt>\n                                <dd class=\"col-sm-7\" name=\"advance\" id=\"advance\">{{$advancePayment->total}} </dd>\n\n                                <dt class=\"col-sm-5\">Total:</dt>\n                                <dd class=\"col-sm-7\" name=\"total\" id=\"grand-total\"> </dd>\n\n                            </dl>\n                            {{--<hr>--}}\n\n                            <script>\n                                calculate();\n                                function calculate(){\n                                    var total_salary=$('#employee_salary').text();\n                                    var per_day_amount=total_salary/30;\n                                    var leave_day=$('#leave_count').text();\n                                    var leave_amount= per_day_amount*leave_day;\n                                    var tax_percentage=1;\n                                    var tax_amount=total_salary*tax_percentage/100;\n                                    var advance_payment=$('#advance').text();\n                                    var grand_total=total_salary-leave_amount-tax_amount-advance_payment;\n                                    $('#tax').text(tax_amount);\n                                    $('#grand-total').text(grand_total);\n                                    // console.log(grand_total);\n                                }\n                            </script>\n                            <hr>\n\n                            {{--<div class=\"card-body\">--}}\n                                {{--<h4 class=\"card-title\">Working days</h4>--}}\n                                {{--<div class=\"form-group row\">--}}\n                                    {{--<label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Total number of working days</label>--}}\n                                    {{--<div class=\"col-sm-5\">--}}\n                                        {{--<input type=\"text\" name=\"working_days\" id=\"days\" value=\"30\" class=\"form-control\">--}}\n                                    {{--</div>--}}\n                                {{--</div>--}}\n                                {{--<div class=\"form-group row\">--}}\n                                    {{--<label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Rate per day</label>--}}\n                                    {{--<div class=\"col-sm-5\">--}}\n                                        {{--<input type=\"number\" name=\"rate_per_day\" id=\"rates\" class=\"form-control\" placeholder=\"Rate per day\">--}}\n                                    {{--</div>--}}\n                                {{--</div>--}}\n\n                                {{--<div class=\"form-group row\">--}}\n                                    {{--<label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Gross pay</label>--}}\n                                    {{--<div class=\"col-sm-5\">--}}\n                                        {{--<input type=\"number\" name=\"gross_pay\" id=\"salary\" class=\"form-control\" placeholder=\"Gross pay\">--}}\n                                    {{--</div>--}}\n                                {{--</div>--}}\n                            {{--</div>--}}\n\n                            {{--<hr><hr>--}}\n\n                            {{--<div class=\"card-body\">--}}\n                                {{--<h4 class=\"card-title\">Deductions</h4>--}}\n                                {{--<div class=\"form-group row\">--}}\n                                    {{--<label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Tax %</label>--}}\n                                    {{--<div class=\"col-sm-5\">--}}\n                                        {{--<input type=\"text\" name=\"tax_deduction\"   class=\"form-control\" value=\"\" placeholder=\"Tax deduction\">--}}\n                                    {{--</div>--}}\n                                {{--</div>--}}\n                            {{--</div>--}}\n\n                            {{--<hr><hr>--}}\n\n\n\n                            {{--<div class=\"border-top no-print\">--}}\n                                {{--<div class=\"card-body\">--}}\n                                    {{--<button type=\"submit\" class=\"btn btn-dark\">Apply</button>--}}\n                                    {{--<a href=\"{{route('managesalary')}}\" class=\"btn btn-md btn-danger\">Back</a>--}}\n                                {{--</div>--}}\n                            {{--</div>--}}\n                        </form>\n                    </div>\n                </div>\n                <div class=\"col-md-6\">\n                    <div class=\"card\">\n\n\n                        <form action=\"{{route('managesalary.makeadvance')}}\" method=\"post\" class=\"form-horizontal advance-pay\">\n                            @csrf\n                            <input type=\"hidden\" name=\"employee_id\" value=\"{{$user->id}}\">\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Advance payment</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Date</label>\n                                    <div class=\"col-sm-5\">\n                                        <input type=\"date\" name=\"date\" id=\"date\" class=\"form-control\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Amount</label>\n                                    <div class=\"col-sm-5\">\n                                        <input type=\"text\" name=\"amount\" id=\"amount\" placeholder=\"Enter amount\" />\n                                    </div>\n                                </div>\n                            </div>\n\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Add</button>\n                                    {{--<a href=\"#\" class=\"btn btn-md btn-danger\">Back</a>--}}\n                                </div>\n                            </div>\n                            <hr><hr>\n                        </form>\n                        <div class=\"card-body\">\n                            <h5 class=\"card-title\">Advance payment lists</h5><hr/>\n                            <table id=\"advance-payment\" class=\"display advancepayment\" style=\"width:100%\">\n                                <thead>\n                                <tr>\n                                    <th>S.N</th>\n                                    <th>Date</th>\n                                    <th>Amount(RS)</th>\n                                    <th class=\"no-print\">Action</th>\n                                </tr>\n                                </thead>\n                                <tbody>\n                                @foreach($advance as $advances)\n                                    <tr>\n                                        <td>{{$loop -> index+1 }}</td>\n                                        <td>{{$advances ->date }}</td>\n                                        <td>{{$advances ->amount }}</td>\n                                        <td class=\"no-print\">Edit</td>\n                                    </tr>\n                                </tbody>\n                                @endforeach\n                            </table>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n\n            <script>\n                 $('#rates').keyup(function(){\n                     var days_worked = $('#days').val();\n                     var rate_per_day = $(this).val();\n                     var total_gross_salary = days_worked * rate_per_day;\n                     $('#salary').val(total_gross_salary);\n                 })\n\n\n                $('#tax').keyup(function(){\n                    var tax = $(this).val();\n                    var salary = $('#salary').val();\n                    var tax_amount = salary * tax/100;\n                    var total_netpay = salary - tax_amount;\n                    $('#net_pay').val(total_netpay);\n                })\n            </script>\n\n            {{--datatable--}}\n            <script>\n                $(document).ready(function() {\n                    $('#advance-payment').DataTable();\n                });\n            </script>\n\n            {{--Start-For printing the screen--}}\n            <script>\n                function pdf() {\n                    window.print();\n                }\n            </script>\n\n            {{--End-For printing the screen--}}\n\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/managesalary/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Manage Salary details</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('managesalary')}}\">Salary details</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('managesalary.detail')}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Manage salary details</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Employee name</label>\n                                    <div class=\"col-sm-9\">\n                                        <select type=\"text\" name=\"employee_id\" class=\"form-control\">\n                                            <option value=\"0\" disabled {{ old('user') ? '' : 'selected' }}>All</option>\n                                            @foreach($users as $user)\n                                                {{--<option value=\"{{$user->all}}\" {{ old('user') ? 'selected' : '' }}>{{$user->all()}}</option>--}}\n                                                <option value=\"{{$user->id}}\" {{ old('user') ? 'selected' : '' }}>{{$user->username}}</option>\n                                                @endforeach\n                                        </select>\n                                    </div>\n                                </div>\n                                </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Go</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/managesalary/makepayment.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <style>\n        @media print  {\n            .page-breadcrumb{\n                display: none;\n            }\n            .sidebar-nav{\n                display: none;\n            }\n            .no-print {\n                display: none;\n            }\n            .text-center{\n                display: none;\n            }\n            #advance-pay{\n                display: none;\n            }\n        }\n    </style>\n\n    <div id=\"main-wrapper\">\n\n    @include('admin.includes.sidebar')\n\n        <div id=\"main-wrapper\">\n\n            <div class=\"page-wrapper\">\n\n                <div class=\"page-breadcrumb\">\n                    <div class=\"row\">\n                        <div class=\"col-12 d-flex no-block align-items-center\">\n                            <h4 class=\"page-title\">Invoice</h4>\n                            <div class=\"ml-auto text-right\">\n                                <nav aria-label=\"breadcrumb\">\n                                    <ol class=\"breadcrumb\">\n                                        <li class=\"breadcrumb-item\"><a href=\"#\">Home</a></li>\n                                        <li class=\"breadcrumb-item active\" aria-current=\"page\">Library</li>\n                                    </ol>\n                                </nav>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"container-fluid\">\n\n                    <div class=\"row\">\n                        <div class=\"col-md-6\">\n                                <h3> &nbsp;<b class=\"text-danger\">Invoice payment</b></h3>\n                                <p class=\"text-muted m-l-5\">\n                                    <br/> Employee name:\n                        </div>\n\n\n                        <div class=\"col-md-6\">\n                            <br><br>\n                                <p class=\"text-muted m-l-5\">\n                                    <br/> Designation:</p>\n\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-6\">\n                                <h4 class=\"card-title\">Earning</h4>\n\n                                <div class=\"form-group row\">\n                                    <label class=\"col-sm-3 text-right control-label col-form-label\">Basic salary</label>\n                                    <div class=\"col-sm-5\">\n                                        <input type=\"text\" name=\"basic_salary\" id=\"basic_salary\" class=\"form-control\" value=\"\" >\n                                    </div>\n                                </div>\n                        </div>\n                    </div>\n                    <div class=\"col-md-10\">\n                        <div class=\"pull-right m-t-30 text-right\">\n                            <p>Total amount: $13,848</p>\n                            <p>Tax (10%) : $138 </p>\n                            <hr>\n                            <h3><b>Total :</b> $13,986</h3>\n                        </div>\n                        <div class=\"clearfix\"></div>\n                        <hr>\n                        {{--<div class=\"text-right\">--}}\n                            {{--<button class=\"btn btn-danger\" type=\"submit\"> Print </button>--}}\n                        {{--</div>--}}\n                    </div>\n                </div>\n\n                <div class=\"row no-print\">\n                    <div class=\"col-12\">\n                        {{--<a href=\"\" id=\"pdffile\" target=\"-_blank\" class=\"btn btn-default\"><i class=\"fa fa-print\"></i>Print </a>--}}\n                        <button class=\"btn btn-default\" onclick=\"pdf()\">Print</button>\n                    </div>\n                </div>\n\n                <script>\n                    function pdf() {\n                        window.print();\n                    }\n                </script>\n\n                <footer class=\"footer text-center\">\n                    All Rights Reserved by Matrix-admin. Designed and Developed by <a href=\"https://wrappixel.com\">WrapPixel</a>.\n                </footer>\n            </div>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/managesalary/salarylist.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n\n    @include('admin.includes.sidebar')\n\n        <div class=\"page-wrapper\">\n\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Salary Management</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('managesalary')}}\">Manage Salary</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n\n\n            <script src=\"https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js\"></script>\n            <script src=\"https://cdn.datatables.net/buttons/1.5.2/js/dataTables.buttons.min.js\"></script>\n            <script src=\"https://cdn.datatables.net/buttons/1.5.2/js/buttons.flash.min.js\"></script>\n            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js\"></script>\n            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js\"></script>\n            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js\"></script>\n            <script src=\"https://cdn.datatables.net/buttons/1.5.2/js/buttons.html5.min.js\"></script>\n            <script src=\"https://cdn.datatables.net/buttons/1.5.2/js/buttons.print.min.js\"></script>\n\n\n            <div class=\"container-fluid\">\n\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('managesalary')}}\">Back</a>\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Lists of employee and their salary lists</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered salarylist\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N.</th>\n                                            <th>Employee name</th>\n                                            <th>Designation type</th>\n                                            <th>Working days</th>\n                                            <th>Tax %</th>\n                                            <th>Gross salary</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($users as $user)\n                                            <tr>\n                                                <td>{{$loop -> index+1 }}</td>\n                                                <td>{{$user ->employee_name }}</td>\n                                                <td>{{$user ->designation_type }}</td>\n                                                <td>{{$user->working_days}}</td>\n                                                <td>{{$user->tax}}</td>\n                                                <td>{{$user->gross_salary}}</td>\n                                                <td>\n                                                        {{--<a href=\"\" class=\"btn btn-sm btn-dark\">Edit</a>--}}\n                                                        <a href=\"{{route('managesalary.makepayment')}}\" class=\"btn btn-sm btn-danger\">Generate payslip</a>\n                                                </td>\n                                            </tr>\n                                        </tbody>\n                                        @endforeach\n                                    </table>\n                                    {{--{{ $sallists->links() }}--}}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <script>\n                    $(document).ready(function() {\n                        $('#zero_config').DataTable( {\n                            dom: 'Bfrtip',\n                            buttons: [\n                                'copy', 'csv', 'excel', 'pdf', 'print'\n                            ]\n                        } );\n                    } );\n                </script>\n\n            </div>\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/profile/changepw.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Password Settings</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('change.password')}}\">Password</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('change.password')}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Change password</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Current password</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"password\" name=\"current_password\" class=\"form-control\" id=\"current_password\" placeholder=\"Enter your current password\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"new_password\" class=\"col-sm-3 text-right control-label col-form-label\">New Password</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"password\" name=\"new_password\" class=\"form-control\" id=\"new_password\" placeholder=\"Enter a new password\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"confirm_password\" class=\"col-sm-3 text-right control-label col-form-label\">Confirm Password</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"password\" name=\"confirm_password\" class=\"form-control\" id=\"confirm_password\" placeholder=\"Enter confirm your password\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-primary float-right\">Change</button>\n                                </div>\n                                <br><br>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/profile/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n    @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">My profile</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('employee')}}\">Profile</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"col-md-12\">\n                <div class=\"row\">\n                    <div class=\"col-md-5\">\n                        <div class=\"box box-success\">\n                            <div class=\"panel\">\n\n                                <div class=\"panel-heading\">\n                                    <span class=\"panel-title\">Personal Details</span>\n                                </div>\n                                <div class=\"panel-body pn pb5\">\n                                    <hr class=\"short br-lighter\">\n\n\n                                    <div class=\"box-body no-padding\">\n\n                                        <table class=\"table\">\n                                            <tbody>\n                                            {{--@foreach($users as $user)--}}\n\n                                                <tr>\n                                                    <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-birthday-cake\"></i>\n                                                    </td>\n                                                    <td><strong>Username</strong></td>\n                                                    <td>{{$user->username}}</td>\n                                                </tr>\n                                                <tr>\n                                                    <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-birthday-cake\"></i>\n                                                    </td>\n                                                    <td><strong>Birthday</strong></td>\n                                                    <td>{{$user->dob}}</td>\n                                                </tr>\n                                                <tr>\n                                                    <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-genderless\"></i>\n                                                    </td>\n                                                    <td><strong>Gender</strong></td>\n                                                    <td>{{$user->gender}}</td>\n                                                </tr>\n                                                <tr>\n                                                    <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-mobile-alt\"></i>\n                                                    </td>\n                                                    <td><strong>Phone number</strong></td>\n                                                    <td>{{$user->phone}}</td>\n                                                </tr>\n                                                <tr>\n                                                    <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-mobile-alt\"></i>\n                                                    </td>\n                                                    <td><strong>Email</strong></td>\n                                                    <td>{{$user->email}}</td>\n                                                </tr>\n                                                <tr>\n                                                    <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-calendar-times\"></i>\n                                                    </td>\n                                                    <td><strong>Join date</strong></td>\n                                                    <td>{{$user->join_date}}</td>\n                                                </tr>\n                                                <tr>\n                                                    <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-map-marker\"></i>\n                                                    </td>\n                                                    <td><strong>Address</strong></td>\n                                                    <td>{{$user->address}}</td>\n                                                </tr>\n                                            {{--@endforeach--}}\n                                            </tbody>\n                                        </table>\n                                        {{--{{ $users->links() }}--}}\n\n                                    </div>\n                                </div>\n\n                            </div>\n\n                        </div>\n                    </div>\n                    <div class=\"box box-success\">\n                        <div class=\"panel\">\n                            <div class=\"panel-heading\">\n                                <span class=\"panel-title\">Bank Details</span>\n                            </div>\n                            <div class=\"panel-body pn pb5\">\n                                <hr class=\"short br-lighter\">\n\n                                <div class=\"box-body no-padding\">\n                                    <table class=\"table\">\n                                        <tbody>\n                                        <tr>\n                                            <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-credit-card\"></i></td>\n                                            <td><strong>Account Holder name</strong></td>\n                                            <td>AAAAA</td>\n\n                                        </tr>\n                                        <tr>\n                                            <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-credit-card\"></i></td>\n                                            <td><strong>Account Number</strong></td>\n                                            <td>12**********2458</td>\n\n                                        </tr>\n                                        <tr>\n\n                                            <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-tags\"></i></td>\n                                            <td><strong>Pf Account Number</strong></td>\n                                            <td>15**********4846</td>\n                                        </tr>\n                                        <tr>\n                                            <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-universal-access\"></i></td>\n                                            <td><strong>Bank Name</strong></td>\n                                            <td>Nepal investment bank</td>\n                                        </tr>\n                                        <tr>\n                                            <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-accessible-icon\"></i></td>\n                                            <td><strong>Bank Branch</strong></td>\n                                            <td>Butwal</td>\n                                        </tr>\n                                        <tr>\n                                            <td style=\"width: 10px\" class=\"text-center\"><i class=\"fa fa-code\"></i></td>\n                                            <td><strong>Ifsc Code</strong></td>\n                                            <td>54675</td>\n                                        </tr>\n                                        </tbody>\n                                    </table>\n                                </div>\n\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/salary/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Salary Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('salary')}}\">Salary</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('salary.store')}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Add Salary</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Employee name</label>\n                                    <div class=\"col-sm-9\">\n                                        <select type=\"text\" name=\"employee_name\" class=\"form-control\" id=\"fname\" placeholder=\"Enter a salary amount\">\n                                            @foreach($users as $user)\n                                                {{--<option value=\"{{$user->all}}\" {{ old('user') ? 'selected' : '' }}>{{$user->all()}}</option>--}}\n                                                <option value=\"{{$user->id}}\" {{ old('user') ? 'selected' : '' }}>{{$user->username}}</option>\n                                            @endforeach\n                                        </select>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Salary Amount</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"salary_amount\" class=\"form-control\" id=\"fname\" placeholder=\"Enter a salary amount\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Add</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/salary/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Salary Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('salary')}}\">Salary</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('salary.update',$salary->id)}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Salary</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Salary amount</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"salary_amount\" class=\"form-control\" id=\"fname\" value=\"{{$salary->salary_amount}}\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Add</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/salary/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n    @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Salary Management</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('salary')}}\">Salary</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"container-fluid\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('salary.create')}}\">Add salary</a>\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Salary List</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N.</th>\n                                            <th>Employe name</th>\n                                            <th>Salary Amount</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($salaries as $salary)\n                                            <tr>\n                                                <td>{{$loop -> index+1 }}</td>\n                                                <td>{{$salary ->users->username }}</td>\n                                                <td>{{$salary->salary_amount}}</td>\n                                                <td>\n                                                    <form action=\"{{route('salary.delete',$salary->id)}}\" method=\"put\">\n                                                        @csrf\n                                                        @method('DELETE')\n                                                        <a href=\"{{route('salary.edit',$salary->id)}}\" class=\"btn btn-sm btn-dark\">Edit</a>\n                                                        <button type=\"submit\" class=\"btn btn-sm btn-danger\">Delete</button>\n                                                    </form>\n                                                </td>\n                                            </tr>\n                                        </tbody>\n                                        @endforeach\n                                    </table>\n                                    {{ $salaries->links() }}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/shift/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Shift</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('shift')}}\">Shift</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('shift.store')}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Shift</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Shift type</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"shift\" class=\"form-control\" id=\"fname\" placeholder=\"Enter a shift type\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Add</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/shift/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">City</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('shift')}}\">Shift</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('shift.update',$shift -> id)}}\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Shift type</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Shift</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"shift\" class=\"form-control\" id=\"fname\" value=\"{{$shift -> shift}}\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Update</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/shift/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n    @include('admin.includes.sidebar')\n        <div class=\"page-wrapper\">\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">City</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('shift')}}\">Shift</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"container-fluid\">\n                <div class=\"row\">\n                    <div class=\"col-md-2\">\n                        <a class=\"btn btn-lg btn-dark\" href=\"{{route('shift.create')}}\">Add shift</a>\n                    </div>\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">Shift List</h5>\n                                <div class=\"table-responsive\">\n                                    <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                        <thead>\n                                        <tr>\n                                            <th>S.N.</th>\n                                            <th>Shift</th>\n                                            <th>Action</th>\n                                        </tr>\n                                        </thead>\n                                        <tbody>\n                                        @foreach($shifts as $shift)\n                                            <tr>\n                                                <td>{{$loop -> index+1 }}</td>\n                                                <td>{{$shift->shift}}</td>\n                                                <td>\n                                                    <form action=\"{{route('shift.delete',$shift->id)}}\" method=\"put\">\n                                                        @csrf\n                                                        @method('DELETE')\n                                                        <a href=\"{{route('shift.edit',$shift->id)}}\" class=\"btn btn-sm btn-dark\">Edit</a>\n                                                        <button type=\"submit\" class=\"btn btn-sm btn-danger\">Delete</button>\n                                                    </form>\n                                                </td>\n                                            </tr>\n                                        </tbody>\n                                        @endforeach\n                                    </table>\n                                    {{ $shifts->links() }}\n                                </div>\n\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/totalleave/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Leave Management</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('leave.create')}}\">Leave</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"#\" method=\"post\" class=\"form-horizontal\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Leave lists</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Search name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"leave_type\" class=\"form-control\" id=\"fname\" placeholder=\"Search name\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Date from</label>\n                                    <div class=\"col-sm-4\">\n                                        <input type=\"date\" name=\"date_from\" class=\"form-control\" id=\"lname\">\n                                    </div>\n                                    <div class=\"col-sm-4\">\n                                        <input type=\"date\" name=\"date_to\" class=\"form-control\" id=\"lname\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Search</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/user/create.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Admin Manager</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('user')}}\">User</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('user.store')}}\" method=\"post\" class=\"form-horizontal\" enctype=\"multipart/form-data\">\n                            @csrf\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Add Admin</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Username</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"username\" class=\"form-control\" id=\"username\" placeholder=\"Enter a user name\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">File Upload</label>\n                                    <div class=\"col-md-9\">\n                                        <div class=\"custom-file\">\n                                            <input type=\"file\" name=\"image\" class=\"custom-file-input\">\n                                            <label class=\"custom-file-label\">Choose file...</label>\n                                            <div class=\"invalid-feedback\">Example invalid custom file feedback</div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">First name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"fname\" class=\"form-control\" id=\"fname\" placeholder=\"Enter First Name\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Last name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"lname\" class=\"form-control\" id=\"lname\" placeholder=\"Enter Last Name\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Email</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"email\" class=\"form-control\" id=\"lname\" placeholder=\"Enter Email Id\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Role</label>\n                                    <div class=\"col-sm-9\">\n                                        <select type=\"text\" name=\"role\" class=\"form-control\" id=\"lname\" placeholder=\"Role\">\n                                            <option value=\"admin\">Admin</option>\n                                            <option value=\"employee\">Employee</option>\n                                        </select>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Password</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"password\" name=\"password\" class=\"form-control\" id=\"lname\" placeholder=\"Enter password\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Status</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"status\" class=\"form-control\" placeholder=\"Status\">\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Submit</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n    @endsection"
  },
  {
    "path": "resources/views/admin/user/edit.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    @include('admin.includes.sidebar')\n\n    <div class=\"page-wrapper\">\n        @if ($errors->any())\n            <div class=\"alert alert-danger\">\n                <ul>\n                    @foreach ($errors->all() as $error)\n                        <li>{{ $error }}</li>\n                    @endforeach\n                </ul>\n            </div>\n    @endif\n        <div class=\"page-breadcrumb\">\n            <div class=\"row\">\n                <div class=\"col-12 d-flex no-block align-items-center\">\n                    <h4 class=\"page-title\">Admin Manager</h4>\n                    <div class=\"ml-auto text-right\">\n                        <nav aria-label=\"breadcrumb\">\n                            <ol class=\"breadcrumb\">\n                                <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('user')}}\">User</a></li>\n                            </ol>\n                        </nav>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                <div class=\"col-md-10\">\n                    <div class=\"card\">\n                        <form action=\"{{route('user.update',$user->id)}}\" method=\"post\" class=\"form-horizontal\" enctype=\"multipart/form-data\">\n                            @csrf\n                            {{--@method('PUT')--}}\n                            <div class=\"card-body\">\n                                <h4 class=\"card-title\">Add Admin</h4>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">Username</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"username\" class=\"form-control\" id=\"username\" value=\"{{$user->username}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"fname\" class=\"col-sm-3 text-right control-label col-form-label\">File Upload</label>\n                                    <div class=\"col-md-9\">\n                                        <div class=\"custom-file\">\n                                            <input type=\"file\" name=\"image\" class=\"custom-file-input\" value=\"{{$user->image}}\">\n                                            <label class=\"custom-file-label\">{{$user->image}}</label>\n                                            {{--<div class=\"invalid-feedback\">Example invalid custom file feedback</div>--}}\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">First name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"fname\" class=\"form-control\" id=\"fname\" value=\"{{$user->first_name}}\" >\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Last name</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"lname\" class=\"form-control\" id=\"lname\" value=\"{{$user->last_name}}\">\n                                    </div>\n                                </div>\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Role</label>\n                                    <div class=\"col-sm-9\">\n                                        {{--<select type=\"text\" name=\"role\" class=\"form-control\" id=\"lname\" value=\"{{$user->role}}\">--}}\n                                        <select type=\"text\" name=\"role\" class=\"form-control\" id=\"lname\">\n                                            {{--<option value=\"admin\">Admin</option>--}}\n                                            {{--<option value=\"employee\">Employee</option>--}}\n                                            <option>{{$user->role}}</option>\n                                            <option>admin</option>\n                                            <option>employee</option>\n                                        </select>\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label class=\"col-sm-3 text-right control-label col-form-label\">Salary</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"number\" name=\"salary\" class=\"form-control\" value=\"{{$user->salary}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Email</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"email\" class=\"form-control\" id=\"lname\" value=\"{{$user->email}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"phone\" class=\"col-sm-3 text-right control-label col-form-label\">Phone number</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"number\" name=\"phone\" class=\"form-control\" id=\"phone\" value=\"{{$user->phone}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"address\" class=\"col-sm-3 text-right control-label col-form-label\">Address</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"address\" class=\"form-control\" id=\"address\" value=\"{{$user->address}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"gender\" class=\"col-sm-3 text-right control-label col-form-label\">Gender</label>\n                                    <div class=\"col-sm-9\">\n                                        <select type=\"text\" name=\"gender\" class=\"form-control\" id=\"gender\" value=\"{{$user->gender}}\">\n                                            <option value=\"male\">Male</option>\n                                            <option value=\"female\">Female</option>\n                                            <option value=\"other\">Other</option>\n                                        </select>\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"lname\" class=\"col-sm-3 text-right control-label col-form-label\">Date of Birth</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"date\" name=\"dob\" class=\"form-control\" id=\"dob\" value=\"{{$user->dob}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"joindate\" class=\"col-sm-3 text-right control-label col-form-label\">Join date</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"date\" name=\"join_date\" class=\"form-control\" id=\"join_date\" value=\"{{$user->join_date}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"job type\" class=\"col-sm-3 text-right control-label col-form-label\">Job type</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"job_type\" class=\"form-control\" id=\"job_type\" value=\"{{$user->job_type}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"city\" class=\"col-sm-3 text-right control-label col-form-label\">City</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"text\" name=\"city\" class=\"form-control\" id=\"city\" value=\"{{$user->city}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"age\" class=\"col-sm-3 text-right control-label col-form-label\">Age</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"number\" name=\"age\" class=\"form-control\" id=\"lname\" value=\"{{$user->age}}\">\n                                    </div>\n                                </div>\n\n                                <div class=\"form-group row\">\n                                    <label for=\"age\" class=\"col-sm-3 text-right control-label col-form-label\">Connectivity:</label>\n                                    <div class=\"col-sm-9\">\n                                        <input type=\"checkbox\" class=\"form-check-input\" id=\"check1\" name=\"option1\" checked>Slack account <br>\n                                        <input type=\"checkbox\" class=\"form-check-input\" id=\"check1\" name=\"option1\" >Trello account <br>\n                                        <input type=\"checkbox\" class=\"form-check-input\" id=\"check1\" name=\"option1\" >Ipage account <br>\n                                        <input type=\"checkbox\" class=\"form-check-input\" id=\"check1\" name=\"option1\" >Others\n                                    </div>\n                                </div>\n\n                            </div>\n                            <div class=\"border-top\">\n                                <div class=\"card-body\">\n                                    <button type=\"submit\" class=\"btn btn-dark\">Submit</button>\n                                </div>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <footer class=\"footer text-center\">\n            All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n        </footer>\n    </div>\n\n@endsection"
  },
  {
    "path": "resources/views/admin/user/index.blade.php",
    "content": "@extends('admin.layout.master')\n\n@section('content')\n\n    <div id=\"main-wrapper\">\n\n        @include('admin.includes.sidebar')\n\n        <div class=\"page-wrapper\">\n\n            <div class=\"page-breadcrumb\">\n                <div class=\"row\">\n                    <div class=\"col-12 d-flex no-block align-items-center\">\n                        <h4 class=\"page-title\">Admin Manager</h4>\n                        <div class=\"ml-auto text-right\">\n                            <nav aria-label=\"breadcrumb\">\n                                <ol class=\"breadcrumb\">\n                                    <li class=\"breadcrumb-item\"><a href=\"{{route('dashboard')}}\">Home</a></li>\n                                    <li class=\"breadcrumb-item active\" aria-current=\"page\"><a href=\"{{route('user')}}\">User</a></li>\n                                </ol>\n                            </nav>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"container-fluid\">\n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"card\">\n                            <form action=\"{{route('user.search')}}\" method=\"GET\" class=\"form-horizontal\">\n                                <div class=\"card-body\">\n                                    <h4 class=\"card-title\">Search</h4>\n                                    <div class=\"form-group row\">\n                                        <label class=\"col-sm-3 text-right control-label col-form-label\">Search by employee name</label>\n                                        <div class=\"col-sm-9\">\n                                            <input type=\"text\" name=\"search\" class=\"form-control\" id=\"fname\" placeholder=\"Employee name\">\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"border-top\">\n                                    <div class=\"card-body\">\n                                        <button type=\"submit\" class=\"btn btn-success\">Search</button>\n                                        <a href=\"{{route('user')}}\" class=\"btn btn-md btn-danger\">Clear</a>\n                                    </div>\n                                </div>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"row\">\n\n                    <div class=\"col-12\">\n                        <div class=\"card\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title m-b-0\">Admin</h5>\n                            </div>\n                            <div class=\"table-responsive\">\n                                <table id=\"zero_config\" class=\"table table-striped table-bordered\">\n                                <thead>\n                                <tr>\n                                    <th>S.N</th>\n                                    <th>Username</th>\n                                    <th>Image</th>\n                                    <th>Role</th>\n                                    <th>Email</th>\n                                    <th>Leaves count</th>\n                                    <th>Action</th>\n                                </tr>\n                                </thead>\n                                <tbody>\n                                @foreach($users as $user)\n                                    <tr>\n                                        <th>{{$loop->index+1}}</th>\n                                        <td>{{$user->username}}</td>\n                                        <td><img src=\"{{ asset('uploads/gallery/' . $user->image) }}\" width=\"80px\" height=\"80px\" alt=\"Image\"> </td>\n                                        <td>{{$user->role}}</td>\n                                        <td>{{$user->email}}</td>\n                                        <td>\n                                            {{$user->approve_leave_count}}\n                                        </td>\n                                        <td>\n                                            <button type=\"button\"\n                                                    username=\"{{$user->username}}\"\n                                                    role=\"{{$user->role}}\"\n                                                    email=\"{{$user->email}}\"\n                                                    salary=\"{{$user->salary}}\"\n                                                    phone=\"{{$user->phone}}\"\n                                                    address=\"{{$user->address}}\"\n                                                    gender=\"{{$user->gender}}\"\n                                                    dob=\"{{$user->dob}}\"\n                                                    join_date=\"{{$user->join_date}}\"\n                                                    job_type=\"{{$user->job_type}}\"\n                                                    city=\"{{$user->city}}\"\n                                                    age=\"{{$user->age}}\"\n                                                    class=\"view-data btn btn-sm btn-success\">View</button>\n                                            <a href=\"{{route('user.edit',$user->id)}}\" class=\"btn btn-sm btn-dark\">Edit</a>\n                                            {{--<a href=\"{{route('managesalary.detail',$user->id)}}\" class=\"btn btn-sm btn-warning\">Payment</a>--}}\n                                            <a href=\"{{route('managesalary.detail',$user->id)}}\" class=\"btn btn-sm btn-warning\">Payment</a>\n                                            <form id=\"delete-form-{{ $user->id }}\" action=\"{{route('user.delete',$user->id)}}\" method=\"put\">\n                                                @csrf\n                                                @method('DELETE')\n                                                <button type=\"button\" onclick=\"deletePost({{ $user->id }})\" class=\"btn btn-sm btn-danger\">Delete</button>\n                                            </form>\n                                        </td>\n                                    </tr>\n\n                                @endforeach\n                                </tbody>\n                            </table>\n                            {{ $users->links() }}\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n                <script>\n                    $('.view-data').click(function(){\n                        var username=$(this).attr('username');\n                        var role=$(this).attr('role');\n                        var email=$(this).attr('email');\n                        var salary=$(this).attr('salary');\n                        var phone=$(this).attr('phone');\n                        var address=$(this).attr('address');\n                        var gender=$(this).attr('gender');\n                        var dob=$(this).attr('dob');\n                        var join_date=$(this).attr('join_date');\n                        var job_type=$(this).attr('job_type');\n                        var city=$(this).attr('city');\n                        var age=$(this).attr('age');\n                        $('#username').text(username);\n                        $('#role').text(role);\n                        $('#email').text(email);\n                        $('#salary').text(salary);\n                        $('#phone').text(phone);\n                        $('#address').text(address);\n                        $('#gender').text(gender);\n                        $('#dob').text(dob);\n                        $('#join_date').text(join_date);\n                        $('#job_type').text(job_type);\n                        $('#city').text(city);\n                        $('#age').text(age);\n                        $('#show-data').modal();\n                    })\n                </script>\n\n                {{--sweetalert box for deleting start--}}\n                <script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@7.28.8/dist/sweetalert2.all.min.js\"></script>\n\n                <script type=\"text/javascript\">\n                    function deletePost(id)\n\n                    {\n                        const swalWithBootstrapButtons = swal.mixin({\n                            confirmButtonClass: 'btn btn-success',\n                            cancelButtonClass: 'btn btn-danger',\n                            buttonsStyling: false,\n                        })\n\n                        swalWithBootstrapButtons({\n                            title: 'Are you sure?',\n                            text: \"You won't be able to revert this!\",\n                            type: 'warning',\n                            showCancelButton: true,\n                            confirmButtonText: 'Yes, delete it!',\n                            cancelButtonText: 'No, cancel!',\n                            reverseButtons: true\n                        }).then((result) => {\n                            if (result.value) {\n                                event.preventDefault();\n                                document.getElementById('delete-form-'+id).submit();\n                            } else if (\n                                // Read more about handling dismissals\n                                result.dismiss === swal.DismissReason.cancel\n                            ) {\n                                swalWithBootstrapButtons(\n                                    'Cancelled',\n                                    'Your file is safe :)',\n                                    'error'\n                                )\n                            }\n                        })\n                    }\n\n                </script>\n                {{--sweetalert box for deleting end--}}\n\n                <div id=\"show-data\" class=\"modal fade\" id=\"view-data\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\n                    <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n                        <div class=\"modal-content\">\n                            <div class=\"modal-header\">\n                                <h5 class=\"modal-title\" id=\"exampleModalLongTitle\">Details</h5>\n                                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                                    <span aria-hidden=\"true\">&times;</span>\n                                </button>\n                            </div>\n                            <div class=\"modal-body\">\n                                <p id=\"username\"></p>\n                                <p id=\"role\"></p>\n                                <p id=\"email\"></p>\n                                <p id=\"salary\"></p>\n                                <p id=\"phone\"></p>\n                                <p id=\"address\"></p>\n                                <p id=\"gender\"></p>\n                                <p id=\"dob\"></p>\n                                <p id=\"join_date\"></p>\n                                <p id=\"job_type\"></p>\n                                <p id=\"city\"></p>\n                                <p id=\"age\"></p>\n                                <p id=\"phone\"></p>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                {{--@section('js')--}}\n                    {{--@endsection--}}\n\n            <footer class=\"footer text-center\">\n                All Rights Reserved by Khoz Informatics Pvt. Ltd. Designed and Developed by <a href=\"https://khozinfo.com/\">Khozinfo</a>.\n            </footer>\n        </div>\n        </div>\n    </div>\n\n    @endsection"
  },
  {
    "path": "resources/views/admin/user/payment.blade.php",
    "content": ""
  },
  {
    "path": "resources/views/auth/login.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Login') }}</div>\n\n                <div class=\"card-body\">\n                    <form method=\"POST\" action=\"{{ route('login') }}\">\n                        @csrf\n\n                        <div class=\"form-group row\">\n                            <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"email\" type=\"email\" class=\"form-control{{ $errors->has('email') ? ' is-invalid' : '' }}\" name=\"email\" value=\"{{ old('email') }}\" required autofocus>\n\n                                @if ($errors->has('email'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('email') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"password\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password\" type=\"password\" class=\"form-control{{ $errors->has('password') ? ' is-invalid' : '' }}\" name=\"password\" required>\n\n                                @if ($errors->has('password'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('password') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <div class=\"col-md-6 offset-md-4\">\n                                <div class=\"form-check\">\n                                    <input class=\"form-check-input\" type=\"checkbox\" name=\"remember\" id=\"remember\" {{ old('remember') ? 'checked' : '' }}>\n\n                                    <label class=\"form-check-label\" for=\"remember\">\n                                        {{ __('Remember Me') }}\n                                    </label>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row mb-0\">\n                            <div class=\"col-md-8 offset-md-4\">\n                                <button type=\"submit\" class=\"btn btn-primary\">\n                                    {{ __('Login') }}\n                                </button>\n\n                                @if (Route::has('password.request'))\n                                    <a class=\"btn btn-link\" href=\"{{ route('password.request') }}\">\n                                        {{ __('Forgot Your Password?') }}\n                                    </a>\n                                @endif\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/passwords/email.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Reset Password') }}</div>\n\n                <div class=\"card-body\">\n                    @if (session('status'))\n                        <div class=\"alert alert-success\" role=\"alert\">\n                            {{ session('status') }}\n                        </div>\n                    @endif\n\n                    <form method=\"POST\" action=\"{{ route('password.email') }}\">\n                        @csrf\n\n                        <div class=\"form-group row\">\n                            <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"email\" type=\"email\" class=\"form-control{{ $errors->has('email') ? ' is-invalid' : '' }}\" name=\"email\" value=\"{{ old('email') }}\" required>\n\n                                @if ($errors->has('email'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('email') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row mb-0\">\n                            <div class=\"col-md-6 offset-md-4\">\n                                <button type=\"submit\" class=\"btn btn-primary\">\n                                    {{ __('Send Password Reset Link') }}\n                                </button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/passwords/reset.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Reset Password') }}</div>\n\n                <div class=\"card-body\">\n                    <form method=\"POST\" action=\"{{ route('password.update') }}\">\n                        @csrf\n\n                        <input type=\"hidden\" name=\"token\" value=\"{{ $token }}\">\n\n                        <div class=\"form-group row\">\n                            <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"email\" type=\"email\" class=\"form-control{{ $errors->has('email') ? ' is-invalid' : '' }}\" name=\"email\" value=\"{{ $email ?? old('email') }}\" required autofocus>\n\n                                @if ($errors->has('email'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('email') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"password\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password\" type=\"password\" class=\"form-control{{ $errors->has('password') ? ' is-invalid' : '' }}\" name=\"password\" required>\n\n                                @if ($errors->has('password'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('password') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"password-confirm\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Confirm Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password-confirm\" type=\"password\" class=\"form-control\" name=\"password_confirmation\" required>\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row mb-0\">\n                            <div class=\"col-md-6 offset-md-4\">\n                                <button type=\"submit\" class=\"btn btn-primary\">\n                                    {{ __('Reset Password') }}\n                                </button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/register.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Register') }}</div>\n                @if ($errors->any())\n                    <div class=\"alert alert-danger\">\n                        <ul>\n                            @foreach ($errors->all() as $error)\n                                <li>{{ $error }}</li>\n                            @endforeach\n                        </ul>\n                    </div>\n                @endif\n\n                <div class=\"card-body\">\n                    <form method=\"POST\" action=\"{{ route('register') }}\">\n                        @csrf\n\n                        <div class=\"form-group row\">\n                            <label for=\"username\" class=\"col-md-4 col-form-label text-md-right\">{{ __('User name') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"username\" type=\"text\" class=\"form-control{{ $errors->has('username') ? ' is-invalid' : '' }}\" name=\"username\" value=\"{{ old('username') }}\" required autofocus>\n\n                                @if ($errors->has('username'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('username') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"image\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Image') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"image\" type=\"file\" class=\"form-control{{ $errors->has('image') ? ' is-invalid' : '' }}\" name=\"image\" value=\"{{ old('image') }}\" required autofocus>\n\n                                @if ($errors->has('image'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('image') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n\n\n                        <div class=\"form-group row\">\n                            <label for=\"username\" class=\"col-md-4 col-form-label text-md-right\">{{ __('First name') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"first_name\" type=\"text\" class=\"form-control{{ $errors->has('first_name') ? ' is-invalid' : '' }}\" name=\"first_name\" value=\"{{ old('first_name') }}\" required autofocus>\n\n                                @if ($errors->has('first_name'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('first_name') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"last_name\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Last name') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"last_name\" type=\"text\" class=\"form-control{{ $errors->has('last_name') ? ' is-invalid' : '' }}\" name=\"last_name\" value=\"{{ old('last_name') }}\" required autofocus>\n\n                                @if ($errors->has('last_name'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('last_name') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n\n                        <div class=\"form-group row\">\n                            <label for=\"email\" class=\"col-md-4 col-form-label text-md-right\">{{ __('E-Mail Address') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"email\" type=\"email\" class=\"form-control{{ $errors->has('email') ? ' is-invalid' : '' }}\" name=\"email\" value=\"{{ old('email') }}\" required>\n\n                                @if ($errors->has('email'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('email') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"phone\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Phone number') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"phone\" type=\"number\" class=\"form-control{{ $errors->has('phone') ? ' is-invalid' : '' }}\" name=\"phone\" value=\"{{ old('phone') }}\" required autofocus>\n\n                                @if ($errors->has('phone'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('phone') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"address\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Address') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"address\" type=\"text\" class=\"form-control{{ $errors->has('address') ? ' is-invalid' : '' }}\" name=\"address\" value=\"{{ old('address') }}\" required autofocus>\n\n                                @if ($errors->has('address'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('address') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"gender\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Gender') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <select id=\"gender\" type=\"text\" class=\"form-control{{ $errors->has('gender') ? ' is-invalid' : '' }}\" name=\"gender\" value=\"{{ old('gender') }}\" required autofocus>\n                                   <option value=\"male\">Male</option>\n                                   <option value=\"female\">female</option>\n                                   <option value=\"other\">Other</option>\n                                </select>\n                                @if ($errors->has('gender'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('gender') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"dob\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Date of birth') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"dob\" type=\"date\" class=\"form-control{{ $errors->has('dob') ? ' is-invalid' : '' }}\" name=\"dob\" value=\"{{ old('dob') }}\" required autofocus>\n\n                                @if ($errors->has('dob'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('dob') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"join_date\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Join date') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"join_date\" type=\"date\" class=\"form-control{{ $errors->has('join_date') ? ' is-invalid' : '' }}\" name=\"join_date\" value=\"{{ old('join_date') }}\" required autofocus>\n\n                                @if ($errors->has('join_date'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('join_date') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"job_type\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Job type') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"job_type\" type=\"text\" class=\"form-control{{ $errors->has('job_type') ? ' is-invalid' : '' }}\" name=\"job_type\" value=\"{{ old('job_type') }}\" required autofocus>\n\n                                @if ($errors->has('job_type'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('job_type') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"city\" class=\"col-md-4 col-form-label text-md-right\">{{ __('City') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"city\" type=\"text\" class=\"form-control{{ $errors->has('city') ? ' is-invalid' : '' }}\" name=\"city\" value=\"{{ old('city') }}\" required autofocus>\n\n                                @if ($errors->has('city'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('city') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"age\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Age') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"age\" type=\"number\" class=\"form-control{{ $errors->has('age') ? ' is-invalid' : '' }}\" name=\"age\" value=\"{{ old('age') }}\" required autofocus>\n\n                                @if ($errors->has('age'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('age') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"password\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password\" type=\"password\" class=\"form-control{{ $errors->has('password') ? ' is-invalid' : '' }}\" name=\"password\" required>\n\n                                @if ($errors->has('password'))\n                                    <span class=\"invalid-feedback\" role=\"alert\">\n                                        <strong>{{ $errors->first('password') }}</strong>\n                                    </span>\n                                @endif\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row\">\n                            <label for=\"password-confirm\" class=\"col-md-4 col-form-label text-md-right\">{{ __('Confirm Password') }}</label>\n\n                            <div class=\"col-md-6\">\n                                <input id=\"password-confirm\" type=\"password\" class=\"form-control\" name=\"password_confirmation\" required>\n                            </div>\n                        </div>\n\n                        <div class=\"form-group row mb-0\">\n                            <div class=\"col-md-6 offset-md-4\">\n                                <button type=\"submit\" class=\"btn btn-primary\">\n                                    {{ __('Register') }}\n                                </button>\n                            </div>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/auth/verify.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">{{ __('Verify Your Email Address') }}</div>\n\n                <div class=\"card-body\">\n                    @if (session('resent'))\n                        <div class=\"alert alert-success\" role=\"alert\">\n                            {{ __('A fresh verification link has been sent to your email address.') }}\n                        </div>\n                    @endif\n\n                    {{ __('Before proceeding, please check your email for a verification link.') }}\n                    {{ __('If you did not receive the email') }}, <a href=\"{{ route('verification.resend') }}\">{{ __('click here to request another') }}</a>.\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/home.blade.php",
    "content": "@extends('layouts.app')\n\n@section('content')\n<div class=\"container\">\n    <div class=\"row justify-content-center\">\n        <div class=\"col-md-8\">\n            <div class=\"card\">\n                <div class=\"card-header\">Dashboard</div>\n\n                <div class=\"card-body\">\n                    @if (session('status'))\n                        <div class=\"alert alert-success\" role=\"alert\">\n                            {{ session('status') }}\n                        </div>\n                    @endif\n\n                    You are logged in!\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n@endsection\n"
  },
  {
    "path": "resources/views/layouts/app.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    <!-- CSRF Token -->\n    <meta name=\"csrf-token\" content=\"{{ csrf_token() }}\">\n\n    <title>{{ config('app.name', 'Laravel') }}</title>\n\n    <!-- Scripts -->\n    <script src=\"{{ asset('js/app.js') }}\" defer></script>\n\n    <!-- Fonts -->\n    <link rel=\"dns-prefetch\" href=\"//fonts.gstatic.com\">\n    <link href=\"https://fonts.googleapis.com/css?family=Nunito\" rel=\"stylesheet\" type=\"text/css\">\n\n    <!-- Styles -->\n    <link href=\"{{ asset('css/app.css') }}\" rel=\"stylesheet\">\n</head>\n<body>\n    <div id=\"app\">\n        <nav class=\"navbar navbar-expand-md navbar-light navbar-laravel\">\n            <div class=\"container\">\n                <a class=\"navbar-brand\" href=\"{{ url('/') }}\">\n                    {{ config('app.name', 'Laravel') }}\n                </a>\n                <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarSupportedContent\" aria-controls=\"navbarSupportedContent\" aria-expanded=\"false\" aria-label=\"{{ __('Toggle navigation') }}\">\n                    <span class=\"navbar-toggler-icon\"></span>\n                </button>\n\n                <div class=\"collapse navbar-collapse\" id=\"navbarSupportedContent\">\n                    <!-- Left Side Of Navbar -->\n                    <ul class=\"navbar-nav mr-auto\">\n\n                    </ul>\n\n                    <!-- Right Side Of Navbar -->\n                    <ul class=\"navbar-nav ml-auto\">\n                        <!-- Authentication Links -->\n                        @guest\n                            <li class=\"nav-item\">\n                                <a class=\"nav-link\" href=\"{{ route('login') }}\">{{ __('Login') }}</a>\n                            </li>\n                            @if (Route::has('register'))\n                                <li class=\"nav-item\">\n                                    <a class=\"nav-link\" href=\"{{ route('register') }}\">{{ __('Register') }}</a>\n                                </li>\n                            @endif\n                        @else\n                            <li class=\"nav-item dropdown\">\n                                <a id=\"navbarDropdown\" class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" v-pre>\n                                    {{ Auth::user()->name }} <span class=\"caret\"></span>\n                                </a>\n\n                                <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"navbarDropdown\">\n                                    <a class=\"dropdown-item\" href=\"{{ route('logout') }}\"\n                                       onclick=\"event.preventDefault();\n                                                     document.getElementById('logout-form').submit();\">\n                                        {{ __('Logout') }}\n                                    </a>\n\n                                    <form id=\"logout-form\" action=\"{{ route('logout') }}\" method=\"POST\" style=\"display: none;\">\n                                        @csrf\n                                    </form>\n                                </div>\n                            </li>\n                        @endguest\n                    </ul>\n                </div>\n            </div>\n        </nav>\n\n        <main class=\"py-4\">\n            @yield('content')\n        </main>\n    </div>\n</body>\n</html>\n"
  },
  {
    "path": "resources/views/welcome.blade.php",
    "content": "<!doctype html>\n<html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n        <title>Laravel</title>\n\n        <!-- Fonts -->\n        <link href=\"https://fonts.googleapis.com/css?family=Nunito:200,600\" rel=\"stylesheet\">\n\n        <!-- Styles -->\n        <style>\n            html, body {\n                background-color: #fff;\n                color: #636b6f;\n                font-family: 'Nunito', sans-serif;\n                font-weight: 200;\n                height: 100vh;\n                margin: 0;\n            }\n\n            .full-height {\n                height: 100vh;\n            }\n\n            .flex-center {\n                align-items: center;\n                display: flex;\n                justify-content: center;\n            }\n\n            .position-ref {\n                position: relative;\n            }\n\n            .top-right {\n                position: absolute;\n                right: 10px;\n                top: 18px;\n            }\n\n            .content {\n                text-align: center;\n            }\n\n            .title {\n                font-size: 84px;\n            }\n\n            .links > a {\n                color: #636b6f;\n                padding: 0 25px;\n                font-size: 13px;\n                font-weight: 600;\n                letter-spacing: .1rem;\n                text-decoration: none;\n                text-transform: uppercase;\n            }\n\n            .m-b-md {\n                margin-bottom: 30px;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"flex-center position-ref full-height\">\n            @if (Route::has('login'))\n                <div class=\"top-right links\">\n                    @auth\n                        <a href=\"{{ url('dashboard') }}\">Dashboard</a>\n                    @else\n                        <a href=\"{{ route('login') }}\">Login</a>\n\n                        @if (Route::has('register'))\n                            <a href=\"{{ route('register') }}\">Register</a>\n                        @endif\n                    @endauth\n                </div>\n            @endif\n\n            <div class=\"content\">\n                <div class=\"title m-b-md\">\n                    Laravel\n                </div>\n\n                <div class=\"links\">\n                    <a href=\"https://laravel.com/docs\">Docs</a>\n                    <a href=\"https://laracasts.com\">Laracasts</a>\n                    <a href=\"https://laravel-news.com\">News</a>\n                    <a href=\"https://blog.laravel.com\">Blog</a>\n                    <a href=\"https://nova.laravel.com\">Nova</a>\n                    <a href=\"https://forge.laravel.com\">Forge</a>\n                    <a href=\"https://github.com/laravel/laravel\">GitHub</a>\n                </div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "routes/api.php",
    "content": "<?php\n\nuse Illuminate\\Http\\Request;\n\n/*\n|--------------------------------------------------------------------------\n| API Routes\n|--------------------------------------------------------------------------\n|\n| Here is where you can register API routes for your application. These\n| routes are loaded by the RouteServiceProvider within a group which\n| is assigned the \"api\" middleware group. Enjoy building your API!\n|\n*/\n\nRoute::middleware('auth:api')->get('/user', function (Request $request) {\n    return $request->user();\n});\n"
  },
  {
    "path": "routes/channels.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Broadcast Channels\n|--------------------------------------------------------------------------\n|\n| Here you may register all of the event broadcasting channels that your\n| application supports. The given channel authorization callbacks are\n| used to check if an authenticated user can listen to the channel.\n|\n*/\n\nBroadcast::channel('App.User.{id}', function ($user, $id) {\n    return (int) $user->id === (int) $id;\n});\n"
  },
  {
    "path": "routes/console.php",
    "content": "<?php\n\nuse Illuminate\\Foundation\\Inspiring;\n\n/*\n|--------------------------------------------------------------------------\n| Console Routes\n|--------------------------------------------------------------------------\n|\n| This file is where you may define all of your Closure based console\n| commands. Each Closure is bound to a command instance allowing a\n| simple approach to interacting with each command's IO methods.\n|\n*/\n\nArtisan::command('inspire', function () {\n    $this->comment(Inspiring::quote());\n})->describe('Display an inspiring quote');\n"
  },
  {
    "path": "routes/web.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Web Routes\n|--------------------------------------------------------------------------\n|\n| Here is where you can register web routes for your application. These\n| routes are loaded by the RouteServiceProvider within a group which\n| contains the \"web\" middleware group. Now create something great!\n|\n*/\n\nRoute::get('/', function () {\n    return view('welcome');\n});\n\n\n\nRoute::group(['middleware' => 'auth'], function (){\n\n    Route::get('dashboard',              [ 'as'=>'dashboard',            'uses' => 'DashboardController@index']);\n\n    Route::get('user',                   [ 'as'=>'user',                 'uses' => 'UserController@index']);\n    Route::get('user/create',            [ 'as'=>'user.create',          'uses' => 'UserController@create']);\n    Route::post('user/store',            [ 'as'=>'user.store',           'uses' => 'UserController@store']);\n    Route::get('user/view/{id}',         [ 'as'=>'user.view',            'uses' => 'UserController@view']);\n    Route::get('user/edit/{id}',         [ 'as'=>'user.edit',            'uses' => 'UserController@edit']);\n    Route::post('user/update/{id}',           [ 'as'=>'user.update',     'uses' => 'UserController@update']);\n    Route::get('user/delete/{id}',       [ 'as'=>'user.delete',          'uses' => 'UserController@delete']);\n    Route::get('user/search',       [ 'as'=>'user.search',      'uses' => 'UserController@search']);\n\n    Route::get('employee',               [ 'as'=>'employee',              'uses' => 'EmployeeController@index']);\n    Route::get('employee/create',        [ 'as'=>'employee.create',       'uses' => 'EmployeeController@create']);\n    Route::post('employee/store',        [ 'as'=>'employee.store',        'uses' => 'EmployeeController@store']);\n    Route::get('employee/edit/{id}',     [ 'as'=>'employee.edit',         'uses' => 'EmployeeController@edit']);\n    Route::post('employee/update/{id}',  [ 'as'=>'employee.update',       'uses' => 'EmployeeController@update']);\n    Route::get('employee/delete/{id}',   [ 'as'=>'employee.delete',       'uses' => 'EmployeeController@delete']);\n\n    Route::get('designation',               [ 'as'=>'designation',              'uses' => 'DesignationController@index']);\n    Route::get('designation/create',        [ 'as'=>'designation.create',       'uses' => 'DesignationController@create']);\n    Route::post('designation/store',        [ 'as'=>'designation.store',        'uses' => 'DesignationController@store']);\n    Route::get('designation/edit/{id}',     [ 'as'=>'designation.edit',         'uses' => 'DesignationController@edit']);\n    Route::post('designation/update/{id}',  [ 'as'=>'designation.update',       'uses' => 'DesignationController@update']);\n    Route::get('designation/delete/{id}',   [ 'as'=>'designation.delete',       'uses' => 'DesignationController@delete']);\n\n    Route::get('department',               [ 'as'=>'department',              'uses' => 'DepartmentController@index']);\n    Route::get('department/create',        [ 'as'=>'department.create',       'uses' => 'DepartmentController@create']);\n    Route::post('department/store',        [ 'as'=>'department.store',        'uses' => 'DepartmentController@store']);\n    Route::get('department/edit/{id}',     [ 'as'=>'department.edit',         'uses' => 'DepartmentController@edit']);\n    Route::post('department/update/{id}',  [ 'as'=>'department.update',       'uses' => 'DepartmentController@update']);\n    Route::get('department/delete/{id}',   [ 'as'=>'department.delete',       'uses' => 'DepartmentController@delete']);\n\n    Route::get('designation',               [ 'as'=>'designation',              'uses' => 'DesignationController@index']);\n    Route::get('designation/create',        [ 'as'=>'designation.create',       'uses' => 'DesignationController@create']);\n    Route::post('designation/store',        [ 'as'=>'designation.store',        'uses' => 'DesignationController@store']);\n    Route::get('designation/edit/{id}',     [ 'as'=>'designation.edit',         'uses' => 'DesignationController@edit']);\n    Route::post('designation/update/{id}',  [ 'as'=>'designation.update',       'uses' => 'DesignationController@update']);\n    Route::get('designation/delete/{id}',   [ 'as'=>'designation.delete',       'uses' => 'DesignationController@delete']);\n\n\n    Route::get('salary',               [ 'as'=>'salary',              'uses' => 'SalaryController@index']);\n    Route::get('salary/create',        [ 'as'=>'salary.create',       'uses' => 'SalaryController@create']);\n    Route::post('salary/store',        [ 'as'=>'salary.store',        'uses' => 'SalaryController@store']);\n    Route::get('salary/edit/{id}',     [ 'as'=>'salary.edit',         'uses' => 'SalaryController@edit']);\n    Route::post('salary/update/{id}',  [ 'as'=>'salary.update',       'uses' => 'SalaryController@update']);\n    Route::get('salary/delete/{id}',   [ 'as'=>'salary.delete',       'uses' => 'SalaryController@delete']);\n\n    Route::get('city',               [ 'as'=>'city',              'uses' => 'CityController@index']);\n    Route::get('city/create',        [ 'as'=>'city.create',       'uses' => 'CityController@create']);\n    Route::post('city/store',        [ 'as'=>'city.store',        'uses' => 'CityController@store']);\n    Route::get('city/edit/{id}',     [ 'as'=>'city.edit',         'uses' => 'CityController@edit']);\n    Route::post('city/update/{id}',  [ 'as'=>'city.update',       'uses' => 'CityController@update']);\n    Route::get('city/delete/{id}',   [ 'as'=>'city.delete',       'uses' => 'CityController@delete']);\n\n    Route::get('shift',               [ 'as'=>'shift',              'uses' => 'ShiftController@index']);\n    Route::get('shift/create',        [ 'as'=>'shift.create',       'uses' => 'ShiftController@create']);\n    Route::post('shift/store',        [ 'as'=>'shift.store',        'uses' => 'ShiftController@store']);\n    Route::get('shift/edit/{id}',     [ 'as'=>'shift.edit',         'uses' => 'ShiftController@edit']);\n    Route::post('shift/update/{id}',  [ 'as'=>'shift.update',       'uses' => 'ShiftController@update']);\n    Route::get('shift/delete/{id}',   [ 'as'=>'shift.delete',       'uses' => 'ShiftController@delete']);\n\n    Route::get('leave',               [ 'as'=>'leave',              'uses' => 'LeaveController@index']);\n    Route::get('leave/create',        [ 'as'=>'leave.create',       'uses' => 'LeaveController@create']);\n    Route::post('leave/store',        [ 'as'=>'leave.store',        'uses' => 'LeaveController@store']);\n    Route::get('leave/search',       [ 'as'=>'leave.search',      'uses' => 'LeaveController@search']);\n//    Route::get('leave/edit/{id}',     [ 'as'=>'leave.edit',         'uses' => 'LeaveController@edit']);\n//    Route::post('leave/update/{id}',  [ 'as'=>'leave.update',       'uses' => 'LeaveController@update']);\n//    Route::get('leave/delete/{id}',   [ 'as'=>'leave.delete',       'uses' => 'LeaveController@delete']);\n    Route::post('leave/approve/{id}',        [ 'as'=>'leave.approve',        'uses' => 'LeaveController@approve']);\n    Route::post('leave/paid/{id}',        [ 'as'=>'leave.paid',        'uses' => 'LeaveController@paid']);\n//    Route::post('leave/pending/{id}',        [ 'as'=>'leave.pending',        'uses' => 'LeaveController@pending']);\n//    Route::post('leave/reject/{id}',        [ 'as'=>'leave.reject',        'uses' => 'LeaveController@reject']);\n\n    Route::get('total-leave',               [ 'as'=>'total-leave',              'uses' => 'TotalLeaveController@index']);\n    Route::get('total-leave/create',        [ 'as'=>'total-leave.create',       'uses' => 'TotalLeaveController@create']);\n    Route::post('total-leave/store',        [ 'as'=>'total-leave.store',        'uses' => 'TotalLeaveController@store']);\n    Route::get('total-leave/edit/{id}',     [ 'as'=>'total-leave.edit',         'uses' => 'TotalLeaveController@edit']);\n    Route::post('total-leave/update/{id}',  [ 'as'=>'total-leave.update',       'uses' => 'TotalLeaveController@update']);\n    Route::get('total-leave/delete/{id}',   [ 'as'=>'total-leave.delete',       'uses' => 'TotalLeaveController@delete']);\n\n    Route::get('managesalary',                    [ 'as'=>'managesalary',                   'uses' => 'ManagesalaryController@index']);\n    Route::get('managesalary/detail/{id}',        [ 'as'=>'managesalary.detail',           'uses' => 'ManagesalaryController@detail']);\n    Route::post('managesalary/store',             [ 'as'=>'managesalary.store',           'uses' => 'ManagesalaryController@store']);\n    Route::get('managesalary/salarylist',         [ 'as'=>'managesalary.salarylist',           'uses' => 'ManagesalaryController@salarylist']);\n    Route::get('managesalary/makepayment',        [ 'as'=>'managesalary.makepayment',               'uses' => 'ManagesalaryController@makepayment']);\n    Route::post('managesalary/make-advance',      [ 'as'=>'managesalary.makeadvance',               'uses' => 'ManagesalaryController@makeAdvance']);\n//    Route::post('managesalary/search',            [ 'as'=>'managesalary.search',               'uses' => 'ManagesalaryController@search']);\n\n    Route::get('event', ['as'=>'event', 'uses' => 'EventController@event']);\n    Route::post('event/store', ['as'=>'event.store', 'uses' => 'EventController@store']);\n\n    Route::get('calendar',['as'=>'calendar', 'uses' => 'CalendarController@index']);\n    Route::get('calendar/add',['as'=>'calendar.add', 'uses' =>'CalendarController@add']);\n    Route::post('calendar/store',['as'=>'calendar.store', 'uses' =>'CalendarController@store']);\n\n    Route::get('profile',                   [ 'as'=>'profile',                   'uses' => 'ProfileController@index']);\n    Route::get('change-password',           [ 'as'=>'change.password',           'uses' => 'ProfileController@changePassword']);\n\n    Route::match(['get','match'],        'update-password',           [ 'as'=>'update.password',           'uses' => 'ProfileController@updatePassword']);\n\n    Route::get('downloads',                 [ 'as'=>'download',                   'uses' => 'DownloadController@index']);\n\n});\nAuth::routes();\nRoute::get('/home', 'HomeController@index')->name('home');\n\n\n\n\n"
  },
  {
    "path": "server.php",
    "content": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package  Laravel\n * @author   Taylor Otwell <taylor@laravel.com>\n */\n\n$uri = urldecode(\n    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)\n);\n\n// This file allows us to emulate Apache's \"mod_rewrite\" functionality from the\n// built-in PHP web server. This provides a convenient way to test a Laravel\n// application without having installed a \"real\" web server software here.\nif ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {\n    return false;\n}\n\nrequire_once __DIR__.'/public/index.php';\n"
  },
  {
    "path": "storage/app/.gitignore",
    "content": "*\n!public/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/.gitignore",
    "content": "config.php\nroutes.php\nschedule-*\ncompiled.php\nservices.json\nevents.scanned.php\nroutes.scanned.php\ndown\n"
  },
  {
    "path": "storage/framework/cache/.gitignore",
    "content": "*\n!data/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/sessions/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/testing/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/views/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/logs/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "tests/CreatesApplication.php",
    "content": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Contracts\\Console\\Kernel;\n\ntrait CreatesApplication\n{\n    /**\n     * Creates the application.\n     *\n     * @return \\Illuminate\\Foundation\\Application\n     */\n    public function createApplication()\n    {\n        $app = require __DIR__.'/../bootstrap/app.php';\n\n        $app->make(Kernel::class)->bootstrap();\n\n        return $app;\n    }\n}\n"
  },
  {
    "path": "tests/Feature/ExampleTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\n\nclass ExampleTest extends TestCase\n{\n    /**\n     * A basic test example.\n     *\n     * @return void\n     */\n    public function testBasicTest()\n    {\n        $response = $this->get('/');\n\n        $response->assertStatus(200);\n    }\n}\n"
  },
  {
    "path": "tests/TestCase.php",
    "content": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Foundation\\Testing\\TestCase as BaseTestCase;\n\nabstract class TestCase extends BaseTestCase\n{\n    use CreatesApplication;\n}\n"
  },
  {
    "path": "tests/Unit/ExampleTest.php",
    "content": "<?php\n\nnamespace Tests\\Unit;\n\nuse Tests\\TestCase;\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\n\nclass ExampleTest extends TestCase\n{\n    /**\n     * A basic test example.\n     *\n     * @return void\n     */\n    public function testBasicTest()\n    {\n        $this->assertTrue(true);\n    }\n}\n"
  },
  {
    "path": "webpack.mix.js",
    "content": "const mix = require('laravel-mix');\n\n/*\n |--------------------------------------------------------------------------\n | Mix Asset Management\n |--------------------------------------------------------------------------\n |\n | Mix provides a clean, fluent API for defining some Webpack build steps\n | for your Laravel application. By default, we are compiling the Sass\n | file for the application as well as bundling up all the JS files.\n |\n */\n\nmix.js('resources/js/app.js', 'public/js')\n   .sass('resources/sass/app.scss', 'public/css');\n"
  }
]